diff --git a/.github/workflows/publish-master.yml b/.github/workflows/publish-master.yml index 61c2663..57d40a6 100644 --- a/.github/workflows/publish-master.yml +++ b/.github/workflows/publish-master.yml @@ -12,7 +12,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 3.1.301 + dotnet-version: '6.0.x' - name: Install dependencies run: dotnet restore - name: Build @@ -42,3 +42,8 @@ jobs: with: PROJECT_FILE_PATH: Sledge.Formats.Packages/Sledge.Formats.Packages.csproj NUGET_KEY: ${{secrets.NUGET_API_KEY}} + - name: Publish Sledge.Formats.GameData + uses: brandedoutcast/publish-nuget@v2 + with: + PROJECT_FILE_PATH: Sledge.Formats.GameData/Sledge.Formats.GameData.csproj + NUGET_KEY: ${{secrets.NUGET_API_KEY}} diff --git a/Sledge.Formats.GameData.Tests/Fgd/TestFgdBasic.cs b/Sledge.Formats.GameData.Tests/Fgd/TestFgdBasic.cs new file mode 100644 index 0000000..367befe --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Fgd/TestFgdBasic.cs @@ -0,0 +1,380 @@ +using System; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Sledge.Formats.GameData.Objects; + +namespace Sledge.Formats.GameData.Tests.Fgd +{ + [TestClass] + public class TestFgdBasic + { + [TestMethod] + public void TestIncludeWithNoFileResolver() + { + const string fgd = @" +@include ""test.fgd"" +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + CollectionAssert.AreEqual(new [] { "test.fgd" }, def.Includes); + } + + [TestMethod] + public void TestMapSize() + { + const string fgd = @" +@mapsize(-16384, 16384) +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(-16384, def.MapSizeLow); + Assert.AreEqual(16384, def.MapSizeHigh); + } + + [TestMethod] + public void TestMaterialExclusion() + { + const string fgd = @" +@MaterialExclusion +[ + ""one"" + ""two"" + ""three"" +] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + CollectionAssert.AreEquivalent(new [] { "one", "two", "three" }, def.MaterialExclusions); + } + + [TestMethod] + public void TestAutoVisGroup() + { + const string fgd = @" +@AutoVisGroup = ""Auto"" +[ + ""VisOne"" + [ + ""test_ent_one"" + ""test_ent_two"" + ] + + ""VisTwo"" + [ + ""test_ent_two"" + ] +] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.AutoVisgroups.Count); + var vg = def.AutoVisgroups[0]; + Assert.AreEqual("Auto", vg.Name); + Assert.AreEqual(2, vg.Groups.Count); + var v1 = vg.Groups.Find(x => x.Name == "VisOne"); + var v2 = vg.Groups.Find(x => x.Name == "VisTwo"); + Assert.IsNotNull(v1); + Assert.IsNotNull(v2); + CollectionAssert.AreEquivalent(new [] { "test_ent_one", "test_ent_two" }, v1.EntityNames); + CollectionAssert.AreEquivalent(new [] { "test_ent_two" }, v2.EntityNames); + } + + [TestMethod] + public void TestEmptyClass() + { + const string fgd = @" +@BaseClass = Test [] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + var cls = def.Classes[0]; + Assert.AreEqual("Test", cls.Name); + Assert.AreEqual(ClassType.Base, cls.ClassType); + Assert.AreEqual("", cls.AdditionalInformation); + Assert.AreEqual("", cls.Description); + Assert.IsFalse(cls.BaseClasses.Any()); + Assert.IsFalse(cls.Behaviours.Any()); + Assert.IsFalse(cls.InOuts.Any()); + Assert.IsFalse(cls.Properties.Any()); + } + + [TestMethod] + public void TestBaseAndBehaviours() + { + const string fgd = @" +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) halfgridsnap = PlayerClass [] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + var cls = def.Classes[0]; + Assert.AreEqual("PlayerClass", cls.Name); + Assert.AreEqual(ClassType.Base, cls.ClassType); + Assert.AreEqual("", cls.AdditionalInformation); + Assert.AreEqual("", cls.Description); + + Assert.AreEqual(2, cls.BaseClasses.Count); + CollectionAssert.AreEqual(new [] { "Appearflags", "Angles" }, cls.BaseClasses); + + Assert.AreEqual(3, cls.Behaviours.Count); + + Assert.AreEqual("size", cls.Behaviours[0].Name); + CollectionAssert.AreEqual(new[] { "-16", "-16", "-36", "16", "16", "36" }, cls.Behaviours[0].Values); + + Assert.AreEqual("color", cls.Behaviours[1].Name); + CollectionAssert.AreEqual(new[] { "0", "255", "0" }, cls.Behaviours[1].Values); + + Assert.AreEqual("halfgridsnap", cls.Behaviours[2].Name); + Assert.AreEqual(0, cls.Behaviours[2].Values.Count); + + Assert.IsFalse(cls.InOuts.Any()); + Assert.IsFalse(cls.Properties.Any()); + } + + [TestMethod] + public void TestDescription() + { + const string fgd = @" +@BaseClass = Test : ""Descr"" + ""iption"" [] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + var cls = def.Classes[0]; + Assert.AreEqual("Test", cls.Name); + Assert.AreEqual(ClassType.Base, cls.ClassType); + Assert.AreEqual("Description", cls.Description); + Assert.AreEqual("", cls.AdditionalInformation); + Assert.IsFalse(cls.BaseClasses.Any()); + Assert.IsFalse(cls.Behaviours.Any()); + Assert.IsFalse(cls.InOuts.Any()); + Assert.IsFalse(cls.Properties.Any()); + } + + [TestMethod] + public void TestDescriptionAndInformation() + { + const string fgd = @" +@BaseClass = Test : ""Descr"" + ""iption"" : ""Additional information"" [] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + var cls = def.Classes[0]; + Assert.AreEqual("Test", cls.Name); + Assert.AreEqual(ClassType.Base, cls.ClassType); + Assert.AreEqual("Description", cls.Description); + Assert.AreEqual("Additional information", cls.AdditionalInformation); + Assert.IsFalse(cls.BaseClasses.Any()); + Assert.IsFalse(cls.Behaviours.Any()); + Assert.IsFalse(cls.InOuts.Any()); + Assert.IsFalse(cls.Properties.Any()); + } + + [TestMethod] + public void TestNoClassBody() + { + const string fgd = @" +@BaseClass = Test1 : ""A""+""B""+""C"" +@BaseClass = Test2 +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(2, def.Classes.Count); + var cls1 = def.Classes[0]; + Assert.AreEqual("Test1", cls1.Name); + var cls2 = def.Classes[1]; + Assert.AreEqual("Test2", cls2.Name); + } + + [TestMethod] + public void TestProperties() + { + const string fgd = @" +@BaseClass = Test [ + one(integer) + two(string) : ""desc"" + ""ription"" + three(string) : ""desc"" : ""def"" + ""ault"" + four(color255) readonly + five(string) report : ""desc"" : ""def"" + six(string) : ""d"" : -123 : ""details"" + seven(string) : ""d"" : : ""details"" + eight(choices) : ""eight"" : 0 = + [ + 0: ""c"" + ""1"" + 1: ""c2"" : ""det"" + ""ails"" + ] + spawnflags(flags) = + [ + 1 : ""flag1"" : 0 + 2 : ""flag2"" : 1 + ] +] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + var cls = def.Classes[0]; + Assert.AreEqual("Test", cls.Name); + + Assert.AreEqual(9, cls.Properties.Count); + + AssertProperty(cls.Properties[0], "one", VariableType.Integer, "", "", "", false, false); + AssertProperty(cls.Properties[1], "two", VariableType.String, "description", "", "", false, false); + AssertProperty(cls.Properties[2], "three", VariableType.String, "desc", "default", "", false, false); + AssertProperty(cls.Properties[3], "four", VariableType.Color255, "", "", "", true, false); + AssertProperty(cls.Properties[4], "five", VariableType.String, "desc", "def", "", false, true); + AssertProperty(cls.Properties[5], "six", VariableType.String, "d", "-123", "details", false, false); + AssertProperty(cls.Properties[6], "seven", VariableType.String, "d", "", "details", false, false); + AssertProperty(cls.Properties[7], "eight", VariableType.Choices, "eight", "0", "", false, false); + AssertProperty(cls.Properties[8], "spawnflags", VariableType.Flags, "", "", "", false, false); + + AssertOption(cls.Properties[7].Options[0], "0", "c1", false, ""); + AssertOption(cls.Properties[7].Options[1], "1", "c2", false, "details"); + + AssertOption(cls.Properties[8].Options[0], "1", "flag1", false, ""); + AssertOption(cls.Properties[8].Options[1], "2", "flag2", true, ""); + + void AssertProperty(Property actual, string name, VariableType type, string desc, string dfault, string details, bool ro, bool report) + { + Assert.AreEqual(name, actual.Name); + Assert.AreEqual(type, actual.VariableType); + Assert.AreEqual(desc, actual.Description); + Assert.AreEqual(dfault, actual.DefaultValue); + Assert.AreEqual(details, actual.Details); + Assert.AreEqual(ro, actual.ReadOnly); + Assert.AreEqual(report, actual.ShowInEntityReport); + } + + void AssertOption(Option actual, string key, string desc, bool on, string details) + { + Assert.AreEqual(key, actual.Key); + Assert.AreEqual(desc, actual.Description); + Assert.AreEqual(on, actual.On); + Assert.AreEqual(details, actual.Details); + } + } + + [TestMethod] + public void TestDecimalDefault() + { + const string fgd = @" +@PointClass = test +[ + test(integer) : ""Description"" : 1.5 +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + } + + [TestMethod] + public void TestHyphenatedProperties() + { + const string fgd = @" +@PointClass = test +[ + test0-test1(integer) : ""Test"" +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + Assert.AreEqual("test0-test1", def.Classes[0].Properties[0].Name); + } + + [TestMethod] + public void TestAllowNewlinesInStrings() + { + const string fgd = @" +@PointClass = test +[ + test(integer) : ""New +Line"" +]"; + var format = new FgdFormatter { AllowNewlinesInStrings = true }; + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + Assert.AreEqual("New\nLine", def.Classes[0].Properties[0].Description); + + Assert.ThrowsException(() => + { + var format2 = new FgdFormatter { AllowNewlinesInStrings = false }; + var def2 = format2.Read(fgd); + }); + } + + [TestMethod] + public void TestRealWorld() + { + const string fgd = @" +// +// worldspawn +// + +@SolidClass = worldspawn : ""World entity"" +[ + message(string) : ""Map Description / Title"" + skyname(string) : ""environment map (cl_skyname)"" + sounds(integer) : ""CD track to play"" : 1 + light(integer) : ""Default light level"" + WaveHeight(string) : ""Default Wave Height"" + MaxRange(string) : ""Max viewable distance"" : ""4096"" + chaptertitle(string) : ""Chapter Title Message"" + startdark(choices) : ""Level Fade In"" : 0 = + [ + 0 : ""No"" + 1 : ""Yes"" + ] + gametitle(choices) : ""Display game title"" : 0 = + [ + 0 : ""No"" + 1 : ""Yes"" + ] + newunit(choices) : ""New Level Unit"" : 0 = + [ + 0 : ""No, keep current"" + 1 : ""Yes, clear previous levels"" + ] + mapteams(string) : ""Map Team List"" + defaultteam(choices) : ""Default Team"" : 0 = + [ + 0 : ""Fewest Players"" + 1 : ""First Team"" + ] +] + +// +// BaseClasses +// + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : ""ZHLT Lightflags"" : 0 = + [ + 0 : ""Default"" + 1 : ""Embedded Fix"" + 2 : ""Opaque (blocks light)"" + 3 : ""Opaque + Embedded fix"" + 6 : ""Opaque + Concave Fix"" + ] + light_origin(string) : ""Light Origin Target"" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : ""ZHLT Fade"" : ""1.0"" + _falloff(choices) : ""ZHLT Falloff"" : 0 = + [ + 0 : ""Default"" + 1 : ""Inverse Linear"" + 2 : ""Inverse Square"" + ] +] +"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(3, def.Classes.Count); + } + } +} diff --git a/Sledge.Formats.GameData.Tests/Fgd/TestFgdFiles.cs b/Sledge.Formats.GameData.Tests/Fgd/TestFgdFiles.cs new file mode 100644 index 0000000..d565428 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Fgd/TestFgdFiles.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Sledge.Formats.GameData.Tests.Fgd +{ + [TestClass] + public class TestFgdFiles + { + private static List<(string name, Stream stream)> GetFiles(string path) + { + var assem = Assembly.GetExecutingAssembly(); + var files = new List<(string name, Stream stream)>(); + + path = assem.GetName().Name + ".Resources." + path.Replace('/', '.'); + + foreach (var name in assem.GetManifestResourceNames().Where(x => x.StartsWith(path))) + { + files.Add((name.Substring(path.Length + 1), assem.GetManifestResourceStream(name))); + } + + return files; + } + + [TestMethod] + public void TestGoldsource() + { + var format = new FgdFormatter(); + foreach (var (name, stream) in GetFiles("fgd/goldsource")) + { + try + { + var def = format.Read(new StreamReader(stream)); + Console.WriteLine($"Successfully parsed {name}."); + } + catch (Exception ex) + { + throw new Exception($"Error parsing {name}", ex); + } + } + } + + [TestMethod] + public void TestJack() + { + var format = new FgdFormatter(); + foreach (var (name, stream) in GetFiles("fgd/jack")) + { + try + { + var def = format.Read(new StreamReader(stream)); + Console.WriteLine($"Successfully parsed {name}."); + } + catch (Exception ex) + { + throw new Exception($"Error parsing {name}", ex); + } + } + } + + [TestMethod] + public void TestTrenchbroom() + { + var format = new FgdFormatter() { AllowNewlinesInStrings = true }; + foreach (var (name, stream) in GetFiles("fgd/trenchbroom")) + { + try + { + var def = format.Read(new StreamReader(stream)); + Console.WriteLine($"Successfully parsed {name}."); + } + catch (Exception ex) + { + throw new Exception($"Error parsing {name}", ex); + } + } + } + + [TestMethod] + public void TestSource() + { + var format = new FgdFormatter(); + foreach (var (name, stream) in GetFiles("fgd/source")) + { + try + { + var def = format.Read(new StreamReader(stream)); + Console.WriteLine($"Successfully parsed {name}."); + } + catch (Exception ex) + { + throw new Exception($"Error parsing {name}", ex); + } + } + } + } +} diff --git a/Sledge.Formats.GameData.Tests/Fgd/TestFgdSyntaxErrorRecovery.cs b/Sledge.Formats.GameData.Tests/Fgd/TestFgdSyntaxErrorRecovery.cs new file mode 100644 index 0000000..355eee6 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Fgd/TestFgdSyntaxErrorRecovery.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Sledge.Formats.GameData.Tests.Fgd +{ + [TestClass] + public class TestFgdSyntaxErrorRecovery + { + [TestMethod] + public void TestIncorrectlyCommentedClass() + { + const string fgd = @" +@SolidClass = valid1 [] +//@SolidClass = invalid1 [ +// test(choices) = +// [ + 0 : ""0"" + 1 : ""1"" : ""one"" +// ] +//@SolidClass = invalid2 +[ + test(string) : ""Test"" +] +@SolidClass = valid2 []"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(2, def.Classes.Count); + } + + [TestMethod] + public void TestUnquotedDefaultValue() + { + const string fgd = @" +@PointClass = test +[ + model(studio) : ""Model"" : models/test-model.mdl : ""Select a model file."" +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + Assert.AreEqual("models/test-model.mdl", def.Classes[0].Properties[0].DefaultValue); + } + + [TestMethod] + public void TestDefaultValueMissingSemicolon() + { + const string fgd = @" +@PointClass = test +[ + test(choices) : ""Test"" 0 = + [ + 0: ""zero"" + 1: ""one"" + ] +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + Assert.AreEqual("0", def.Classes[0].Properties[0].DefaultValue); + } + + [TestMethod] + public void TestUnterminatedString() + { + const string fgd = @" +// from spirit.fgd +@PointClass = test +[ + frags(choices) : ""If outside range"" : 0 = + [ + //* e.g. if the range were 0%-100%, and the value were 120%, the result would be 100%. + 0 : ""Pick nearest value"" + //* In the case above, the result would be 20%. + 1 : ""Wrap around"" + //* In the case above, the result would be 80%. + 2 : ""Bounce back"" + //* Treated as 0. Or you can catch this failure with calc_fallback. + 3 : ""Fail + ] +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + Assert.AreEqual("Fail", def.Classes[0].Properties[0].Options.Last().Description); + } + + //[TestMethod] + public void TestDecimalDefault5() + { + const string fgd = @" +@PointClass = test +[ + test(integer) : ""Description"" : 1.5 +]"; + var format = new FgdFormatter(); + var def = format.Read(fgd); + Assert.AreEqual(1, def.Classes.Count); + } + } +} diff --git a/Sledge.Formats.GameData.Tests/Resources/LICENSE b/Sledge.Formats.GameData.Tests/Resources/LICENSE new file mode 100644 index 0000000..e404dbd --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/LICENSE @@ -0,0 +1,5 @@ +All files in this folder tree are publicly available, but +the license of the repository does not apply to the files +contained within. They are for testing purposes only and +all copyrights remain as stated within the files, or the +original mod/game authors if not stated. diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/blue-shift.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/blue-shift.fgd new file mode 100644 index 0000000..f2882b2 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/blue-shift.fgd @@ -0,0 +1,2472 @@ +// +// Half-Life: Blue Shift game definition file (.fgd) +// based on Half-Life game definition file (.fgd) version 1.71 +// with changes and additions for Blue Shift addon pack +// For use with Worldcraft 3.3 and above, and Half-Life 1.0.1.6 and above +// last update: 05/30/2001 +// + +// VERSION 1.1 + +// Gearbox Changes + +// 0530 - Created WC 3.3 based on halflife-bs_WC21.fgd + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx) = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx) = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx) = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_crossbow : "Crossbow Ammo" [] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door : "Basic door" [] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Angles) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields) size(-16 -16 -36, 16 16 0) = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney" [] +@PointClass base(RenderFields,Appearflags, Angles) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_headcrab : "Head Crab" [] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" [] +@PointClass base(Weapon,Targetx,RenderFields) = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_snark : "Armed Snark" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 1 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx) = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx) = weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx) = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx) = weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx) = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx) = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx) = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx) = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx) = weapon_hornetgun : "Hornet Gun" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] + + + + +//Half-Life: Blue Shift Special Entities + +@PointClass iconsprite("sprites/env_warpball.spr") base(Targetname, Target) size(-32 -32 -32, 32 32 32) color(0 255 0) = env_warpball : "Warp In Ball" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Kill Center" : 0 + ] + radius(string) : "Beam Radius" : "256" + warp_target(string) : "Warp Target" : "" +] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx, RenderFields) = item_helmet : "Barney Helmet" +[ + sequence(choices) : "Orientation" : 0 = + [ + 0 : "Vertical" + 1 : "Horizontal" + 2 : "Horizontal (Upside Down)" + ] +] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx, RenderFields) = item_armorvest : "Barney Vest" +[ + sequence(choices) : "Orientation" : 0 = + [ + 0 : "Upright" + 1 : "Laying On Back" + 2 : "Laying On Front" + 3: "Upright Leaning" + ] +] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_rosenberg : "Dr. Rosenberg" +[ + body(Choices) : "Body" : 3 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Dr. Rosenberg" + ] +] + +@PointClass base(Targetname, Targetx) = trigger_playerfreeze : "Trigger Player Freeze" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/buzzybots.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/buzzybots.fgd new file mode 100644 index 0000000..4c9c404 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/buzzybots.fgd @@ -0,0 +1,2465 @@ +// +// BuzzyBots game definition file (.fgd) +// version 1.0 +// +// Based on +// +// Half-Life game definition file (.fgd) +// version 1.7 +// for Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above +// last update: 05/27/2000 +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + targetname (target_source) : "Name" + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx) = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx) = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx) = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_crossbow : "Crossbow Ammo" [] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door : "Basic door" [] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields) size(-16 -16 -36, 16 16 0) = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney" [] +@PointClass base(RenderFields,Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_headcrab : "Head Crab" [] +@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" [] +@PointClass base(Weapon,Targetx,RenderFields) = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_snark : "Armed Snark" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 1 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 + angles(string) : "X Y Z angles" +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// BuzzyBots +// + +@PointClass = npc_skrunk : "Npc Skrunk" +[ + team(choices) : "Team" : 1 = + [ + 1 : "Qbe" + 2 : "Bahl" + 3 : "Pyra" + ] +] + +@PointClass = object_beacon : "Object Beacon" +[ + timer(integer) : "Countdown time" : 10 + submodel(choices) : "Model" : 0 = + [ + 0 : "Standard" + 1 : "Second one" + 2 : "Third one" + ] + + team(choices) : "Team" : 0 = + [ + 0 : "Red" + 1 : "Blue" + ] +] + +@PointClass = object_superchip : "Object SuperChip" +[ + submodel(choices) : "Model" : 0 = + [ + 0 : "Standard" + 1 : "Second one" + 2 : "Third one" + ] +] + +@PointClass base(PlayerClass) = info_player_red : "Red Team Spawnpoint" [] +@PointClass base(PlayerClass) = info_player_blue : "Blue Team Spawnpoint" [] +@PointClass base(PlayerClass) = info_player_observer : "Observer Spawnpoint"[] + +@SolidClass = func_base : "The Home Base" +[ + team(choices) : "Team" : 0 = + [ + 0 : "Red" + 1 : "Blue" + ] +] + +@PointClass = info_chip : "SuperChip Spawnpoint" [] + +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_bbturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] + team(choices) : "Team" : 0 = + [ + 0 : "Red" + 1 : "Blue" + ] +] + +@PointClass = object_upgrade : "Upgrade" +[ + timer(integer) : "Respawn time (-1 = never)" : 10 + team(choices) : "Team" : -1 = + [ + -1 : "None" + 0 : "Red" + 1 : "Blue" + ] + type(choices) : "Type" : 0 = + [ + 0 : "Health" + 1 : "Speed" + 2 : "Armor" + 3 : "Weapon" + 4 : "AntiGravity" + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero-deleted-scenes.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero-deleted-scenes.fgd new file mode 100644 index 0000000..60c256a --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero-deleted-scenes.fgd @@ -0,0 +1,3826 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// :INTRODUCTION AND IMPORTANT THINGS: +// +// Finally, the FGD is done! I'd like to thank all those that have helped me get this FGD into a more complete state. I am planning on updating this +// When I have more information or something to fix. So please check back as there might be an update waiting for you! +// There are most likely a lot of missing things and undocumented stuff. I've tried to include as much information on the entities in the help section of JACK. +// If anyone who was a dev of CS:CZDS and has any knowledge of any data or insights into the specifics of it, please contact me ('I have a plan') at the TWHL forum/discord. +// +// :A WORD FROM CASTLE: FORMER LD FOR RITUAL ENTERTAINMENT: +// +// A few days ago I had the honour of talking with CASTLE, the former LD for many of the levels in CS:CZDS, here is a snippet of what he said about CS:CZ. +// +// 'When we got the Gearbox build, they had practically finished the game and just that would have been great, but we went at it with a machete and cut a lot of the content. +// Valve told us to make a HL1 experience in the Counter-Strike world and what we delivered was very far from it. There was no connection +// to the previous levels, no 'Show, don't tell' theories in the levels, characters constantly spewing lore and there was always an objective to do. So it +// was never really a HL1 experience. It was a super linear, mostly scripted game with annoying sections that didn't need to be there. +// +// At the time, we had too much power and we were way too ambitious when it came to CZ. For example, The AI was over scripted, the first time a dude falls down the stairs is cool, +// but the hundreth time is just frustrating. We didn't need to have a .SEQ file system or anything like that, Mutimanagers would have worked for everything. +// The same thing can be said about the annoying stealth sections, we didn't need those and the game would had probably done better without them. +// If you do remake or port the levels, make sure to get rid of the fail state stealth parts for good. +// After CZ got taken out of our hands, they released our work as 'Deleted Scenes'. Till this day I have no idea why they decided to do that, it is what it is, but I would have liked it to be under a different name.' +// +//////////////////////////////////////////////////////////////////////////////// +// +// :DETAILS AND NOTES: +// +// Release version: 1.1.3 'The little things' Hotfix +// Release date: 8/07/2021 +// Authors: cs_expert-tom793 : 小冬冬 / Dong : I have a plan : Castle +// +// This FGD is for Counter-Strike: Condition Zero Deleted Scenes. +// !Please use either J.A.C.K or equivlent modern goldsource level editor. There is a rather large limitation in Hammer 3.5! +// !Regarding this FGD and it is quite hard to fix without running 3rd party code at buildtime! +// +// +// :MISSING/UNKNOWN KEYS, VALUES AND SPAWNFLAGS: +// +// Unfortunatly, I am not an expert in reading decompiled code. Some keys, values and spawnflags will be missing or have no 'Help' information. +// I would need the old GTK Radiant .def that Ritual Entertainment used. But, we will never fully know what they were/do until the .def or SDK is found/given to us by Valve. +// I'm very sorry if there are missing keys, values or spawnflags. I'll continue trying to find the contacts I need to speak to in order to complete this. +// List of keys that are used in the game files! +// +// > CBaseTrigger (Things like trigger_once, trigger_multiple, etc...) +// - healthover +// - healthunder +// - healthequal +// - isdead +// - hasclassname +// - isdead +// +// >monster_T/CT +// - poisoned (Causes Crash on level load IF not paired with healthModifier) +// - pumped +// - blastradius +// - blastdamage +// +// > func_breakable +// - shards +// - deadmodel +// +// > monster_hostage +// - rescueanim (code suggests it should work, if the string corresponds to an animation.) +// +// > func_healthcharger + func_recharge +// - dmdelay (code suggests that func_recharge is supported, but not func_healthcharger.) +// +// > ??? +// - allowspawn +// +// :SKILLS.CFG: +// +// The skills.cfg can be used in a custom mod to define certain properties within CS:CZDS. Some entites in this FGD are tagged with a 'help' +// dialog that can be accessed in JACK that will let you know. But, here is a quick reference list. +// - Hgrunt (CT/T health) +// - Turret (Turret health) +// - MiniTurret (Turret health) +// - Sentry Turret (Turret health) +// - Suitcharger (Armor charger amount) +// - Battery (Armor pickup amount) +// - Healthkit (Healthkit pickup amount) +// - Scientist Heal (Scientist 'syringe boost' amount) +// +// :CONVERTING BRUSH ENTITIES TO POINT ENTITIES: +// +// Make a point entity where you would like. +// Write down the origin of the entity. +// Change the name of the entity to the func_* one you would like. +// Add the corresponding model to the model key field. +// Treat "body" and "skin" how you would with a normal studiomodel entity. +// Make sure you add the "origin" of your point +// entity to this one as they don't get saved by default. +// :WARNING: +// You will not be able to see the entity next time you +// load it on Hammer. Next time you save, the origin will be erased. +// +// :LOOPING SOUNDS: +// +// Sounds will only loop if there are cue points defined in the .wav file, +// and will loop (or not) regardless of entity settings. +// Cue points determine where the looping will start and end. +// Sounds will play from start to end and then loop the segment between the first cue and the second cue +// (or the end if there is only one), ignoring other cue points. +// +// :INFO_TEXLIGHTS: +// +// This entity can act as a replacement for a lights.rad file, in that it simply resides within the map as a point based entity. +// The usefulness of this is that each map can have its own unique ambient lighting applied to it, and those settings will travel with the map and not affect any other maps. +// Usage of the entity is much like that of the multimanager. +// To add an entry (take smart-edit off if you are using the Valve Hammer Editor/Worldcraft) and add key-value pairs in manually; +// The key should contain the name of the texture to apply lighting to, and the value a set of numbers representing the red green blue lumionsity(brightness) of the texture. +// Just as you would in the lights.rad file. +// +// :PVS: +// +// For a better understanding of what PVS is or might do in the case of NPCs, read this article from the Valve Developer Wiki: https://developer.valvesoftware.com/wiki/PVS +// Most of the time, the key should always be set to 'Yes'. No need to change it. +// Strangely enough, it would seem that the PVS on the monstermaker entity may not have implemented PVS (Due to a 'NoImpl' not left on the original FGD). +// +// 'the 'nopvs' keyvalue seems to be used in conjunction with the fiber optic camera so npcs are still visible when they're in an area that the player can't see +// since there's a bug where cameras still use the player position for visibility testing this is used to get things to still render +// if an entity isn't including in visibility testing it always gets added to the list of visible entities' -SOLOKILLER +// +// :MULTIMANAGER AND MULTISOURCE ENTITY: +// +// These entities is extremely important for the GoldSource mapper. Read these articles for a better understanding of the basic rules of using them: +// Multimanager: https://twhl.info/wiki/page/multi_manager +// Multisource: https://twhl.info/wiki/page/multisource +// +// :TRIGGER_ZIPLINE (AKA FANCY TELEPORTER): +// +// The zipline is too broken and is pretty much a fancy teleporter. But here is how to use it. +// 1. Make a brushentity and set to trigger_zipline, Start = 1, End = 0 to set the start of the zipline anim. +// +// 2. Make a second trigger_zipline and Start = 0, End = 1 to set the end. (doesnt matter where this is and give it a name) +// +// 3. Make an info_target entity and set its name to something. Go back to the 1st zipline and make the Zipline Targets name to the Info_targets name. +// +// 4. Make some sort of trigger with a delay (eg, Trigger_relay: target the name of the 2nd trigger_zipline and give it x delay). +// +// 5. Try it out in the game! Big thanks to SoloKiller and Shepard for the assist! +// +// :TRIGGER_OBJECTIVE: +// +// Here is a quick guide to make a set of objectives if you are making a mod: +// 1. Make the objective sentence group in the 'czeror_eng file'. for example: +// Aidev objective text +//"OBJ1_AIDEV_NEW" "NEW OBJECTIVE: Proceed to elevator for training" +//"OBJ1_AIDEV" "[ ] OBJECTIVE: Proceed to elevator for training" +//"OBJ1_AIDEV_COMPLETE" "[X] OBJECTIVE: Proceed to elevator for training" +// +// 2. Make a .SEQ file for your map. Set the sequence block to look like this: +//%objseq +//{ +// @ObjectiveStyle +// #text = "#OBJ1_AIDEV_NEW" //#text = "NEW OBJECTIVE: Proceed to elevator for training" +// #firetargets = "obj1" //adds objective to objectives list +//} +// +// 3. Make a trigger_sequence and fill in the name, sequence file name (should be 'YOURMAPNAMEHERE.seq') and the sequence name (should be 'objseq'). +// Then make an trigger_objective, fill in the Name key as 'obj1' and the Objective key as '#OBJ1_AIDEV'. This selects the objective group to travel though. +// Then make a trigger_once and target the trigger_sequence. When the player walks through the trigger, it will alert the player to a new objective and will add it to the GUI. +// 4. To complete the objective, we need to retrigger the trigger_objective. Make a new trigger_once and put it somewhere and make it target the trigger_objective. When the player moves +// through this trigger_once, it will retrigger the trigger_objective, making it complete. +// +// :TRIGGER_SEQUENCE: +// +// I would recommended reading up about how .SEQ files work, and how to script them here: https://twhl.info/wiki/page/Tutorial%3A_Scripting_with_sequence_files +// +// :'SUIT OF ARMOR' BUG: +// The 'Suit Of Armor' bug refers to the player picking up a battery and not having his armor count deplete when receiving damage. This is because of old HEV suit code. +// The fix for this is to always give or place armor at the start of the game/level/mod. This 'enables' the 'HEV suit' and makes batteries work as intended. +// +// :MAPTIER KEY: +// +// This is an interesting key. The code suggests that, depending on the integer given, enemy behavior and schedules are changed. +// +// :ENV_PARTICLE CRASH: +// +// Potential fix : Load into a different map that doesn't have an env_particle entity, prior to loading into a map with env_particle. +// Perma fix isn't going to be availible until I get an SDK from Valve. +// +// :ITEM_GENERIC FOG FIX: +// +// Here is how to fix item_generic not interacting with fog properly. Go into the entity properties and give it these settings. +// > Target Name : all_level_models +// > Render Mode : Color +// > FX Amount : 0 +// > Light Multiplier : 1 +// > Model : (whatever model you want) +// +//////////////////////////////////////////////////////////////////////////////// +// +// :RESOURCES: +// +// For all your mapping needs, I recommended these sites for getting started! +// +// : https://twhl.info/wiki +// : http://www.the303.org/tutorials/ +// : https://developer.valvesoftware.com/wiki/Main_Page +// +//////////////////////////////////////////////////////////////////////////////// +// +// :UPDATES: +// +// !NOTE! > is used to tag important things! Feel free to add your own! +// +// +// +// > 8/07/2021 1.1.3 'The little things' Hotfix +// +// - Added flavor text and other specifications (Ammo, uses etc...) to WEAPON ENTITIES, ITEM ENTITIES and AMMO ENTITIES. +// - Added Lever sounds to 'func_button'. +// - Added zhlt_copylight to ZHLT baseclass. +// - Reverted extended JACK FGD feature 'flags (Light)'. +// - Fixed flags 1 'monsters', 2 'no clients' on 'trigger_teleport'. +// - Fixed 'trigger_once' from having 2 'master' keys. +// - Fixed 'monster_generic' from having 2 render FX arrays. +// - Fixed 'language' key in BaseClass 'Monster' to have choices. +// - Fixed 'env_sprite' from having 0.0 on the 'scale' key. +// - Fixed 'lightmultiplier' keyvalue discription in 'Worldspawn' +// - Set 'FX amount' key to a default '255' for convenience. +// - Switch monster_npc model to npc_scientest model. +// - Partially renamed the door/button sounds to a better, non-HL1 description. + +// - [x] !WINDAWZ! find out what 'lightmultiplier' does. > only seems to apply in the 'Worldspawn'. Enchances the light recieved on ammo ammo entites (need to confirm if it affects other entities.) + +// > 30/06/2021 1.1.2 'CASTLE was here' Edition +// - Added item_generic Fog fix to the :DETAILS AND NOTES: section. +// - Added some Comments from one of the LD of Ritual Entertainment, CASTLE, on BaseClase Monster keys 'Behavior' and 'Weapons' and a few other entities. As well as in the introduction. +// - Added missing materials 'None' and 'Last Material' to BaseClase 'Breakable'. +// - Added iconsprite compatibility for all point entities in the FGD (Thanks Kenny.NL for the 1-bit Pack of tiles!) +// - Added a custom version of ZHLT.FGD that includes compatibility with its own sprites to show in editor. +// - Added all items to 'item' key on 'player_weaponstrip' for easy access. +// - Added a fully working version of 'func_model_brush' into the FGD. +// - Re-added BaseClase Monster keys 'Behavior' and 'Weapons'. Having a better understanding of them. +// - Re-added the 'rescueanim' key to 'monster_hostage'. Try it out and see if you can get it to work. :) +// - Removed unwanted notes from the 1.1.1 HF release. +// - Removed 'dot_product_weight','spherical_ambient','angle_hotspot','falloff_curvature','angle_penumbra', 'falloff_start_dist' and 'falloff_end_dist'. They were from Ritual Entertainments build of Ubertools, most likely they used a custom ZHLT build tool too. +// - Removed 'env_particle', it seems too broken to work at the moment. +// - Rewrote discription for 'MaxRange' in entity 'worldspawn'. +// - Rewrote trigger_zipline description. +// - Rewrote some of the discriptions for BaseClase Worldspawn. +// - Rewrote the descriptions for the Path Entities. +// - Fixed a lot of format issues to do with sprites and models. On some entities, it removes the ability to see the models in editor for monstermaker and the cycler entities. +// - Fixed BaseClass 'Monster' keyvalues 'Pumped/Wander/etc' choices. +// - Fixed the Cycler entity set from showing it's help info in a a keyvalue area. +// - Moved 'fleeondanger', 'cower', 'provoke' keys from BaseClass Monster to 'monster_npc' (Checked and these seem to be NPC exclusive). +// +// > 30/03/2021 V1.1.1 HOTFIX EDITION +// - General cleanup of .FGD +// - Added monster_terrorist_jungle_xyz to monster_counter_terrorist_repel and monstermaker entities. +// - Added 'zhlt_embedlightmap' and 'zhlt_embedlightmapresolution' to BaseClass 'ZHLT'. +// - Added discription to monstermaker entity. +// - Added 'grenadetouch' key description to BaseClase Breakable (Wonky key but useful for realistic glass.) +// - Added spawnflag 2 and 4 to func_tank. (not sure what they actually do yet.) +// - Removed the 'preset' key from speaker entity. +// - Removed spawnflag 8 from monster_apache. +// - Removed 'UseSentence' and 'UnUseSentence' keys from BaseClass Monster +// +// > 30/03/2021 V1.1 +// - Added in weapon options for 'onlydamagedby' and 'notdamagedby' keyvalue in func_breakable. +// - Added 'notdamagedby' and 'grenadetouch' key to BaseClass Breakable. +// - Added choices into 'classtype' key for monsters. +// - Added 'Target X' baseclass to func_button. +// - Added 'model' key to monster_hostage. +// - Added 'idlesound', 'deathsound', 'quiet', 'firesound' and 'health' keys to monster_apache. +// - Added choices to 'particle_type' key to env_particle. +// - Added 'item' key to player_weaponstrip. +// - Added choices to monstermaker 'monster_type'. +// - Added spawnflag 16 to 'scripted_sequence'. +// - Added 'healthUpdateRate', 'healthModifier', 'UseSentence' and 'UnUseSentence' to Baseclass Monster. +// - Added 'silent' key to func_pushable. +// - Added key 'classtype' to BaseClass BaseTank. +// - Added BaseClass Targetname to trigger_usetool. +// - Added 'spawnawake' to BaseClass Monster. +// - Added all presets from CS:CZDS sentence.txt to 'speaker' entity. +// - Added description to 'deathtrigger' key for BaseClass Monster. +// - Added 'sequencename' key to item_generic. +// - Added choices to 'maptier' key in worldspawn. +// - Added 'bodygroup' key to BaseClass gibshooterbase. +// - Added 'immediate' key to trigger_camera. +// - Added 'gagged' key to monstermaker. +// - Rewrote descriptions for func_breakable to include the above mentions in 'onlydamagedby' and 'notdamagedby' keyvalue. +// - Rewrote descriptions for 'tooltarget' key to include how target_info is used to get proper angle. +// - Rewrote descriptions for env_particle 'vis point' to mention that it takes a target_info. +// - Rewrote descriptions for worldspawn's 'maptier' key to mention AI changes. +// - Fixed aiscripted_sequence 'm_iszPlay' and 'm_iszEntity' key from showing its help info. +// - Fixed ambient_generic 'message' from showing help its info. +// - Fixed trigger_endsection 'section' key from showing its help info. +// - Fixed cycler 'model' key from showing help info. +// - Fixed 'explosion' values. 'directed' now displays proper behaviour. +// - Fixed 'target' keyvalue dupes on trigger_changekeyvalue. +// - Fixed func_button dupe 'target' keys. +// - Fixed 'spawn' on func_breakable from showing '0' instead of 'none'. +// - Fixed env_glow display name mistake. +// - Fixed item_generic not have a target or targetname. +// - Removed a '!NOTE!' tag from something that did not need it. +// - Removed func_hostage_rescue (doesnt exist in this game). +// - Removed 'default' key from BaseClass Monster (Im just dumb). +// - Removed 'toolset' key on trigger_usetool (Obsolete). +// +// > 27/02/2021 V1.0 +// - Intial release +// +// :ISSUES: +// +// - Monster_flyer uses 'boid' sounds from HL1. Has pigeon sounds in CZEROR /Sounds. +// - JACK problem manager reports that some things have dupe keys. > Still don't understand why JACK complains of key-value double ups... +// - func_recharge uses HEV sounds. +// - Monster_sentry doesn't precache it's firing sound properly. > Dodgy fix is to make 3 ambient_generics with the hks1/2/3 sounds in them !!!Can't fix unless Valve gives the CZEROR SDK!!! +// - env_particle throws this error on map load sometimes > 'Tried to create message with bogus message type (0)'. !!!Can't fix unless Valve gives the CZEROR SDK!!! +// - env_particle disappears when in players view, no fix as of yet. +// - Unlocked sounds on doors and buttons seem to be broken. > !!!Can't fix unless Valve gives the CZEROR SDK!!! +// +// +// > KEY: {x = Completed} {r = Remove} {f = Future} {? = Unknown} {P = Partial} +// +// :FUTURE: +// +// This is for things that will take awhile or are not really urgent. +// +// - [?] Figure out what spawnflag 1 does on env_liveammoshooter. +// - [f] Find a place for 'globalstate' to go on because it relates to CBaseToggle ents. +// - [?] Find out what spawnflag 1 does on trigger_endmission. +// - [?] Testing a lot on BaseClass 'Trigger' (No idea if these even function). +// - [f] Make pigeon sounds for monster_flyer. < Pigeon sounds may already exist in the base game, just need to change the file names to 'boidxyz'. +// - [f] Make new sounds for func_recharge. < Need goldwave for this. +// - [?] Figure out what flag 2 does on trigger_sequence. +// - [f] Add in extended JACK FGD features like 'flags (Angle)/flags (Light)' +// - [f] Fix 'weapon' and 'behavior' key choices on BaseClass Monster to properly reflect code. < I don't know if this works at all... +// +//////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////// +// :BASECLASSES: +//////////////////////////////////////////////////////////////////////////////// + +@SolidClass = worldspawn : "World entity" +[ + maptier(choices) : "Map Tier" : : "Apparently, This is may control what the enemy AI does in game. Not much information on this. CASTLE: This could have been for the Multiplayer section of the game, maybe nothing, its hard to say." = + [ + 1 : "1" + 2 : "2" + 3 : "3" + 4 : "4" + 5 : "5" + 6 : "6" + 7 : "7" + 8 : "8" + 9 : "9" + 10 : "10" + + ] + message(string) : "Map Description / Title" : : "Not working, this is a SP game afterall." + gametitle(choices) : "Game Title" : 0 : "show the game title sprite when the map loads." = + [ + 0 : "No" + 1 : "Yes" + ] + skyname(sky) : "Environment map (cl_skyname)" : : "Choose what sky image you want.'" + sounds(integer) : "CD track to play" : : "CD track to play when the level begins. Not working." + light(integer) : "Default light level" : : "Not working." + WaveHeight(integer) : "Default Wave Height" : : "Set the default wave height here. A func_water will overide what is set here." + MaxRange(integer) : "Max viewable distance" : 8192 : "Maximum distance the world is rendered at. Can be changed for better performance." + chaptertitle(string) : "Chapter Title Message" : : "Text displayed when entering the level." + lightmultiplier(integer) : "Light multiplier" : : "Sets a global illumination on items, ammo and weapons. There could be more to this keyvalue." + radfile(string) : "Radfile" : : "Specifies a xyz.RAD file to use." + mapversion(integer) : "Map Version" : 220 : "Not sure what this does. Could be something to do with the way map versions were compiled from UBERRadiant." + startdark(choices) : "Level Fade In" : 0 : "If Yes, then the level will start black and fade into normal light." = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 : "Used to clear out env_global data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + minTime(integer) : "Minimum wind time delay" : : "Not sure what this does. Not enough information." + minWindX(integer) : "Minimum x axis wind" : : "Not sure what this does. Not enough information." + minWindY(integer) : "Minimum Y axis wind" : : "Not sure what this does. Not enough information." + maxTime(integer) : "Maximum wind time delay" : : "Not sure what this does. Not enough information." + maxWindX(integer) : "Maximum x axis wind" : : "Not sure what this does. Not enough information." + maxWindY(integer) : "Maximum Y axis wind" : : "Not sure what this does. Not enough information." + grassSprite(sprite) : "Grass Sprite" : : "Select a grass sprite to be used on the map." + grassFadeDist(integer) : "Grass Fade Distance" : : "Distance that the grass sprites get faded at." + grassMinHeight(integer) : "Minimum Grass Height" : : "Define the minimum height for the grass sprites." + grassMaxHeight(integer) : "Maximum Grass Height" : : "Define the maximum height for the grass sprites." + grassDensity(integer) : "Grass Density" : : "Define the density of the grass sprites." +] + +@BaseClass studio() = FuncAddition +[ + model(studio) : "Model (if not brush)" : : "Refer to the 'COVERTING BRUSH ENTITIES' section of this FGD." + body(integer) : "Body (if not brush)" : : "Refer to the 'COVERTING BRUSH ENTITIES' section of this FGD." + origin(string) : "Origin (XYZ) (if not brush)" : : "Refer to the 'COVERTING BRUSH ENTITIES' section of this FGD." + zhlt_usemodel(string) : "Model Stealer" : : "Input the name of an item_generic that has a model, and it should steal the model from it to be used. Can also be used with brush entities." + style(choices) : "Texlight style" : 0 : "Set a style of lighting for the texlight. Can be applied to any brush based entity." = + [ + 0 : "Normal" + -3 : "Grouped" + 10 : "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11 : "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater" + ] +] + +@BaseClass base(FuncAddition) = Func2 +[ + skin(integer) : "Skin (if not brush)" : : "Refer to the 'COVERTING BRUSH ENTITIES' section of this FGD." +] + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" : : "The name of an entity to be used as the starting point for the beam. If undefined, the beam will choose a surface within the Radius to use as the starting point. (Note that if the Start Entity is undefined, the Ending Entity must also be undefined.)" + LightningEnd(target_destination) : "Ending Entity" : : "The name of an entity to be used as the end point for the beam. If undefined, the beam will choose a surface within the Radius to use as the end point." +] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" : : "Global name of an entity, allows to have one entity in multiple maps (e.g. elevator in map1 and map2 have the same Global Entity Name which tells the engine to treat those entities as one single entity, so all elevator settings, positions, actions e.t.c. are copied to another map in map transitions)." +] + +@BaseClass studio() = ModelFile +[ + model(studio) : "Model" : : "Select an Model file to use." + body(integer) : "Body" : : "Input the value for the bodygroup to use. (Use SOLOKILLERS HLMV for the value)." + skin(integer) : "Skin" : : "Input the value for the skin to use. (Use SOLOKILLERS HLMV for the value)." + head(integer) : "Head" : : "Input the value for the head to use. (Use SOLOKILLERS HLMV for the value)." +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 : "Brush entities only. Changes how light casts or receives on an object. Options are:" = + [ + 0 : "Normal" : "Let the entity decide about lighting setting." + 1 : "Embedded Fix" : "The 'EmbeddedFix' is for telling HLRAD to not used the complex light bleed fix on the entity, as sometimes when creating a brush entity that sticks through a wall, it will be lit incorrectly from the other side of the wall due to the bleed correction." + 2 : "Opaque (Blocks Light)" : "Blocks light. Useful for most func_wall's, some func_illusionary's, the occasional func_door, and possibly others for some effect." + 3 : "Opaque + Embedded Fix" : "Combines 'Opaque' and 'Embedded Fix' functions together. " + 6 : "Opaque + Concave Fix" : "The 'ConcaveFix' is needed for curved func_wall's, notably arch shapes. When they are set to opaque, the inner curve (the concave porition) will frequently have black fringes at the joins where brushes touch up. Setting the ConcaveFix flag fixes the black seams in these cases, but then the entity cannot have the EmbeddedFix set." + ] + zhlt_customshadow(integer) : "Shadow Transparency" : 0 : "Defines the transparency and colouring of brush based entities for the purposes of the shadows that those brushes cast. Can be applied to any brush based entity." + zhlt_embedlightmap(choices) : "Embed Light Map" : : "Transparent brush entities only. Set it to 'Yes' and this transparent entity will take light from the environment, making it look much more natural. This effect is pretty expensive so be careful with it." = + [ + 0 : "No" + 1 : "Yes" + ] + zhlt_embedlightmapresolution(integer) : "Embed Light Map Resolution" : : "Set to a power of 2 number. Controls the resolution of embedded lightmaps on transparent textures (see keyvalue above). Higher value for better optimization. Default and recommended value is 4." + light_origin(string) : "Light Origin (Zhlt 2.2+)" : : "Set optional light placement. Can be applied to any brush based entity. light_origin can be used to place a brush based entity to a new location for the purposes of lighting. Typical use requires placing an info_target at the relevant location, and then setting the light_origin to point the info_target's name. If the entity is opaque, it will also cast shadows from that location in addition to being lit as if it were there." + zhlt_copylight(string) : "Copy Light Information" : : "You can specify a name of an entity to copy it's lightning values. It can be a model-based entity, Brush entity or a simply info_target" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0 : "Normal" + 1 : "Slow Pulse" + 2 : "Fast Pulse" + 3 : "Slow Wide Pulse" + 4 : "Fast Wide Pulse" + 9 : "Slow Strobe" + 10 : "Fast Strobe" + 11 : "Faster Strobe" + 12 : "Slow Flicker" + 13 : "Fast Flicker" + 5 : "Slow Fade Away" + 6 : "Fast Fade Away" + 7 : "Slow Become Solid" + 8 : "Fast Become Solid" + 14 : "Constant Glow" + 15 : "Distort" + 16 : "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0 : "Normal" : "Default render mode." + 1 : "Color" : "Replaces the texture with the choosen colour in 'FX Colour'." + 2 : "Texture" : "Applies transparency to a brush. The transparency is controlled by the FX Amount." + 3 : "Glow" : "Removes the black background from sprites. Colour can be applied and resizes as the player approaches. Not used on solid entities." + 4 : "Solid" : "Removes the blue colour from textures tagged with '{'." + 5 : "Additive" : "Adds the texture colours to the background. Darker colours become less visible - black is removed. Glows in the dark." + ] + renderamt(integer) : "FX Amount (1 - 255)" : 255 : "Input how visible the object is. (Depending on the render mode, this could change the outcome of visibility.)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" : "Input 3 values (R G B) that determine a colour." + lightmultiplier(integer) : "Light multiplier" : : "Multiples light? Not sure what this does." +] + +@BaseClass = Master +[ + master(target_destination) : "Master" : : "The name of a multisource (or game_team_master) entity. A master must usually be active in order for the entity to work. Thus they act almost like an on/off switch, in their simplest form, and like an AND gate in the case of the multisource." +] + +@BaseClass = Target +[ + target(target_destination) : "Target" : : "When an entity is activated, it triggers the entity with the name specified by Target." +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" : : "Property used to identify entities." +] + +@BaseClass = Classtype +[ + classtype(choices) : "Class type" : : "This is for selecting the faction that the monster or NPC is on. Great for infighting amoung monsters. Classes are: TS1/TS2/CTS1/CTS2/TH/CTH/TVIP/CTVIP/CIV." = + [ + TS1 : "TS1" + TS2 : "TS2" + CTS1 : "CTS1" + CTS2 : "CTS2" + TH : "TH" + CTH : "CTH" + TVIP : "TVIP" + CTVIP : "CTVIP" + CIV : "CIV" + ] +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + killtarget(target_destination) : "KillTarget" : : "When an entity is triggered, it will remove from the game the entity specified by this property." +] + +@BaseClass = Angles +[ + Angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Sets the pitch (up / down), yaw (left / right) and roll (bank) respectively. The compass in Jackhammer corresponds to Yaw. The settings are not always (or not all) used." +] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + forcedtarget(target_destination) : "Forced Target" : : "Forces the monster to aggressively persue and kill what ever target name is input." + TriggerTarget(target_destination) : "TriggerTarget" : : "The event to trigger when the TriggerCondition is met. Used by monsters." + TriggerCondition(Choices) : "Trigger Condition" : 0 : "This controls the condition under which a monster will trigger its TriggerTarget. The options are:" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10 : "See Player Unconditional" + 11 : "See Player, Not In Combat" + ] + spawnflags(flags) = + [ + 1 : "WaitTillSeen" : 0 : "If enabled, The monster will have it's AI disabled until it sees player (even if something starts attacking monster)." + 2 : "Gag" : 0 : "If enabled, the monster will have no idle sounds until angry." + 4 : "MonsterClip" : 0 : "If enabled, The monster is affected by func_monsterclip." + 16 : "Prisoner" : 0 : "If enabled, the monster won't attack anyone, and no one will attack him." + 32 : "SquadLeader" : 0 : "If enabled, the monster will become a leader of the squad typed in 'Squad name'." + 128 : "WaitForScript" : 0 : "If enabled, the monster won't react to anything after being spawned until it enters a scripted sequence." + 256 : "Pre-Disaster" : 0 : "If enabled, Prevents player from using monster as his follower. Used for NPCs and CTs." + 512 : "Fade Corpse" : 0 : "If enabled, fade the monsters corpse after death." + ] + deathangle(integer) : "Death Angle" : : "The angle at which the monster will face on death." + deathanim(string) : "Death animation name" : : "Choose a specific animation that will play on death." + deathtrigger(target_destination) : "Death Trigger" : : "Choose a target to trigger on death." + language(choices) : "language (AM, SP, JA)" : : "Choose a language that the monster or NPC will speak. Can also accept a custom suffix defined in a .SEQ file." = + [ + AM : "American" + BR : "British" + FR : "French" + GE : "German" + JA : "Japanese" + RU : "Russian" + AR : "Arabic" + SP : "Spanish" + ] + cantmove(choices) : "Movement" : 0 : "Define the type of movement that the monster or NPC will use." = + [ + 0 : "Normal" + 1 : "Sniper/No Movement" + 2 : "Turret" + ] + weaponaccuracy(integer) : "Weapon accuracy" : : "The accuracy of the monster or NPC weapons. Put a value between 0 and 100." + healthmult(integer) : "Health Multiplier" : : "The multiplier that is added to the enemy health pool." + healthUpdateRate(integer) : "Health recharge rate" : : "Rate that, in seconds, health is recharged at." + healthModifier(integer) : "Health modifier" : : "Amount of health that is restored after every second. Use 'Health recharge rate' with this." + netname(target_destination) : "Squad Name" : : "In a monster or NPC case, this would be used as a squad identifier. Any monster with the same input will join the same squad." + unkillable(choices) : "Unkillable" : 0 : "Choose if the monster or NPC is unable to be killed." = + [ + 0 : "No" + 1 : "Yes" + ] + invulnerable(choices) : "Invulnerable" : 0 : "Choose if the monster or NPC is impervious to all damage." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnawake(choices) : "Spawn awake" : 0 : "Spawns a monster that is 'awake', meaning that the AI is active. Not sure if this key is working properly." = + [ + 0 : "No" + 1 : "Yes" + ] + idleanim(string) : "Idle Animation Name" : : "input the idle animation for the monster or NPC to use. (Use SOLOKILLERS HLMV for the value)" + //UseSentence(String) : "Use Sentence" : : "Testing. I assume it works the same as HL1." + //UnUseSentence(String) : "Un-Use Sentence" : : "Testing. I assume it works the same as HL1." + usetarget(target_destination) : "Use Target" : : "If left blank, the Monster or NPC will can be a follower. If not, It will trigger the entity with the same name as what is filled in." + alertable(choices) : "Alertable" : 0 : "Choose if the enemy is immediatly alerted or not." = + [ + 0 : "No" + 1 : "Yes" + ] + weapons(choices) : "Weapons" : : "CASTLE> This was used to override the monsters defined weapon attributes." = + [ + 1 : "1" + 2 : "2" + 4 : "4" + 8 : "8" + 16 : "16" + 32 : "32" + 64 : "64" + 128 : "128" + 256 : "256" + ] + silentdeath(choices) : "Silent Death" : 0 : "Not sure what this does." = + [ + 0 : "No" + 1 : "Yes" + ] + alertradius(integer) : "Alert Radius" : : "Supposedly, Sets the alert radius for the Terrorists. Not sure if working" + behavior(choices) : "Behavior" : : "CASTLE> This was used to override the behavior of the set monster_T/CT_xyz class, making them adopt different movement and schedules, regardless of the weapon they have." = + [ + 0 : "PISTOL" + 1 : "SHOTGUN" + 2 : "ASSAULTRIFLE" + 3 : "MACHINEGUN" + 4 : "SNIPERRIFLE" + 5 : "LAW" + 6 : "SMG" + 7 : "GRENADER" + 8 : "MP5" + 10 : "UNDEFINED" + ] + //count(integer) : "Count" : : "Not sure what this does. Could be a count to activate something." + sequence(integer) : "Sequence Number (Editor)" : : "Sequence to display in JACK. This does not affect gameplay." + nopvs(choices) : "Include in Potentially Visible Set (PVS)" : 0 : "Potentially Visible Sets are used to accelerate the rendering of 3D environments. It is also related to NPCs. Refer to the notes section of this FGD." = + [ + 0 : "Yes" + 1 : "No" + ] + dontfall(integer) : "Don't Fall to Floor" : : "Not sure what this does." + dropchance(string) : "Chance of Drop" : "0" : "Item drop chance. Put a value between 0 and 100." + dropitem(choices) : "Drop" : : "Define the item that drops from the NPC or monster. Make sure the item you spawn is actually in the map first, some items WILL cause an error and throw you back to the menu." = + [ + "weapon_knife" : "Knife" : "Spawn a Knife." + "weapon_p228" : "P228" : "Spawn a P228 pistol." + "weapon_glock18" : "Glock 18" : "Spawn a Glock 18 pistol." + "weapon_usp" : "USP" : "Spawn a USP pistol." + "weapon_fiveseven" : "Five-Seven" : "Spawn a Five-Seven pistol." + "weapon_elite" : "Elite Dual Pistols" : "Spawn a set of Elite pistols." + "weapon_deagle" : "Desert Eagle" : "Spawn a Desert Eagle pistol." + "weapon_ak47" : "AK47" : "Spawn an AK47 assault rifle." + "weapon_aug" : "AUG" : "Spawn an AUG assault rifle." + "weapon_m4a1" : "M4A1" : "Spawn an M4A1 assault rifle." + "weapon_sg552" : "SG552" : "Spawn an SG552 assault rifle." + "weapon_galil" : "Galil" : "Spawn an Galil assault rifle." + "weapon_famas" : "Famas" : "Spawn an Famas assault rifle." + "weapon_mac10" : "Mac-10" : "Spawn a Mac-10 submachine gun." + "weapon_p90" : "P90" : "Spawn a P90 submachine gun." + "weapon_tmp" : "TMP" : "Spawn a TMP submachine gun." + "weapon_ump45" : "UMP45" : "Spawn a UMP45 submachine gun." + "weapon_mp5navy" : "MP5" : "Spawn a MP5 submachine gun." + "weapon_scout" : "Scout" : "Spawn a Scout sniper rifle." + "weapon_awp" : "AWP" : "Spawn an AWP sniper rifle." + "weapon_g3sg1" : "G3SG1" : "Spawn a G3SG1 auto-rifle." + "weapon_sg550" : "SG550" : "Spawn a SG550 auto-rifle." + "weapon_flashbang" : "Flash Grenade" : "Spawn a Flash Grenade." + "weapon_smokegrenade" : "Smoke Grenade" : "Spawn a Smoke Grenade." + "weapon_hegrenade" : "HE Grenade" : "Spawn a HE Grenade." + "weapon_laws" : "LAW" : "Spawn a LAW rocket launcher." + "weapon_m60" : "M60" : "Spawn a M60 heavy machine gun." + "weapon_m249" : "M249" : "Spawn a M249 heavy machine gun." + "weapon_xm1014" : "XM1014" : "Spawn a XM1014 shotgun" + "weapon_m3" : "M3" : "Spawn a M3 shotgun" + "weapon_shieldgun" : "Shield" : "Spawn a Shield." + "weapon_blowtorch" : "Blowtorch Tool" : "Spawn the Blowtorch Tool." + "weapon_briefcase" : "Briefcase Tool" : "Spawn the Briefcase Tool." + "weapon_camera" : "Camera Tool" : "Spawn the Camera Tool." + "weapon_fiberopticcamera" : "Fiber-Optic Camera Tool" : "Spawn the Fiber-Optic Camera Tool." + "weapon_radiocontrolledbomb" : "Radio Bomb Tool" : "Spawn the Radio Bomb Tool." + "weapon_radio" : "Radio Tool" : "Spawn the Radio Tool" + "ammo_338magnum" : "338 Magnum Ammo" : "Spawn 338 Magnum ammo. For the AWP." + "ammo_357sig" : "357 Sig Ammo" : "Spawn 357 Sig ammo. For the P228." + "ammo_45acp" : "45ACP Ammo" : "Spawn 45ACP ammo. For the USP, UMP45 and MAC-10." + "ammo_50ae" : "50AE Ammo" : "Spawn 50AE ammo. For the Desert Eagle." + "ammo_556nato" : "556 Nato Ammo" : "Spawn 556 Nato ammo. For the AUG, Famas, Galil, SG550, SG552 and M4A1." + "ammo_556natobox" : "556 Nato Box Ammo" : "Spawn a 556 Nato Box. For the M249." + "ammo_762natobox" : "762 Nato Box Ammo" : "Spawn a 762 Nato Box. For the M60." + "ammo_762nato" : "762 Nato Ammo" : "Spawn 762 Nato ammo. For the AK47, Scout, and G3SG1." + "ammo_57mm" : "57MM Ammo" : "Spawn 57MM ammo. For the P90 and Five-Seven." + "ammo_9mm" : "9MM ammo" : "Spawn 9MM ammo. For the Glock 18, Elites, MP5 and TMP." + "ammo_buckshot" : "12 Gauge Ammo" : "Spawn 12 Gauge ammo. For the M3 and XM1014." + "ammo_generic" : "Generic Ammo" : "Spawn Generic ammo. Every ammo type at max is given." + ] + weaponrange(integer) : "Weapon Range" : : "Defines the range (in units) that the Monster or NPC will attack the player at." +// poisoned(integer) : "Poisoned (?)" !WARNING! > CAUSES CRASH ON LEVEL LOAD + pumped(choices) : "Pumped" : : "Not sure what this does. The code suggests it changes how the monster's health works." = + [ + 0 : "No" + 1 : "Yes" + ] + wander(choices) : "Wander" : : "Makes the NPC move randomly around the area. Just wandering around with no goal." = + [ + 0 : "No" + 1 : "Yes" + ] + fadespeed(integer) : "Fade Speed" : : "Speed at which bodies will fade out at. Higher number means faster fade.." + deathfadedelay(integer) : "Death Fade Delay" : : "Delay (in seconds) at which bodies will begin to fade at." + deathfade(choices) : "Death Fade" : 0 : "Choose if the body fades after death." = + [ + 0 : "No" + 1 : "Yes" + ] + lightmultiplier(integer) : "Light multiplier" : : "Not sure what this does." +] + +@BaseClass base(Targetname, Classtype, Global, Target, RenderFields, Angles) = BaseTank +[ + master(target_destination) : "(Team) Master" : : "This version of the master keyvalue is mainly for use with 1009 team settings (game_team_master)." + spawnflags(flags) = + [ + 1 : "Active" : 0 : "If enabled, this func_tank will be active on level load, which means it will try to kill every enemies in it's view distance." + 16 : "Only Direct" : 0 : "If enabled, the automatic func_tank will fire it's target only when they are in it's line of sight." + 32 : "Controllable" : 0 : "If enabled, the player can control this turret. Keep in mind that func_tankcontrols is required for this." + ] + yawrate(string) : "Yaw rate" : "30.0" : "Speed of the left/right movement of the gun." + yawrange(string) : "Yaw range" : "180.0" : "Range of the left/right movement in degrees." + yawtolerance(string) : "Yaw tolerance" : "15.0" : "Not sure what this does." + pitchrate(string) : "Pitch rate" : "0.0" : "Speed of the up/down movement of the gun." + pitchrange(string) : "Pitch range" : "0.0" : "Range of the up/down movement in degrees." + pitchtolerance(string) : "Pitch tolerance" : "5.0" : "Not sure what this does." + barrel(string) : "Barrel Length" : "0.0" : "Distance from the center of the origin brush to the tip of the barrel." + barrely(string) : "Barrel Horizontal" : "0.0" : "Horizontal distance from the center of the origin brush to the center of the barrel." + barrelz(string) : "Barrel Vertical" : "0.0" : "Vertical distance from the center of the origin brush to the center of the barrel." + spritesmoke(sprite) : "Smoke Sprite" : "" : "Sprite that will be shown at the end of the barrel when the gun is fired." + spriteflash(sprite) : "Flash Sprite" : "" : "Sprite that will be shown at the end of the barrel when the gun is fired." + spritescale(string) : "Sprite scale" : "1.0" : "Scale of the sprites that appear at the end of the barrel. 1 is normal, 0.5 is half, etc." + rotatesound(sound) : "Rotate Sound" : "" : "Choose a sound to use when the turret is moving." + firerate(string) : "Rate of Fire" : "1.0" : "Number of bullets fired per second." + bullet_damage(integer) : "Damage Per Bullet" : 0 : "Default is 0, so if you want it to kill things you must enter something." + persistence(string) : "Firing persistence" : "1.0" : "Used by non-player-controlled guns to determine for how long the gun carries on firing after the player has left its range." + firespread(choices) : "Bullet accuracy" : 0 : "How accurate the gun is. Options are:" = + [ + 0 : "Perfect Shot" + 1 : "Small cone" + 2 : "Medium cone" + 3 : "Large cone" + 4 : "Extra-large cone" + ] + minRange(string) : "Minimum target range" : "0.0" : "Minimum range the target can be at for a non-player-controlled gun to fire." + maxRange(string) : "Maximum target range" : "0.0" : "Maximum range the target can be at for a non-player-controlled gun to fire." + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@BaseClass base(Targetname, Targetx, Global, Master, RenderFields, Angles, ZHLT) = Door +[ + speed(integer) : "Speed" : 100 : "Speed that the door moves at." + movesnd(choices) : "Move Sound" : 0 : "Choose a moving sound for the door. Options are:" = + [ + 0 : "No Sound" + 1 : "Pneumatic door" : "A door that sounds futuristic." + 2 : "Sliding door - Wood" : "Small sliding wood door." + 3 : "Sliding door - Metal" : "Smaller, lightweight sliding metal door." + 4 : "Sliding door - Metal 2" : "Larger, heavy sliding metal door." + 5 : "Normal door - Metal" : "Normal metal door sound." + 6 : "Rising water" : "Used for water rising." + 7 : "Vault door" : "Large vault door. Sounds similar to 'Pneumatic door' but with more ambient sounds." + 8 : "Normal door - Metal 2" : "A slightly more cartoony sounding metal door." + 9 : "Normal door - Wood" : "Normal sounding wooden door." + 10 : "Normal door - Wood 2" : "Normal sounding wooden door. Slightly longer." + 11 : "Electric gate" : "A very garage door like sound." + ] + stopsnd(choices) : "Stop Sound" : 0 : "Choose a stop sound for the door. Options are:" = + [ + 0 : "No Sound" + 1 : "Pneumatic door - Stop" : "A Pneumatic stopping sound." + 2 : "Pneumatic door - Stop 2" : "A Pneumatic stopping sound. More steam and reverb." + 3 : "Sliding door - Metal" : "Sounds like a normal sliding door, rather than a stop sound." + 4 : "Metal clunk" : "A metal clunk sound." + 5 : "Metal clunk 2" : "A metal clunk sound. More reverb." + 6 : "Clanging Pneumatic" : "A clang, then a Pneumatic stopping sound." + 7 : "Clanging Pneumatic 2" : "A clanging, Pneumatic stopping sound. Mixed at roughly the same time." + 8 : "Electric gate" : "Sounds like an electric gate locking." + 11 : "Electric gate 2" : "Shorter, more muted electric gate locking sound." + ] + wait(integer) : "delay before close" : 0 : "Time to wait before the door closes after opening (-1 or 0 makes it stay open, or else use >0.1)" + lip(integer) : "Lip" : : "Number of units left after move (the lip value is subtracted from the move distance)." + dmg(integer) : "Damage inflicted when blocked" : 0 : "Set the damage given to something if it blocks a door." + message(string) : "Message if triggered" : : "Set if the door fires a message. This key might not work." + netname(target_destination) : "Fire on Close" : : "Input a entity name that will be triggered when the door is closed. This key might not work." + health(integer) : "Health (shoot open)" : 0 : "With a non-zero value here, the door will have to be damaged to this extent to open. This key might not work." + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 : "If enabled, the entity starts in its 'open' position." + 4 : "Don't link" : 0 : "If enabled, restricts the entity from being linked to a door with the same name (preventing it from opening as part of a pair)." + 8 : "Not Solid" : 0 : "If enabled, a non-solid door." + 32 : "Toggle" : 0 : "If enabled, makes the entity toggleable" + 256 : "Use Only" : 0 : "If enabled, this entity can be triggered by using it but not by touching it anymore. This does not outrule activation by triggering, though." + 512 : "Monsters can't" : 0 : "If enabled, monsters with arms can't use this entity." + ] + locked_sound(choices) : "Locked Sound" : 0 : "Choose a lock sound for the door. Options are:" = + [ + 0 : "No Sound" + 1 : "Normal door knob - Wood" : "Normal wooden door. Door knob sound." + 2 : "Normal door lock - Wood" : "Normal wooden door. Locked sound." + 3 : "Normal door shake - Wood" : "Normal wooden door. Shaking sound" + 4 : "Normal door latch - Metal" : "Normal metal door. Latch sound." + 5 : "Normal door shake - Metal" : "Normal metal door. Shaking sound." + 6 : "Gate shake - Metal 2" : "Metal gate. Shaking sound." + 7 : "Normal door lock - Metal" : "Normal metal door. Locked sound." + 8 : "Normal door hit - Metal" : "Normal metal door. Hitting sound." + 9 : "Pneumatic door lock" : "Lock sound, then a beep." + 10 : "Pneumatic door buzz" : "An electirc buzzing sound." + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 : "Choose an unlock sound for the door. This is broken for some reason in the game. Options are:" = + [ + 0 : "No Sound" + 1 : "Old button" : "Sounds like an old button." + 2 : "Digital - Chirping" : "Digital chirping sound." + 3 : "Digital - Chirping 2" : "An alternative digital chirping sound." + 4 : "Digital - Old button" : "Deep button press with a digital chirp at the end." + 5 : "2-tone with digital chirp" : "A 2-tone alert with a digital chirp sound." + 6 : "Digital - Old button 2" : "Digital chirping with a old button press at the end." + 7 : "Digital - Old button 3" : "An old button with an alternative digital chirping sound." + 8 : "Old button 2" : "Industrial button sound." + 9 : "Digital - old button 4" : "Another old button sound with a digital chirping sound." + 10 : "Buzzer" : "A buzzer sound." + 11 : "Buzzer - Off" : "A buzzer. Has a lower tone to " + 13 : "Latchunlocked1 (HL1)" + ] + locked_sentence(choices) : "Locked Sentence" : 0 : "Choose a locked sentence for VOX to say for the door. Refer to the notes section of this FGD. Options are:" = + [ + 0 : "No Sound" + 1 : "Gen. Access Denied" + 2 : "Security Lockout" + 3 : "Blast Door" + 4 : "Fire Door" + 5 : "Chemical Door" + 6 : "Radiation Door" + 7 : "Gen. Containment" + 8 : "Maintenance Door" + 9 : "Broken Shut Door" + 10 : "Buzz" + 11 : "Buzz Off" + 12 : "Latch Locked" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 : "Choose an unlocked sentence for VOX to say for the door. Refer to the notes section of this FGD. Options are:" = + [ + 0 : "No Sound" + 1 : "Gen. Access Granted" + 2 : "Security Disengaged" + 3 : "Blast Door" + 4 : "Fire Door" + 5 : "Chemical Door" + 6 : "Radiation Door" + 7 : "Gen. Containment" + 8 : "Maintenance area" + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." + skin(choices) : "Contents" : 0 = + [ + 0 : "Normal" + -1 : "Empty" + -2 : "Solid" + -3 : "Water" + -4 : "Slime" + -5 : "Lava" + -16 : "Ladder" + ] + explodemagnitude(integer) : "Explosion Magnitude" : : "Not sure what this does." +] + +@BaseClass size(-16 -16 -16, 16 16 16) base(Targetname, Angles) = gibshooterbase +[ + m_iGibs(integer) : "Number of Gibs" : 0 : "How many gibs to make." + delay(string) : "Delay between shots" : "0.0" : "Delay (in seconds) between shots. If 0, all gibs shoot at once." + m_flVelocity(string) : "Gib Velocity" : "0.0" : "How fast the gibs are fired." + m_flVariance(string) : "Course Variance" : "0.0" : "How much spread is added to the gibs." + m_flGibLife(string) : "Gib Life" : "4.0" : "Time in seconds before the gibs disappear." + bodygroup(integer) : "Bodygroup" : : "allows a specific bodygroup to be selected." + spawnflags(flags) = + [ + 1 : "Repeatable" : 0 : "If enabled, the sequence can be repeated more than once. Otherwise the entity will be removed once the sequence is complete." + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 255 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + style(choices) : "Texlight style" : 0 : "Light appearance. Options are:" = + [ + 0 : "Normal" + -3 : "Grouped" + 10 : "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11 : "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." + _fade(integer) : "Fade (ZHLT Only)" : 1 : "In the simplest words, it customizes light fading. '1.0' for normal fade, larger values for 'shorter' lights." + _color(string) : "Color scale (0-1)" : "1.000000 1.000000 1.000000" : "Not sure what this does." + _falloff(Choices) : "Falloff (ZHLT Only)" : 0 : "Changes the way that light is calculated. Inverse square is default. Linear creates collimated lighting, similar to that of a projector." = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 : "If enabled, the entity will need to be triggered to work." + ] + + //These are ALL features that were exclusive to the version of Ubertools that Ritual Entertainment used. We have better compilers now, but it would be nice to have a look at the stuff they used. + //dot_product_weight(integer) : "Dot product weight" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //spherical_ambient(integer) : "Spherical Ambient" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //angle_hotspot(integer) : "Angle Hotspot" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //falloff_curvature(integer) : "Falloff curvature" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //angle_penumbra(integer) : "Angle Pnumbra" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //falloff_start_dist(integer) : "Falloff Start Distance" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." + //falloff_end_dist(integer) : "Falloff End Distance" : 0 : "Radiant Ubertools feature, most likely unusable with current goldsource compilers (VHLT). This has something to do with how light is calculated. Not sure what it does." +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0 : "No Sound" + 1 : "big elev 1" + 2 : "big elev 2" + 3 : "tech elev 1" + 4 : "tech elev 2" + 5 : "tech elev 3" + 6 : "freight elev 1" + 7 : "freight elev 2" + 8 : "heavy elev" + 9 : "rack elev" + 10 : "rail elev" + 11 : "squeek elev" + 12 : "odd elev 1" + 13 : "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0 : "No Sound" + 1 : "big elev stop1" + 2 : "big elev stop2" + 3 : "freight elev stop" + 4 : "heavy elev stop" + 5 : "rack stop" + 6 : "rail stop" + 7 : "squeek stop" + 8 : "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : 0 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default)." +] + +@BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles) = PlayerClass [] + +@BaseClass base(Classtype, Targetname, Global, RenderFields, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 : "Altitude to ascend or descend (use negative values for the latter, or 0 to disable altitude change)." + spawnflags(flags) = + [ + 1 : "Auto Activate train" : 0 : "If enabled, the train won't be paused at the top/bottom of the path after func_trackchange finish it's movement. Instead, it will continue moving forward." + 2 : "Relink track" : 0 : "The functionality of this flag is unknown. However, this entity seems to work fine whenever this flag is selected or not." + 8 : "Start at Bottom" : 0 : "If enabled, The platform starts at the bottom instead at the top path_track." + 16 : "Rotate Only" : 0 : "If enabled, the platform only rotates in place of it's origin without travelling to the specified altitude. The top and the bottom path_tracks should have their origin positioned in at the coordinates." + 64 : "X Axis" : 0 : "If enabled, the train will rotate around the X axis instead of the Z axis. Can be combined with 'Y Axis' flag." + 128 : "Y Axis" : 0 : "If enabled, the train will rotate around the Y axis instead of the Z axis. Can be combined with 'X Axis' flag." + ] + rotation(integer) : "Spin amount" : 0 : "This is the amount in degrees the track will turn on its way up / down." + train(target_destination) : "Train to switch" : "The Name of the train that is using the track." + toptrack(target_destination) : "Top track" : "This is the Name of the last path_corner in the upper track." + bottomtrack(target_destination) : "Bottom track" : "The Name of the first path_corner in the lower track." + speed(integer) : "Move/Rotate speed" : 0 : "The speed in units/sec that the track platform will move. If the Rotate Only flag is set this will be the speed of rotation only." +] + +//!NOTE! > Testing a lot here +@BaseClass base(Targetname, Master, Target) = Trigger +[ + delay(string) : "Delay before trigger" : "0.0" : "Time delay before triggering the target" + killtarget(target_destination) : "Kill target" : : "Removes the targeted entity from the game." + netname(target_destination) : "Target Path" : : "If a trigger has a netname, that netname will become the target of the triggered object." + //querytarget(string) : "Query target" : : "TESTING: used in the mission hankagai. Value was 'player'." + //viewtarget(string) : "View target" : : "TESTING: used in the mission hankagai. Value was 'sniper'." + //viewconedegrees(integer) : "Viewcone degrees" : : "TESTING: used in the mission hankagai. Value was '30'" + damage(integer) : "damage" : : "TESTING could be a mistake" + //globalstate(string) : "global state" : : "TESTING: used in the mission hankagai. Value was set to a env_global, 'see_toshi_state'." + style(integer) : "Style" : 32 : "Not sure what this does." + sounds(choices) : "Sound style" : 0 : "This use to be the secret sounds found in Quake. It seems to not work anymore." = + [ + 0 : "No Sound" + ] + message(string) : "Message" : : "A message to display when triggered." + spawnflags(flags) = + [ + 4 : "Pushables" : 0 : "If enabled, func_pushable entities can trigger this entity." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// AISCRIPTED ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence: Like the scripted_sequence entity, the aiscripted_sequence entity allows you to make a monster entity move to a specific location and/or perform a given animation. Unlike scripted_sequence, aiscripted_sequence completely overrides the targeted monster's AI. Regardless of what you do to the monster, it will follow this sequence." +[ + m_iszEntity(target_destination) : "Target Monster" : : "The name of the monster entity that this sequence affects. You can also input a monster type (monster_scientist, for example. But, only one monster will be chosen to follow the sequence.)" + m_iszPlay(string) : "Action Animation" : : "The name of the animation that will be performed by Target Monster." + m_flRadius(string) : "Search Radius" : "512.0" : "If you input a monster type into Target Monster, the entity will pick a monster within this radius of the entity to follow the sequence. If none are within the radius, the first monster to enter the radius will follow the sequence." + m_flRepeat(string) : "Repeat Rate ms" : "0.0" : "Seems to not work." + m_fMoveTo(Choices) : "Move to Position" : 0 : "Sets how (or if) the monster moves before performing the animation. Choices are:" = + [ + 0 : "No" : "The monster will not move or turn. It will perform the animation wherever it is." + 1 : "Walk" : "The monster will walk to the aiscripted_sequence, then perform the animation." + 2 : "Run" : "The monster will run to the aiscripted_sequence, then perform the animation." + 4 : "Instantaneous" : "The monster will instantly warp to the location of the aiscripted_sequence and perform the animation." + 5 : "No - Turn to Face" : "The monster will not move, but will turn to the aiscripted_sequence's angle before performing the animation." + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 : "Allows you to have the monster's AI schedule change to 'Ambush' when the sequence is done, which means that the monster will be in an attentive state and encounter enemies more actively. This key might not work." = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(flags) = + [ + 4 : "Repeatable" : 0 : "If enabled, the sequence can be repeated more than once. Otherwise the entity will be removed once the sequence is complete." + 8 : "Leave Corpse" : 0 : "If enabled, if the action animation is a death animation, causing the monster to die, the corpse will not fade out." + 32 : "No Interruptions" : 0 : "If enabled, the sequence cannot be interrupted. The monster will ignore damage until the sequence is complete, as with the aiscripted_sequence entity." + 128 : "No Script Movement" : 0 : "If enabled, when the sequence is completed, the monster will be placed back where the Action Animation started (if the animation would cause the monster to move)." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// AMBIENT ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/AmbientGeneric.spr") base(Targetname, Angles) = ambient_generic : "Universal Ambient" +[ + message(sound) : "Path/filename.wav of WAV" : : "This defines which sound file will be played by the entity. This accepts an input of the form: path/filename.wav (starting from the sound folder). (Example: ambience/drips.wav). The name of a sentence defined in sentences.txt will also be accepted with the form: !SENTENCENAME. (Example: !HG_ALERT1)" + health(integer) : "Volume (10 = loudest)" : 10 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default). (If using dynamics attributes below, this is the maximum volume the sound will reach)." + preset(choices) :"Dynamic Presets" : 0 : "Sets the ambient_generic to use a predefined set of dynamics. If set to anything other than :None:, this will override every other attribute apart from Name and WAV Name." = + [ + 0 : "None" : "Does not use a preset, and will not override any other entity attributes." + 1 : "Huge Machine" : "Very long spin up, starting slow and getting fast. Very long spin down." + 2 : "Big Machine" : "Medium spin up, starting normal and getting fast. Long spin down." + 3 : "Machine" : "Quick spin up, starting normal and getting fast. Quick spin down." + 4 : "Slow Fade in" : "Slow fade in/out." + 5 : "Fade in" : "Medium fade in/out." + 6 : "Quick Fade in" : "Quick fade in/out." + 7 : "Slow Pulse" : "Slow pulsing speed. Quick fade out." + 8 : "Pulse" : "Pulsing speed. Quick fade out." + 9 : "Quick pulse" : "Quick pulsing speed. Quick fade out." + 10 : "Slow Oscillator" : "Slow oscillation between normal and slow speed. Quick fade out." + 11 : "Oscillator" : "Medium oscillation between normal and slow speed. Quick fade out." + 12 : "Quick Oscillator" : "Fast oscillation between normal and slow speed. Quick fade out." + 13 : "Grunge pitch" : "Extremely slow. Quick fade out." + 14 : "Very low pitch" : "Very slow. Quick fade out." + 15 : "Low pitch" : "Slow. Quick fade out." + 16 : "High pitch" : "Fast. Quick fade out." + 17 : "Very high pitch" : "Very fast. Quick fade out." + 18 : "Screaming pitch" : "Extremely fast. Quick fade out." + 19 : "Oscillate spinup/down" : "Medium oscillation, with long spin up from slow to fast. Long spin down." + 20 : "Pulse spinup/down" : "Slow pulse, with long spin up from slow to fast. Long spin down." + 21 : "Random pitch" : "Occasionally switches speed, tending towards slower speeds. Quick fade out." + 22 : "Random pitch fast" : "Rapidly switches speed, tending towards faster speeds. Quick fade out." + 23 : "Incremental Spinup" : "Quick spin up. Subsequent triggers will not toggle, but will spin up from existing speed, up to five times. Cannot be turned off." + 24 : "Alien" : "Unusual pulsing and switching speed. Quick fade out." + 25 : "Bizzare" : "Fast oscillation between fast and slow/silent. Quick fade out." + 26 : "Planet X" : "Medium switching between slower speeds, similar to :Random pitch:. Quick fade out." + 27 : "Haunted" : "Slow switch between normal and slow speed. Quick fade out." + ] + volstart(integer) : "Start Volume" : 0 : "Sets the volume that the sound should start at when fading in, and that it should stop at when fading out. Scales from 0 (completely silent) to 10 (maximum). (Should be lower than Volume.)." + fadein(integer) : "Fade in time (0-100)" : 0 : "Sets how long the sound should take to fade in from Start Volume to Volume. Scales from 0 (instant) to 100 (very long)." + fadeout(integer) : "Fade out time (0-100)" : 0 : "Sets how long the sound should take to fade out from Volume to Start Volume. Scales from 0 (instant) to 100 (very long)." + pitch(integer) : "Pitch (> 100 = higher)" : 100 : "Sets the pitch of the sound. Scales from 100 (default), with lower values meaning lower pitch and higher values meaning higher pitch." + pitchstart(integer) : "Start Pitch" : 100 : "Sets the pitch that the sound should start at when spinning up, and that it should stop at when spinning down. Scales from 100 (default), with lower values meaning lower pitch and higher values meaning higher pitch. (Should be lower than Pitch.)" + spinup(integer) : "Spin up time (0-100)" : 0 : "Sets how long the sound should take to spin up from Start Pitch to Pitch. Scales from 0 (instant) to 100 (very long)." + spindown(integer) : "Spin down time (0-100)" : 0 : "Sets how long the sound should take to spin down from Pitch to Start Pitch. Scales from 0 (instant) to 100 (very long)." + lfotype(choices) : "LFO type" : : "Allows the sound to have certain oscillating effects applied to its pitch." = + [ + 0 : "Off" : "Disables the LFO effects." + 1 : "SQR" : "Switches between a low and high pitch." + 2 : "TRI" : "Oscillates between a low and high pitch." + 3 : "RND" : "Randomly switches pitches." + ] + lforate(integer) : "LFO rate (0-1000)" : 0 : "Sets how quickly the pitch changes with the LFO effects. Scales between 0 (does not change) and 1000 (changes extremely quickly)." + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 : "Sets how much the pitch should change with the LFO effects. Scales between 0 (does not change) and 100 (very large changes)." + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 : "Sets how much the volume should change with the LFO effects. Seems to coincide with lower pitches. Scales between 0 (does not change) and 100 (silent)." + cspinup(integer) : "Incremental spinup count" : 0 : "Sets how many times the ambient_generic can be triggered to have the pitch spin up on top of the pitch it was already playing at. Setting this to a value other than 0 will disable toggling the sound, and will prevent the sound from being turned off even it has been triggered that many times." + spawnflags(flags) = + [ + 1 : "Play Everywhere" : 0 : "If enabled, the sound will be heard throughout the entire map." + 2 : "Small Radius" : 0 : "If enabled, the sound will be at maximum volume within a roughly 256 unit radius, fading out completely at around 512 units away." + 4 : "Medium Radius" : 1 : "If enabled, the sound will be at maximum volume within a roughly 512 unit radius, fading out completely at around 768 units away." + 8 : "Large Radius" : 0 : "If enabled, the sound will be at maximum volume within a roughly 768 unit radius, fading out completely at around 1280 units away." + 16 : "Start Silent" : 0 : "If enabled, the sound will not play at the start of the map, and will need to be triggered to play. Otherwise, the sound will play at the start of the map whether it is a looping sound or not." + 32 : "Not Toggled" : 0 : "If enabled, Tells the entity whether or not it is dealing with a looping sound. The sound will play whenever the entity is triggered (intended for non-looping sounds). (Looping sounds will still play, but will not turn off when triggered.) If not enabled, the sound will toggle on or off when triggered (intended for looping sounds). (Non-looping sounds will still play, but every second trigger will turn the sound off regardless of whether the sound is actually playing anything.) See notes for more information about looping sounds." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// AMMO ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@BaseClass base(RenderFields, Angles, ModelFile) = Ammo +[ + numclips(integer) : "Number of magazines" : : "This defines the number of magazines in the ammo entity. If the value is more than 1, it will change the model(Example: 9mmBig.mdl)." +] + +@PointClass base(Ammo) studio("models/w_338magnum.mdl") = ammo_338magnum : ".338 Lapua Magnum Ammo: For the AWP. " [] + +@PointClass base(Ammo) studio("models/w_357sig.mdl") = ammo_357sig : ".357 SIG Ammo: For the P228." [] + +@PointClass base(Ammo) studio("models/w_45acp.mdl") = ammo_45acp : ".45 ACP Ammo: For the USP, UMP45 and MAC-10."[] + +@PointClass base(Ammo) studio("models/w_50ae.mdl") = ammo_50ae : ".50 Action Express Ammo: For the Desert Eagle."[] + +@PointClass base(Ammo) studio("models/w_556nato.mdl") = ammo_556nato : "5.56mm NATO Ammo: For the AUG, Famas, Galil, SG550, SG552 and M4A1." [] + +@PointClass base(Ammo) studio("models/w_556natobox.mdl") = ammo_556natobox : "5.56mm NATO Box Ammo: For the M249." [] + +@PointClass base(Ammo) studio("models/w_762natobox.mdl") = ammo_762natobox : "7.62 NATO Box Ammo: For the M60." [] + +@PointClass base(Ammo) studio("models/w_57mm.mdl") = ammo_57mm : "5.7mm Ammo: For the P90 and Five-Seven." [] + +@PointClass base(Ammo) studio("models/w_762nato.mdl") = ammo_762nato : "7.62mm NATO Ammo: For the AK47, Scout, and G3SG1." [] + +@PointClass base(Ammo) studio("models/w_9mmclip.mdl") = ammo_9mm : "9mm Parabellum Ammo: For the Glock 18, Elites, MP5 and TMP." [] + +@PointClass base(Ammo) studio("models/w_shotbox.mdl") = ammo_buckshot : "12 Gauge Ammo: For the M3 and XM1014." [] + +@PointClass base(Ammo) studio("models/w_weaponbox.mdl") = ammo_generic : "Generic Ammo: Every ammo type at max is given." [] + +//////////////////////////////////////////////////////////////////////////////// +// BUTTON ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@SolidClass base(Master, Target, Angles, RenderFields, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1 : "Use Activates" : 1 : "If enabled, the button_target can also be activated by a player using it. This is enabled by default!" + 2 : "Start On" : 0 : "If enabled, the button_target will send it's first output as 'Off', the second activation will be 'On' and next one 'Off' again e.t.c. Leave it empty to make first signal send on activation as 'On', second one 'Off' e.t.c." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// CYCLER ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/Cycler.spr") base(Targetname, Angles, RenderFields) = cycler : "Monster Cycler: The cycler entity is a model viewer of sorts. It places a model within the map which, when attacked, will cycle its animation. Given the way this entity behaves, there is little practical use for this entity beyond viewing animations (for which there are programs that are far more convenient)." +[ + model(studio) : "Model" : : "This defines which model file will be displayed by the entity." + skin(integer) : "Skin" : 0 : "Input the value for the skin to use. (Use SOLOKILLERS HLMV for the value)" + body(integer) : "Body" : 0 : "Input the value for the bodygroup to use. (Use SOLOKILLERS HLMV for the value)" + head(integer) : "Head" : 0 : "Input the value for the head to use. (Use SOLOKILLERS HLMV for the value)" + sequence(integer) : "Animation #" : 0 : "Sets the animation the model should start in. Setting this to anything other than 0 seems to place the cycler into its triggered mode." +] + +@PointClass iconsprite("sprites/Hammer/CyclerSprite.spr") base(Targetname, Angles, RenderFields) = cycler_sprite : "Sprite Cycler: Kinda of obsolete in CS:CZDS due to item_generic. The cycler_sprite entity is a sprite viewer of sorts. It places a sprite within the map which, when attacked, will step through its animation. Although it seems strange, this entity is one of the better entities for placing a decorative model into a map. It will not stop players nor bullets. Simply place a model into the Sprite attribute." +[ + model(studio) : "Model / Sprite" : : "This defines which sprite/model file will be displayed by the entity." + framerate(string) : "Framerate(SPRITE ONLY)" : "1.0" : "Sets how many frames the sprite will automatically step through per second." + sequence(integer) : "Animation # (MODELS ONLY)" : 0 : "Sets the animation the model should start in. Setting this to anything other than 0 seems to place the cycler into its triggered mode." + controller(string) : "Controllers 0-255" : "0 0 0 0" : "Not sure what this does." +] + +@PointClass iconsprite("sprites/Hammer/CyclerWeapon.spr") base(Targetname) = cycler_weapon : "cycler_weapon: The cycler entity is a weapon model viewer of sorts. It places a model within the map that acts as a weapon pickup. When picked up, the model will be placed in front of the player as a viewmodel. Secondary attack will cycle animations of the model, while primary attack will restart the current animation." +[ + model(studio) : "Model" : : "This defines which model file will be used by the entity." +] + +@PointClass iconsprite("sprites/Hammer/CyclerWreckage.spr") base(Targetname, Angles, RenderFxChoices) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + rendermode(choices) : "Render Mode" : 2 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0 : "Normal" + 1 : "Color" + 2 : "Texture" + 3 : "Glow" + 4 : "Solid" + 5 : "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" : 0 : "Input how visible the object is. (Depending on the render mode, this could change the outcome of visibility.)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" : "Input 3 values (R G B) that determine a colour." + framerate(integer) : "Framerate" : 10 : "Sets how many frames the sprite will automatically step through per second." + model(sprite) : "Sprite Name" : "sprites/dot.spr" : "This defines which sprite/model file will be displayed by the entity." + scale(string) : "Scale" : "1.0" : "Set the size that the sprite is rendered at." + spawnflags(flags) = + [ + 32 : "Toggle" : 0 : "If enabled, makes the entity toggleable." + 64 : "Start On" : 0 : "If enabled, and set along with the 'Toggle'-flag, the cycler_wreckage will be consecutively emitting smoke from the start of the map onwards." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// ENV ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/EnvSnow.spr") base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) = env_snow : "env_snow: Point class version of the entity of the same name." +[ + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "If enabled, This entity will start at level load." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvRain.spr") base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) = env_rain : "env_rain: Point class version of the entity of the same name." [] + +@PointClass iconsprite("sprites/Hammer/EnvBeam.spr") base(Targetname, BeamStartEnd, RenderFields) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect: The env_beam entity creates a line composed of a loop of sprites with various effects. It is often used to create lasers or electricity." +[ + Radius(integer) : "Radius" : 256 : "If the beam has undefined start/end points, this attribute defines how far away the beam can choose to use as its start/end points." + life(string) : "Life (0 = infinite)" : "0.0" : "Sets how many seconds the beam will stay on before deactivating. It will reactivate through Strike again time. Setting this to 0 will make the beam never deactivate automatically." + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 : "Sets the width of the beam. Measured in tenths of a unit. This attribute works like a radius; the beam will actually be twice as wide as the defined value." + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 : "Sets how erratic the beam will be. The beam will always start and end at the usual points, but the path of the beam will move randomly to a degree defined by this attribute. Scales from 0 (perfectly straight beam) to 255 (wildly moving beam)." + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" : "This defines which sprite file the entity will use to form the beam." + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 0 : "Sets how fast the sprites move along the beam. Scales from 0 (no movement) to 100 (extremely fast)." + framerate(string) : "Frames per 10 seconds" : 0 : "Sets how many frames the sprite will automatically step through per second. This might not work." + framestart(integer) : "Starting Frame" : 0 : "Sets which frame of animation that the sprite should use." + StrikeTime(string) : "Strike again time (secs)" : "0.0" : "Sets how long many seconds before the beam reactivates (after the beam deactivates after being on for the time defined in Life). If the beam has undefined start/end points, the beam will choose new points for the reactivation." + damage(string) : "Damage / second" : "0.0" : "Sets how much damage the beam should do when you walk through it. Note that the damage is only dealt in a straight line between start and end point, regardless of any fluctuation in the beam from the Amount of Noise attribute." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "If enabled, the beam will be turned on upon map start. Otherwise you will need to trigger the env_beam to turn it on." + 2 : "Toggle" : 0 : "If enabled, the beam can be retriggered to stop the beam from reactivating automatically. Otherwise, the beam seems to loop indefinitely regardless of further triggerings." + 4 : "Random Strike" : 0 : "If enabled, the beam will vary its activation and deactivation times. These times will be scaled somewhat around the times you provide in Life and Strike Again Time." + 8 : "Ring" : 0 : "If enabled, the beam will form a ring between its two points rather than a straight line. The ring will tend towards being horizontal, and may malform if the two points are in a perfectly vertical line." + 16 : "StartSparks" : 0 : "If enabled, the start of the beam will spark when it is activated." + 32 : "EndSparks" : 0 : "If enabled, the end of the beam will spark when it is activated." + 64 : "Decal End" : 0 : "If enabled, a bullethole decal will be created whenever the beam hits a surface." + 128 : "Shade Start" : 0 : "If enabled, the beam will fade towards the start." + 256 : "Shade End" : 0 : "If enabled, the beam will fade towards the end. Will not function if :Shade Start: is enabled." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvBeverage.spr") base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser: When triggered, spawns a soft drink can that will give the player 1 health when picked up. The spawn will make a clunking sound." +[ + health(integer) : "Capacity" : 10 : "The number of times the entity can be triggered. Once this number of cans has been spawned, further triggers will do nothing." + skin(choices) : "Beverage Type" : 0 : "Sets the texture of the cans. Options are:" = + [ + 0 : "Coca-Cola" : "A lime green can with what appears to be half a kiwifruit pictured, labelled 'HAI!' in white." + 1 : "Sprite" : "A brown can with yellow droplets pictured, labelled 'GLUB' in yellow." + 2 : "Diet Coke" : "A red/blue can with red berries pictured, labelled 'GRAPE' in white." + 3 : "Orange" : "A blue and green can with a lighter blue face pictured, and a label that is too pixellated to read clearly." + 4 : "Surge" : "A dark green can with darker coloured ends, labelled 'YUCK' in white." + 5 : "Moxie" : "A yellow/orange can with a fiery effect, labelled 'DANTE' in dark red." + 6 : "Random" : "Picks a random texture for each spawn." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvBlood.spr") base(Targetname, Angles, RenderFields) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects: When triggered, an env_blood entity will spawn a spray of blood, similar to the blood effect generated when one attacks an enemy." +[ + color(choices) : "Blood Color" : 0 : "Sets the colour of the blood." = + [ + 0 : "Grey" + 1 : "Yellow (Alien)" + 2 : "Red" + ] + amount(integer) : "Amount of blood (damage to simulate)" : 100 : "Sets the scale of the blood spray. Defaults to 100. Smaller values will create a smaller spray and higher values will create a bigger spray." + spawnflags(flags) = + [ + 1 : "Random Direction" : 0 : "If enabled, the spray will pick a random direction rather than use Pitch Yaw Roll." + 2 : "Blood Stream" : 0 : "If enabled, the spray will be a stream of blood that shoots out in the direction specified in Pitch Yaw Roll. The distance of the spray is affected by the Amount of blood attribute. If not enabled, the spray will be a directionless splash." + 4 : "On Player" : 0 : "If enabled, the blood spray will be created on the player (as though the player is being hurt)." + 8 : "Spray decals" : 0 : "If enabled, the spray will also create a blood decal in the direction specified in Pitch Yaw Roll when the spray is triggered." + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume: Creates a rising stream of bubbles within the area covered by the brush." +[ + density(integer) : "Bubble density" : 2 : "The number of bubbles produced." + frequency(integer) : "Bubble frequency" : 2 : "The higher the value, the shorter the delay between each set of bubbles being produced." + current(integer) : "Speed of Current" : 0 : "The amount the bubbles move in the direction specified by the angle." + spawnflags(flags) = + [ + 1 : "Start Off" : 0 : "If enabled, the env_bubbles entity will start off." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvExplosion.spr") base(Targetname) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude (iMagnitude)" : 0 : "Sets the power of the explosion. Smaller values are less powerful, larger values are more powerful." + spawnflags(flags) = + [ + 1 : "No Damage" : 0 : "If enabled, the explosion will not do any damage." + 2 : "Repeatable" : 0 : "If enabled, the sequence can be repeated more than once. Otherwise the entity will be removed once the sequence is complete." + 4 : "No Fireball" : 0 : "If enabled, the explosion will have no fireball sprite." + 8 : "No Smoke" : 0 : "If enabled, the explosion will have no smoke." + 16 : "No Decal" : 0 : "If enabled, the explosion will not create a scorch decal." + 32 : "No Sparks" : 0 : "If enabled, the explosion will have no sparks." + ] + firesprite(sprite) : "Fire sprite" : "The fire ball sprite that will appear when the env_explosion is triggered." + smokesprite(sprite) : "Fire sprite" : "The smoke ball sprite that will appear after the env_explosion is triggered." + spritescale(integer) : "Sprite scale" : "Set the size that the sprite is rendered at." + poisongas(choices) : "Poison explosion FX?" : 0 : "Choose if poison gas FX replaces the explosion(Poison gas has no damage.)" = + [ + 0 : "Off" + 1 : "On" + ] + nosound(choices) : "No sound" : "TESTING: Turns the explosion sound off." = + [ + 0 : "Off" + 1 : "On" + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvFade.spr") base(Targetname) = env_fade : "Screen Fade: The env_fade entity, when triggered, gradually covers the screen with a single-colour overlay. Typically used for fading a scene in or out." +[ + spawnflags(flags) = + [ + 1 : "Fade From" : 0 : "If enabled, the overlay starts at the maximum alpha value and goes in reverse. (Essentially changes it from a fade out to a fade in.)" + 2 : "Modulate" : 0 : "If enabled, the env_fade will use an alternative rendering mode for the overlay. Multiplies the color of the overlay against the game scene. (Essentially recolours the scene rather than covering it with a solid colour.)" + 4 : "Activator Only" : 0 : "If enabled, the fade will only affect the player who activated it." + ] + duration(string) : "Duration (seconds)" : "2.0" : "Sets how long the overlay should take to fade into its full effect." + holdtime(string) : "Hold Fade (seconds)" : "0.0" : "Sets how long the overlay should stay on the screen at its full effect before turning itself off." + renderamt(integer) : "Fade Alpha" : 255 : "The maximum alpha value (opacity) of the overlay. Scales from 0 (transparent) to 255 (opaque)." + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" : "Sets the color of the overlay." +] + +@PointClass iconsprite("sprites/Hammer/EnvMissionFail.spr") base(Targetname) = env_missionfailure : "Failure Management: Will cause objective failure and checkpoint reload when triggered. In most cases, this is coupled with a trigger_sequence." +[ + message(string) : "Message in MAPNAME.seq" : : "Name the message that should be linked from 'czeror_english' or .SEQ. For example: '#aidev_failure01'." + //messagevolume(integer) : "Volume" : : "Doesnt seem to work." + music(string) : "MP3" : "sound/music/MP3NAME" : "Input an MP3 track to play. Use this format: 'sound/music/xyz'." + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" : "Sets the color of the overlay." + fade_red(integer) : "Red" : : "The red colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_green(integer) : "Green" : : "The green colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_blue(integer) : "Blue" : : "The blue colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_alpha(integer) : "Screen Fade Opacity" : 255 : "The maximum alpha value (opacity) of the overlay. Scales from 0 (transparent) to 255 (opaque)." + loadtime(string) : "Load time" : : "Time that it takes to load the latest autosave." + holdtime(string) : "Hold time" : : "Sets how long the overlay should stay on the screen at its full effect before turning itself off." + duration(string) : "Duration" : : "Sets how long the overlay should take to fade into its full effect." +] + +@PointClass iconsprite("sprites/Hammer/EnvFog.spr") base(Targetname) = env_fog : "Global Fog Properties" +[ + rendercolor(color255) : "Fog color (R G B)" : "128 128 128" : "Fog colour." + density(integer):"Density" : ".25" : "Density of the fog. Takes a value for 0.0 to 1.0." + fogStartDistance(integer):"Fog start position" : : "Distance, in units, at which the fog starts to be visible. This needs to be greater than zero. Not sure if this works." + fogStopDistance(integer):"Fog end position" : : "Distance, in units, at which the fog appears opaque. This needs to be greater than the start distance. Not sure if this works." + spawnflags(flags)= + [ + 1: "Start On" : 1 : "If enabled, creates fog on level load. Always have this to set." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvFunnel.spr") base(Targetname) = env_funnel : "Large Portal Funnel: When triggered, this entity produces a cone of sprites that get sucked into a point, as seen in the Half-Life disaster sequence. Suffers from limited options." +[ + spawnflags(flags) = + [ + 1 : "Reverse" : 0 : "If enabled, the motion of the sprites will change to be a puff of sprites that expands outwards. (This effect is also seen in the disaster sequence.)" + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvGlobal.spr") base(Targetname) = env_global : "Global State: The env_global entity provides a way to store global variables — that is, values that can be retrieved and used across level changes. For example, you could use an env_global to have a switch in one level unlock a door in another." +[ + globalstate(string) : "Global State to Set" : : "The name of the global variable you want to set the value of. This name is what you need to reference in other entities to be able to read the value." + triggermode(choices) : "Trigger Mode" : 0 : "This is the value that the global variable is set to when the env_global is triggered." = + [ + 0 : "Off" : "Sets the value to Off." + 1 : "On" : "Sets the value to On." + 2 : "Dead" : "Clears the value of the global variable." + 3 : "Toggle" : "Toggles the value between Off and On." + ] + initialstate(choices) : "Initial State" : 0 : "If the Set Initial State flag is enabled, the env_global will set the variable to the given value when it first loads." = + [ + 0 : "Off" : "Sets the value to Off." + 1 : "On" : "Sets the value to On." + 2 : "Dead" : "Clears the value of the global variable." + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 : "If enabled, the value of the global variable will be set by the env_global when it is first loaded." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvSprite.spr") sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze: The env_glow entity is much like the env_sprite in that it places a sprite within the map. The only differences seem to be that the env_glow does not animate its sprite, it cannot be triggered, and that it lacks some of the options that the env_sprite has." +[ + model(sprite) : "Sprite" : "sprites/3dmflaora.spr" : "Defines which sprite file will be displayed by the entity." + scale(string) : "Sprite Scale" : "1.0" : "Sets the scale of the sprite, in the form of a size multiplier." +] + +@PointClass iconsprite("sprites/Hammer/EnvLaser.spr") base(Targetname, RenderFxChoices, Angles) = env_laser : "Laser Beam Effect: The env_laser entity creates a damaging line composed of a loop of sprites with various effects. It is a derivative of the env_beam entity." +[ + LaserTarget(target_destination) : "Target of Laser" : "Sets the entity that marks the end of the laser. The laser will start at the env_laser entity and end at the entity named here." + renderamt(integer) : "Brightness (1 - 255)" : 100 : "Sets the transparency of the beam. Scales from 1 (invisible) to 255 (solid)." + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" : "Sets the colour of the beam." + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 : "Sets the width of the beam. Measured in tenths of a unit. This attribute works like a radius; the beam will actually be twice as wide as the defined value." + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 : "Sets how erratic the beam will be. The beam will always start and end at the usual points, but the path of the beam will move randomly to a degree defined by this attribute. Scales from 0 (perfectly straight beam) to 255 (wildly moving beam)." + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" : "This defines which sprite file the entity will use to form the beam." + EndSprite(sprite) : "End Sprite" : "sprites/laserdot.spr" : "This defines a sprite that will be placed at the end of the beam. The sprite will have the same colour as the beam, and seems to use a render mode of Glow. The size of sprite seems to be locked to the default, regardless of the size of the beam." + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 0 : "Sets how fast the sprites move along the beam. Scales from 0 (no movement) to 100 (extremely fast)." + framestart(integer) : "Starting Frame" : 0 : "Sets which frame of animation that the sprite should use." + damage(integer) : "Damage / second" : 100 : "Sets how much damage the beam should do when you walk through it. Note that the damage is only dealt in a straight line between start and end point, regardless of any fluctuation in the beam from the Amount of Noise attribute." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "If enabled, the beam will be turned on upon map start. Otherwise you will need to trigger the env_beam to turn it on." + 16 : "StartSparks" : 0 : "If enabled, the start of the beam will spark when it is activated." + 32 : "EndSparks" : 0 : "If enabled, the end of the beam will spark when it is activated." + 64 : "Decal End" : 0 : "If enabled, the beam will draw a scorch decal on a surface it hits." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvLiveAmmoShooter.spr") base(Targetname, Target, Angles) = env_liveammoshooter : "Live Ammo Shooter: Shoots active explosives at its target. This one has to have a 'target' otherwise it does nothing. Very amusing to use the type 'player' as a target." +[ + type(choices) : "Ammo Type" : "Choose the type of ammo that this entity fires. Options are:" = + [ + "hegrenade" : "HE Grenade" + "smokegrenade" : "Smoke Grenade" + "flashgrenade" : "Flashbang" + "lawrocket" : "M72 LAW Rocket" + + ] + //shootsounds(integer) : "Shoot sound" : 0 : "Sound the entity makes when triggered." + velmod(string) : "Velocity mod" : "1.0" : "Changes the velocity of the explosive being fired." + spawnflags(flags) = + [ + 1 : "???" : 0 : "Not sure what this does." + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvMessage.spr") base(Targetname, Target) = env_message : "HUD Text Message: The env_message entity allows you to display predefined text messages on the screen. The messages it can display are defined in the titles.txt file. Due to the titles.txt file being a generic file (not map specific), editing this file is not recommended unless you are creating a custom mod. You should use a game_text entity if you require custom messages outside of a custom mod." +[ + message(string) : "Message Name" : "This should specify the name of the message that will be displayed, as defined in the titles.txt file." + messagesound(sound) : "Sound effect" : "This allows you to specify a sound that should play when the message is shown to the player." + messagevolume(integer) : "Volume 0-10" : 10 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default)." + messageattenuation(Choices) : "Sound Radius" : 0 : "Sets how far away from the env_message entity the sound can be heard." = + [ + 0 : "Small Radius" : "The sound will be at maximum volume within a roughly 256 unit radius, fading out completely at around 512 units away." + 1 : "Default" : "The sound will be at maximum volume within a roughly 512 unit radius, fading out completely at around 768 units away." + 2 : "Large Radius" : "The sound will be at maximum volume within a roughly 768 unit radius, fading out completely at around 1280 units away." + 3 : "Play Everywhere" : "The sound will be heard throughout the entire map." + ] + spawnflags(flags) = + [ + 1 : "Play Once" : 0 : "If enabled, the env_message can only be triggered once." + 2 : "All Clients" : 0 : "If enabled, the message will display for all players rather than only the player that caused the env_message to be triggered." + ] +] + +@SolidClass base(Targetname, RenderFields) = env_rain : "Rain Entity"[] + +@PointClass iconsprite("sprites/Hammer/EnvRender.spr") base(Targetname, Target, RenderFields, Targetx, Angles) = env_render : "Render Controls: This entity can be used to alter render properties on the fly. Among other uses, this can allow you to create the illusion of complex-moving objects that would be impossible to create with a single entity." +[ + spawnflags(flags) = + [ + 1 : "No Renderfx" : 0 : "If enabled, the Render FX attribute will not be copied to the target entity." + 2 : "No Renderamt" : 0 : "If enabled, the FX Amount attribute will not be copied to the target entity." + 4 : "No Rendermode" : 0 : "If enabled, the Render Mode attribute will not be copied to the target entity." + 8 : "No Rendercolor" : 0 : "If enabled, the FX Color attribute will not be copied to the target entity." + ] + removeonuse(choices) : "Remove on use" : 0 : "Remove this entity from the game after activation." = + [ + 0 : "No" + 1 : "Yes" + ] + skin(integer) : "Skin" : : "???" + head(integer) : "Head" : : "???" +] + +@PointClass iconsprite("sprites/Hammer/EnvShake.spr") base(Targetname) = env_shake : "Screen Shake: The env_shake entity creates a shake effect that jostles the player's view around. Used to emphasize explosions, quakes, large footsteps and the like." +[ + spawnflags(flags) = + [ + 1 : "GlobalShake" : 0 : "If enabled, the shake will occur everywhere regardless of the Effect Radius attribute." + ] + amplitude(string) : "Amplitude 0-16" : "4.0" : "Sets the general power of the shake. Scales from 0 (no shake) to 16 (very powerful shake)." + radius(string) : "Effect radius" : "500.0" : "Sets the radius around the env_shake entity that the effect will be felt. Note that this is purely for whether or not there is a shake; distance will not effect the power of the shake in any way, and if the player is outside of this radius, no shake will occur at all." + duration(string) : "Duration (seconds)" : "1.0" : "Sets how long the shake lasts. The effect will gradually fade out towards the end of the shake." + frequency(string) : "0.1 = jerk, 255.0 = rumble" : 0 : "Sets how erratic the shake will be. Scales from 0.1 (a mere jolt) to 255 (an earthquake-like rumble)." +] + +@PointClass iconsprite("sprites/Hammer/EnvShooter.spr") base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter: The env_shooter entity, when triggered, shoots out a number of models or sprites, often used to create a spilling or bursting effect." +[ + shootmodel(studio) : "Model" : "" : "This defines which model or sprite file will be shot by the entity." + shootsounds(choices) :"Material Sound" : -1 : "Sets which sounds the particles will produce when they impact on surfaces." = + [ + -1 : "None" + 0 : "Glass" + 1 : "Wood" + 2 : "Metal" + 3 : "Flesh" + 4 : "Concrete" + ] + scale(string) : "Gib Scale" : "1.0" : "Sets the scale of sprites, in the form of a size multiplier." + skin(integer) : "Gib Skin" : 0 : "Sets which skin of models the entity will use, if the model has more than one." +] + +@PointClass iconsprite("sprites/Hammer/EnvSmoker.spr") base(Targetname) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_smoker : "Smoke: Emits a particle smoke trail similar to the one produced by smoke grenades." +[ + health(integer) : "Strength" : 1 : "Defines how long the entity will emit smoke (-1 for an infinite smoke trail)" + scale(string) : "Smoke Scale" : "1.0" : "Scale of smoke sprites in trail (1 is 1:1)." +] + +@SolidClass base(Targetname, RenderFields) = env_snow : "Environmental snow" +[ + spawnflags(flags) = + [ + 1 : "Start On" : 0 + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvSound.spr") = env_sound : "DSP Sound: The env_sound entity is a trigger of sorts that alters the processing done on sounds heard by the player. For example, the env_sound can alter sounds to have a strong echo as though the player is in a large enclosed area. This entity is used to assist in creating a particular atmosphere in an area. Don't forget that the sound style, once applied, is permanent until another env_sound changes it." +[ + radius(integer) : "Radius" : 128 : "Sets the radius around the area to use as the trigger area. When the player enters this radius, the sound style will be turned on until it is altered by another env_sound." + roomtype(Choices) : "Room Type" : 0 : "Sets which sound style to use. Options are:" = + [ + 0 : "Normal (off)" + 1 : "Generic" + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10 : "Chamber Large" + 11 : "Bright Small" + 12 : "Bright Medium" + 13 : "Bright Large" + 14 : "Water 1" + 15 : "Water 2" + 16 : "Water 3" + 17 : "Concrete Small" + 18 : "Concrete Medium" + 19 : "Concrete Large" + 20 : "Big 1" + 21 : "Big 2" + 22 : "Big 3" + 23 : "Cavern Small" + 24 : "Cavern Medium" + 25 : "Cavern Large" + 26 : "Weirdo 1" + 27 : "Weirdo 2" + 28 : "Weirdo 3" + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvSpark.spr") base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark: The env_spark entity produces an electrical spark effect, consisting of an intermittent sprite, a small spray of particles and a sound effect." +[ + MaxDelay(string) : "Max Delay" : "0.0" : "Sets the maximum delay in seconds between sparks." + spawnflags(flags) = + [ + 32 : "Toggle" : 0 : "If enabled, If enabled, makes the entity toggleable" + 64 : "Start On" : 0 : "In enabled, the sparks will start on. (Only relevant if Toggle is also enabled.)" + ] +] + +@PointClass iconsprite("sprites/Hammer/EnvSprite.spr") sprite() base(Targetname, Angles, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect: The env_sprite entity places a sprite within the map." +[ + framerate(string) : "Framerate" : "1.0" : "Sets how many frames per second the sprite will animate at." + model(sprite) : "Sprite Name" : "sprites/3dmflared.spr" : "This defines which sprite file will be displayed by the entity." + scale(string) : "Scale" : "1.0" : "Sets the scale of the sprite, in the form of a size multiplier." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "If enabled, the sprite will be turned on at the start of the map." + 2 : "Play Once" : 0 : "If not enabled, the sprite will be treated as toggled, and triggering the env_sprite will toggle the sprite between visible and invisible. The sprite will repeat its animation indefinitely. If enabled, the sprite will play through its animation once when triggered and then stay invisible until it is triggered again. (If the env_sprite is triggered while this single animation is playing, it will become invisible immediately.)" + ] + +] + +//////////////////////////////////////////////////////////////////////////////// +// FUNC ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@SolidClass base(Target, RenderFields) = func_model_brush : "Renders whatever model that it targets infront of the skybox. The model does NOT have to be in the skybox to render but the ORIGIN of the model does, otherwise it won't receive correct lighting. Super useful for building the illusion of a bigger world out side of the map. CASTLE: Could be a quick vis fix for FPS too." [] + +@BaseClass base () = Breakable +[ + gibentityvelocity(integer) : "Gib velocity" : : "Not sure what this does." + gibdirection(string) : "Gib Direction" : : "Not sure what this does." + delay(string) : "Delay before fire" : "0.0" : "Delay before Target on Break is triggered after being broken." + health(integer) : "Durability" : : "The amount of damage the entity will take before breaking." + material(choices) : "Material" : : "The type of material that a func_breakable or func_pushable should act as. Options are:" = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Brick" + 5: "Tile" + 6: "Computer" + 7: "Bulletproof glass" + 8: "Stone" + 9: "None" + 10: "Vine" + 11: "Last material" + ] + explosion(choices) : "Direction of gib emission" : 0 : "Direction the gibs will go on break." = + [ + 0 : "Random" + directed : "Attack direction" + ] + gibmodel(studio) : "Shard model" : : "Model to use for gibs (overrides default specified by Material Type)." + spawnobject(choices) : "Spawn when broken" : : "Used by func_breakable and func_pushable. Determines what item is spawned when the entity is broken. Options are:" = + [ + "weapon_knife" : "Knife" : "Spawn a Knife." + "weapon_p228" : "P228" : "Spawn a P228 pistol." + "weapon_glock18" : "Glock 18" : "Spawn a Glock 18 pistol." + "weapon_usp" : "USP" : "Spawn a USP pistol." + "weapon_fiveseven" : "Five-Seven" : "Spawn a Five-Seven pistol." + "weapon_elite" : "Elite Dual Pistols" : "Spawn a set of Elite pistols." + "weapon_deagle" : "Desert Eagle" : "Spawn a Desert Eagle pistol." + "weapon_ak47" : "AK47" : "Spawn an AK47 assault rifle." + "weapon_aug" : "AUG" : "Spawn an AUG assault rifle." + "weapon_m4a1" : "M4A1" : "Spawn an M4A1 assault rifle." + "weapon_sg552" : "SG552" : "Spawn an SG552 assault rifle." + "weapon_galil" : "Galil" : "Spawn an Galil assault rifle." + "weapon_famas" : "Famas" : "Spawn an Famas assault rifle." + "weapon_mac10" : "Mac-10" : "Spawn a Mac-10 submachine gun." + "weapon_p90" : "P90" : "Spawn a P90 submachine gun." + "weapon_tmp" : "TMP" : "Spawn a TMP submachine gun." + "weapon_ump45" : "UMP45" : "Spawn a UMP45 submachine gun." + "weapon_mp5navy" : "MP5" : "Spawn a MP5 submachine gun." + "weapon_scout" : "Scout" : "Spawn a Scout sniper rifle." + "weapon_awp" : "AWP" : "Spawn an AWP sniper rifle." + "weapon_g3sg1" : "G3SG1" : "Spawn a G3SG1 auto-rifle." + "weapon_sg550" : "SG550" : "Spawn a SG550 auto-rifle." + "weapon_flashbang" : "Flash Grenade" : "Spawn a Flash Grenade." + "weapon_smokegrenade" : "Smoke Grenade" : "Spawn a Smoke Grenade." + "weapon_hegrenade" : "HE Grenade" : "Spawn a HE Grenade." + "weapon_laws" : "LAW" : "Spawn a LAW rocket launcher." + "weapon_m60" : "M60" : "Spawn a M60 heavy machine gun." + "weapon_m249" : "M249" : "Spawn a M249 heavy machine gun." + "weapon_xm1014" : "XM1014" : "Spawn a XM1014 shotgun" + "weapon_m3" : "M3" : "Spawn a M3 shotgun" + "weapon_shieldgun" : "Shield" : "Spawn a Shield." + "weapon_blowtorch" : "Blowtorch Tool" : "Spawn the Blowtorch Tool." + "weapon_briefcase" : "Briefcase Tool" : "Spawn the Briefcase Tool." + "weapon_camera" : "Camera Tool" : "Spawn the Camera Tool." + "weapon_fiberopticcamera" : "Fiber-Optic Camera Tool" : "Spawn the Fiber-Optic Camera Tool." + "weapon_radiocontrolledbomb" : "Radio Bomb Tool" : "Spawn the Radio Bomb Tool." + "weapon_radio" : "Radio Tool" : "Spawn the Radio Tool" + "ammo_338magnum" : "338 Magnum Ammo" : "Spawn 338 Magnum ammo. For the AWP." + "ammo_357sig" : "357 Sig Ammo" : "Spawn 357 Sig ammo. For the P228." + "ammo_45acp" : "45ACP Ammo" : "Spawn 45ACP ammo. For the USP, UMP45 and MAC-10." + "ammo_50ae" : "50AE Ammo" : "Spawn 50AE ammo. For the Desert Eagle." + "ammo_556nato" : "556 Nato Ammo" : "Spawn 556 Nato ammo. For the AUG, Famas, Galil, SG550, SG552 and M4A1." + "ammo_556natobox" : "556 Nato Box Ammo" : "Spawn a 556 Nato Box. For the M249. " + "ammo_762natobox" : "762 Nato Box Ammo" : "Spawn a 762 Nato Box. For the M60" + "ammo_762nato" : "762 Nato Ammo" : "Spawn 762 Nato ammo. For the AK47, Scout, and G3SG1." + "ammo_57mm" : "57MM Ammo" : "Spawn 57MM ammo. For the P90 and Five-Seven." + "ammo_9mm" : "9MM ammo" : "Spawn 9MM ammo. For the Glock 18, Elites, MP5 and TMP." + "ammo_buckshot" : "12 Gauge Ammo" : "Spawn 12 Gauge ammo. For the M3 and XM1014." + "ammo_generic" : "Generic Ammo" : "Spawn Generic ammo. Every ammo type at max is given." + ] + explodemagnitude(integer) : "Explosion range" : : "This will determine the size of the explosion that occurs when the brush breaks." + explodespritescale(integer) : "Explosion sprite scale" : : "Size of the sprite that spawns form the explosion range." + onlydamagedby(choices) : "Only damaged by" : : "Choose what weapon or tool can damage this breakable." = + [ + "weapon_knife" : "Knife" : "A Knife." + "weapon_p228" : "P228" : "P228 pistol." + "weapon_glock18" : "Glock 18" : "Glock 18 pistol." + "weapon_usp" : "USP" : "USP pistol." + "weapon_fiveseven" : "Five-Seven" : "Five-Seven pistol." + "weapon_elite" : "Elite Dual Pistols" : "Elite pistols." + "weapon_deagle" : "Desert Eagle" : "Desert Eagle pistol." + "weapon_ak47" : "AK47" : "AK47 assault rifle." + "weapon_aug" : "AUG" : "AUG assault rifle." + "weapon_m4a1" : "M4A1" : "M4A1 assault rifle." + "weapon_sg552" : "SG552" : "SG552 assault rifle." + "weapon_galil" : "Galil" : "Galil assault rifle." + "weapon_famas" : "Famas" : "Famas assault rifle." + "weapon_mac10" : "Mac-10" : "Mac-10 submachine gun." + "weapon_p90" : "P90" : "P90 submachine gun." + "weapon_tmp" : "TMP" : "TMP submachine gun." + "weapon_ump45" : "UMP45" : "UMP45 submachine gun." + "weapon_mp5navy" : "MP5" : "MP5 submachine gun." + "weapon_scout" : "Scout" : "Scout sniper rifle." + "weapon_awp" : "AWP" : "AWP sniper rifle." + "weapon_g3sg1" : "G3SG1" : "G3SG1 auto-rifle." + "weapon_sg550" : "SG550" : "SG550 auto-rifle." + "weapon_hegrenade" : "HE Grenade" : "Spawn a HE Grenade." + "weapon_laws" : "LAW" : "LAW rocket launcher." + "weapon_m60" : "M60" : "M60 heavy machine gun." + "weapon_m249" : "M249" : "M249 heavy machine gun." + "weapon_xm1014" : "XM1014" : "XM1014 shotgun" + "weapon_m3" : "M3" : "M3 shotgun" + "weapon_shieldgun" : "Shield" : "Shield." + "weapon_blowtorch" : "Blowtorch Tool" : "Blowtorch Tool." + "weapon_briefcase" : "Briefcase Tool" : "Briefcase Tool." + "weapon_radiocontrolledbomb" : "Radio Bomb Tool" : "Radio Bomb Tool." + "laws_rocket" : "Rocket from the LAW." + "bomb" : "Bomb" : "Bomb, such as the RC bomb explosion." + ] + notdamagedby(choices) : "Not damaged by" : : "Specify what item the breakable is not damaged by. Disables the 'onlydamagedby' key." = + [ + "weapon_knife" : "Knife" : "A Knife." + "weapon_p228" : "P228" : "P228 pistol." + "weapon_glock18" : "Glock 18" : "Glock 18 pistol." + "weapon_usp" : "USP" : "USP pistol." + "weapon_fiveseven" : "Five-Seven" : "Five-Seven pistol." + "weapon_elite" : "Elite Dual Pistols" : "Elite pistols." + "weapon_deagle" : "Desert Eagle" : "Desert Eagle pistol." + "weapon_ak47" : "AK47" : "AK47 assault rifle." + "weapon_aug" : "AUG" : "AUG assault rifle." + "weapon_m4a1" : "M4A1" : "M4A1 assault rifle." + "weapon_sg552" : "SG552" : "SG552 assault rifle." + "weapon_galil" : "Galil" : "Galil assault rifle." + "weapon_famas" : "Famas" : "Famas assault rifle." + "weapon_mac10" : "Mac-10" : "Mac-10 submachine gun." + "weapon_p90" : "P90" : "P90 submachine gun." + "weapon_tmp" : "TMP" : "TMP submachine gun." + "weapon_ump45" : "UMP45" : "UMP45 submachine gun." + "weapon_mp5navy" : "MP5" : "MP5 submachine gun." + "weapon_scout" : "Scout" : "Scout sniper rifle." + "weapon_awp" : "AWP" : "AWP sniper rifle." + "weapon_g3sg1" : "G3SG1" : "G3SG1 auto-rifle." + "weapon_sg550" : "SG550" : "SG550 auto-rifle." + "weapon_hegrenade" : "HE Grenade" : "Spawn a HE Grenade." + "weapon_laws" : "LAW" : "LAW rocket launcher." + "weapon_m60" : "M60" : "M60 heavy machine gun." + "weapon_m249" : "M249" : "M249 heavy machine gun." + "weapon_xm1014" : "XM1014" : "XM1014 shotgun" + "weapon_m3" : "M3" : "M3 shotgun" + "weapon_shieldgun" : "Shield" : "Shield." + "weapon_blowtorch" : "Blowtorch Tool" : "Blowtorch Tool." + "weapon_briefcase" : "Briefcase Tool" : "Briefcase Tool." + "weapon_radiocontrolledbomb" : "Radio Bomb Tool" : "Spawn the Radio Bomb Tool." + "laws_rocket" : "Rocket from the LAW." + "bomb" : "Bomb" : "Bomb, such as the RC bomb explosion." + ] + //'grenadetouch' is supported but at the moment, it doesnt seem to do anything. + grenadetouch(choices) : "Grenade touch" : : "This is a weird key to use, it is pretty good for realistic glass though, here is how to use it. Case 1: If spawnflag 2 (Touch) or 4 (Pressure) is on, and grenadetouch key is set to 'Yes', it will break on contact. Case 2: If the rendermode for the breakable is set to something other than 'normal', and the key is set to 'yes' it will break on touch." = + [ + 0 : "No" + 1 : "Yes" + ] + skin(choices) : "Contents" : 0 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "Normal" + -1 : "Empty" + -2 : "Solid" + -3 : "Water" + -4 : "Slime" + -5 : "Lava" + -16 : "Ladder" + ] +] + +@SolidClass base(Targetname, Target, Global, Master, RenderFields, Breakable, Angles, ZHLT) = func_breakable : "Breakable Object: The func_breakable entity allows you to create a breakable brush." +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 : "If enabled, the entity can only be activated (broken) by being triggered." + 2 : "Touch" : 0 : "If enabled, the brush will break on touch." + 4 : "Pressure" : 0 : "If enabled, Brush will break when pressured (e.g. player walking on it)." + 8 : "Fancy Glass" : 0 : "If enabled, will creates sprite based gibs (Glass only)." + 256: "Instant Crowbar" : 0 : "If enabled, Whack it with a knife and it will break instantly (regardless of strength)." + ] + _minlight(string) : "Minimum light level" : : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +//Targetname, Target, Global, Master, Targetx, RenderFields, Angles, ZHLT +// 12 : "Latchlocked1 (HL1)" +// 13 : "Latchunlocked1 (HL1)" +// 14 : "Lightswitch2" + +// [ +// 0 : "No Sound" +// 1 : "Old button" : "Sounds like an old button." +// 2 : "Digital - Chirping" : "Digital chirping sound." +// 3 : "Digital - Chirping 2" : "An alternative digital chirping sound." +// 4 : "Digital - Old button" : "Deep button press with a digital chirp at the end." +// 5 : "2-tone with digital chirp" : "A 2-tone alert with a digital chirp sound." +// 6 : "Digital - Old button 2" : "Digital chirping with a old button press at the end." +// 7 : "Digital - Old button 3" : "An old button with an alternative digital chirping sound." +// 8 : "Old button 2" : "Industrial button sound." +// 9 : "Digital - Old button 4" : "Another old button sound with a digital chirping sound." +// 10 : "Buzzer" : "A buzzer sound." +// 11 : "Buzzer - Off" : "A buzzer. Has a lower tone to " +// 13 : "Latchunlocked1 (HL1)" +// ] +// +@SolidClass base(Targetname, Global, Master, Targetx, RenderFields, Angles, ZHLT) = func_button : "Button: This entity allows you to create various types of buttons, such as: switches, plungers, touch plates, push buttons, etc., that will trigger an event when activated. Works almost like a func_door." +[ + speed(integer) : "Speed" : 5 : "The speed a moving button will move from its resting state to its activated state." + health(integer) : "Health (shootable if > 0)" : : "If the button has to be shot, rather than pressed, specify a value greater than 0 here. When this amount of damage occurs, the button will activate." + lip(integer) : "Lip" : : "Number of units left after move (the lip value is subtracted from the move distance)." + changetarget(target_destination) : "Change Target Name" : : "changetarget will change the button's target's TARGET field to the button's changetarget." + sounds(choices) : "Sounds" : 0 : "The sound made by the button on activation. The sound is played at the same time as the Unlocked Sound. Choices are:" = + [ + 0 : "No Sound" + 1 : "Old button" : "Sounds like an old button." + 2 : "Digital - Chirping" : "Digital chirping sound." + 3 : "Digital - Chirping 2" : "An alternative digital chirping sound." + 4 : "Digital - Old button" : "Deep button press with a digital chirp at the end." + 5 : "2-tone with digital chirp" : "A 2-tone alert with a digital chirp sound." + 6 : "Digital - Old button 2" : "Digital chirping with a old button press at the end." + 7 : "Digital - Old button 3" : "An old button with an alternative digital chirping sound." + 8 : "Old button 2" : "Industrial button sound." + 9 : "Digital - old button 4" : "Another old button sound with a digital chirping sound." + 10 : "Buzzer" : "A buzzer sound." + 11 : "Buzzer - Off" : "A buzzer. Has a lower tone to " + 13 : "Latchunlocked1" + 14 : "Lightswitch" + 21 : "Lever1" + 22 : "Lever2" + 23 : "Lever3" + 24 : "Lever4" + 25 : "Lever5" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 : "Time in seconds before the button pops back out or becomes reuseable (-1 = Never)." + spawnflags(flags) = + [ + 1 : "Don't move" : 0 : "If this is enabled, the button will not move (oriented by angles) when triggered." + 32 : "Toggle" : 0 : "If enabled, makes the entity toggleable." + 64 : "Sparks" : 0 : "Makes button spark randomly when in the off position." + 256 : "Touch Activates" : 0 : "Button can only be activated by the player bumping into it (or by being damaged, if Health is specified)." + ] + locked_sound(choices) : "Locked Sound" : 0 : "Sounds to play when the entity is 'locked'. Options are:" = + [ + 0 : "No Sound" + 1 : "Old button" : "Sounds like an old button." + 2 : "Digital - Chirping" : "Digital chirping sound." + 3 : "Digital - Chirping 2" : "An alternative digital chirping sound." + 4 : "Digital - Old button" : "Deep button press with a digital chirp at the end." + 5 : "2-tone with digital chirp" : "A 2-tone alert with a digital chirp sound." + 6 : "Digital - Old button 2" : "Digital chirping with a old button press at the end." + 7 : "Digital - Old button 3" : "An old button with an alternative digital chirping sound." + 8 : "Old button 2" : "Industrial button sound." + 9 : "Digital - old button 4" : "Another old button sound with a digital chirping sound." + 10 : "Buzzer" : "A buzzer sound." + 11 : "Buzzer - Off" : "A buzzer. Has a lower tone to " + 13 : "Latchunlocked1" + 14 : "Lightswitch" + 21 : "Lever1" + 22 : "Lever2" + 23 : "Lever3" + 24 : "Lever4" + 25 : "Lever5" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 : "Sound to play when entity is 'unlocked'. This is not working in the current build of the game for some reason. Options are:" = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 : "Sentence that is spoken when entity is 'locked'. Refer to the notes section of this FGD. Options are:" = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 : "Sentence that is spoken when entity is 'unlocked'. Refer to the notes section of this FGD. Options are:" = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT, Func2) = func_conveyor : "Conveyor Belt: This entity creates a 'moving' conveyor belt. It can push things and simulate streams of water." +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 : "Enable this to prevent the entity from pushing things." + 2 : "Not Solid" : 0 : "With Not Solid enabled, there will be no push." + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Door, ZHLT, Func2) = func_door : "Basic door: A very useful entity that can make door/gate, piston, elevator, forming press, etc. Can be made to act very much like a func_button." [] + +@SolidClass base(Door, Func2) = func_door_rotating : "Rotating door: " +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 : "Reverse direction of rotation." + 16 : "One-way" : 0 : "Door only opens in one direction." + 64 : "X Axis" : 0 : "Door will rotate on its X axis." + 128 : "Y Axis" : 0 : "Door will rotate on its Y axis." + ] + distance(integer) : "Distance (deg)" : 90 : "Distance in degrees to rotate." +] + +@SolidClass base(RenderFields, ZHLT, Func2) = func_friction : "Surface w/ Friction Change: This entity allows you to create an area of low friction, to simulate wet or oily or icy surfaces." +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 : "The percentage of friction between 0 and 100 (where 100% is normal friction)." +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT, Func2) = func_guntarget : "Moving Platform: This creates a moving target that stops and fires its target when shot. Basically a shootable func_train switch." +[ + target(target_source) : "First stop target" : : "The name of the first path_corner to follow." + speed(integer) : "Speed (units per second)" : 100 : "Speed that the guntarget travels at in units per second." + message(target_source) : "Fire on damage" : : "When damaged, this event will be triggered." + health(integer) : "Damage to Take" : 0 : "The amount of damage that must be taken before halting movement and activating the target." + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Global, RenderFields, ZHLT, Func2) = func_healthcharger : "Wall Health Kit: This entity creates an area in which the player can recharge his health. Uses Charges. Can be changed using skill.cfg." +[ + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." + charges(integer) : "Health Charges(?)" : 0 : "Number of times the player can recieve health from this entity." +] + +@SolidClass base(Global, RenderFields, ZHLT, Func2) = func_recharge : "Battery recharger: Similar to the func_healthcharger, this entity specifies an area in which the player can recharge his armour. Can be changed using skill.cfg." +[ + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname, RenderFields, ZHLT, Angles, FuncAddition) = func_illusionary : "Fake Wall/Light: The func_illusionary has all the properties of a func_wall entity, except for the fact that it is non-solid." +[ + skin(choices) : "Contents" : 0 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "Illusionary" + -1 : "Empty" + -2 : "Solid" + -3 : "Water" + -4 : "Slime" + -5 : "Lava" + -16 : "Ladder" + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname) = func_ladder : "Ladder: This creates an invisible area which, when entered by the player, allows to player to climb up or down." [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush: This entity acts like the 'clip' brush, except it restricts monster movement, not the player's." [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field: This entity is used to define an area that an airstrike is called on." +[ + m_flSpread(integer) : "Spread Radius" : 64 : "Defines the accuracy of the bombardment." + m_iCount(integer) : "Repeat Count" : 1 : "Determines how many bombs will be dropped per strike." + m_fControl(Choices) : "Targeting" : 0 : "Determines how the strike location is calculated. Options are:" = + [ + 0 : "Random" : "Random strike simulation" + 1 : "Activator" : "Button activation" + 2 : "Table" : "Special case. The X and Y controllers can be used in cases where a table is used to define the strike location (as seen in Half-Life)." + ] + m_iszXController(target_destination) : "X Controller" : "The name of a momentary_rot_button to provide a relative strike position on the X axis." + m_iszYController(target_destination) : "Y Controller" : "The name of a momentary_rot_button to provide a relative strike position on the Y axis." +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, FuncAddition) = func_pendulum : "Pendulum: This entity allows you to create an object that moves like a pendulum. Swings back and forth" +[ + speed(integer) : "Speed" : 100 : "Speed of movement of the pendulum." + distance(integer) : "Distance (deg)" : 90 : "Distance in degrees the pendulum will swing. Negative values reverse the direction." + damp(integer) : "Damping (0-1000)" : 0 : "If you specify a value here the pendulum will slowly narrow its movement until it stops moving. It will end in the middle of it's swing, so if you specified 90 degrees as its distance, it will stop at the 45 degree position." + dmg(integer) : "Damage inflicted when blocked" : 0 : "When movement is blocked by the player, he will receive this amount of damage." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "Start on." + 8 : "Not Solid" : 0 : "Makes the pendulum non-soild." + 16 : "Auto-return" : 0 : "If this is enabled it will cause the pendulum to return to its start position when triggered." + 64 : "X Axis" : 0 : "If enabled, the swing will be in the X axis." + 128 : "Y Axis" : 0 : "If enabled, the swing will be in the Y axis." + ] + _minlight(integer) : "_minlight" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." + skin(choices) : "Contents" : -1 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "default" + -1 : "Empty" + -3 : "water" + -4 : "slime: touch drown" + -5 : "lava: touch fire death" + -7 : "Volumetric Light" + -16 : "make ladder" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT, Func2) = func_plat : "Elevator: This entity lets you create a platform that will move to its raised position when the player walks onto it." +[ + spawnflags(flags) = + [ + 1 : "Toggle" : 0 : "If enabled, the platform can be triggered to toggle it between its raised and lowered positions." + ] + height(integer) : "Travel altitude" : 0 : "The distance the object will move. Can be negative." + speed(integer) : "Speed" : 50 : "Speed of movement of the platform." + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, PlatSounds, Func2) = func_platrot : "Moving Rotating platform" +[ + spawnflags(flags) = + [ + 1 : "Toggle" : 1 + 64 : "X Axis" : 0 + 128 : "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 : "Speed of movement of the rotating platform." + height(integer) : "Travel altitude (can be negative)" : 0 : "The distance the object will move. Can be negative." + rotation(integer) : "Spin amount" : 0 : "This is the distance, in degrees, the platform will rotate between its lowered and raised positions." + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Breakable, RenderFields, ZHLT, Func2) = func_pushable : "Pushable object: The only type of brush entity that can be pushed, pulled, lifted (not by the player) and fall, most commonly used with crates. It can also optionally be breakable." +[ + size(choices) : "Hull Size" : 0 : "Defines the size of entity hull. Could be obsolete. Sizes are in units (X, Y, Z). Options are:" = + [ + 0 : "Point size" : "16, 16, 16" + 1 : "Player size" : "32, 32, 72" + 2 : "Big Size" : "64, 64, 72" + 3 : "Player duck" : "32, 32, 36" + ] + spawnflags(flags) = + [ + 128 : "Breakable" : 0 : "If this is enabled, the entity will act like a func_breakable." + 256 : "Instant Crowbar" : 0 : "Whack it with a knife and it will break instantly (regardless of strength)." + ] + friction(integer) : "Friction" : 50 : "This determines the amount of resistance the brush will give when the player pushes it. Range is 0 to 400, where 400 is the most resistance." + bouyancy(integer) : "Bouyancy" : 20 : "Determines how well the brush floats on water." + silent(choices) : "Silent" : : "Disables sounds when pushing the func_pushable." = + [ + 0 : "No" + 1 : "Yes" + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname, Global, Master, Target, Angles, RenderFields, ZHLT, Func2) = func_rot_button : "Rotating button: This entity creates a button that rotates." +[ + delay(string) : "Delay before trigger" : "0" : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" : : "UWU" + speed(integer) : "Speed" : 50 : "How fast the button rotates when activated." + health(integer) : "Health (shootable if > 0)" : "If non-zero, the button must be damaged to this extent to activate it." + sounds(choices) : "Sounds" : 21 : "Choose the sound the button makes when rotating. Options are:" = + [ + 21 : "Squeaky" + 22 : "Squeaky Pneumatic" + 23 : "Ratchet Groan" + 24 : "Clean Ratchet" + 25 : "Gas Clunk" + ] + wait(integer) : "Delay before reset" : 0 : "Time to wait before button resets itself. -1 makes it stay set." + distance(integer) : "Distance" : 90 : "Distance in degrees the button will rotate before activating its target." + spawnflags(flags) = + [ + 1 : "Not solid" : 0 : "Makes the button non-solid." + 2 : "Reverse Dir" : 0 : "Reverses the rotation direction." + 32 : "Toggle" : 0 : "If enabled, makes the entity toggleable" + 64 : "X Axis" : 0 : "If enabled, the rotation will be on the X axis." + 128 : "Y Axis" : 0 : "If enabled, the rotation will be on the Y axis." + 256 : "Touch Activates" : 0 : "The button can only be activated by the player bumping into it (or by being shot, if Health is > 0)." + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, Func2) = func_rotating : "Rotating Object: This entity lets you create a rotating object." +[ + speed(integer) : "Rotation Speed" : 0 : "This is the maximum speed the rotating object will achieve." + volume(integer) : "Volume (10 = loudest)" : 10 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default)." + fanfriction(integer) : "Friction (0 - 100%)" : 20 : "If the Acc/Dcc flag is enabled, this value determines the time it takes to reach full speed or to stop after being triggered." + sounds(choices) : "Fan Sounds" : 0 : " The sound to make while moving. Options are:" = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" : : "The path / filename of a custom movement sound to be played (overrides Fan Sounds)." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "Start on." + 2 : "Reverse Direction" : 0 : "Set this flag to make the brush turn in the opposite direction." + 4 : "X Axis" : 0 : "If enabled, the rotation will be in the X axis." + 8 : "Y Axis" : 0 : "If enabled, the rotation will be in the Y axis." + 16 : "Acc/Dcc" : 0 : "If enabled, the entity will accelerate and decelerate from maximum speed based on the Friction property." + 32 : "Fan Pain" : 0 : "With this enabled, the player will be hurt when coming into contact with the brush." + 64 : "Not Solid" : 0 : "Makes the brush non-solid." + 128 : "Small Radius" : 0 : "Sets sound range to low." + 256 : "Medium Radius" : 0 : "Sets sound range to medium." + 512 : "Large Radius" : 1 : "Sets sound range to high." + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" : "Moves the fan to this origin point after lighting." + dmg(integer) : "Damage inflicted when blocked" : 0 : "If the player blocks the entity's movement, this amount of damage will be dealt." +] + +@SolidClass base(BaseTank, ZHLT, Func2) = func_tank : "Brush Gun Turret: This entity allows you to create a controllable or automatic gun turret. To make it controllable by the player, you'll need a func_tankcontrols entity associated with it." +[ + bullet(choices) : "Bullets" : 0 : "Set the bullet type to fire. The damage that these output can be changed in the skill.cfg file if needed for a custom mod." = + [ + 0 : "None" + 1 : "9mm" + 2 : "MP5" + 3 : "12mm" + ] + spawnflags(flags) = + [ + 2 : "???" : "???" + 4 : "???" : "???" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls: This entity defines an area in which a player can control a func_tank, func_tankmortar, func_tanklaser or func_tankrocket entity." +[ + target(target_destination) : "Tank entity name" : : "Set this to the name of the gun you want to control." +] + +@SolidClass base(BaseTank, ZHLT, Func2) = func_tanklaser : "Brush Laser Turret: This is a func_tank that fires laser beams instead of bullets. To make it controllable by the player, you'll need a func_tankcontrols entity associated with it." +[ + laserentity(target_source) : "env_laser Entity" : : "The name of the env_laser entity to use." +] + +@SolidClass base(BaseTank, ZHLT, Func2) = func_tankmortar : "Brush Mortar Turret: This is basically mortar-firing func_tank. Most commonly used for 'real' tanks. To make it controllable by the player, you'll need a func_tankcontrols entity associated with it." +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 : "Input the magnitude of the explosion. Be careful, if the magnitude is too high, you'll kill the player." +] + +@SolidClass base(BaseTank, ZHLT, Func2) = func_tankrocket : "Brush Rocket Turret: A func_tank that fires visible rockets (like the ones from the RPG). To make it controllable by the player, you'll need a func_tankcontrols entity associated with it." [] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform: This entity lets you switch a train that is not being controlled by the player to a new track via a moving piece of track, either rotating, or ascending / decending, or both." +[ + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Trackchange, ZHLT, Func2) = func_trackchange : "Train track changing platform: This entity allows you to create a rotating platform that will switch a func_tracktrain's path, used mainly with player-controllable trains." +[ + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, Func2) = func_tracktrain : "Track Train: This entity allows you to create a player-controllable train / platform etc. that follows a path consisting of path_tracks. Unlike func_trains, func_tracktrains will automatically face the next path_track, similar to how real-world vehicles behave." +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 : "Enabling this will make the train rotate on the Z axis only (yaw - left and right)" + 2 : "No User Control" : 0 : "Removes the player's ability to control the train." + 8 : "Not Solid" : 0 : "Makes the train not solid." + ] + target(target_destination) : "First stop target" : : "The name of the path_track to start at." + sounds(choices) : "Sound" : 0 : "Sounds that play when the train is moving. Options are:" = + [ + 0 : "None" + 1 : "Rail 1" + 2 : "Rail 2" + 3 : "Rail 3" + 4 : "Rail 4" + 5 : "Rail 6" + 6 : "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 : "This determines how the train behaves when turning corners. Generally the length of the object works here." + height(integer) : "Height above track" : 4 : "This is the height above the path_track that the train will ride, based on the location of the train's origin brush." + startspeed(integer) : "Initial speed" : 0 : "The speed the train starts at, until overridden by player control or path_track settings." + speed(integer) : "Speed (units per second)" : 64 : "The maximum speed the player can make a controllable train go in units/second." + dmg(integer) : "Damage on crush" : 0 : "If train movement is blocked by the player, deal out this much damage." + volume(integer) : "Volume (10 = loudest)" : 10 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default)." + bank(string) : "Bank angle on turns" : "0.0" : "This is the angle the train will tilt when cornering." + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass studio() size(-16 -16 -16, 16 16 16) base(Targetname, Global, RenderFields, ZHLT, FuncAddition) = func_train : "Moving platform: This entity creates an object that can move between multiple path_corners. Not just used for trains; in fact, the func_train is more commonly seen in elevators, platforms, laser targets etc. For a moving object that can be controlled by the player (such as the train in On A Rail), see func_tracktrain." +[ + target(target_source) : "First stop target" : : "he name of the path_corner that the func_train should start at. If not set, the func_train will be at 0 0 0." + movesnd(choices) : "Move Sound" : 0 : "Sound that is played while moving. Options are:" = + [ + 0 : "No Sound" + 1 : "big elev 1" + 2 : "big elev 2" + 3 : "tech elev 1" + 4 : "tech elev 2" + 5 : "tech elev 3" + 6 : "freight elev 1" + 7 : "freight elev 2" + 8 : "heavy elev" + 9 : "rack elev" + 10 : "rail elev" + 11 : "squeek elev" + 12 : "odd elev 1" + 13 : "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 : "Sound played when coming to a stop. Options are:" = + [ + 0 : "No Sound" + 1 : "big elev stop1" + 2 : "big elev stop2" + 3 : "freight elev stop" + 4 : "heavy elev stop" + 5 : "rack stop" + 6 : "rail stop" + 7 : "squeek stop" + 8 : "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 : "The speed the func_train will move at in units/second." + avelocity(string) : "Angular velocity (Y Z X)" : "0 0 0" : " Sets up axial rotation. Format: Y Z X." + dmg(integer) : "Damage on crush" : 0 : "If the player is caught between the func_train and a solid brush, this is the amount of damage he will sustain." + skin(choices) : "Contents (if not solid)" : 0 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "Default" + -1 : "Empty" + -3 : "Water, swimable train" + -4 : "Odd slime: touch drowning death" + -5 : "Odd lava: touch fire death" + -7 : "Volumetric Light" + -16 : "Make odd ladder" + ] + volume(integer) : "Sound Volume 0.0 - 1.0" : 0 : "Sets the volume of the sound. Scales from 0 (completely silent) to 1 (maximum)." + spawnflags(flags) = + [ + 8 : "Not solid" : 0 : "Make the train non-solid." + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +@SolidClass = func_traincontrols : "Train Controls: This entity defines the area in which the player can control a func_tracktrain, relative to the train (since they move). Similar to func_tankcontrols." +[ + target(target_destination) : "Train Name" : : "Set this to the Name of the func_tracktrain you want to control." +] + +//FuncAddition, ZHLT, RenderFields, Targetname +@SolidClass base(Targetname, RenderFields, ZHLT) = func_wall : "Wall: This entity lets you create a stationary piece of geometry in your level which can then be modified (through its rendering properties) for a number of effects. Often used for things like unbreakable glass, masked textures (fences, ladders). In the past it was also used for performance reasons, but nowadays func_detail (introduced by Vluzacn's compile tools) is often a better choice." +[ + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." + style(choices) : "Texlight style" : 0 : "Set a style of lighting for the texlight. Can be applied to any brush based entity." = + [ + 0 : "Normal" + -3 : "Grouped" + 10 : "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11 : "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater" + ] + skin(choices) : "Contents" : 0 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "Normal" + -1 : "Empty" + -2 : "Solid" + -3 : "Water" + -4 : "Slime" + -5 : "Lava" + -16 : "Ladder" + ] +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry: The func_wall_toggle is a func_wall that is made invisible when triggered." +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 : "Starts in an invisible state." + ] +] + +@SolidClass base(Door, FuncAddition) = func_water : "Liquid: A water texture (one prefixed with '!') will act as water, but binding it to an entity gives added advantages. This entity looks a lot like func_door, because it's designed to be able to move (flooding etc.)" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 : "If enabled, the water will treat its predetermined open- and close-position as swapped, meaning it will start in its open position, and move to its closed position. This is useful when you want your water to start open and still receive proper lighting, or the node-graph to generate properly before closing the water manually (if it is a toggleable water)." + 256 : "Use Only" : 0 : "If enabled, The water cannot be triggered by the player walking into it, but must be triggered by another entity." + ] + skin(choices) : "Contents" : -3 : "Skin for brush entities is used to manually override the contents of the brush. The content of a volume determines things like if it's solid, if it's empty, if it's see-through, if it's water, if it's a water current, if it's a ladder, if it's lava, if it's slime, etc." = + [ + 0 : "Default" + -1 : "Empty" + -3 : "Water" + -4 : "Slime" + -5 : "Lava" + -16 : "Ladder (only with non-! texture)" + ] + WaveHeight(integer) : "Wave Height" : : "Sets wave height. Overrides the height set in worldspawn." +] + +//////////////////////////////////////////////////////////////////////////////// +// GAME PLAYER ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/GameCounter.spr") base(Targetname, Targetx, Master) = game_counter : "Counter: The game_counter entity keeps an internal value of how many times it has been triggered, and when it reaches a specified value, it will trigger another entity." +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "If enabled, the game_counter will be removed once it has triggered its Target." + 2 : "Reset On fire" : 0 : "If enabled, once the game_counter has triggered its Target, it will reset its value back to the Initial Value. This will allow it to be used repeatedly, and will trigger its Target each time it reaches the Limit Value." + ] + frags(integer) : "Initial Value" : 0 : "Sets the value that the game_counter should start at." + health(integer) : "Limit Value" : 10 : "Sets the value that the game_counter must reach before triggering its Target." +] + +@PointClass iconsprite("sprites/Hammer/GameCounterSet.spr") base(Targetname, Target, Master) = game_counter_set : "Sets a game_counter: The game_counter_set entity will, when triggered, set the value of a game_counter to a specified value. " +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "If enabled, the game_counter_set will be removed once it has triggered its Target." + ] + frags(integer) : "New Value" : 10 : "Specifies the value that the game_counter should be set to." +] + +@PointClass iconsprite("sprites/Hammer/GamePlayerEquip.spr") base(Targetname) = game_player_equip : "Initial player equipment: The game_player_equip entity allows you to provide the player with specific items when it is triggered. To add weapons and ammo, use this format: 'weapon_xyz' or 'item_xyz'." +[ + master(string) : "Team Master" : : "This can be used to limit which team (in a deathmatch game) can receive the items. Takes the name of a game_team_master." + playerhealth(integer) : "# HP" : : "Sets the players health to the amount specified." + silent(choices) : "Disable pickup noise" : 0 : "Turns the equipment sound on or off." = + [ + 0 : "No" + 1 : "Yes" + ] + nightvision(choices) : "Nightvision" : 0 : "Gives the player nightvision goggles." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 1 : "Use Only" : 0 : "If enabled, The entity cannot be triggered by the player walking into it, but must be triggered by another entity." + ] + +] + +@PointClass iconsprite("sprites/Hammer/GamePlayerHurt.spr") base(Targetname, Master) = game_player_hurt : "Hurt/Heal player: The game_player_hurt entity can be used to inflict a set amount of damage to a player. Similar to a trigger_hurt, however this entity does not require the player to be in a particular location to take the damage. It also lacks some of the more specific options that a trigger_hurt has." +[ + dmg(string) : "Damage To Apply" : : "Sets the amount of damage to apply to the player that activated the entity. A negative value will heal the player." + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "If enabled, the entity will be removed after being triggered." + ] +] + +@PointClass iconsprite("sprites/Hammer/GameEnd.spr") base(Targetname, Master) = game_end : "End this MP game: The game_end entity is used to end a deathmatch map." [] + +@PointClass iconsprite("sprites/Hammer/GamePlayerTeam.spr") base(Targetname, Master) = game_player_team : "Allows player to change teams: " +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "After firing, this entity will be removed." + 2 : "Kill Player" : 0 : "The player will be killed when the entity is activated." + 4 : "Gib Player" : 0 : "The player will be pulled apart when the entity is activated." + ] + target(target_destination) : "game_team_master to use" : : "The player that activates this entity will have his team changed to the team index of the game_team_master entity specified here." +] + +@PointClass iconsprite("sprites/Hammer/GameScore.spr") base(Targetname) = game_score : "Award/Deduct Points: The game_score entity gives or takes points from a player or their team." +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 : "If enabled, the game_score is able to make scores negative." + 2: "Team Points" : 0 : "If enabled, the entity will affect the activating player's whole team." + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass iconsprite("sprites/Hammer/GameTeamMaster.spr") base(Targetname, Target, Targetx, Master) = game_team_master : "Team based master/relay: This entity acts like a combination of the multisource and trigger_relay entities, but is based on teams. The game_team_master can replace the multisource as the master for any entity. It will only be active when the activating team matches the team index value." +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "The entity will be removed after firing." + ] + triggerstate(choices) : "Trigger State" : 0 : "Activate the target with this trigger state" = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 : "The team number that is valid for this entity. -1 allows all teams." +] + +@PointClass iconsprite("sprites/Hammer/GameTeamSet.spr") base(Targetname, Target, Targetx, Master) = game_team_set : "Sets team of team_master: " +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "The entity will be removed after firing." + ] +] + +@PointClass iconsprite("sprites/Hammer/GameText.spr") base(Targetname, Target, Master) = game_text : "HUD Text Message: This entity is used to display messages on-screen. It is used instead of env_message because it doesn't need to a file full of message strings to be distributed with the map. Do not use an automatic trigger like trigger_auto to activate this entity if 'All Players' flag is disabled, otherwise the game will crash." +[ + spawnflags(flags) = + [ + 1 : "All Players" : 0 : "Show the text to all players. If not set, only the player who activated the game_text will see the message." + ] + + message(string) : "Message Text" : : "The text to be displayed. Message text longer than 79 (or 127?) characters in a single line will make the game crash, instead, use line break before it exceeds. Line breaks can be added with by inserting a \n after each sentence where you want a new line." + x(integer) : "X position on screen" : -1 : "X position of text (across screen). (0 - 1.0 = left to right, -1 = center)" + y(integer) : "Y position on screen" : -1 : "Y position of text (up/down screen). (0 - 1.0 = top to bottom, -1 = center)" + effect(Choices) : "Text Effect" : 0 : " Effect to apply to the text. Options are:" = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" : "The main colour of the text." + color2(color255) : "Color2" : "240 110 0" : "The highlight colour of the text." + fadein(string) : "Fade in Time (or character scan time)" : "1.5" : "Time taken to fade in each character." + fadeout(string) : "Fade Out Time" : "0.5" : "Time taken to fade out message." + holdtime(string) : "Hold Time" : "1.2" : "Length of time to hold message on screen after fading in." + fxtime(string) : "Scan time (scan effect only)" : "0.25" : "The amount of time the highlight lags behind the leading edge of the text." + channel(choices) : "Text Channel" : 1 : "Any of four channels can be used by this entity. If while one channel is being used another entity on the same channel is triggered, the old text will be cleared from the screen." = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone: This entity is used to trigger targets based on player locations." +[ + intarget(target_destination) : "Target for IN players" : : "All players inside the area covered by the brush fire this target." + outtarget(target_destination) : "Target for OUT players" : : "All players outside the area covered by the brush fire this target." + incount(target_destination) : "Counter for IN players" : : "This game_counter's value will be set to the number of players inside the area." + outcount(target_destination) : "Counter for OUT players" : : "This game_counter's value will be set to the number of players outside the area." +] + +@PointClass iconsprite("sprites/Hammer/Gibshooter.spr") base(gibshooterbase) = gibshooter : "Gib Shooter: An env_shooter that just shoots bodyparts. Handy >:)." [] + +//////////////////////////////////////////////////////////////////////////////// +// INFO ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/HostageRescue.spr") = info_hostage_rescue : "Hostage rescue point: This entity creates a 'node' for the hostage rescue point. An area about 128 units around the entity is considered to be a hostage rescue area." +[ + hidden(choices) : "Show hud icon" : 0 : "Choose if the stealth icon is displayed on the HUD in-game." = + [ + 0 : "No" + 1 : "Yes" + ] + quiet(choices) : "Quiet Hostage" : 0 : "Choose if the hostage says a sentence on rescue." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass iconsprite("sprites/Hammer/InfoLandmark.spr") base(Targetname, Angles) = info_landmark : "Transition Landmark: In a level transition, this entity defines the same point in both maps, so that the transition appears seamless." [] + +@PointClass iconsprite("sprites/Hammer/EnvTarget.spr") base(Targetname) = info_null : "Info_null: This entity's only purpose is to define the target of one or more light_spot entities. It is only used at compile time by RAD for this sole purpose. At runtime (during gameplay), it removes itself during its spawning process making it unreliable as 'reference/target' for other entities like paths for trains, targets for camera etc." [] + +@PointClass base(Angles) size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "Ai node: nfo_nodes are essential for monsters who need to move under AI control. The engine draws a 'node graph' based on the positions of info_nodes in a map, and monsters can then find the quickest route from point A to point B via the nodes." +[ + nodetype(choices) : "Node type" : 0 : "Type of node. The type decides how the monster interacts with the node. Options are:" = + [ + 0 : "Default" : "Default kind of node. Nothing special." + 1 : "Duck node" : "Makes the AI seek this node for defense or a hiding spot." + 2 : "Corner node" : "Makes the AI pop out around corners for a quick shot." + ] + nodeindex(integer) : "Node index" : : "Not sure what this does." + hinttype(integer) : "Hint type" : : "Not sure what this does, or if it even works." +] + +@PointClass base(info_node) size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "Ai air node: Similar to info_node, this entity is specifically for flying monsters like monster_apache." [] + +@PointClass base(PlayerClass) flags (Angle) size(-32 -32 0, 32 32 64) sequence(0) studio("models/player/m1-seal.mdl") = info_player_start : "Player start: This entity defines the player starting point in single-player maps. Try to place near the ground, as the player will drop from the entity origin to the floor. Also, make sure the info_player_start is clear of any obstacles, or the player may be stuck at the start. " [] + +@PointClass iconsprite("sprites/Hammer/InfoCamera.spr") base(Targetname, Target) = info_camera : "Info Camera: Used to define the point that the fiber-optic camera view will be placed. One can also place a info_target as its target to futher define where the info_camera will look at." [] + +@PointClass iconsprite("sprites/Hammer/InfoTarget.spr") base(Targetname, Angles) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Static Target: An info_target is used to provide static (non-moving) targets for entities like trigger_camera and env_beam." [] + +@PointClass iconsprite("sprites/Hammer/InfoTeleport.spr") size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass) = info_teleport_destination : "Teleport destination: Works in conjunction with trigger_teleport. This entity provides the exit point of the teleporter." [] + +@PointClass iconsprite("sprites/Hammer/InfoTexlight.spr") color(255 128 0) = info_texlights : "Texture Light Config: Special lighting entity. See the notes section of this FGD." [] + +@PointClass decal() base(Targetname, Angles) = infodecal : "Decal: This entity lets you place special textures in your map, on top of solid brushes. Things like scorch marks, cracks, oil, lettering, etc. can be applied. The Decal Tool in Hammer/JACK is an easier way to apply them. Triggering it will cause it to appear. Triggering it again will not cause it to disappear." +[ + texture(decal) : "Texture" : : "Choose a decal from the decals.wad to put on a surface. It only works with that .wad" +] + +//////////////////////////////////////////////////////////////////////////////// +// ITEM ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass base(Angles, Targetx, ModelFile) studio("models/w_armor.mdl") = item_armor : "Armor: Gives the player 100 points of armor." [] + +@PointClass base (Angles, Targetx, ModelFile) studio("models/can.mdl") = item_sodacan : "Soda: The item_sodacan entity is usually only ever seen when being spawned by an env_beverage entity. Gives the player 1 health point." [] + +@PointClass base(Angles, Targetx, ModelFile) = item_security : "Security card: Spawns a security card. This entity has no 'game related behavior' besides storing in the player's inventory but its pickup ability is often used as a way to unlock other kinds of entities (For example, by targeting a multisource which is the master of a door)." [] + +@PointClass base(Angles, Targetx, ModelFile) studio("models/w_longjump.mdl") = item_longjump : "Longjump module: Spawns a long jump module that grants the ability to the player that picks it up to perform long jumps." [] + +@PointClass base(Angles, Targetx, ModelFile) = item_antidote : "Poison antidote: Spawns an antidote to cure nerve gas and poison damage. The antidote shot is administered automatically during the timed damage. There is no HUD element telling how many antidote shots the player has." [] + +@PointClass base(Angles, Targetx, ModelFile) studio("models/w_battery.mdl") = item_battery : "HEV battery (Armor plates): Spawns a battery which gives player armor. Can be modified with SKILLS.CFG." [] + +@PointClass base(Targetname, Target, Angles, ModelFile, RenderFields) = item_generic : "Model entity: Widely used as a reliable way to display prop models in the map." +[ + removeonuse(integer) : "Remove on use" : 0 : "The entity will be removed after firing." + sequencename(string) : "Animation" : : "Defines the animation to use." + lightmultiplier(integer) : "Light Multiplier" : 0 : "Not sure what this does." + sequence(integer) : "Sequence (Editor)" : : "Sequence to display in JACK. This does not affect gameplay." + nopvs(choices) : "Include in Potentially Visible Set(PVS)" : 0 : "Potentially Visible Sets are used to accelerate the rendering of 3D environments. It is also related to NPCs. Refer to the notes section of this FGD." = + [ + 0 : "Yes" + 1 : "No" + ] +] + +@PointClass base (Angles, Targetx, ModelFile) studio("models/healthkit.mdl") = item_healthkit : "Healthkit: Spawns an health kit to heal players for 25 health points." [] + +@SolidClass base (Angles, Targetx, ModelFile) = item_worldmap : "Worldmap: This entity activate the 'World Map' GUI from the original CS:CZDS in game. Could be useful for an easter egg or a mod." +[ + junk(integer) : "Junk (?)" : : "Not sure what this does. most likely nothing." +] + +@PointClass base (Angles, Targetx, ModelFile) studio("models/w_medkit.mdl") = item_healthkitold : "Moddable Healthkit: Spawns an health kit to heal players. The amount of hit points given can be changed with the SKILLS.CFG." [] + +//////////////////////////////////////////////////////////////////////////////// +// LIGHT ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/lightsrc.spr") base(Targetname, Target, Light) = light : "Invisible lightsource: Point-based light. It can also be toggled on/off and pulse in a variety of pre-defined styles (as well as custom ones) in a limited fashion." [] + +@PointClass iconsprite("sprites/Hammer/LightEnvironment.spr") base(Targetname, Target, Light) = light_environment : "Environment light: This entity makes the map's sky emit light. The only practical way of lighting outdoor maps. Sky brushes must have the 'SKY' texture on all faces or they won't emit light. The logic for this is a bit tricky." +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 270 0" : "Use Pitch to shift the sun (or moon) vertically (similar to daytime/hours) and Yaw to shift it horizontally (cardinal direction or obliquity)." + pitch(integer) : "Pitch" : -90 : "A negative number will give downward pitch (which is normally what you want)." + _diffuse_light(color255) : "Diffuse Light" : "0 0 0 0" : "Gives the colour and intensity of the diffuse lighting. This allows a different colour for the diffuse light from a light_environment, more accurately mimicking real-world lighting (yellow sun, blue sky)." +] + +@PointClass iconsprite("sprites/Hammer/LightSpot.spr") base(Targetname, Target, Angles, Light) = light_spot : "Spotlight: The light_spot entity allows you to create direct beams of light (like from a flashlight, spotlight, projector, and beacon) rather than spreading light within a radius of 360." +[ + pitch(integer) : "Pitch" : -90 : "The pitch of the light (-90 is straight down, 90 is straight up)." + _cone(integer) : "Inner angle" : 30 : "Define the size of the inner, bright part of the spotlight." + _cone2(integer) : "Outer angle" : 45 : "Define the size of the outer, fading part of the spotlight." + _sky(choices) : "Is Sky" : 0 : "Choose if this spotlight is should act as the sky (It's better to use light_environment)." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// MOMENTARY ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door: This creates a sliding door that opens or closes in coordination with a momentary_rot_button. Set up is the same as a func_door, but it needs a name and to be targeted by a momentary_rot_button." +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 : "Door starts in its 'open' position." + ] +] + +@SolidClass base(Targetname, Master, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control: The momentary_rot_button was designed to control the momentary_door, or, thanks to the Door Hack, another momentary_rot_button. The door (or door-hack button) moves relative to the position of the momentary_rot_button controlling it. i.e., if the player lets go of the button, the door begins to close." +[ + target(target_destination) : "Targeted object" : : "Normally, the momentary_door you want to control." + speed(integer) : "Speed" : 50 : "Speed the button will turn." + sounds(choices) : "Sounds" : 0 : "Choose the sound the button makes when rotating. Options are:" = + [ + 0 : "None" + 1 : "Big zap & Warmup" + 2 : "Access Denied" + 3 : "Access Granted" + 4 : "Quick Combolock" + 5 : "Power Deadbolt 1" + 6 : "Power Deadbolt 2" + 7 : "Plunger" + 8 : "Small zap" + 9 : "Keycard Sound" + 10 : "Buzz" + 13 : "Latch Unlocked" + 21 : "Squeaky" + 22 : "Squeaky Pneumatic" + 23 : "Ratchet Groan" + 24 : "Clean Ratchet" + 25 : "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 : "Distance in degrees the button will rotate." + returnspeed(integer) : "Auto-return speed" : 0 : "Speed at which the button will return to its starting position after being used." + spawnflags(flags) = + [ + 1 : "Door Hack" : 0 : "With this flag enabled, multiple momentary_rot_buttons can have the same Target value, and they will all move when one is used." + 2 : "Not usable" : 0 : "Button must be triggered to work." + 16 : "Auto Return" : 0 : "Button returns to its starting position automatically." + 64 : "X Axis" : 0 : "If enabled, the rotation will be on the X axis." + 128 : "Y Axis" : 0 : "If enabled, the rotation will be on the Y axis." + ] + _minlight(integer) : "Minimum light level" : 0 : "Brush entities only. Sets the minimum light level. Useful for when textures should always appear bright e.g. computer screens or holograms. Default is 0, max 1." +] + +//////////////////////////////////////////////////////////////////////////////// +// MONSTER ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@BaseClass = Grenadier +[ + hegrenadeonly(choices) : "HE Grenade Only" : 0 : "Choose if this monster throws HE grenades." = + [ + 0 : "No" + 1 : "Yes" + ] + flashbangonly(choices) : "Flash Grenade Only" : 0 : "Choose if this monster throws flash grenades." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Monster, Angles, Classtype, ModelFile) studio("models/props/helicopter_blackhawk.mdl") = monster_apache : "Apache: An attack helicopter. It can actually be turned into a HIND or HARRIER, with the use of the models from CZEROR." +[ + idlesound(sound) : "Idle sound" : : "Changes the idle sound of the monster_apache." + deathsound(sound) : "Death sound" : : "Changes the death sound of the monster_apache." + firesound(sound) : "Fire sound" : : "Changes the fire sound of the monster_apache." + quiet(integer) : "No sound" : : "Disables sounds from the monster_apache" + health(integer) : "Health" : : "Changes the default health of the monster_apache." + spawnflags(flags) = + [ + 8 : "???" : 0 : "Code suggests something to do with m_flNextRocket" + ] +] + +@PointClass base(Monster, Angles, Classtype, ModelFile) size(-16 -16 0, 16 16 16) studio("models/pigeon.mdl") = monster_flyer : "Flyers: Creates a pigeon. It can only fly around. The player can't interact with it at all." [] + +@PointClass base(Monster, Angles, Classtype, ModelFile) = monster_counter_terrorist_repel : "Repel: Spawns a monster that drops down a rope to the nearest surface. The monster can be specified under 'Monster type'. Terrorist monster can also be spawned!." +[ + repelskin(integer) : "Repel skin" : : "Choose the skin for the monster to use." + repelhead(integer) : "Repel head" : : "Choose a head for the monster to use." + monstertype(choices) : "Monster type" : : "Define the monster type to spawn. Options are:" = + [ + "monster_ct_gign_assaultrifle" : "CT - GIGN - Assault rifle" : "Spawns a GIGN officer with an assault rifle." + "monster_ct_gign_grenader" : "CT - GIGN - Grenade" : "Spawns a GIGN officer with a grenade." + "monster_ct_gign_law" : "CT - GIGN - LAW" : "Spawns a GIGN officer with a LAW." + "monster_ct_gign_machinegun" : "CT - GIGN - M60" : "Spawns a GIGN officer with a M60." + "monster_ct_gign_mp5" : "CT - GIGN - MP5" : "Spawns a GIGN officer with a MP5." + "monster_ct_gign_pistol" : "CT - GIGN - Pistol" : "Spawns a GIGN officer with a pistol." + "monster_ct_gign_shotgun" : "CT - GIGN - Shotgun" : "Spawns a GIGN officer with a shotgun." + "monster_ct_gign_smg" : "CT - GIGN - MAC-10" : "Spawns a GIGN officer with a MAC-10." + "monster_ct_gign_sniperrifle" : "CT - GIGN - Sniper" : "Spawns a GIGN officer with a sniper rifle." + "monster_ct_gsg9_assaultrifle" : "CT - GSG9 - Assault rifle" : "Spawns a GSG9 officer with an assault rifle." + "monster_ct_gsg9_grenader" : "CT - GSG9 - Grenade" : "Spawns a GSG9 officer with a grenade." + "monster_ct_gsg9_law" : "CT - GSG9 - LAW" : "Spawns a GSG9 officer with a LAW." + "monster_ct_gsg9_machinegun" : "CT - GSG9 - M60" : "Spawns a GSG9 officer with a M60." + "monster_ct_gsg9_mp5" : "CT - GSG9 - MP5" : "Spawns a GSG9 officer with a MP5." + "monster_ct_gsg9_pistol" : "CT - GSG9 - Pistol" : "Spawns a GSG9 officer with a pistol." + "monster_ct_gsg9_shotgun" : "CT - GSG9 - Shotgun" : "Spawns a GSG9 officer with a shotgun." + "monster_ct_gsg9_smg" : "CT - GSG9 - MAC-10" : "Spawns a GSG9 officer with a MAC-10." + "monster_ct_gsg9_sniperrifle" : "CT - GSG9 - Sniper" : "Spawns a GSG9 officer with a sniper rifle." + "monster_ct_spetsnaz_assaultrifle" : "CT - Spetsnaz - Assault rifle" : "Spawns a Spetsnaz officer with an assault rifle." + "monster_ct_spetsnaz_grenader" : "CT - Spetsnaz - Grenade" : "Spawns a Spetsnaz officer with a grenade." + "monster_ct_spetsnaz_law" : "CT - Spetsnaz - LAW" : "Spawns a Spetsnaz officer with a LAW." + "monster_ct_spetsnaz_machinegun" : "CT - Spetsnaz - M60" : "Spawns a Spetsnaz officer with a M60." + "monster_ct_spetsnaz_mp5" : "CT - Spetsnaz - MP5" : "Spawns a Spetsnaz officer with a MP5." + "monster_ct_spetsnaz_pistol" : "CT - Spetsnaz - Pistol" : "Spawns a Spetsnaz officer with a pistol." + "monster_ct_spetsnaz_shotgun" : "CT - Spetsnaz - Shotgun" : "Spawns a Spetsnaz officer with a shotgun." + "monster_ct_spetsnaz_smg" : "CT - Spetsnaz - MAC-10" : "Spawns a Spetsnaz officer with a MAC-10." + "monster_ct_spetsnaz_sniperrifle" : "CT - Spetsnaz - Sniper" : "Spawns a Spetsnaz officer with a sniper rifle." + "monster_ct_swat_assaultrifle" : "CT - SWAT - Assault rifle" : "Spawns a SWAT officer with an assault rifle." + "monster_ct_swat_grenader" : "CT - SWAT - Grenade" : "Spawns a SWAT officer with a grenade." + "monster_ct_swat_law" : "CT - SWAT - LAW" : "Spawns a SWAT officer with a LAW." + "monster_ct_swat_machinegun" : "CT - SWAT - M60" : "Spawns a SWAT officer with a M60." + "monster_ct_swat_mp5" : "CT - SWAT - MP5" : "Spawns a SWAT officer with a MP5." + "monster_ct_swat_pistol" : "CT - SWAT - Pistol" : "Spawns a SWAT officer with a pistol." + "monster_ct_swat_shotgun" : "CT - SWAT - Shotgun" : "Spawns a SWAT officer with a shotgun." + "monster_ct_swat_smg" : "CT - SWAT - MAC-10" : "Spawns a SWAT officer with a MAC-10." + "monster_ct_swat_sniperrifle" : "CT - SWAT - Sniper" : "Spawns a SWAT officer with a sniper rifle." + "monster_ct_sas_assaultrifle" : "CT - SAS - Assault rifle" : "Spawns a SAS officer with an assault rifle." + "monster_ct_sas_grenader" : "CT - SAS - Grenade" : "Spawns a SAS officer with a grenade." + "monster_ct_sas_law" : "CT - SAS - LAW" : "Spawns a SAS officer with a LAW." + "monster_ct_sas_machinegun" : "CT - SAS - M60" : "Spawns a SAS officer with a M60." + "monster_ct_sas_mp5" : "CT - SAS - MP5" : "Spawns a SAS officer with a MP5." + "monster_ct_sas_pistol" : "CT - SAS - Pistol" : "Spawns a SAS officer with a pistol." + "monster_ct_sas_shotgun" : "CT - SAS - Shotgun" : "Spawns a SAS officer with a shotgun." + "monster_ct_sas_smg" : "CT - SAS - MAC-10" : "Spawns a SAS officer with a MAC-10." + "monster_ct_sas_sniperrifle" : "CT - SAS - Sniper" : "Spawns a SAS officer with a sniper rifle." + "monster_terrorist_arctic_assaultrifle" : "T - Arctic - Assault rifle" : "Spawns a Arctic Terrorist with an assault rifle." + "monster_terrorist_arctic_grenader" : "T - Arctic - Grenade" : "Spawns a Arctic Terrorist with a grenade." + "monster_terrorist_arctic_kamakazi" : "T - Arctic - Kamakazi" : "Spawns a Arctic Terrorist with a bomb strapped to his chest." + "monster_terrorist_arctic_law" : "T - Arctic - LAW" : "Spawns a Arctic Terrorist with a LAW." + "monster_terrorist_arctic_machinegun" : "T - Arctic - M60" : "Spawns a Arctic Terrorist with a M60." + "monster_terrorist_arctic_melee" : "T - Arctic - Melee" : "Spawns a Arctic Terrorist with a machete." + "monster_terrorist_arctic_mp5" : "T - Arctic - MP5" : "Spawns a Arctic Terrorist with a MP5." + "monster_terrorist_arctic_pistol" : "T - Arctic - Pistol" : "Spawns a Arctic Terrorist with a pistol." + "monster_terrorist_arctic_shotgun" : "T - Arctic - Shotgun" : "Spawns a Arctic Terrorist with a shotgun." + "monster_terrorist_arctic_smg" : "T - Arctic - TMP" : "Spawns a Arctic Terrorist with a TMP." + "monster_terrorist_arctic_sniperrifle" : "T - Arctic - Sniper" : "Spawns a Arctic Terrorist with a sniper rifle." + "monster_terrorist_desert_assaultrifle" : "T - Desert - Assault rifle" : "Spawns a Desert Terrorist with an assault rifle." + "monster_terrorist_desert_grenader" : "T - Desert - Grenade" : "Spawns a Desert Terrorist with a grenade." + "monster_terrorist_desert_kamakazi" : "T - Desert - Kamakazi" : "Spawns a Desert Terrorist with a bomb strapped to his chest." + "monster_terrorist_desert_law" : "T - Desert - LAW" : "Spawns a Desert Terrorist with a LAW." + "monster_terrorist_desert_machinegun" : "T - Desert - M60" : "Spawns a Desert Terrorist with a M60." + "monster_terrorist_desert_melee" : "T - Desert - Melee" : "Spawns a Desert Terrorist with a machete." + "monster_terrorist_desert_mp5" : "T - Desert - MP5" : "Spawns a Desert Terrorist with a MP5." + "monster_terrorist_desert_pistol" : "T - Desert - Pistol" : "Spawns a Desert Terrorist with a pistol." + "monster_terrorist_desert_shotgun" : "T - Desert - Shotgun" : "Spawns a Desert Terrorist with a shotgun." + "monster_terrorist_desert_smg" : "T - Desert - TMP" : "Spawns a Desert Terrorist with a TMP." + "monster_terrorist_desert_sniperrifle" : "T - Desert - Sniper" : "Spawns a Desert Terrorist with a sniper rifle." + "monster_terrorist_russian_assaultrifle" : "T - Russian - Assault rifle" : "Spawns a Russian Terrorist with an assault rifle." + "monster_terrorist_russian_grenader" : "T - Russian - Grenade" : "Spawns a Russian Terrorist with a grenade." + "monster_terrorist_russian_kamakazi" : "T - Russian - Kamakazi" : "Spawns a Russian Terrorist with a bomb strapped to his chest." + "monster_terrorist_russian_law" : "T - Russian - LAW" : "Spawns a Russian Terrorist with a LAW." + "monster_terrorist_russian_machinegun" : "T - Russian - M60" : "Spawns a Russian Terrorist with a M60." + "monster_terrorist_russian_melee" : "T - Russian - Melee" : "Spawns a Russian Terrorist with a machete." + "monster_terrorist_russian_mp5" : "T - Russian - MP5" : "Spawns a Russian Terrorist with a MP5." + "monster_terrorist_russian_pistol" : "T - Russian - Pistol" : "Spawns a Russian Terrorist with a pistol." + "monster_terrorist_russian_shotgun" : "T - Russian - Shotgun" : "Spawns a Russian Terrorist with a shotgun." + "monster_terrorist_russian_smg" : "T - Russian - TMP" : "Spawns a Russian Terrorist with a TMP." + "monster_terrorist_russian_sniperrifle" : "T - Russian - Sniper" : "Spawns a Russian Terrorist with a sniper rifle." + "monster_terrorist_asian_assaultrifle" : "T - Asian - Assault rifle" : "Spawns an Asian Terrorist with an assault rifle." + "monster_terrorist_asian_grenader" : "T - Asian - Grenade" : "Spawns an Asian Terrorist with a grenade." + "monster_terrorist_asian_kamakazi" : "T - Asian - Kamakazi" : "Spawns an Asian Terrorist with a bomb strapped to his chest." + "monster_terrorist_asian_law" : "T - Asian - LAW" : "Spawns an Asian Terrorist with a LAW." + "monster_terrorist_asian_machinegun" : "T - Asian - M60" : "Spawns an Asian Terrorist with a M60." + "monster_terrorist_asian_melee" : "T - Asian - Melee" : "Spawns an Asian Terrorist with a machete." + "monster_terrorist_asian_mp5" : "T - Asian - MP5" : "Spawns an Asian Terrorist with a MP5." + "monster_terrorist_asian_pistol" : "T - Asian - Pistol" : "Spawns an Asian Terrorist with a pistol." + "monster_terrorist_asian_shotgun" : "T - Asian - Shotgun" : "Spawns an Asian Terrorist with a shotgun." + "monster_terrorist_asian_smg" : "T - Asian - TMP" : "Spawns an Asian Terrorist with a TMP." + "monster_terrorist_asian_sniperrifle" : "T - Asian - Sniper" : "Spawns an Asian Terrorist with a sniper rifle." + "monster_terrorist_urban_assaultrifle" : "T - Urban - Assault rifle" : "Spawns a Urban Terrorist with an assault rifle." + "monster_terrorist_urban_grenader" : "T - Urban - Grenade" : "Spawns a Urban Terrorist with a grenade." + "monster_terrorist_urban_kamakazi" : "T - Urban - Kamakazi" : "Spawns a Urban Terrorist with a bomb strapped to his chest." + "monster_terrorist_urban_law" : "T - Urban - LAW" : "Spawns a Urban Terrorist with a LAW." + "monster_terrorist_urban_machinegun" : "T - Urban - M60" : "Spawns a Urban Terrorist with a M60." + "monster_terrorist_urban_melee" : "T - Urban - Melee" : "Spawns a Urban Terrorist with a machete." + "monster_terrorist_urban_mp5" : "T - Urban - MP5" : "Spawns a Urban Terrorist with a MP5." + "monster_terrorist_urban_pistol" : "T - Urban - Pistol" : "Spawns a Urban Terrorist with a pistol." + "monster_terrorist_urban_shotgun" : "T - Urban - Shotgun" : "Spawns a Urban Terrorist with a shotgun." + "monster_terrorist_urban_smg" : "T - Urban - TMP" : "Spawns a Urban Terrorist with a TMP." + "monster_terrorist_urban_sniperrifle" : "T - Urban - Sniper" : "Spawns a Urban Terrorist with a sniper rifle." + "monster_terrorist_jungle_assaultrifle" : "T - Jungle - Assault rifle" : "Spawns a Jungle Terrorist with an assault rifle." + "monster_terrorist_jungle_grenader" : "T - Jungle - Grenade" : "Spawns a Jungle Terrorist with a grenade." + "monster_terrorist_jungle_kamakazi" : "T - Jungle - Kamakazi" : "Spawns a Jungle Terrorist with a bomb strapped to his chest." + "monster_terrorist_jungle_law" : "T - Jungle - LAW" : "Spawns a Jungle Terrorist with a LAW." + "monster_terrorist_jungle_machinegun" : "T - Jungle - M60" : "Spawns a Jungle Terrorist with a M60." + "monster_terrorist_jungle_melee" : "T - Jungle - Melee" : "Spawns a Jungle Terrorist with a machete." + "monster_terrorist_jungle_mp5" : "T - Jungle - MP5" : "Spawns a Jungle Terrorist with a MP5." + "monster_terrorist_jungle_pistol" : "T - Jungle - Pistol" : "Spawns a Jungle Terrorist with a pistol." + "monster_terrorist_jungle_shotgun" : "T - Jungle - Shotgun" : "Spawns a Jungle Terrorist with a shotgun." + "monster_terrorist_jungle_smg" : "T - Jungle - TMP" : "Spawns a Jungle Terrorist with a TMP." + "monster_terrorist_jungle_sniperrifle" : "T - Jungle - Sniper" : "Spawns a Jungle Terrorist with a sniper rifle." + ] +] + +@PointClass studio() base(Monster, Classtype, ModelFile) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster: Used to spawn models for use with scripted sequences." +[ + spawnflags(flags) = + [ + 4 : "Not solid" : 0 : "Make the monster non-solid." + ] + health(integer) : "Health" : : "Input the amount of health this entity should have. Useful if you have this monster_generic as an objective and want to 'kill' it." + sequencename(string) : "Animation" : : "Defines the animation to use." + deathanim(string) : "Death Animation Name" : : "input the death animation that this entity should have. It will play this animation upon death (Use SOLOKILLERS HLMV for the name of the animation you want to use)." +] + +@PointClass base(Monster) studio("models/props/.mdl") = monster_tripmine : "Active Tripmine: Creates a tripmine. Tripmines explode when someone or something crosses their laser beam. To place it correctly, the entity's origin (center) must be between 8 to 31 units from the surface, at an angle opposite its surface." +[ + spawnflags(flags) = + [ + 1 : "Instant On" : 1 : "The laser beam is on from level start." + ] +] + +@BaseClass = Turrets +[ + maxsleep(integer) : "Time Before Deactivating" : 0 : "Time to auto-deactivation when no enemies are tracked." + searchspeed(integer) : "Search Speed" : 0 : "Rate of speed that the turret rotates at when navigating to enemies." + turnrate(integer) : "Turn Rate" : 0 : "The rate which the turret turns to target the player." + orientation(Choices) : "Orientation" : 0 : "Choose the orientation of the turret. Options are:" = + [ + 0 : "Floor Mount" : "A floor mounted version. Use this on floors." + 1 : "Ceiling Mount" : "A ceiling mounted version. Use this on ceilings." + ] + spawnflags(flags) = + [ + 32 : "Autostart" : 0 : "The turret is active and deployed from level start." + 64 : "Start Inactive" : 0 : "The turret starts in a inactive state from level start." + ] +] + +@PointClass base(Monster, Turrets) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret: The smaller brother of the monster_turret. Fires 9mm rounds." [] + +@PointClass base(Monster, Turrets) studio("models/turret.mdl") = monster_turret : "Turret: The big brother of the monster_miniturret. Fires 12mm rounds." [] + +@PointClass base(Monster, Turrets) studio("models/sentry.mdl") = monster_sentry : "Sentry: A small, portable sentry gun. For some reason the sounds for this aren't precached properly." [] + +@PointClass base(Monster, Angles) studio("models/roach.mdl") = monster_cockroach : "Cockroach: Cockroaches scurry around in the dark, looking for things to eat. They are easily scared. Stepping on them will kill them. A useful entity to make a place feel more... alive." [] + +@PointClass base(Monster, Angles) studio("models/bigrat.mdl") = monster_rat : "Rat: Spawns a rat. Doesnt do much at all." [] + +@PointClass base(Monster, Angles, ModelFile) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" [] + + +@PointClass base(PlayerClass, Monster, ModelFile) = monster_hostage : "Hostage: Spawns in a hostage." +[ + rescuetarget(target_destination) : "Rescue Target" : : "Set a target to trigger when the hostage is rescued. If there is more than 1 hostage in the map then set the countdown for the trigger_counter to the amount of hostages needed to be rescued before the trigger will happen" + rescueanim(string) : "Rescue animation" : : "Code suggests this works, but it seems to not trigger on rescue." + noautoremove(choices) : "Auto Remove on Rescue" : 0 : "Removes the hostage from the game on rescue (disappears completely)." = + [ + 0 : "Remove" + 1 : "Don't remove" + ] + spawnflags(flags) = + [ + 4 : "(?)" : 0 : "Not sure what this does." + ] +] + +@PointClass studio() base(Monster, Classtype, ModelFile) = monster_npc : "NPC: Spawns a generic NPC that can follow and give you a one time health shot. Very similar to a monster_scientist from HL1. Model can be changed." +[ + model(studio) : "Model" : "models/npc-scientist.mdl" : "Select an Model file to use." + fleeondanger(choices) : "Flee On Danger" : : "Tells the monster to flee when danger is around. This might just be for monster_npc" = + [ + 0 : "No" + 1 : "Yes" + ] + cower(choices) : "Cower" : : "Tells the monster that it can cower. This might just be for monster_npc" = + [ + 0 : "No" + 1 : "Yes" + ] + provoke(choices) : "Provoke" : : "This might just be for monster_npc. Could also provoke CT or T into killing the player." = + [ + 0 : "No" + 1 : "Yes" + ] + +] + +@PointClass studio() base(Monster, Classtype, ModelFile) = monster_sitting_npc : "Sitting NPC: Spawns a sitting NPC. Similar to the monster_sitting_scientist from HL1. Model can't be changed. " [] + +@PointClass studio() size(-16 -16 0, 16 16 72) color(255 255 255) base(ModelFile) = monster_npc_dead : "Dead NPC: Spawns a dead NPC. Bleeds when shot but doesn't do much. Model can be changed." +[ + pose(Choices) : "Pose" : 0 : "Choose a basic pose for the model to take." = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] + deadanim(integer) : "Custom death animation pose" : 0 : "Input the name of a custom animation to use. It's recommended that the animation be in a dead pose on the 1st frame." +] + +//////////////////////////////////////////////////////////////////////////////// +// CT ENTITIES +//////////////////////////////////////////////////////////////////////////////// +// CT has less entities +// This is because you could just change both the LANGAUGE value and the MODEL value to JSDF +//////////////////////////////////////////////////////////////////////////////// + +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_assaultrifle : "CT - GSG9 - Assault Rifle" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_grenader : "CT - GSG9 - Grenadier" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_law : "CT - GSG9 - M72 LAW" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_machinegun : "CT - GSG9 - Machine Gun" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_mp5 : "CT - GSG9 - MP5" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_pistol : "CT - GSG9 - Pistol" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_shotgun : "CT - GSG9 - Shotgun" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_smg : "CT - GSG9 - SMG" [] +@PointClass studio("models/gsg9.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gsg9_sniperrifle : "CT - GSG9 - Sniper Rifle" [] + +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_assaultrifle : "CT - GIGN - Assault Rifle" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_grenader : "CT - GIGN - Grenadier" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_law : "CT - GIGN - M72 LAW" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_machinegun : "CT - GIGN - Machine Gun" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_mp5 : "CT - GIGN - MP5" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_pistol : "CT - GIGN - Pistol" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_shotgun : "CT - GIGN - Shotgun" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_smg : "CT - GIGN - SMG" [] +@PointClass studio("models/gign.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_gign_sniperrifle : "CT - GIGN - Sniper Rifle" [] + +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_assaultrifle : "CT - Spetsnaz - Assault Rifle" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_grenader : "CT - Spetsnaz - Grenadier" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_law : "CT - Spetsnaz - M72 LAW" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_machinegun : "CT - Spetsnaz - Machine Gun" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_mp5 : "CT - Spetsnaz - MP5" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_pistol : "CT - Spetsnaz - Pistol" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_shotgun : "CT - Spetsnaz - Shotgun" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_smg : "CT - Spetsnaz - SMG" [] +@PointClass studio("models/spetsnaz.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_spetsnaz_sniperrifle : "CT - Spetsnaz - Sniper Rifle" [] + +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_assaultrifle : "CT - SWAT - Assault Rifle" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_grenader : "CT - SWAT - Grenadier" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_law : "CT - SWAT - M72 LAW"[ ] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_machinegun : "CT - SWAT - Machine Gun" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_mp5 : "CT - SWAT - MP5" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_pistol : "CT - SWAT - Pistol" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_shotgun : "CT - SWAT - Shotgun" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_smg : "CT - SWAT - SMG" [] +@PointClass studio("models/seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_swat_sniperrifle : "CT - SWAT - Sniper Rifle" [] + +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_assaultrifle : "CT - SAS - Assault Rifle" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_grenader : "CT - SAS - Grenadier" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_law : "CT - SAS - M72 LAW"[ ] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_machinegun : "CT - SAS - Machine Gun" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_mp5 : "CT - SAS - MP5" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_pistol : "CT - SAS - Pistol" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_shotgun : "CT - SAS - Shotgun" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_smg : "CT - SAS - SMG" [] +@PointClass studio("models/sas.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster, Angles, Classtype, ModelFile) = monster_ct_sas_sniperrifle : "CT - SAS - Sniper Rifle" [] + +//////////////////////////////////////////////////////////////////////////////// +// T ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_assaultrifle : "Terrorist - Arctic - Assault Rifle" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_arctic_grenader : "Terrorist - Arctic - Grenadier" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_kamakazi : "Terrorist - Arctic - Kamakazi" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_law : "Terrorist - Arctic - M72 LAW" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_machinegun : "Terrorist - Arctic - Machine Gun" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_melee : "Terrorist - Arctic - Melee" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_mp5 : "Terrorist - Arctic - MP5" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_pistol : "Terrorist - Arctic - Pistol" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_shotgun : "Terrorist - Arctic - Shotgun" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_smg : "Terrorist - Arctic - SMG" [] +@PointClass studio("models/arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_arctic_sniperrifle : "Terrorist - Arctic - Sniper Rifle" [] + +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_assaultrifle : "Terrorist - Desert - Assault Rifle" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_desert_grenader : "Terrorist - Desert - Grenadier" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_kamakazi : "Terrorist - Desert - Kamakazi" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_law : "Terrorist - Desert - M72 LAW" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_machinegun : "Terrorist - Desert - Machine Gun" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_melee : "Terrorist - Desert - Melee" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_mp5 : "Terrorist - Desert - MP5" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_pistol : "Terrorist - Desert - Pistol" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_shotgun : "Terrorist - Desert - Shotgun" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_smg : "Terrorist - Desert - SMG" [] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert_sniperrifle : "Terrorist - Desert - Sniper Rifle" [] + +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_assaultrifle : "Terrorist - Jungle - Assault Rifle" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_jungle_grenader : "Terrorist - Jungle - Grenadier" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_kamakazi : "Terrorist - Jungle - Kamakazi" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_law : "Terrorist - Jungle - M72 LAW" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_machinegun : "Terrorist - Jungle - Machine Gun" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_melee : "Terrorist - Jungle - Melee" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_mp5 : "Terrorist - Jungle - MP5" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_pistol : "Terrorist - Jungle - Pistol" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_shotgun : "Terrorist - Jungle - Shotgun" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_smg : "Terrorist - Jungle - SMG" [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle_sniperrifle : "Terrorist - Jungle - Sniper Rifle" [] + +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_assaultrifle : "Terrorist - Russian - Assault Rifle" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_russian_grenader : "Terrorist - Russian - Grenadier" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_kamakazi : "Terrorist - Russian - Kamakazi" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_law : "Terrorist - Russian - M72 LAW" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_machinegun : "Terrorist - Russian - Machine Gun" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_melee : "Terrorist - Russian - Melee" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_mp5 : "Terrorist - Russian - MP5" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_pistol : "Terrorist - Russian - Pistol" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_shotgun : "Terrorist - Russian - Shotgun" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_smg : "Terrorist - Russian - SMG" [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian_sniperrifle : "Terrorist - Russian - Sniper Rifle" [] + +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_assaultrifle : "Terrorist - Asian - Assault Rifle" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_asian_grenader : "Terrorist - Asian - Grenadier" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_kamakazi : "Terrorist - Asian - Kamakazi" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_law : "Terrorist - Asian - M72 LAW" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_machinegun : "Terrorist - Asian - Machine Gun" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_melee : "Terrorist - Asian - Melee" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_mp5 : "Terrorist - Asian - MP5" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_pistol : "Terrorist - Asian - Pistol" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_shotgun : "Terrorist - Asian - Shotgun" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_smg : "Terrorist - Asian - SMG" [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian_sniperrifle : "Terrorist - Asian - Sniper Rifle" [] + +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_assaultrifle : "Terrorist - Urban - Assault Rifle" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile, Grenadier) = monster_terrorist_urban_grenader : "Terrorist - Urban - Grenadier" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_kamakazi : "Terrorist - Urban - Kamakazi" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_law : "Terrorist - Urban - M72 LAW" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_machinegun : "Terrorist - Urban - Machine Gun" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_melee : "Terrorist - Urban - Melee" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_mp5 : "Terrorist - Urban - MP5" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_pistol : "Terrorist - Urban - Pistol" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_shotgun : "Terrorist - Urban - Shotgun" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_smg : "Terrorist - Urban - SMG" [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban_sniperrifle : "Terrorist - Urban - Sniper Rifle" [] + +@PointClass iconsprite("sprites/Hammer/MonsterMaker.spr") color(255 0 0) base(Monster, Angles, Classtype) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker: Makes monster or anything that can be spawned. From enemies to weapons." +[ + target(target_destination) : "Target On Release" : : "Event to trigger when a monster is spawned." + monstertype(choices) : "Monster Type" : : "The entity name of the monster to be spawned. For example, 'monster_ct_swat' would spawn a CT with the swat faction. Things like 'item_xyz', 'weapon_xyz' and 'ammo_xyz' will also work." = + [ + "monster_ct_gign_assaultrifle" : "CT - GIGN - Assault rifle" : "Spawns a GIGN officer with an assault rifle." + "monster_ct_gign_grenader" : "CT - GIGN - Grenade" : "Spawns a GIGN officer with a grenade." + "monster_ct_gign_law" : "CT - GIGN - LAW" : "Spawns a GIGN officer with a LAW." + "monster_ct_gign_machinegun" : "CT - GIGN - M60" : "Spawns a GIGN officer with a M60." + "monster_ct_gign_mp5" : "CT - GIGN - MP5" : "Spawns a GIGN officer with a MP5." + "monster_ct_gign_pistol" : "CT - GIGN - Pistol" : "Spawns a GIGN officer with a pistol." + "monster_ct_gign_shotgun" : "CT - GIGN - Shotgun" : "Spawns a GIGN officer with a shotgun." + "monster_ct_gign_smg" : "CT - GIGN - MAC-10" : "Spawns a GIGN officer with a MAC-10." + "monster_ct_gign_sniperrifle" : "CT - GIGN - Sniper" : "Spawns a GIGN officer with a sniper rifle." + "monster_ct_gsg9_assaultrifle" : "CT - GSG9 - Assault rifle" : "Spawns a GSG9 officer with an assault rifle." + "monster_ct_gsg9_grenader" : "CT - GSG9 - Grenade" : "Spawns a GSG9 officer with a grenade." + "monster_ct_gsg9_law" : "CT - GSG9 - LAW" : "Spawns a GSG9 officer with a LAW." + "monster_ct_gsg9_machinegun" : "CT - GSG9 - M60" : "Spawns a GSG9 officer with a M60." + "monster_ct_gsg9_mp5" : "CT - GSG9 - MP5" : "Spawns a GSG9 officer with a MP5." + "monster_ct_gsg9_pistol" : "CT - GSG9 - Pistol" : "Spawns a GSG9 officer with a pistol." + "monster_ct_gsg9_shotgun" : "CT - GSG9 - Shotgun" : "Spawns a GSG9 officer with a shotgun." + "monster_ct_gsg9_smg" : "CT - GSG9 - MAC-10" : "Spawns a GSG9 officer with a MAC-10." + "monster_ct_gsg9_sniperrifle" : "CT - GSG9 - Sniper" : "Spawns a GSG9 officer with a sniper rifle." + "monster_ct_spetsnaz_assaultrifle" : "CT - Spetsnaz - Assault rifle" : "Spawns a Spetsnaz officer with an assault rifle." + "monster_ct_spetsnaz_grenader" : "CT - Spetsnaz - Grenade" : "Spawns a Spetsnaz officer with a grenade." + "monster_ct_spetsnaz_law" : "CT - Spetsnaz - LAW" : "Spawns a Spetsnaz officer with a LAW." + "monster_ct_spetsnaz_machinegun" : "CT - Spetsnaz - M60" : "Spawns a Spetsnaz officer with a M60." + "monster_ct_spetsnaz_mp5" : "CT - Spetsnaz - MP5" : "Spawns a Spetsnaz officer with a MP5." + "monster_ct_spetsnaz_pistol" : "CT - Spetsnaz - Pistol" : "Spawns a Spetsnaz officer with a pistol." + "monster_ct_spetsnaz_shotgun" : "CT - Spetsnaz - Shotgun" : "Spawns a Spetsnaz officer with a shotgun." + "monster_ct_spetsnaz_smg" : "CT - Spetsnaz - MAC-10" : "Spawns a Spetsnaz officer with a MAC-10." + "monster_ct_spetsnaz_sniperrifle" : "CT - Spetsnaz - Sniper" : "Spawns a Spetsnaz officer with a sniper rifle." + "monster_ct_swat_assaultrifle" : "CT - SWAT - Assault rifle" : "Spawns a SWAT officer with an assault rifle." + "monster_ct_swat_grenader" : "CT - SWAT - Grenade" : "Spawns a SWAT officer with a grenade." + "monster_ct_swat_law" : "CT - SWAT - LAW" : "Spawns a SWAT officer with a LAW." + "monster_ct_swat_machinegun" : "CT - SWAT - M60" : "Spawns a SWAT officer with a M60." + "monster_ct_swat_mp5" : "CT - SWAT - MP5" : "Spawns a SWAT officer with a MP5." + "monster_ct_swat_pistol" : "CT - SWAT - Pistol" : "Spawns a SWAT officer with a pistol." + "monster_ct_swat_shotgun" : "CT - SWAT - Shotgun" : "Spawns a SWAT officer with a shotgun." + "monster_ct_swat_smg" : "CT - SWAT - MAC-10" : "Spawns a SWAT officer with a MAC-10." + "monster_ct_swat_sniperrifle" : "CT - SWAT - Sniper" : "Spawns a SWAT officer with a sniper rifle." + "monster_ct_sas_assaultrifle" : "CT - SAS - Assault rifle" : "Spawns a SAS officer with an assault rifle." + "monster_ct_sas_grenader" : "CT - SAS - Grenade" : "Spawns a SAS officer with a grenade." + "monster_ct_sas_law" : "CT - SAS - LAW" : "Spawns a SAS officer with a LAW." + "monster_ct_sas_machinegun" : "CT - SAS - M60" : "Spawns a SAS officer with a M60." + "monster_ct_sas_mp5" : "CT - SAS - MP5" : "Spawns a SAS officer with a MP5." + "monster_ct_sas_pistol" : "CT - SAS - Pistol" : "Spawns a SAS officer with a pistol." + "monster_ct_sas_shotgun" : "CT - SAS - Shotgun" : "Spawns a SAS officer with a shotgun." + "monster_ct_sas_smg" : "CT - SAS - MAC-10" : "Spawns a SAS officer with a MAC-10." + "monster_ct_sas_sniperrifle" : "CT - SAS - Sniper" : "Spawns a SAS officer with a sniper rifle." + "monster_terrorist_arctic_assaultrifle" : "T - Arctic - Assault rifle" : "Spawns a Arctic Terrorist with an assault rifle." + "monster_terrorist_arctic_grenader" : "T - Arctic - Grenade" : "Spawns a Arctic Terrorist with a grenade." + "monster_terrorist_arctic_kamakazi" : "T - Arctic - Kamakazi" : "Spawns a Arctic Terrorist with a bomb strapped to his chest." + "monster_terrorist_arctic_law" : "T - Arctic - LAW" : "Spawns a Arctic Terrorist with a LAW." + "monster_terrorist_arctic_machinegun" : "T - Arctic - M60" : "Spawns a Arctic Terrorist with a M60." + "monster_terrorist_arctic_melee" : "T - Arctic - Melee" : "Spawns a Arctic Terrorist with a machete." + "monster_terrorist_arctic_mp5" : "T - Arctic - MP5" : "Spawns a Arctic Terrorist with a MP5." + "monster_terrorist_arctic_pistol" : "T - Arctic - Pistol" : "Spawns a Arctic Terrorist with a pistol." + "monster_terrorist_arctic_shotgun" : "T - Arctic - Shotgun" : "Spawns a Arctic Terrorist with a shotgun." + "monster_terrorist_arctic_smg" : "T - Arctic - TMP" : "Spawns a Arctic Terrorist with a TMP." + "monster_terrorist_arctic_sniperrifle" : "T - Arctic - Sniper" : "Spawns a Arctic Terrorist with a sniper rifle." + "monster_terrorist_desert_assaultrifle" : "T - Desert - Assault rifle" : "Spawns a Desert Terrorist with an assault rifle." + "monster_terrorist_desert_grenader" : "T - Desert - Grenade" : "Spawns a Desert Terrorist with a grenade." + "monster_terrorist_desert_kamakazi" : "T - Desert - Kamakazi" : "Spawns a Desert Terrorist with a bomb strapped to his chest." + "monster_terrorist_desert_law" : "T - Desert - LAW" : "Spawns a Desert Terrorist with a LAW." + "monster_terrorist_desert_machinegun" : "T - Desert - M60" : "Spawns a Desert Terrorist with a M60." + "monster_terrorist_desert_melee" : "T - Desert - Melee" : "Spawns a Desert Terrorist with a machete." + "monster_terrorist_desert_mp5" : "T - Desert - MP5" : "Spawns a Desert Terrorist with a MP5." + "monster_terrorist_desert_pistol" : "T - Desert - Pistol" : "Spawns a Desert Terrorist with a pistol." + "monster_terrorist_desert_shotgun" : "T - Desert - Shotgun" : "Spawns a Desert Terrorist with a shotgun." + "monster_terrorist_desert_smg" : "T - Desert - TMP" : "Spawns a Desert Terrorist with a TMP." + "monster_terrorist_desert_sniperrifle" : "T - Desert - Sniper" : "Spawns a Desert Terrorist with a sniper rifle." + "monster_terrorist_russian_assaultrifle" : "T - Russian - Assault rifle" : "Spawns a Russian Terrorist with an assault rifle." + "monster_terrorist_russian_grenader" : "T - Russian - Grenade" : "Spawns a Russian Terrorist with a grenade." + "monster_terrorist_russian_kamakazi" : "T - Russian - Kamakazi" : "Spawns a Russian Terrorist with a bomb strapped to his chest." + "monster_terrorist_russian_law" : "T - Russian - LAW" : "Spawns a Russian Terrorist with a LAW." + "monster_terrorist_russian_machinegun" : "T - Russian - M60" : "Spawns a Russian Terrorist with a M60." + "monster_terrorist_russian_melee" : "T - Russian - Melee" : "Spawns a Russian Terrorist with a machete." + "monster_terrorist_russian_mp5" : "T - Russian - MP5" : "Spawns a Russian Terrorist with a MP5." + "monster_terrorist_russian_pistol" : "T - Russian - Pistol" : "Spawns a Russian Terrorist with a pistol." + "monster_terrorist_russian_shotgun" : "T - Russian - Shotgun" : "Spawns a Russian Terrorist with a shotgun." + "monster_terrorist_russian_smg" : "T - Russian - TMP" : "Spawns a Russian Terrorist with a TMP." + "monster_terrorist_russian_sniperrifle" : "T - Russian - Sniper" : "Spawns a Russian Terrorist with a sniper rifle." + "monster_terrorist_asian_assaultrifle" : "T - Asian - Assault rifle" : "Spawns an Asian Terrorist with an assault rifle." + "monster_terrorist_asian_grenader" : "T - Asian - Grenade" : "Spawns an Asian Terrorist with a grenade." + "monster_terrorist_asian_kamakazi" : "T - Asian - Kamakazi" : "Spawns an Asian Terrorist with a bomb strapped to his chest." + "monster_terrorist_asian_law" : "T - Asian - LAW" : "Spawns an Asian Terrorist with a LAW." + "monster_terrorist_asian_machinegun" : "T - Asian - M60" : "Spawns an Asian Terrorist with a M60." + "monster_terrorist_asian_melee" : "T - Asian - Melee" : "Spawns an Asian Terrorist with a machete." + "monster_terrorist_asian_mp5" : "T - Asian - MP5" : "Spawns an Asian Terrorist with a MP5." + "monster_terrorist_asian_pistol" : "T - Asian - Pistol" : "Spawns an Asian Terrorist with a pistol." + "monster_terrorist_asian_shotgun" : "T - Asian - Shotgun" : "Spawns an Asian Terrorist with a shotgun." + "monster_terrorist_asian_smg" : "T - Asian - TMP" : "Spawns an Asian Terrorist with a TMP." + "monster_terrorist_asian_sniperrifle" : "T - Asian - Sniper" : "Spawns an Asian Terrorist with a sniper rifle." + "monster_terrorist_urban_assaultrifle" : "T - Urban - Assault rifle" : "Spawns a Urban Terrorist with an assault rifle." + "monster_terrorist_urban_grenader" : "T - Urban - Grenade" : "Spawns a Urban Terrorist with a grenade." + "monster_terrorist_urban_kamakazi" : "T - Urban - Kamakazi" : "Spawns a Urban Terrorist with a bomb strapped to his chest." + "monster_terrorist_urban_law" : "T - Urban - LAW" : "Spawns a Urban Terrorist with a LAW." + "monster_terrorist_urban_machinegun" : "T - Urban - M60" : "Spawns a Urban Terrorist with a M60." + "monster_terrorist_urban_melee" : "T - Urban - Melee" : "Spawns a Urban Terrorist with a machete." + "monster_terrorist_urban_mp5" : "T - Urban - MP5" : "Spawns a Urban Terrorist with a MP5." + "monster_terrorist_urban_pistol" : "T - Urban - Pistol" : "Spawns a Urban Terrorist with a pistol." + "monster_terrorist_urban_shotgun" : "T - Urban - Shotgun" : "Spawns a Urban Terrorist with a shotgun." + "monster_terrorist_urban_smg" : "T - Urban - TMP" : "Spawns a Urban Terrorist with a TMP." + "monster_terrorist_urban_sniperrifle" : "T - Urban - Sniper" : "Spawns a Urban Terrorist with a sniper rifle." + "monster_terrorist_jungle_assaultrifle" : "T - Jungle - Assault rifle" : "Spawns a Jungle Terrorist with an assault rifle." + "monster_terrorist_jungle_grenader" : "T - Jungle - Grenade" : "Spawns a Jungle Terrorist with a grenade." + "monster_terrorist_jungle_kamakazi" : "T - Jungle - Kamakazi" : "Spawns a Jungle Terrorist with a bomb strapped to his chest." + "monster_terrorist_jungle_law" : "T - Jungle - LAW" : "Spawns a Jungle Terrorist with a LAW." + "monster_terrorist_jungle_machinegun" : "T - Jungle - M60" : "Spawns a Jungle Terrorist with a M60." + "monster_terrorist_jungle_melee" : "T - Jungle - Melee" : "Spawns a Jungle Terrorist with a machete." + "monster_terrorist_jungle_mp5" : "T - Jungle - MP5" : "Spawns a Jungle Terrorist with a MP5." + "monster_terrorist_jungle_pistol" : "T - Jungle - Pistol" : "Spawns a Jungle Terrorist with a pistol." + "monster_terrorist_jungle_shotgun" : "T - Jungle - Shotgun" : "Spawns a Jungle Terrorist with a shotgun." + "monster_terrorist_jungle_smg" : "T - Jungle - TMP" : "Spawns a Jungle Terrorist with a TMP." + "monster_terrorist_jungle_sniperrifle" : "T - Jungle - Sniper" : "Spawns a Jungle Terrorist with a sniper rifle." + ] + netname(target_destination) : "Childrens' Name" : : "When the monster or NPC is spawned, whatever name is in this key will be given to the spawned monster or NPC." + forcedtarget(target_destination) : "Forced Target" : : "Forces the monster to aggressively persue and kill what ever target name is input." + spawnflags(flags) = + [ + 1 : "Start On" : 0 : "If this is enabled, the monstermaker will start on and start spawning as soon as the map loads." + 2 : "PVS On/Off (NoImpl)" : 0 : "Potentially Visible Sets are used to accelerate the rendering of 3D environments. It is also related to NPCs. Refer to the notes section of this FGD" + 4 : "Cyclic" : 0 : "If this is enabled, changes the monstermaker's toggle-behaviour to a single-fire-behaviour. With this flag set, the entity will spawn one time every time it is fired." + 8 : "MonsterClip" : 0 : "If this is enabled, spawned monsters will not be able to pass through func_monsterclip brushes." + ] + monstercount(integer) : "Number of Monsters" : 1 : "The maximum number of entities to spawn (-1 = unlimited)." + delay(integer) : "Frequency (-1 = on child death)" : 5 : "Delay, in seconds, between each monster being spawned. If 0, a new monster will only be spawned after the previous has been killed." + m_imaxlivechildren(integer) : "Max live children (-1 = unlimited)" : 5 : "Maximum number of live children allowed at one time. Spawnings will be suspended until a monster dies. A value of 0 means infinite (obviously not recommended if delay is too low and monstercount is infinite)." + spawnawake(choices) : "Spawn awake" : : "Spawns a monster that is 'awake', meaning that the AI is active. Not sure if this key is working properly." = + [ + 0 : "No" + 1 : "Yes" + ] + dontspawninview(choices) : "Spawn in view" : 0 : "Choose if the monster can spawn inside the players view." = + [ + 0 : "Yes" + 1 : "No" + ] + monstermodel(studio) : "Monster model" : : "The model that the monster spawned from the monstermaker will use." + gagged(choices) : "Gagged" : : "Gags the idle sounds of the monster until angered." = + [ + 0 : "No" + 1 : "Yes" + ] + fadespeed(integer) : "Fade Speed" : : "The speed at which bodies will fade out at. Higher number means faster fade." + deathfadedelay(integer) : "Death Fade Delay" : : "The delay (in seconds) at which bodies will begin to fade at." + deathfade(choices) : "Death Fade" : : "Choose if the body fades after death." = + [ + 0 : "No" + 1 : "Yes" + ] + model(studio) : "Model" : : "Select an Model file to use." + body(integer) : "Body" : 0 : "Input the value for the bodygroup to use. (Use SOLOKILLERS HLMV for the value)." + skin(integer) : "Skin" : 0 : "Input the value for the skin to use. (Use SOLOKILLERS HLMV for the value)." + head(integer) : "Head" : 0 : "Input the value for the head to use. (Use SOLOKILLERS HLMV for the value)." +] + +//////////////////////////////////////////////////////////////////////////////// +// MULTI ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass base(Targetname) color(255 128 0) iconsprite("sprites/Hammer/multi_manager.spr") = multi_manager : "MultiTarget Manager: This entity can activate several different events (including itself) at specific times. It can only be used when the SmartEdit option in the multi_manager's properties is disabled. To add targets, click 'Add' and enter the name of your first target entity in the 'Key' dialog, and a delay of activation in seconds as the 'Value', then click OK. Refer to the notes section of this FGD." +[ + spawnflags(flags) = + [ + 1 : "multithreaded" : 0 : "Refer to the notes section of this FGD." + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) iconsprite("sprites/Hammer/MultiSource.spr") = multisource : "Multisource: Refer to the notes section of this FGD." +[ + globalstate(string) : "Global State Master" : : "This is the name of the global variable (set by an env_global) that can be used to control the state of the multisource." +] + +//////////////////////////////////////////////////////////////////////////////// +// PATH ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/PathCorner.spr") base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Pathing: Multiple path_corners form a path that can be followed by various moving entities, including some monsters and the func_train. The corresponding entity for func_tracktrain is path_track." +[ + spawnflags(flags) = + [ + 1 : "Wait for retrigger" : 0 : "If enabled, Moving entity will wait and will only continue when triggered." + 2 : "Teleport" : 0 : "If enabled, makes a func_train entity teleport to the current path_corner." + 4 : "Fire once" : 0 : "If enabled, will only fire its 'Fire On Pass' target once." + ] + target(target_destination) : "Next stop target" : : "Name of the next path_corner in the path." + message(target_destination) : "Fire On Pass" : : "Trigger this event when this path_corner is passed by the entity using the path. May not work correctly." + wait(integer) : "Wait here" : 0 : "Wait for this number of seconds before moving to next corner." + speed(integer) : "New Train Speed" : 0 : "Speed of the train once it passes this path_corner." + yaw_speed(integer) : "New Train rot. Speed" : 0 : "Overrides train rotation speed after reaching this point (degrees per seconds)." +] + +@PointClass iconsprite("sprites/Hammer/PathTrack.spr") base(Targetname) size(16 16 16) = path_track : "Train Track Path: " +[ + target(target_destination) : "Next stop target" : : "The name of the next path_track in the path." + spawnflags(flags) = + [ + 1 : "Disabled" : 0 : "If enabled, train starts disabled. Trigger the path to enable it. The Branch Path key can't be used with this flag." + 2 : "Fire once" : 0 : "If enabled, fires it's 'fire on pass' target once." + 4 : "Branch Reverse" : 0 : "If enabled, swap the 'branch path' and the 'next target' key on level load." + 8 : "Disable train" : 0 : "If enabled, disables the func_tracktrain when this point is reached." + ] + message(target_destination) : "Fire On Pass" : : "When a train passes this path_track it will trigger this event." + altpath(target_destination) : "Branch Path" : : "The name of a secondary path_track. When a path_track is triggered, its Next Stop Target is replaced by its Branch Path value." + netname(target_destination) : "Fire on dead end" : : "If this path_track is a dead-end, activate this event on reaching. If a path_track's Next Stop target is not defined, or if it has been triggered but has no branch path, it is considered a dead end." + speed(integer) : "New Train Speed" : 0 : "As the train passes this point, this speed will be assigned to it." +] + +//////////////////////////////////////////////////////////////////////////////// +// PLAYER ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/PlayerLoadSaved.spr") base(Targetname) = player_loadsaved : "Load Auto-Saved game: This entity triggers the game to load the last autosave (created with a trigger_autosave). Use this entity for when the player does something really naughty, preventing the game from continuing." +[ + duration(string) : "Fade Duration (seconds)" : "2" : "Sets how long the overlay should take to fade into its full effect." + holdtime(string) : "Hold Fade (seconds)" : "0" : "Sets how long the overlay should stay on the screen at its full effect before turning itself off." + renderamt(integer) : "Fade Alpha" : 255 : "he maximum alpha value (opacity) of the overlay. Scales from 0 (transparent) to 255 (opaque)." + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" : "Sets the color of the overlay." + messagetime(string) : "Show Message delay" : "0" : "The delay (in seconds) until the message is shown." + message(string) : "Message To Display" : "When triggered, this message will be shown on screen." + loadtime(string) : "Reload delay" : "0" : "The delay (in seconds) until the game reloads the last known autosave." +] + +@PointClass iconsprite("sprites/Hammer/PlayerWeaponStrip.spr") base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons: When activated, this entity removes all the weapons that the player is carrying." +[ + item(Choices) : "Item to strip" : : "Specifies the item to strip from the players inventory" = + [ + "weapon_knife" : "Knife" + "weapon_p228" : "P228" + "weapon_glock18" : "Glock 18" + "weapon_usp" : "USP" + "weapon_fiveseven" : "Five-Seven" + "weapon_elite" : "Elite Dual Pistols" + "weapon_deagle" : "Desert Eagle" + "weapon_ak47" : "AK47" + "weapon_aug" : "AUG" + "weapon_m4a1" : "M4A1" + "weapon_sg552" : "SG552" + "weapon_galil" : "Galil" + "weapon_famas" : "Famas" + "weapon_mac10" : "Mac-10" + "weapon_p90" : "P90" + "weapon_tmp" : "TMP" + "weapon_ump45" : "UMP45" + "weapon_mp5navy" : "MP5" + "weapon_scout" : "Scout" + "weapon_awp" : "AWP" + "weapon_g3sg1" : "G3SG1" + "weapon_sg550" : "SG550" + "weapon_flashbang" : "Flash Grenade" + "weapon_smokegrenade" : "Smoke Grenade" + "weapon_hegrenade" : "HE Grenade" + "weapon_laws" : "LAW" + "weapon_m60" : "M60" + "weapon_m249" : "M249" + "weapon_xm1014" : "XM1014" + "weapon_m3" : "M3" + "weapon_shieldgun" : "Shield" + "weapon_blowtorch" : "Blowtorch Tool" + "weapon_briefcase" : "Briefcase Tool" + "weapon_camera" : "Camera Tool" + "weapon_fiberopticcamera" : "Fiber-Optic Camera Tool" + "weapon_radiocontrolledbomb" : "Radio Bomb Tool" + "weapon_radio" : "Radio Tool" + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// SCRIPTED ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence: A scripted_sentence allows you to make a monster say something. Available sentence names can be found in the sound\sentences.txt file, or they can be scripted into a .SEQ file." +[ + spawnflags(flags) = + [ + 1 : "Fire Once" : 1 : "If enabled, the sentence can only be activated once." + 2 : "Followers Only" : 0 : "If enabled, only monsters who follow the player can speak this dialog." + 4 : "Interrupt Speech" : 1 : "If enabled, Override current speech on affected monster (including default lines)." + 8 : "Concurrent" : 0 : "If enabled, allow other people to keep talking around the monster" + ] + sentence(string) : "Sentence Name" : "" : "Sentence to play. Make sure you preface the sentence with '!', For example !CT_MAD_AM0" + entity(string) : "Speaker Type" : : "This is the name of the entity that says the sentence." + duration(string) : "Sentence Time" : "3" : "How long the sentence lasts (in seconds)." + radius(integer) : "Search Radius" : 512 : "If nothing is defined in the speaker type, it will search for an availible mouth to say the sentence." + refire(string) : "Delay Before Refire" : "3" : "Time interval between sentence refiring." + listener(string) : "Listener Type" : : "The name of entity the monster will look at when 'speaking' a sentence." + volume(string) : "Volume 0-10" : "10" : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum, default)." + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" : "If enabled, the sound will be at maximum volume within a roughly 256 unit radius, fading out completely at around 512 units away." + 1 : "Medium Radius" : "If enabled, the sound will be at maximum volume within a roughly 512 unit radius, fading out completely at around 768 units away." + 2 : "Large Radius" : "If enabled, the sound will be at maximum volume within a roughly 768 unit radius, fading out completely at around 1280 units away." + 3 : "Play Everywhere" : "If enabled, the sound will be heard throughout the entire map." + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence: " +[ + m_iszEntity(string) : "Target Monster" : : "The name of the monster entity that this sequence affects. You can also input a monster type (monster_scientist, for example, but only one monster will be chosen to follow the sequence.)" + m_iszPlay(string) : "Action Animation" : "" : "The name of the animation that will be performed by Target Monster." + m_iszIdle(string) : "Idle Animation" : "" : "The name of an animation you want Target Monster to perform on a loop until the scripted_sequence is triggered. However, making use of the Idle Animation field will change the function of the entity. The monster will move at the start of the level ('Walk' and 'Run' movement types will not function as intended) and then perform their idle animation on a loop. When the scripted_sequence is triggered, the monster will perform their action animation." + m_flRadius(integer) : "Search Radius" : 512 : "If you input a monster type into Target Monster, the entity will pick a monster within this radius of the entity to follow the sequence. If none are within the radius, the first monster to enter the radius will follow the sequence." + m_flRepeat(integer) : "Repeat Rate ms (m_flRepeat)" : 0 : "Not sure what this does. Might not work." + m_fMoveTo(choices) : "Move to Position" : 0 : "Sets how (or if) the monster moves before performing the animation. Options are:" = + [ + 0 : "No" : "The monster will not move or turn. It will perform the animation wherever it is." + 1 : "Walk" : "The monster will walk to the scripted_sequence, then perform the animation." + 2 : "Run" : "The monster will run to the scripted_sequence, then perform the animation." + 4 : "Instantaneous" : "The monster will instantly warp to the location of the scripted_sequence and perform the animation." + 5 : "No - Turn to Face" : "The monster will not move, but will turn to the scripted_sequence's angle before performing the animation." + ] + spawnflags(flags) = + [ + 4 : "Repeatable" : 0 : "If enabled, the sequence can be repeated more than once. Otherwise the entity will be removed once the sequence is complete." + 8 : "Leave Corpse" : 0 : "If enabled, if the action animation is a death animation, causing the monster to die, the corpse will not fade out. Might not work." + 16 : "Cancel on Alert" : 0 : "If enabled, if alerted, the monster will cancel all further scripted_sequences and attack the player." + 32 : "No Interruptions" : 0 : "If enabled, the sequence cannot be interrupted. The monster will ignore damage until the sequence is complete, as with the aiscripted_sequence entity." + 64 : "Override AI" : 0 : "If enabled, Forces the monster to start the sequence regardless of its state. With this set, the sequence will start even when the monster is under attack by something. Might not work." + 128 : "No Script Movement" : 0 : "If enabled, when the sequence is completed, the monster will be placed back where the Action Animation started (if the animation would cause the monster to move)." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// SPEAKER ENTITY +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/speaker.spr") base(Targetname) = speaker : "Announcement Speaker: Creates a public announcement system or an ambient sound system that randomly plays sounds from the sentences.txt file, or they can be scripted into a .SEQ file." +[ + // e.g. ARAB_OUTSIDE_YELL + message(choices) : "Sentence Group Name" : : "The sentence group to randomly select sentences from. Use the choices or enter your own. For example: ARAB_OUTSIDE_YELL." = + [ + "OFFICE_SFX" : "Office SFX" : "Typical office sounds." + "arcticwind_gust" : "Arctic wind SFX" : "Wind sounds for windy places." + "WILD" : "Wilderness SFX" : "Wind, birds and bees." + "JUNGLE" : "Jungle SFX" : "Jungle and thunder." + "ROCKET" : "Rocket SFX" : "Steam bursts." + "FAR_WAR" : "Far warzone SFX" : "Far away shooting, exploding and jet sounds." + "NEAR_WAR" : "Near warzone SFX" : "Near by shooting, exploding and jet sounds." + "ARAB_OUTSIDE_YELL" : "Arabic yelling SFX" : "An arabic man yelling into a speaker." + "ARAB_OUTSIDE_WAR" : "Arabic warzone SFX" : "Arabic warzone sounds, lots of shooting." + "ARAB_HOUSE" : "Arabic house SFX" : "Kinda spooky. Has footsteps and a baby cry." + "WIND_METALCREAK" : "Creaking metal SFX" : "Metal and wind, together." + "FASTLINE_SPEAKER" : "English train announcer" : "Announcer that speaks english. Used in FASTLINE." + "EURONITECITY_SPEAKER" : "European city SFX" : "Generic European town sounds. Bells and dogs." + "WOODSTEPS" : "Wood steps SFX" : "Spooky reverberant footsteps on wood." + "DESERT" : "Desert SFX" : "Desert sounds- wind, birds, sand etc." + "CITYSLUM" : "City slum SFX" : "Traffic, gunshots, sirens etc." + "WOODCREAK" : "Wood creak SFX" : "Spooky reverberant wood creaks." + "LOST_JUNGLE" : "LOST Jungle SFX" : "More jungle birds." + ] + //preset doesnt work for some reason + //preset(choices) : "Presets" : : "Announcement presets for the speaker entity. These are located in the sentences.txt." = + health(integer) : "Volume (10 = loudest)" : 5 : "Sets the volume of the sound. Scales from 0 (completely silent) to 10 (maximum)." + spawnflags(flags) = + [ + 1 : "Start Silent" : 0 : "If enabled, the entity will have to be triggered to work." + ] +] + +//////////////////////////////////////////////////////////////////////////////// +// TRIGGER ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/TriggerAuto.spr") base(Targetx) = trigger_auto : "Trigger Auto: This entity fires its target the moment the map has loaded. Setting 'Delay before trigger' to something like 0.2 is a good idea, because it's possible for the trigger_auto to fire before the entity it targets has even been spawned." +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 1 : "If this is set, the trigger_auto will be removed from the game after firing." + ] + globalstate(string) : "Global State to Read" : : "The name of a global variable (set by an env_global). This variable sets the state of the trigger_auto." + triggerstate(choices) : "Trigger State" : 0 : "Sets the type of trigger the trigger_auto sends. Options are:" = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname, Master) = trigger_autosave : "Trigger Auto-Save: When the player moves through the area covered by this entity, the game will be autosaved. This trigger only works once: it is removed when the auto-save occurs." [] + +@SolidClass base(Targetname, Target, Master) = trigger_zipline : "Trigger Zipline: Tiggers an animation and then teleports the player to the selected location. CASTLE> This one bugged out alot and stopped the flow of gameplay. We ended up scrapping the use of it in 1st level of High Rise and replaced it with a bridge." +[ + start(choices) : "Is start" : : "Start point of the zipline." = + [ + 0 : "No" + 1 : "Yes" + ] + end(choices) : "Is end" : : "End point of the zipline." = + [ + 0 : "No" + 1 : "Yes" + ] + ziplinetarget(target_destination) : "Zipline Target" : : "Point where the player will be teleported to." + spawnflags(flags) = + [ + 1 : "Fire once" : 0 : "If enabled, the entity can only be activated once. " + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerCamera.spr") base(Targetname, Targetx) = trigger_camera : "Trigger Camera: This entity allows you to place moving cameras in your maps that take control away from the player for a time." +[ + wait(integer) : "Hold time" : 0 : "How many seconds camera controls player view. Player recovers his view and all camera effects are exterminated after that." + moveto(string) : "Path Corner" : : "The first path_corner to aim for. For a static camera leave this empty. Supports path_track as well" + spawnflags(flags) = + [ + 1 : "Start At Player" : 0 : "If enabled, The camera starts at players position, after that it will gradually switch to a path_corner route. If no path_corner is specified, the camera will move at the direction the player was looking at and won't stop until the 'Hold time' is finished." + 2 : "Follow Player" : 0 : "If enabled, Uses the player as the focal point." + 4 : "Freeze Player" : 0 : "If enabled, Stops the player from moving while camera is in action." + //8 : "???" : 0 : "Not sure if this exists." + 16 : "Instant move" : 0 : "If enabled, The camera will move from path to path without any movement smoothing." + //32 : "???" : 0 : "Not sure if this exists." + //64 : "???" : 0 : "Not sure if this exists." + ] + speed(string) : "Initial Speed" : "0" : "Starting speed of camera when camera is moving." + acceleration(string) : "Acceleration units/sec^2" : "500" : "Amount of units the camera accelerates each second (if it's moving). Doesn't work when 'Instant Move' is selected." + deceleration(string) : "Stop Deceleration units/sec^2" : "500" : "Amount of units the camera accelerates each second (if it's moving). Might not work correctly." + immediate(integer) : "Immediate" : : "Not sure if this is working correctly." + useoverlay(integer) : "Use Overlay" : 0 : "Use a special security-like overlay on the camera." +] + +@PointClass iconsprite("sprites/Hammer/TriggerCDAudio.spr") base(Targetname) = trigger_cdaudio : "Trigger CD Audio: When the player passes through this entity, the selected CD audio track will be played. Serves the same purpose as the radius-based target_cdaudio." +[ + trackname(string) : "Track Name" : "sound/music/TITLE" : "Input a track to play. Use this format: 'sound/music/xyz'." + loop(choices) : "Loop" : 0 : "Select if the track loops." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerChangeKeyValue.spr") base(Targetname, Global, Master, Targetx) = trigger_changekeyvalue : "Trigger Change Key Value: It's easier to add keys and values to change the targetted entity manually. Very similar to how you would with a MultiManager. Key is the keyvalue name and the value is what to change it too when it is trigger." [] + +@SolidClass = trigger_changelevel : "Change Level: This entity causes a level transition, where a new map is loaded and the player is placed in it." +[ + targetname(string) : "Name" : : "Property used to identify entities." + map(string) : "New map name" : : "The name of the new map to load. It's recommended to keep your map names short with no capital letters, spaces, or special characters. Instead of 'Chapter 3 Level 5', try c3l5 or ch3_lvl5." + landmark(string) : "Landmark name" : : "The name of the info_landmark that defines the same point in space in both maps. It's recommended to follow the same naming conventions for landmarks - no capital letters or spaces/special characters." + changetarget(target_destination) : "Change Target" : : "The entity name to be triggered in the next map. Works similar to a trigger_auto." + changedelay(string) : "Delay before change target" : "0" : "Self-explanatory." + spawnflags(flags) = + [ + 1 : "No Intermission" : 0 : "Not sure what this does. No explanation exist at the moment." + 2 : "USE Only" : 0 : "If enabled, Entity cannot be triggered by the player walking into it, but must be triggered by another entity." + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerChangeTarget.spr") base(Targetname, Targetx) = trigger_changetarget : "Trigger Change Target: This entity can change the 'Target' value of any entity." +[ + m_iszNewTarget(string) : "New Target" : : "Change the target entity's 'target' value to this." +] + + +@PointClass iconsprite("sprites/Hammer/TriggerCounter.spr") base(Trigger) = trigger_counter : "Trigger Counter: This entity counts the number of times it is triggered and activates its target when it reaches a specified number." +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 : "If enabled, the message key will be deactivated." + ] + count(integer) : "Count before activation" : 1 : "The number that the counter must reach before activating its targets." +] + +@PointClass iconsprite("sprites/Hammer/TriggerEndMission.spr") base(Targetname) = trigger_endmission : "Trigger End Mission: This entity functions as a self contained displacement-type level change. Very useful for changing locales for story purposes. Also includes env_fade functions." +[ + music(string) : "MP3" : "sound/music/MP3NAME" : "Input an MP3 track to play. Use this format: 'sound/music/xyz'." + nextmap(string) : "Next map" : : "The name of the new map to load." + fade_red(integer) : "Red" : : "The red colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_green(integer) : "Green" : : "The green colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_blue(integer) : "Blue" : : "The blue colour out of 'RGB'. Mix this with the other inputs to achieve a colour. Input a number between 0 - 255" + fade_alpha(integer) : "Screen Fade Opacity" : 255 : "The maximum alpha value (opacity) of the overlay. Scales from 0 (transparent) to 255 (opaque)." + duration(string) : "Duration (seconds)" : "2.0" : "Sets how long the overlay should take to fade into its full effect." + holdtime(string) : "Hold Fade (seconds)" : "0.0" : "Sets how long the overlay should stay on the screen at its full effect before turning itself off." +] + +@SolidClass base(Targetname) = trigger_endsection : "Trigger EndSection: This entity ends the current game and returns the player to the main menu." +[ + section(choices) : "Section" : : "Only one choice, Takes the player back to the menu." = + [ + "_oem_end_training" : "Return to main menu" : "Takes the player back to the main menu." + ] + spawnflags(flags) = + [ + 1 : "USE Only" : 0 : "If enabled, the entity cannot be triggered by the player walking into it, but must be triggered by another entity." + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerFreezePlayer.spr") base(Targetname) = trigger_freezeplayer : "Trigger Freeze Player: This entity freezes the player on activation. It has a toggle type behavior. To unfreeze the player, just retrigger the entity." [] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity: This entity sets the effect of gravity from low to normal. Level of gravity stays set after being put into effect - use two brushes, one with the new gravity, one with the old, to make sure the player returns to normal gravity in situations where that is necessary." +[ + gravity(string) : "Gravity" : "1.0" : "Any value between 0 and 1, 1 being normal gravity." +] + +@PointClass iconsprite("sprites/Hammer/TriggerHud.spr") base(Targetname) = trigger_hud : "Trigger HUD Switcher: This entity switches the players HUD on or off." +[ + display(choices) : "HUD Display" : 0 : "Choose if the HUD is visible or not. Options are:" = + [ + 0 : "Off" + 1 : "On" + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerIncognito.spr") base(Targetname) = trigger_incognito : "Incognito Mode: This entity makes the player 'undercover', meaning the enemies won't try and kill you. This was used at the start of the mission 'Turn of the Crank'." +[ + undercover(choices) : "Undercover?" : 0 : "Choose if the player is undercover or not. Options are:" = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@SolidClass base(Targetname, Master, Targetx) = trigger_hurt : "Trigger Hurt Player: This entity hurts anyone in its area." +[ + spawnflags(flags) = + [ + 1 : "Target Once" : 0 : "Normally the trigger_hurt will trigger its target every time it hurts something. If enabled, it will do this only once." + 2 : "Start Off" : 0 : "If enabled, the entity needs to be activated to work." + 8 : "No clients" : 0 : "If enabled, The entity won't affect players." + 16 : "Fire Client Only" : 0 : "If enabled, the entity will hurt anyone, but will only fire its target when it hurts a player." + 32 : "Touch Client Only" : 0 : "If enabled, only the player will be hurt." + ] + dmg(integer) : "Damage" : 10 : "The amount of damage to deal out." + damagetype(choices) : "Damage Type" : 0 : "Type of damage. Options are:" = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384 : "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerKillTarget.spr") base(Targetname, Target) = trigger_killtarget : "Trigger Kill Target: As the name implies, it kills its targetted entity." +[ + spawnflags(flags) = + [ + 1 : "Death Gib" : 0 : "If enabled, kills the targeted entity through exploding the body." + 2 : "Remove on use" : 0 : "If enabled, removes this entity from the game after activation." + ] +] + +@SolidClass base(Angles, Master) = trigger_monsterjump : "Trigger Monster Jump: Any monster that walks into the area covered by this entity will be made to jump in the specified direction, height and speed." +[ + speed(integer) : "Jump Speed" : 40 : "Speed of the jump in units per second." + height(integer) : "Jump Height" : 128 : "The height of the jump in units." +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger Activate Multiple: This entity triggers a specified target every time its area is entered by players, monsters or pushables." +[ + wait(integer) : "Delay before reset" : 0 : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + spawnflags(flags) = + [ + 1 : "Monsters Allowed" : 0 : "If enabled, allow monsters to activate this entity." + 2 : "No Clients" : 0 : "If enabled, players cannot activate this entity." + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerObjective.spr") base(Targetname) = trigger_objective : "Trigger Objective: Writes text to a 'Objective GUI' type area. Refer to the notes section of this FGD for a proper explaination." +[ + objective(string) : "Objective" : : "Name the objective that should be linked from 'czeror_english' or .SEQ. For example: '#OBJ01_AIDEV'." + notransition(integer) : "No Transition" : : "Not sure what this does." + state(choices) : "State" : 0 : "Changes what 'state' the objective starts in. Options are:" = + [ + 0 : "Linear" : "The Objective is not active on level load. Instead toggles the value to 'Active' on first trigger, and 'Completed' on second." + 1 : "Active" : "The objective is active on level load." + 2 : "Completed" : "The objective is completed." + ] +] + +@SolidClass base(Trigger) = trigger_once : "Trigger Activate Once: When this entity's area is entered by players, pushable objects or monsters, it triggers its target, but only once." +[ + style(integer) : "Style" : 0 : "Not sure what this does." + spawnflags(flags) = + [ + 1 : "Monsters Allowed" : 0 : "If enabled, allow monsters to activate this entity." + 2 : "No Clients" : 0 : "If enabled, players cannot activate this entity." + ] +] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger Push Player: When a player, monster or pushable object enters this entity's area, it is pushed in the specified direction and speed." +[ + spawnflags(flags) = + [ + 1 : "Once Only" : 0 : "If enabled, Makes the entity have activate only once." + 2 : "Start Off" : 0 : "If enabled, the entity needs to be triggered in order to start." + ] + speed(integer) : "Speed of push" : 40 : "The speed to push at in units per second." +] + +@PointClass iconsprite("sprites/Hammer/TriggerRelay.spr") base(Targetname, Targetx, Angles) = trigger_relay : "Trigger Relay: This entity acts as a relay between an event and its target. Its main advantage is that it can send a specific trigger state to its target (only turn it on, or only turn it off, as opposed to the toggling experienced with typical triggering)." +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 : "If enabled, this entity will be removed after triggering its targets." + ] + triggerstate(choices) : "Trigger State" : 0 : "ets the type of trigger this entity sends. Options are:" = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@PointClass iconsprite("sprites/Hammer/TriggerSequence.spr") base(Targetname) = trigger_sequence : "Trigger Sequence File: Useful entity for bypassing limits of the engine. Refer to the notes section of this FGD." +[ + sequence_file(string) : "Sequence File" : "SEQUENCE.seq" : "Usually, this is the 'MAPNAME.seq'. You have to create this file and store it in the '/sequences' for it to work." + sequence_id(string) : "Sequence Name" : "" : "Sequence name to use. Usable sequences are marked with % and a name after. If the sequence you want it %obj1, input 'obj1' into this field." + spawnflags(flags) = + [ + 1 : "Use Once?" : 0 : "If enabled, only triggers once and then gets removed." + ] +] + +@SolidClass base(Targetname) = trigger_stealth: "Trigger Stealth: When the player enters this entity, it hides the player in relation to how much 'cover' is specified." +[ + showicon(choices) : "Show hud icon" : 0 : "Choose if the stealth icon is displayed on the HUD in-game." = + [ + 0 : "No" + 1 : "Yes" + ] + cover(integer) : "Cover" : : "Define how much 'cover' the player receives when entering the entity. Input a value between 0 (Still visible) to 100 (Invisible)." +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger Teleport: This entity will teleport things in its area, used with info_teleport_destination." +[ + spawnflags(flags) = + [ + 1 : "Monsters" : 0 : "If enabled, allows monsters to activate this entity." + 2 : "No Clients" : 0 : "If enabled, Players cannot activate this entity." + ] +] + +@SolidClass base(Targetname, Target, Master) = trigger_usetool : "Trigger Tool Use Zone: This entity defines where and what tools should be used. Have this entity target something when a tool is used in the zone." +[ + target(target_destination) : "Target" : : "Have this entity target something when a tool is used in the zone." + rcbombtarget(target_destination) : "RC Bomb target" : : "Area where the RC bomb will be placed. Kind of like a guide." + toolname(choices) : "Tool Name" : 0 : "Tool to be used in this area. Options are:" = + [ + bomb_defuse : "Bomb defuse" + weapon_blowtorch : "Blowtorch" + weapon_briefcase : "Briefcase" + weapon_camera : "Camera" + weapon_fiberopticcamera : "Fiber-Optic Camera" + weapon_radio : "Radio" + weapon_radiocontrolledbomb : "RC Bomb" + ] + tooltarget(string) : "Tool Target" : : "Where the player needs to be looking to activate the tool, the best way to get this to work is to target an info_target thats in the general area that should be looked in." + //toolset(integer) : "Tool set" : : "" !!obsolete!! + spawnflags(flags) = + [ + 1 : "Remove on use" : 0 : "If enabled, removes this entity from the game after activation. Causes issues with things like the fiber-optic camera." + ] + bombdefusetime(integer) : "Bomb defuse time" : : "Bomb defusal time, in seconds." +] +@SolidClass base(Targetname) = trigger_transition : "Trigger Select Transition Area: This entity creates an area in which the player must be for an associated trigger_changelevel to work. The trigger_transition targetname must share the same name as the info_landmark, otherwise it won't work." [] + +//////////////////////////////////////////////////////////////////////////////// +// WEAPON ENTITIES +//////////////////////////////////////////////////////////////////////////////// + +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_p228.mdl") = weapon_p228 : "P-228: Takes 357sig rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_glock18.mdl") = weapon_glock18 : "Glock 18: Takes 9MM rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_ak47.mdl") = weapon_ak47 : "AK47: Takes 762 Nato rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_awp.mdl") = weapon_awp : "AWP/AWM: Takes 338 Magnum rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_fiveseven.mdl") = weapon_fiveseven : "Fiveseven: Takes 57MM rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_m3.mdl") = weapon_m3 :"M3: Takes Buckshot shells."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_mac10.mdl") = weapon_mac10 : "MAC10: Takes 45ACP rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_p90.mdl") = weapon_p90 : "P90: Takes 57MM rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_tmp.mdl") = weapon_tmp : "TMP: Takes 9MM rounds."[] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_aug.mdl") = weapon_aug : "AUG: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_btorch.mdl") = weapon_blowtorch : "Blow Torch: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_briefcase.mdl") = weapon_briefcase : "Briefcase: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_camera.mdl") = weapon_camera : "Camera: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_deagle.mdl") = weapon_deagle : "Deagle pistol: Takes 50AE rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_elite.mdl") = weapon_elite : "Elite pistol: Takes 9MM rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_focamera.mdl") = weapon_fiberopticcamera : "Fiber-Optic Camera: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_flashbang.mdl") = weapon_flashbang : "Flashbang: A flash grenade. Good for blinding enemies for a short time." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_g3sg1.mdl") = weapon_g3sg1 : "G3SG1: Takes 762 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_hegrenade.mdl") = weapon_hegrenade : "HE Grenade: A High-Explosive grenade: Good for clearing out rooms of enemies." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_knife.mdl") = weapon_knife : "Knife: A sharp, pointy stick. Nice to have as a backup." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_law-closed.mdl") = weapon_laws : "M72 LAW: Light Anti-Tank Weapon. One time use weapon." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_mp5.mdl") = weapon_mp5navy : "MP5: Takes 9MM rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_m60.mdl") = weapon_m60 : "M60: Takes 556 Nato Boxes." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_m4a1.mdl") = weapon_m4a1 : "M4A1 Colt: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_radio.mdl") = weapon_radio : "Radio: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_rcontrolbomb.mdl") = weapon_radiocontrolledbomb : "RC Bomb: A tool. Used with a trigger_usetool brush." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_scout.mdl") = weapon_scout : "Scout: Takes 762 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_sg552.mdl") = weapon_sg552 : "G552: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_smokegrenade.mdl") = weapon_smokegrenade : "Smoke Grenade: Makes smoke. Handy for distracting an enemy." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_ump45.mdl") = weapon_ump45 : "UMP45: Takes 45ACP rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_usp.mdl") = weapon_usp : "USP: Takes 45ACP rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_xm1014.mdl") = weapon_xm1014 : "XM1014: Takes Buckshot shells." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_shield.mdl") = weapon_shieldgun : "Shield: Comes with a gun too. Handy when the enemy has overwhelming firepower." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_sg550.mdl") = weapon_sg550 : "G550: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_galil.mdl") = weapon_galil : "Galil: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_famas.mdl") = weapon_famas : "FAMAS: Takes 556 Nato rounds." [] +@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_m249.mdl") = weapon_m249 : "M249: Takes 556 Nato Boxes." [] + +//////////////////////////////////////////////////////////////////////////////// +// CUT/BROKEN SECTION (Needs Valve to release CZDS SDK) +//////////////////////////////////////////////////////////////////////////////// + +//CUT GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_gasgrenade.mdl") = weapon_gasgrenade : "Gas Grenade" [] +//CUT GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_syringegun.mdl") = weapon_syringegun : "Syringe Gun" [] +//CUT GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_holster.mdl") = weapon_holster : "Holster" [] +//CUT GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_zipline.mdl") = weapon_zipline : "Zipline" [] +//BROKEN GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields, C4Base, ModelFile) studio("models/w_c4.mdl") = weapon_c4 : "C4 Plastique Bomb" [] +//CUT GEAR @PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_medkit.mdl") = weapon_medkit : "medkit" [] +//CUT AMMO @PointClass base(Ammo) studio("models/w_weaponbox.mdl") = ammo_bomb : "bomb ammo?"[] +//CUT AMMO @PointClass base(Ammo) studio("models/w_weaponbox.mdl") = ammo_66mm : "66mm?"[] +//CUT AMMO @PointClass base(Ammo) studio("models/w_weaponbox.mdl") = ammo_syringe : "syringe?"[] + +//////////////////////////////////////////////////////////////////////////////// +// JANKY SECTION (The Jank area) +//////////////////////////////////////////////////////////////////////////////// + +//This most likely was the basis for the snow, rain and updated .MAT system. It's exposed and can be used in maps but it's super janky and not much is known about it. + +//@PointClass iconsprite("sprites/Hammer/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) studio("models/w_holster.mdl") = weapon_holster : "Holster" : "What does this do?" [] + +//@PointClass iconsprite("sprites/Hammer/EnvParticleEmitter.spr") base(Targetname, Angles, RenderFields) = env_particle : "Particle Emitter: Not much information on this entity, the current settings act like smoke. It emits sprites and you can adjust different properties to get it to function with gravity and such. Super janky and is in the JANKY SECTION of this FGD." +//[ +// rendermode(choices) : "Render Mode" : 4 : "Controls the type of rendering that is used for an object. Options are:" = +// [ +// 0 : "Normal" : "Default render mode." +// 1 : "Color" : "Replaces the texture with the choosen colour in 'FX Colour'." +// 2 : "Texture" : "Applies transparency to a brush. The transparency is controlled by the FX Amount." +// 3 : "Glow" : "Removes the black background from sprites. Colour can be applied and resizes as the player approaches. Not used on solid entities." +// 4 : "Solid" : "Removes the blue colour from textures tagged with '{'." +// 5 : "Additive" : "Adds the texture colours to the background. Darker colours become less visible - black is removed. Glows in the dark." +// ] +// renderamt(integer) : "FX Amount (1 - 255)" : 150 : "Input how visible the object is. (Depending on the render mode, this could change the outcome of visibility.)" +// rendercolor(color255) : "FX Color (R G B)" : "65 65 65" : "Input 3 values (R G B) that determine a colour." +// vis_point(string) : "Vis Point" : "player" : "Not sure what this does, takes an info_target(resulting in a directed particle stream)." +// target_direction(string) : "Target Direction" : "none" : "Not sure what this does" +// scale_speed(integer) : "Scale Speed" : 10 : "The speed that the particle scales at." +// spawnflags(flags) = +// [ +// 2 : "???" : 0 : "Not sure what this does." +// 16 : "???" : 0 : "Not sure what this does." +// 32 : "Toggleable?" : 0 : "If enabled, spawns the particle system at the start of the map." +// 64 : "Wavy" : 0 : "If enabled, makes the particles move in a wave pattern." +// ] +// fade_speed(integer) : "Fade Speed" : 1 : "Speed that the particles dissappear at." +// frequency(integer) : "Frequency" : 3 : "Frequency that the particles spawn in at." +// particle_texture(sprite) : "Particle Sprite" : sprites/black_smoke1.spr : "Sprite to use for the emitter." +// particle_avelocity(string) : "Angular Velocity" : "0 0 0" : "Not sure what this does." +// particle_life(integer) : "Particle Life" : 50 : "How long the particles will stay around after spawning." +// particle_scale(integer) : "Particle Scale" : 450 : "The size of the particle." +// particle_gravity(integer) : "Particle Gravity 1.0 - 0.0" : 0 : "How much gravity affects the particle." +// particle_count(integer) : "Particle Count" : 2 : "How many particles will spawn." +// particle_noise(integer) : "Particle Noise" : 20 : "How much randomness to add to the emitter" +// particle_speed(integer) : "Particle Speed" : 14 : "How fast the particle travels." +// particle_brightness(integer) : "Particle Brightness" : 200 : "The brightness of the particle. Make sure this is set so the particle does not render completely black." +// splash_particles(integer) : "Splash particles" : : "Not sure what this does." +// rnd_count(integer) : "Random particle amount" : : "Varies up the timeing of the particles." +// target_origin(string) : "Target Origin" : "none" : "Not sure what this does." +// attach_point(string) : "Attach Point" : "none" : "Used to 'attach' the particle to things. Can be attached to the player using 'player'." +// particle_type(choices): "Particle type" : : "Type of particle." = +// [ +// 0 : "Sprite" +// 1 : "Plane" +// 2 : "sphere" +// 3 : "cylinder" +// 4 : "disk" +// 5 : "Cone" +// 6 : "Water drops" +// ] +//] + +//Doesnt seem to be working. Looks for env_snow and env_rain. +//@PointClass base(Targetname, Targetx) size(-16 -16 -16, 16 16 16) = env_randomweather : "Env_randomweather: Seems to not work. Is in the JANKY SECTION of theis FGD." [] + +//////////////////////////////////////////////////////////////////////////////// +// CUSTOM MONSTER SECTION +//////////////////////////////////////////////////////////////////////////////// + +//this is an example of custom monsters being written in, a bit wonky, but it works well. this is a grenade launcher/dropper fella. +//unfortunatly, he doesnt want to protect his life. so sometimes he will kill himself trying to kill you. +//Im not sure what else can be made through event editing in anims, wep key and behavior key. skills.cfg sgrenade needs to be pretty high to work. around 1000 + +@PointClass studio() size(-16 -16 0, 16 16 72) color(0 0 255) base(Angles) = monster_terrorist_arctic : "Custom monster: Unfortunatly, this is implemented with some whacky key/value combination and a custom model with animation events changed, so its not quite normal. But can serve as an example." +[ + //behave to 7 + body(integer) : "Body" : 0 : "Bodygroup" + skin(integer) : "Skin" : 0 : "Skin group" + model(studio) : "Model" : "models/terrormodded.mdl" : "Model" + behavior(integer) : "Behavior" : 5 : "Behavior" + weapons(integer) : "Weapons" : 2 : "Weapon characteristics?. Put 4 for a rpg 'doesnt miss' man" + invulnerable(integer) : "Invulnerable" : 0 : "no damage" +] +@PointClass studio("models/leet.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_desert [] +@PointClass studio("models/terror.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_russian [] +@PointClass studio("models/militia.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_urban [] +@PointClass studio("models/asian.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_asian [] +@PointClass studio("models/guerilla.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster, Angles, Classtype, ModelFile) = monster_terrorist_jungle [] + + + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero.fgd new file mode 100644 index 0000000..ea3a928 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/condition-zero.fgd @@ -0,0 +1,3182 @@ +// +//"Counterstrike-condition zero" +//Version 1.0 +//For "Valve hammer editor 3.5" and "Worldcraft 4.4" +// +//by Jack Voznyak "C*O*L*T" +// +//my e-mail: DZHECK88@yandex.ru +//With this FGD you can create a singleplayer mod good luck. + +// +//Worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + maptier(integer):"Maptier(???)" + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 0 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "8192" + chaptertitle(string) : "Chapter Title Message" + lightmultiplier(integer):"Light multiplier" + radfile(string):"Radfile (unused/unneeded?)" + mapversion(integer):"Map Version":220 + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + minTime(integer):"Minimum time delay(for wind?)" + minWindX(integer):"Maximum x axis wind" + minWindY(integer):"Maximum Y axis wind" + maxTime(integer):"Maximum time delay(for wind?)" + maxWindX(integer):"Maximum x axis wind" + maxWindY(integer):"Maximum Y axis wind" +] + +@BaseClass studio() = FuncAddition +[ + model(studio) : "Model (if not brush)" + body(integer) : "Body (if not brush)" + origin(string):"Origin (XYZ) (if not brush)" + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal" + -3: "Grouped" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass base(FuncAddition) = Func2 +[ + skin(integer) : "Skin (if not brush)" +] + +@BaseClass = SniperRifle[] + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass studio() = ModelFile +[ + model(studio) : "Model" + body(integer) : "Body" : 0 + skin(integer) : "Skin" : 0 +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 = + [ + 0: "Normal" + 1: "Embedded Fix" + 2: "Opaque (Blocks Light)" + 3: "Opaque + Embedded Fix" + 6: "Opaque + Concave Fix" + ] + zhlt_customshadow(integer) : "Shadow Transparency" : 0 + light_origin(string) : "Light Origin (Zhlt 2.2+)" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + lightmultiplier(integer):"Light multiplier" +] + +@BaseClass = Master +[ + master(string) : "Master" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = Netname +[ + netname(target_destination) : "Ent-Specific Target" +] + +@BaseClass = Classtype +[ + //For example: + // TS1 + // TS2 + // CTS1 + // CTS2 + classtype(string) : "Team" +] + +@BaseClass = Angles +[ + Angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass base(Target, Targetname, RenderFields,Angles) color(0 200 200) = Monster +[ + TriggerTarget(target_destination) : "TriggerTarget" TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] + fadespeed(integer) : "Fade Speed" + deathfadedelay(integer) : "Death Fade Delay" + deathfade(integer) : "Death Fade" + deathangle(integer):"Death Angle" + deathanim(string):"Death animation name" + deadanim(string):"Dead animation name" + language(string) : "Language (AM, SP, JA)" + cantmove(choices):"Movement":0= + [ + 0:"Normal" + 1:"1 (Sniper)" + 2:"2 (Turret)" + ] + weaponaccuracy(integer):"Weapon accuracy" + healthmult(integer):"Health Mult(iplier?)" + netname(target_destination):"Netname" + invulnerable(integer):"Invulnerability" + idleanim(string):"Idle anim name" + cower(integer):"Cower" + head(integer):"Head" + provoke(integer):"Provoke" + //_is_null + //null_null_null_null + //none + usetarget(choices) : "Use Target" : "none" = + [ + "none":"none" + "null":"null" + "null_null_null_null":"null_null_null_null" + "_is_null":"_is_null" + "nullnullnull":"nullnullnull" + ] + alertable(choices):"Alertable":0= + [ + 0:"No" + 1:"Yes" + ] + weapons(integer):"Weapons(numbers determined how?)" + behavior(integer):"Behavior(for what?)" + count(integer):"Count" + lightmultiplier(integer):"Light multiplier" + sequencename(string):"Sequence name" + nopvs(choices):"Include in Potentially Visible Set(PVS)":0= + [ + 0:"Yes" + 1:"No" + ] + dontfall(integer):"Don't Fall (to floor?)" + m_iszEntity(string):"Target Monster" + dropchance(string):"Chance of drop":"" + dropitem(choices):"Drop":0= + [ + "weapon_awp":"weapon_awp" + "weapon_c4":"weapon_c4" + "weapon_usp":"weapon_usp" + "ammo_338magnum":"ammo_338magnum" + "ammo_357sig":"ammo_357sig" + "ammo_45acp":"ammo_45acp" + "ammo_45cp":"ammo_45cp" + "ammo_50ae":"ammo_50ae" + "ammo_556nato":"ammo_556nato" + "ammo_556natobox":"ammo_556natobox" + "ammo_57mm":"ammo_57mm" + "ammo_762nato":"ammo_762nato" + "ammo_9mm":"ammo_9mm" + "ammo_buckshot":"ammo_buckshot" + "ammo_generic":"ammo_generic" + ] +] + +@BaseClass base(Targetname) = Breakable +[ + gibentityvelocity(integer):"Gib velocity" + gibdirection(string):"Gib Direction" + target(target_destination) : "Target on break" + delay(string) : "Delay before fire" + health(integer) : "Strength" + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + grenadetouch(integer):"Grenadetouch":0 + //this is what weapon or item can damage this breakable + //...for example... + //if you put grenade in this area, it will only be broken by a grenade attack + onlydamagedby(choices):"Only damaged by":""= + [ + "":"Nothing" + "weapon_blowtorch":"weapon_blowtorch" + "weapon_knife":"weapon_knife" + "weapon_hegrenade":"weapon_hegrenade" + "weapon_remotecontrolledbomb":"weapon_remotecontrolledbomb" + "weapon_laws":"weapon_laws" + ] + skin(choices) : "Contents" : 0 = + [ + 0:"Normal" + -1: "Empty" + -2: "Solid" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "Ladder" + ] +] + +@BaseClass base(RenderFields, Angles) = Ammo +[ + numclip(integer):"Number of clips" +] + +@BaseClass base(Targetname, Global, Target, RenderFields,Angles) = BaseTank +[ + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, Targetx, Global, Master, RenderFields, Angles,ZHLT) = Door +[ + speed(integer) : "Speed" : 100 + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 0 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Not Solid" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" + skin(choices) : "Contents" : 0 = + [ + 0:"Normal" + -1: "Empty" + -2: "Solid" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "Ladder" + ] + explodemagnitude(integer):"Explosion Magnitude" +] + +@BaseClass size(-16 -16 -16, 16 16 16) base(Targetname, Angles) = gibshooterbase +[ + m_iGibs(integer) : "Number of Gibs" : 0 + delay(string) : "Delay between shots" : "0" + m_flVelocity(integer) : "Gib Velocity" : 0 + m_flVariance(string) : "Course Variance" : "0" + m_flGibLife(string) : "Gib Life" : "4" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 255 200" + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal" + -3: "Grouped" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + pattern(string) : "Custom Appearance" + _fade(integer) : "Fade (ZHLT Only)" : 1 + _color(string) : "Color scales(???) (0-1)":"1.000000 1.000000 1.000000" + _falloff(Choices) : "Falloff (ZHLT Only)" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] + dot_product_weight(integer):"Dot product weight":0 + spherical_ambient(integer):"Spherical Ambient":0 + angle_hotspot(integer):"Angle Hotspot":0 + falloff_curvature(integer):"Falloff curvature":0 + angle_penumbra(integer):"Angle Pnumbra":0 + falloff_start_dist(integer):"Faloff Start Distance":0 + falloff_end_dist(integer):"Faloff End Distance":0 +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(integer) : "Sound Volume 0.0 - 1.0" : 0 +] + +@BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles) = PlayerClass [] + +@BaseClass base(Classtype, Targetname, Global, RenderFields,PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Targetname, Master,Target) = Trigger +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + style(integer) : "Style" : 32 + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + message(string) : "Message (set sound too)" + spawnflags(flags) = + [ + 4: "Pushables": 0 + ] +] + +// +//Aiscripted entities +// + +@PointClass base(Targetname, Targetx,Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +// +//Ambient entities +// + +@PointClass base(Targetname, Angles) iconsprite("sprites/CZ/AmbientGeneric.spr") = ambient_generic : "Universal Ambient" +[ + message(sound) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Not Toggled":0 + ] +] + +// +//Ammo entities +// + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_338magnum : ".338 Lapua Magnum Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_357sig : ".357 SIG Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_45acp : ".45 ACP Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_45cp : ".45 CP Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_50ae : ".50 Action Express Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_556nato : "5.56mm NATO Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_556natobox : "5.56mm NATO Box Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_57mm : "5.7mm Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_762nato : "7.62mm NATO Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_9mm : "9mm Parabellum Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_buckshot : "12 Gauge Ammo"[] + +@PointClass base(Ammo) iconsprite("sprites/CZ/Ammo.spr") = ammo_generic : "Generic Ammo"[] + +// +//Button entities +// + +@SolidClass base(Master, Target, Angles, RenderFields,ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] +] + +// +//Cycler entities +// + +@PointClass base(Targetname, Angles,RenderFields) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + health(integer) : "Health" : 0 + framerate(integer) : "Amount of original fps" : 1 + sequence(integer) : "Animation #" : 0 +] + +@PointClass base(Targetname, Angles,RenderFields) studio() = cycler_sprite : "Sprite Cycler" +[ + model(studio) : "Model" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + health(integer) : "Health" : 0 + framerate(integer) : "Amount of original fps" : 1 + sequence(integer) : "Animation #" : 0 + controller(string): "Controllers 0-255" : "0 0 0 0" +] + +@PointClass base(TargetName) = cycler_weapon : "cycler_weapon" +[ + model(studio) : "Model" +] + +@PointClass sprite() base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 2 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(string) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + framerate(integer) : "Framerate" : 10 + model(sprite) : "Sprite Name" : "sprites/dot.spr" + scale(integer) : "Scale" : 1 + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +// +//Environmental effects +// + +@PointClass iconsprite("sprites/CZ/EnvBeam.spr") base(Targetname, BeamStartEnd,RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "0" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 0 + framerate(string) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "0" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass iconsprite("sprites/CZ/EnvBeverage.spr") base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass iconsprite("sprites/CZ/EnvBlood.spr") base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CZ/EnvSpark.spr") = env_debris : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/EnvExplosion.spr") = env_explosion : "Explosion" +[ + magnitude(Integer) : "Magnitude(magnitude)" : 0 + iMagnitude(Integer) : "Magnitude(iMagnitude)" : 0 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] + firesprite(sprite):"Fire sprite" + spritescale(integer):"Sprite scale" + scale(integer):"Scale" + skin(integer):"Skin" +] + +@PointClass iconsprite("sprites/CZ/EnvFade.spr") base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) = env_missionfailure : "Failure Management" +[ + music(string):"Music" + rendercolor(color255):"Render color(huh???)":"0 0 0" + renderamt(integer):"Render amount(huh???)" + fade_alpha(integer):"Screen Fade Opacity" + loadtime(integer):"Load time" + holdtime(integer):"Hold time" + duration(integer):"Duration" +] + +@PointClass iconsprite("sprites/CZ/EnvFog.spr") base(Targetname) = env_fog : "Global Fog Properties" +[ + //yes env fog does work in cz! + //w00t + rendercolor(color255) : "Fog Color (RGB)" : "0 0 0" + density(integer):"Density" +] + +@PointClass iconsprite("sprites/CZ/EnvFunnel.spr") base(Targetname) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass iconsprite("sprites/CZ/EnvGlobal.spr") base(Targetname) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields,Angles) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "model" : "sprites/glow01.spr" + scale(integer) : "Sprite Scale" : 1 +] + +@PointClass iconsprite("sprites/CZ/EnvBeam.spr") base(Targetname, RenderFxChoices,Angles) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 0 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass iconsprite("sprites/CZ/EnvLiveAmmoShooter.spr") base(Targetname, Target,Angles) = env_liveammoshooter : "Live ammo shooter" +[ + type(choices):"Ammo Type":""= + [ + "hegrenade":"HE Grenade" + "smokegrenade":"Smoke Grenade" + "flashbang":"Flashbang"//assumed + "lawrocket":"Law Rocket" + + ] + m_flGibLife(integer):"Gib life":0 + shootsounds(choices):"Shoot Sounds":0= + [ + -1:"None" + 0:"Default" + 1:"Any choices above?" + ] + quiet(choices):"Quiet":0= + [ + 0:"No" + 1:"Yes" + ] + velmod(integer):"Velocity mod(???)":1 + m_flGibLife(integer):"Gib (Ammo?) Life" +] + +@PointClass iconsprite("sprites/CZ/EnvMessage.spr") base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Default" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass iconsprite("sprites/CZ/EnvParticleEmitter.spr") base(Targetname, Angles,RenderFields) = env_particle_emitter : "Particle Emitter" +[ + vis_point(string):"Vis Point":"none" + target_direction(string):"Target Direction":"none" + scale_speed(integer):"Scale Speed":0 + fade_speed(integer):"Fade Speed":0 + frequency(integer):"Frequency":0 + particle_texture(sprite):"Particle Sprite" + particle_avelocity(string):"Angular Velocity":"0 0 0" + particle_life(integer):"Particle Life":0 + particle_scale(integer):"Particle Scale":0 + particle_gravity(integer):"Particle Gravity 1.0 - 0.0":0 + particle_count(integer):"Particle Count":0 + particle_noise(integer):"Particle Noise":0 + particle_speed(integer):"Particle Speed":0 + target_origin(string):"Target Origin":"none" +] + +@PointClass base(Targetname,RenderFields) = env_rain : "Rain Entity"[] + +@PointClass iconsprite("sprites/CZ/EnvRender.spr") base(Targetname, Target, RenderFields, Targetx,Angles) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] + removeonuse(choices):"Remove on use":0 = + [ + 0:"No" + 1:"Yes" + ] + skin(integer):"Skin" + head(integer):"Head" +] + +@PointClass iconsprite("sprites/CZ/EnvShake.spr") base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(integer) : "0.1 = jerk, 255.0 = rumble" : 0 +] + +@PointClass iconsprite("sprites/CZ/EnvShooter.spr") base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/CZ/EnvSmoker.spr") base(Targetname) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_smoker : "Smoke" +[ + health(integer) : "Strength" : 1 + scale(integer) : "Smoke Scale" : 1 +] + +@PointClass base(Targetname) = env_snow : "snow Properties" +[] + +@PointClass iconsprite("sprites/CZ/EnvSound.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CZ/EnvSpark.spr") = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, Angles,RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(integer) : "Framerate" + model(sprite) : "Sprite Name" + scale(integer) : "Scale" + TriggerTarget(target_destination) : "TriggerTarget" TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] + +] + +// +//Function entities +// + +@SolidClass = func_bomb_target : "Bomb target zone" +[ + target(target_destination) : "Target (when bomb blows)" +] + +@SolidClass base(Breakable, RenderFields, ZHLT,Func2) = func_breakable : "Breakable" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, Netname,Func2) = func_button : "Button" +[ + // Path Target overrides Targetted Object + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 4: "" : 0 + 8: "" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT,Func2) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT,Func2) = func_door : "Basic door" [] + +@SolidClass base(func_door, Func2) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass = func_escapezone : "Terrorist escape zone" [] + +@SolidClass base(RenderFields, ZHLT,Func2) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass = func_grencatch : "Grenade Check" +[ + triggerongrenade(string) : "Trigger When Grenade Hits" + grenadetype(choices): "grenade type" : 0 = + [ + 0: "flash" + 1: "smoke" + 2:"he(supported with cz?)" + ] + disableongrenade(string) : "Disable On Grenade" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT,Func2) = func_guntarget : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT,Func2) = func_healthcharger: "Wall health recharger" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_hostage_rescue : "Hostage rescue zone" [] + +@SolidClass base(Targetname, RenderFields, ZHLT, Angles,FuncAddition) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : 0 = + [ + 0:"Illusionary" + -1: "Empty" + -2: "Solid" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "Ladder" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Target) = func_model_brush : "Model brush"[] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT,FuncAddition) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Not Solid" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + skin(choices) : "Contents" : -1 = + [ + 0: "default" + -1: "Empty" + -3: "water" + -4: "slime: touch drown" + -5: "lava: touch fire death" + -7: "Volumetric Light" + -16: "make ladder" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT,Func2) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, PlatSounds,Func2) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT,Func2) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + 256: "Instant Crowbar" : 1 + ] + friction(integer) : "Friction (0-400)" : 50 + bouyancy(integer) : "Bouyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT,Func2) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, Master, Target, Angles, RenderFields, ZHLT,Func2) = func_rot_button : "RotatingButton" +[ + delay(string) : "Delay before trigger" : "0" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 0 = + [ + -1: "Stays pressed" + 0:"..." + ] + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT,Func2) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT,Func2) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] + bulet(integer):"Bulet(???)" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZHLT,Func2) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT,Func2) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT,Func2) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT,Func2) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Not Solid" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass studio() size(-16 -16 -16, 16 16 16) base(Targetname, Global, RenderFields, ZHLT,FuncAddition) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular velocity (Y Z X)" : "0 0 0" + dmg(integer) : "Damage on crush" : 0 + skin(choices) : "Contents (if not solid)" : 0 = + [ + 0: "default" + -1: "Empty" + -3: "water, swimable train" + -4: "odd slime: touch drowning death" + -5: "odd lava: touch fire death" + -7: "Volumetric Light" + -16: "make odd ladder" + ] + volume(integer) : "Sound Volume 0.0 - 1.0" : 0 + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Angles, RenderFields, ZHLT,Func2) = func_vehicle : "Drivable Vehicles" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Not Solid" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Vehicle 1" + 2: "Vehicle 2" + 3: "Vehicle 3" + 4: "Vehicle 4" + 5: "Vehicle 6" + 6: "Vehicle 7" + ] + length(integer) : "Length of the vehicle" : 256 + width(integer) : "Width of the vehicle" : 128 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_vehiclecontrols : "Vehicle Controls" +[ + target(target_destination) : "Vehicle Name" +] + +@SolidClass = func_vip_safetyzone : "VIP safety zone" [] + +@SolidClass base(Door, FuncAddition) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + 0:"Default" + -1: "Empty" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "ladder (only with non ! texture)" + ] + WaveHeight(integer) : "Wave Height" +] + +@SolidClass base(Targetname, Global, RenderFields, Breakable, func_water,FuncAddition) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal" + -3: "Grouped" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + skin(choices) : "Contents" : 0 = + [ + 0:"Normal" + -1: "Empty" + -2: "Solid" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "Ladder" + ] + health(integer):"Health" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +// +//Game player entities +// + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CZ/GameCounter.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) iconsprite("sprites/CZ/GameCounterSet.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/GamePlayerEquip.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + playerhealth(integer):"# HP" + nightvision(choices) : "Give Nightvision" : 0 = + [ + 0: "No" + 1: "Yes" + ] + weapon_briefcase(choices) : "Give Nightvision" : 0 = + [ + 0: "No" + 1: "Yes" + ] + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + weapon_knife (choices) : "Give Knife" : 0 = + [ + 0: "No" + 1: "Yes" + ] + weapon_radio (choices) :"Give Radio" : 0 = + [ + 0: "No" + 1: "Yes" + ] + weapon_usp (choices) : "Give USP45 (45acp Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + ammo_generic(integer):"Give generic ammo #" + weapon_radiocontrolledbomb (choices) : "Give RC Bomb":0= + [ + 0:"No" + 1:"Yes" + ] + weapon_blowtorch (choices) : "Give Blow Torch":0= + [ + 0:"No" + 1:"Yes" + ] + weapon_fiberopticcamera (choices) : "Give FO Camera":0= + [ + 0:"No" + 1:"Yes" + ] + weapon_camera (choices) : "Give Camera":0= + [ + 0:"No" + 1:"Yes" + ] + weapon_glock18 (choices) : "Give Glock 18 (9mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_deagle (choices) : "Give Desert Eagle (50ae Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_p228 (choices) : "Give P-228 (357sig Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_elite (choices) : "Give Beretta Elites (9mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_fiveseven (choices) : "Give Five-Seven (57mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_m3 (choices) : "Give Benelli M3 (12 Gauge)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_xm1014 (choices) : "Give Benelli XM1014 (12 Gauge)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_mp5navy (choices) : "Give MP5/Navy (9mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_tmp (choices) : "Give TMP (9mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_p90 (choices) : "Give FN P90 (57mm Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_mac10 (choices) : "Give Mac-10 (45acp Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_ump45 (choices) : "Give UMP 45 (45acp Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_ak47 (choices) : "Give AK-47 (762nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_sg552 (choices) : "Give SG552 (556nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_m4a1 (choices) : "Give M4A1 (556nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_aug (choices) : "Give Aug (556nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_scout (choices) : "Give Scout (762nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_awp (choices) : "Give AWP (338magnum Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_g3sg1 (choices) : "Give G3/SG-1 (762nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_sg550 (choices) : "Give SG550 (556nato Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_m249 (choices) : "Give M249 (556natobox Calibre)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_laws (choices) : "Give Laws" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + item_kevlar (choices) : "Give Kevlar Vest" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + item_assaultsuit (choices) : "Give Kevlar Vest+Ballistic Helmet" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_flashbang (choices) : "Give Flash Bang" : 0 = + [ + 0: "No" + 1: "1" + 2: "2" + ] + + weapon_hegrenade (choices) : "Give High-Explosive Grenade" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_smokegrenade (choices) : "Give Smoke Grenade" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + item_thighpack (choices) : "Give Defuse Kit" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + weapon_c4 (choices) : "Give C4 Plastique Bomb" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + ammo_9mm (choices) : "Give 9mm Parabellum Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips (Fill Glock 18)" + 4: "4 Clips (Fill Elites, MP5 & TMP)" + ] + + ammo_45acp (choices) : "Give .45 ACP Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (12 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill USP45)" + 5: "5 Clips" + 6: "6 Clips" + 7: "7 Clips" + 8: "8 Clips (Fill Mac-10)" + 9: "9 Clips (Fill UMP 45)" + ] + + ammo_50ae (choices) : "Give .50 Action Express Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (7 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips" + 5: "5 Clips (Fill Desert Eagle)" + ] + + ammo_57mm (choices) : "Give 5.7mm Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (50 Bullets Per Clip)" + 2: "2 Clips (Fill Five-Seven & P90)" + ] + + ammo_357sig (choices) : "Give .357 SIG Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (13 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill P-228)" + ] + + ammo_buckshot (choices) : "Give 12 Gauge Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (8 Shells Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill Benelli M3, XM1014)" + ] + + ammo_762nato (choices) : "Give 7.62mm NATO Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips (Fill Scout & G3/S-G1)" + 3: "3 Clips (Fill AK-47)" + ] + + ammo_556nato (choices) : "Give 5.56mm NATO Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Fill SG552 M4A1 Aug SG550" + ] + + ammo_556natobox (choices) : "Give 5.56mm NATO Box Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips" + 5: "5 Clips" + 6: "6 Clips" + 7: "7 Clips (Fill FN M249 Para)" + + ] + + ammo_338magnum (choices) : "Give .338 Lapua Magnum Ammo" : 0 = + [ + 0: "No" + 1: "1 Clip (10 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips (Fill AWP)" + ] + + item_healthkit (choices) : "Give Health Kit" : 0 = + [ + 0: "No" + 1: "1 Healthkit = 15 Health Points" + 2: "2 Healthkits = 30 Health Points" + 3: "3 Healthkits = 45 Health Points" + 4: "4 Healthkits = 60 Health Points" + 5: "5 Healthkits = 75 Health Points" + 6: "6 Healthkits = 90 Health Points" + 7: "7 Healthkits = 100 Health Points" + ] + + item_battery (choices) : "Give HEV Battery" : 0 = + [ + 0: "No" + 1: "1 Battery = 15 Kevlar Points" + 2: "2 Batteries = 30 Kevlar Points" + 3: "3 Batteries = 45 Kevlar Points" + 4: "4 Batteries = 60 Kevlar Points" + 5: "5 Batteries = 75 Kevlar Points" + 6: "6 Batteries = 90 Kevlar Points" + 7: "7 Batteries = 100 Kevlar Points" + ] + item_longjump (choices) : "Give Long Jump Module" : 0 = + [ + 0: "No" + 1: "Yes (An Unrealistic Item)" + ] + item_armor(choices) : "Give Armor" : 0 = + [ + 0: "No" + 1: "Yes" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/GamePlayerHurt.spr") = game_player_hurt : "Hurts player who fires" +[ + master(string) : "Master" + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CZ/GameTeamMaster.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CZ/GameTeamSet.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) iconsprite("sprites/CZ/GameText.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(integer) : "X (0 - 1.0 = left to right) (-1 centers)" : -1 + y(integer) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : -1 + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(integer) : "Fade in Time (or character scan time)" : 1.5 + fadeout(integer) : "Fade Out Time" : 0.5 + holdtime(integer) : "Hold Time" : 1.2 + fxtime(integer) : "Scan time (scan effect only)" : 0.25 + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +// +//Info entities +// + +@PointClass iconsprite("sprites/CZ/HostageRescue.spr") = info_hostage_rescue : "Hostage rescue point" [] + +@PointClass base(Targetname, Angles) = info_landmark : "Transition Landmark" [] + +@PointClass base(Targetname) iconsprite("sprites/CZ/EnvTarget.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(Angles) size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" +[ + target(target_destination) : "Targetted object" +] + +@PointClass base(Targetname, Target) iconsprite("sprites/CZ/Camera.spr") = info_camera : "info_camera (camera target)" [] + +@PointClass size(-8 -8 0, 8 8 32) = info_compile_parameters : "Compile Options" +[ + hlcsg(choices) : "HLCSG" : 1 = + [ + 1 : "Normal" + 2 : "Onlyents" + 0 : "Off" + ] + hlbsp(choices) : "HLBSP" : 1 = + [ + 0 : "Off" + 1 : "Normal" + 2 : "Leakonly" + ] + hlvis(choices) : "HLVIS" : 2 = + [ + 0 : "Off" + 1 : "Fast" + 2 : "Normal" + 3 : "Full" + ] + hlrad(choices) : "HLRAD" : 1 = + [ + 0 : "Off" + 1 : "Normal" + 2 : "Extra" + ] + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 0 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 1 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + nocliphull(choices) : "Generate clipping hulls" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] + noskyclip(choices) : "No Sky Clip" : 0 = + [ + 1 : "On" + 0 : "Off" + ] + sparse(choices) : "Vismatrix Method" : 2 = + [ + 0 : "No Vismatrix" + 1 : "Sparse Vismatrix" + 2 : "Normal" + ] + circus(choices) : "Circus RAD lighting" : 0 = + [ + 0 : "Off" + 1 : "On" + ] +] + +@PointClass base(info_node) size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(PlayerClass) size(-16 -16 -36, 16 16 36) color(0 0 255) = info_player_start : "Player start" [] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/CZ/EnvTarget.spr") = info_target : "Beam Target" [] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass) = info_teleport_destination : "Teleport destination" [] + +@PointClass color(255 128 0) = info_texlights : "Texture Light Config" [] + +@PointClass decal() base(Targetname, Angles) = infodecal : "Decal" +[ + texture(decal) +] + +// +//Item entities +// + +@PointClass base(Angle) = item_armor : "Armor"[] + +@PointClass studio() base(Angles, Targetname, ModelFile,RenderFields) = item_generic +[ + removeonuse(integer) : "Remove on use" : 0 + lightmultiplier(integer):"Light Multiplier":0 + sequencename(string):"Sequence Name" + scale(integer):"Scale" + nopvs(choices):"Include in Potentially Visible Set(PVS)":0= + [ + 0:"Yes" + 1:"No" + ] +] + +@PointClass = item_healthkit: "HealthKit"[] + +@SolidClass base(Targetname) = item_worldmap : "World Map"[] + +// +//Light entities +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Light) = light : "Invisible lightsource" [] + +@PointClass base(Targetname, Target, Light) iconsprite("sprites/CZ/LightEnvironment.spr") = light_environment : "Environment" +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 270 0" + pitch(integer) : "Pitch" : -90 + _diffuse_light(color255) : "Diffuse Light" : "0 0 0 0" +] +@PointClass base(Targetname, Target, Angles, Light) iconsprite("sprites/CZ/LightSpot.spr") = light_spot : "Spotlight" +[ + pitch(integer) : "Pitch" : -90 + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +// +//Momentary entities +// + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Master, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +//Monster entities +// + +@PointClass studio("models/props/helicopter_blackhawk.mdl") base(Monster,Angles,Classtype,ModelFile) = monster_apache : "Apache"[] + +@PointClass base(Monster,Angles,Classtype,ModelFile,Netname) = monster_counter_terrorist_repel : "CT Repel (For what?)" +[ + repelskin(integer):"Repel skin" + repelhead(integer):"Repel head" + type(integer):"Type (for what?)" +] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_assaultrifle : ""[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile)=monster_ct_gsg9_grenader:"CT GSG9 Grenader" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_kamikaze : ""[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_law : "CT GSG9 Law"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_machinegun : "CT GSG9 Machine Gun"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_melee : "CT GSG9 Melee"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_mp5 : "CT GSG9 MP5"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_pistol : "CT GSG9 Pistol"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_shotgun : "CT GSG9 Shotgun"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_smg : "CT GSG9 SMG"[] + +@PointClass studio("models/gsg9_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_gsg9_sniperrifle : ""[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_assaultrifle : ""[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile)=monster_ct_spetsnaz_grenader:"CT Spetsnaz Grenader" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_kamikaze : ""[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_law : "CT Spetsnaz Law"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_machinegun : "CT Spetsnaz Machine Gun"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_melee : "CT Spetsnaz Melee"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_mp5 : "CT Spetsnaz MP5"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_pistol : "CT Spetsnaz Pistol"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_shotgun : "CT Spetsnaz Shotgun"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_smg : "CT Spetsnaz SMG"[] + +@PointClass studio("models/spetsnaz_lo.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_spetsnaz_sniperrifle : "CT Spetsnaz Sniper Rifle"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_assaultrifle : ""[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile)=monster_ct_swat_grenader:"CT SWAT Grenader" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_kamikaze : ""[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_law : "CT SWAT Law"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_machinegun : "CT SWAT Machine Gun"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_melee : "CT SWAT Melee"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_mp5 : "CT SWAT MP5"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_pistol : "CT SWAT Pistol"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_shotgun : "CT SWAT Shotgun"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_smg : "CT SWAT SMG"[] + +@PointClass studio("models/player/m1-seal.mdl") size(-16 -16 0, 16 16 72) color(0 0 255) base(Monster,Angles,Classtype,ModelFile) = monster_ct_swat_sniperrifle : ""[] + +@PointClass studio() base(Monster, RenderFields,ModelFile) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(flags) = + [ + 4 : "Not solid" : 0 + ] + health(integer) : "Health" + deathanim(string) : "Death Animation Name" +] + +@PointClass studio() base(Angles,Targetname,PlayerClass, RenderFields) = monster_hostage : "Hostage" +[ + //INFO: + //hostage model depends + //on their targetnames + //Targetnames seen: + //hostage_male1 + //hostage_female1 + //embassy_judge + //foxy_lady + //Classtypes seen: + //CIV + classtype(string):"Team":"CIV" + skin(integer):"Skin":0 + head(integer):"Head":0//0 through 4 seen + //I saw a hostage with rescued target as a counter that targeted the hostage rescued sequence + //the rescued target happens after the hostage is rescued + //if there is more than 1 hostage in the map then set the countdown for the trigger_counter + //to the amount of hostages needed to be rescued before the trigger will happen + rescuetarget(target_destination):"Rescued Target":"" + noautoremove(integer):"No auto remove on rescue":0 + spawnflags(flags) = + [ + 2:"???":0 + ] +] + +@PointClass studio() base(Monster,Angles,Classtype,ModelFile,Targetname) = monster_npc : "NPC"[] + +@PointClass studio() size(-16 -16 0, 16 16 72) color(255 255 255) base(Monster,Angles,Angles,ModelFile) = monster_npc_dead : "Dead NPC" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] + //For instance...two maps I saw map had 64 and 32 as the weapons + weapons(integer) : "Weapons" : 0 +] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_assaultrifle : "ifle"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile)=monster_terrorist_arctic_grenader:"" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_kamikaze : ""[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_law : "Terrorist Arctic Law"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_machinegun : "un"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_melee : "Terrorist Arctic Melee"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_mp5 : "Terrorist Arctic MP5"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_pistol : "Terrorist Arctic Pistol"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_shotgun : "Terrorist Arctic Shotgun"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_smg : "Terrorist Arctic SMG"[] + +@PointClass studio("models/player/m1-arctic.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_arctic_sniperrifle : "fle"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_assaultrifle : "ifle"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile)=monster_terrorist_desert_grenader:"" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_kamikaze : ""[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_law : "Terrorist Desert Law"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_machinegun : "un"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_melee : "Terrorist Desert Melee"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_mp5 : "Terrorist Desert MP5"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_pistol : "Terrorist Desert Pistol"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_shotgun : "Terrorist Desert Shotgun"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_smg : "Terrorist Desert SMG"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_desert_sniperrifle : "fle"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_assaultrifle : "ifle"[] + +@PointClass studio("models/leet_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile)=monster_terrorist_jungle_grenader:"" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_kamikaze : ""[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_law : "Terrorist Jungle Law"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_machinegun : "un"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_melee : "Terrorist Jungle Melee"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_mp5 : "Terrorist Jungle MP5"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_pistol : "Terrorist Jungle Pistol"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_shotgun : "Terrorist Jungle Shotgun"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_smg : "Terrorist Jungle SMG"[] + +@PointClass studio("models/asian_lo.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_jungle_sniperrifle : ""[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_assaultrifle : ""[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile)=monster_terrorist_russian_grenader:"r" +[ + hegrenadeonly(choices):"He Nade Only":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_kamikaze : "e"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_law : "Terrorist Russian Law"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_machinegun : "gun"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_melee : "Terrorist Russian Melee"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_mp5 : "Terrorist Russian MP5"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_pistol : "Terrorist Russian Pistol"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_shotgun : "Terrorist Russian Shotgun"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_smg : "Terrorist Russian SMG"[] + +@PointClass studio("models/russian_bossB.mdl") size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) = monster_terrorist_russian_sniperrifle : ""[] + +@PointClass size(-16 -16 0, 16 16 72) color(255 0 0) base(Monster,Angles,Classtype,ModelFile) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(target_destination) : "Target On Release" + monstertype(string) : "Monster Type" + netname(target_destination) : "Childrens' Name" + forcedtarget(target_destination) : "Forced Target" : "" + healthmult(integer):"Health Mult(iplier??)" : 0 + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + body(integer):"Body":0 + skin(integer):"Skin":0 + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 + spawnawake(choices):"Spawn awake":0= + [ + 0:"0(??)" + 1:"1(??)" + ] + dontspawninview(choices):"Spawn in view":0= + [ + 0:"Yes" + 1:"No" + ] + monstermodel(studio):"Monster model" +] + +// +//Multi entities +// + +@PointClass base(Targetname) color(255 128 0) iconsprite("sprites/CZ/multi_manager.spr") = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) iconsprite("sprites/CZ/MultiSource.spr") = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +// +//Path entities +// + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + target(target_destination) : "Next stop target" + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +//Player entities +// + +@PointClass base(Targetname) iconsprite("sprites/CZ/PlayerLoadSaved.spr") = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CZ/PlayerWeaponStrip.spr") = player_weaponstrip : "Strips player's weapons" [] + +// +//Scripted entities +// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms (m_flRepeat)" : 0 + m_fRepeat(integer) : "Repeat Rate ms (m_fRepeat)" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +// +//Speaker entity +// + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + message(string) : "Sentence Group Name" + //ARAB_OUTSIDE_YELL + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +// +//Trigger entities +// + +@PointClass base(Targetx) iconsprite("sprites/CZ/TriggerAuto.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CZ/TriggerCamera.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 0 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/TriggerCDAudio.spr") = trigger_cdaudio : "CD Audio" +[ + trackname(string) : "Track Name" : "sound/music/TITLE" + loop(choices):"Loop":0= + [ + 0:"No" + 1:"Yes" + ] +] + +@PointClass base(Targetname, Target, Global, Master, Netname, Targetx,ModelFile) iconsprite("sprites/CZ/TriggerChangeKeyValue.spr") = trigger_changekeyvalue : "Change Key Value" +[ + angles(string):"Pitch Yaw Roll (Y Z X) (blank: no change)" +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CZ/TriggerChangeTarget.spr") = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + + +@SolidClass base(Trigger) iconsprite("sprites/CZ/TriggerCounter.spr") = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/TriggerEndMission.spr") = trigger_endmission : "EndMission Trigger" +[ + music(string):"MP3":"sound/music/MP3NAME" + nextmap(string):"Next map":"" +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/TriggerFreezePlayer.spr") = trigger_freezeplayer : "Freezeplayer"[] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity" : 1 +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/TriggerHud.spr") = trigger_hud : "Hud switcher" +[ + display(choices):"Display":0= + [ + 0:"Off" + 1:"On" + ] +] + +@SolidClass base(Targetname, Master, Target, Targetx) = trigger_hurt : "Trigger player hurt" +[ + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"Fire Client Only" : 0 + 32:"Touch Client Only" : 0 + ] + dmg(integer) : "Damage" : 10 + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/CZ/TriggerKillTarget.spr") = trigger_killtarget : "Trigger: Kill target"[] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 0 +] + +@SolidClass base(Targetname) = trigger_objective : "Objective" +[ + //the objectives are saved in the map's .seq file + objective(string):"Objective (from MAPNAME.seq)" + notransition(integer):"No Transition" + state(integer):"State (for what?)" +] + +@SolidClass base(Trigger, Master) = trigger_once : "Trigger: Activate once" +[ + style(choices):"Style":0= + [ + 0:"0(??)" + 32:"32(??)" + ] +] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx,Angles) iconsprite("sprites/CZ/TriggerRelay.spr") = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CZ/TriggerSequence.spr") = trigger_sequence : "Sequence File trigger" +[ + sequence_file(string):"Sequence File": "SEQUENCE.seq" + sequence_id(string):"Sequence Name":"" + spawnflags(flags) = + [ + 1: "???" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Target, Master) = trigger_usetool : "Tool Use Zone" +[ + //INFO: + //Have this entity target something when a tool is used in the zone... + //(??) tooltarget is for where the player needs to be aiming (??) + rcbombtarget(target_destination) : "RC Bomb target" + toolname(choices) : "Tool Name" : "No_tool_here"= + [ + "No_tool_here":"No_tool_here" + "weapon_fiberopticcamera":"weapon_fiberopticcamera" + "weapon_radio":"weapon_radio" + "weapon_camera":"weapon_camera" + "weapon_blowtorch":"weapon_blowtorch" + "weapon_radiocontrolledbomb":"weapon_radiocontrolledbomb" + "bomb_defuse":"bomb_defuse" + ] + tooltarget(string) : "Tool Target" + toolset(choices):"Tool set (guessed choices)":4= + [ + 4:"Camera" + 16:"Radio" + 32:"RC Bomb" + ] + spawnflags(flags) = + [ + 1: "Start on???" : 0 + ] + bombdefusetime(integer):"Bomb defuse time" +] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +//Weapon entities +// + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_aug : "AUG"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_blowtorch : "Blow Torch"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_briefcase : "Briefcase"[] + +// WEAPON_C4 is a planted bomb that requires defusing. +// If the entity is left un-named, it will be be planted automaticly at the start of each round. +// If the entity is named, then only when it is targetted will the bomb will be planted. +// A brief "click" is heard when the bomb is planted, but the voice "The bomb has been planted" does not play. +// The bomb falls to the ground directly beneath the point at which the entity is placed in the map. +// no func_bombtargets or info_bombtargets are needed. Defuse is normal. The bomb cannot be picked up. +// The best way for mappers to control timing is through the use of an outside timer/trigger, +// rather than changing the detonatedelay, which might be overridden by servers. +// "Trigger When Detonated" and "Trigger When Defused" are ONLY for planted bombs. +// If these fields are given targetnames for something that cannot be +// triggered(has no entity), it WILL have unwanted effects. +// MAY HAVE CHANGED WITH CONDITION ZERO DELETED SCENES +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_c4 : "C4 Plastique Bomb" +[ +detonatedelay(string) : "C4 Detonate Delay" : "20" +detonatetarget(string) : "Trigger When Detonated" +defusetarget(string) : "Trigger When Defused" +] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_camera : "Camera"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_deagle : "Deagle pistol"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_elite : "Elite pistol"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_fiberopticcamera : "FO Camera"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_flashbang : "Flashbang"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_g3sg1 : "G3SG1"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_hegrenade : "HE Grenade"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_knife : "Knife"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_mp5navy : "MP5"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_m60 : "M60"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_m4a1 : "Colt"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_radio : "Radio"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_radiocontrolledbomb : "RC Bomb"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_scout : "Scout"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_sg552 : "G552"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_smokegrenade : "Smoke nade"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_ump45 : "UMP45"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_usp : "USP"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_xm1014 : "XM1014"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_laws : "Laws"[] + +@PointClass iconsprite("sprites/CZ/Armoury.spr") base(Targetname, Angles, Targetx, RenderFields) = weapon_machete : "Machete Melee"[] + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/counter-strike.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/counter-strike.fgd new file mode 100644 index 0000000..657d96a --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/counter-strike.fgd @@ -0,0 +1,3369 @@ +// ------------------------------------------------------------------------------ +// Counter-Strike game definition file (.fgd) +// Version 0.8.0.0 +// For Worldcraft 3.3, Hammer 3.4 - 3.5beta4, Half-Life 1.0.0.9 plus cs 1.6 +// Last update: Agust 25, 2004 by Anders Jenbo (fuck@os.dk) +// ------------------------------------------------------------------------------- +// +// To learn how to use these entities, please visit Valve Editing +// Resource Center +// (AKA the VALVE-ERC/VERC) at http://collective.valve-erc.com/ +// +// by Justin DeJong aka "N0TH1NG" +// modified from code by Chris Bokitch aka "autolycus" +// +// by Tim Holt aka Waldo (burkenholt@home.com) +// modified from code by Justin DeJong aka "N0TH1NG" +// +// Version 0.7.7 and 0.7.8 by fjl (fjl05@yahoo.com) +// +// Version 0.7.8enhanced and 0.7.9.2e by tommy of escondido +// +// Version 0.7.9.2 by KeshTath (milsys@hotmail.com) +// +// Version 0.7.9.3 & 0.7.9.3b & 0.7.9.3c by tommy of escondido +// +// Version 0.7.9.4 - 0.7.9.9 by Anders Jenbo aka Wolf aka NoBody (fuck@os.dk) +// +// ----------------------------------------------------------------------- +// May 12, 2005 - Wolf (0.8.0.0) +// added fixed func_breakable stuff +// ----------------------------------------------------------------------- +// Agust 25, 2004 - Wolf (0.7.9.9) +// added func_breakable stuff +// ----------------------------------------------------------------------- +// Agust 25, 2004 - Wolf (0.7.9.8) +// gave the zip a name that reflets the version xp_798u (expert version 0.7.9.8 unofficial) +// Split the fgd back in to a SP and a common, +// changed cyclers to have Model / Sprite support. +// added zhlt_invisible to some of the invisable entitys to save on stored polys. +// Added Angles to trigger_camera. +// Added entitys +// weapon_ak47, weapon_aug, weapon_awp, weapon_deagle, weapon_elite, +// weapon_famas, weapon_fiveseven, weapon_flashbang, weapon_g3sg1, +// weapon_galil, weapon_glock18, weapon_hegrenade, weapon_knife, +// weapon_m249, weapon_m3, weapon_m4a1, weapon_mac10, weapon_mp5navy, +// weapon_p228, weapon_p90, weapon_scout, weapon_sg550, weapon_sg552, +// weapon_shield, eapon_smokegrenade, weapon_tmp, weapon_ump45, +// weapon_usp, weapon_xm1014, ammo_338magnum, ammo_357sig, ammo_45acp, +// ammo_50ae, ammo_556nato, ammo_556natobox, ammo_57mm, ammo_762nato, +// ammo_9mm, ammo_buckshot, item_antidote, item_kevlar, item_assaultsuit, +// item_suit, item_thighpack, info_landmark, item_security, +// trigger_endsection, trigger_autosave, trigger_transition, +// trigger_changelevel, test_effect, func_weaponcheck +// weaponbox (see its note for how to add more ammo types) +// Added some info from the cs-single-player fgd by fjl +// Removed +// xen entities, env_smoker, info_lights_rad and env_fog (only commented fog out) +// Updated weapon_c4's dicription. +// changed some (choices) so that the key is removed if set to 0, saves a bit on entity data. +// Changed apperiance for +// path_corner, path_track, env_explosion, trigger_camera, env_shooter, +// item_battery, item_healthkit, item_longjump, env_sprite, cycler_wreckage, +// env_beverage, env_funnel, env_rain, env_snow, info_landmark, env_shake, +// info_compile_parameters, info_teleport_destination, info_null +// Added Targetx and RenderFields to the Weapon base class +// Added spark_shower to game_player_equip +// Gave the env_shooter a model so it dosen't crash the game +// Fixed the granade type of the func_grencatch +// Hostages and players are now displayed by models. +// Models and animation can be changed from the editor. +// Made the hostage_entity more compatible with other models. +// Added zhlt_noclip and zhlt_invisible to all brush entitys. +// corected the number for Opaque + Concave Fix +// Added info_texlights +// Added more keys to info_compile_parameters. +// priority, verbose, hlcsg, wadautodetect, noclipeconomy, noskyclip, +// nocliphull, cliptype, texdata, wadconfig, hlbsp, hlvis, hlrad, +// Vismatrix Method, lightdata, circus +// Removed the flags from info_compile_parameters as they are obsoled. +// Tested most entitis and did some other stuff :) +// ----------------------------------------------------------------------- +// Mar 22, 2004 - tommy (0.7.9.3c) +// added angles property to armoury entity so you can rotate or stand +// the weapons on end. +// ----------------------------------------------------------------------- +// Oct 18, 2003 - tommy (0.7.9.3b) +// removed item_airtank, it was causing a precache error. +// added weapon_C4 pre-plantable bomb from FJL's single player CS fgd. +// ----------------------------------------------------------------------- +// Oct 16, 2003 - tommy (0.7.9.3 fix) +// -fixed shieldgun to shield in game_player_equip, and added item_airtank. +// -added single use func_grencatch from FJL's single player CS fgd. +// ----------------------------------------------------------------------- +// Sept 17, 2003 - tommy (0.7.9.3) +// -added env_rain and env_snow for CS 1.6 +// ----------------------------------------------------------------------- +// June 15, 2003 - tommy (0.7.9.2e) +// -added flag 2 to trigger_multiple for no player activation for soccer maps. +// - Style property commented out for triggers, seems to serve no purpose. +// -added light style 12 underwater weird - buggy. not really a light source. +// -added to func_pushable choice 2, breakable by player touch - buggy +// ----------------------------------------------------------------------- +// January 21st, 2003 - KeshTath (0.7.9.2) +// - Added weapon_shieldgun to game_player_equip. +// - Added weapon_galil to game_player_equip. +// - Added weapon_famas to game_player_equip. +// *NOTE* You cannot add any of the new weapons to the armoury_entity, They did not +// put in any code to allow you to add the UMP, SG550 or any of the new 1.6 weapons. +//----------------------------------------------------------------------- +// Oct 7th, 2002 - tommy (0.7.8.1) +// added Lauries new entity properties for switchable texture lighting +//------------------------------------------------------------------------------ +// Aug 19th, 2002 - tommy (0.7.8enhanced) +// - fixed env_blood choices +// ----------------------------------------------------------------------------- +// Aug 11th, 2002 - tommy (0.7.8enhanced) +// - added editing sprites for: monster_cycler, cycler_wreckage, env_beam, env_blood, env_explosion +// env_glow, env_fade, env_laser, env_render, env_sprite, gibshooter, path_track, path_corner. +// -------------------------------------------------------------------------------- +// Aug 2nd, 2002 - tommy (0.7.8enhanced) +// - added sound choices to base trigger copied from button sound choices. +// - added body choice for use with scientist.mdl to hostage entity. +// - added sequence(string) to cycler_sprite to give control over model animations. +// - fixed some comment errors, also modified and added more to some entitys. +// -------------------------------------------------------------------------------- +// April 29th, 2002 - tommy (0.7.8enhanced) +// - added notes on various entitys and choices from Lauri of Spirit of HL and from Waldo's +// various notes on DoD and CS fgds, as well as my own. +// - Removed renderfield string codes and replaced them with "Renderfields" +// baseclasses for cycler_wreckage, +// - env_fog upgraded to the choices/abilities other mods use, in case CS upgrades to full fog someday. +// - added property of "shade"(_diffuse_light) to light enviornment for adam foster's hack of HLRAD, so that +// shadows can be given a specific color. +// - added skins for "water" (-3), "slime" (-4), "lava" (-5) and "make ladder" (-16) to func_illusionary +// - added spawnflags "only trigger" (1) and "pressure" (4) to func_pushable as other ways to break it. +// - gave func_train ALL the same skins as func_illusionary & func_water, even though the skins work oddly for a train. +// - added skins "empty" (-1) and "ladder" (-16) to func_water. note "ladder" only works with non ! textures. +//----------------------------------------------------------------------- +// April 7th, 2002 - fjl (0.7.8) +// - Global baseclass is a single player map option. The following baseclasses and +// entities listed could support it so I added it to them. +// BASECLASSES: Breakable, door, Basetank and Trackchange +// SOLID ENTITIES func_button, func_conveyor, func_pendulum, func_plat, +// func_rot_button, func_rotating, func_tracktrain, func_train and func_wall +// - Added Master(string) to Basetank baseclass. +// - Removed renderfield string codes and replaced them with "Renderfields" +// baseclasses for cycle, cycler_sprite & button_target. +// - Added the Appearflags("Not in Deathmatch") option to these listed entities and +// baseclasses that where missing that parameter. +// BASECLASSES: playerclass, door +// ENTITIES: func_friction, func_pendulum, func_wall, infodecal +// - Gave func_breakable the ability to spawn a battery, healthkit or shotgun +// shells upon breaking. This options works a bit buggy since the spawned items +// will continue to respawn on its own after its been picked up. If the +// func_breakable is given a name, it will have the same effect as a +// MonsterMaker by spawning the object each time its triggered. +// Use this option wisely or only for single player maps. +// - Added missing ZHLT options to func_friction. +// - Added the "Instant Crowbar" flag to func_pushable. Not that this option is +// usable for this mod, but I added it so whoever does the next Half-Life FGD +// update, realizes that it supports that option. +// - Added missing Renderfields baseclass to func_rot_button. +// - Changed func_rotate to default to a speed of 50 instead of 0. +// - Added item_healthkit to game_player_equip. +// - Added ammo for the M249 Para on game_player_equip. Thanks to [B.o.G]doom for +// this information. +// - Added some extra information to the game_player_equip entity. +// - Added character limit number for the "game_text" entity on its message string. +// - Added "Renderfields" baseclass to hostage_entity. This allows the option for +// hostages to be transparent, distorted, flickering or any of those other effects. +// - Added "Renderfields" baseclass to item_healthkit, item_longjump and item_battery. +// - Fixed light_spot bug where its default color was yellow instead of white. +// - Gave Light_Environment the "Initially Dark" flag. +// - Added "Appearance" effects to light_environment. This allows light_environment +// to have the strobe and flicker light effects just incase you want to give +// players an epileptic seizure while they play your map :) +// Appearance's effect will not work if light_environment is given a name. +// - Added "Custom Appearance" to light_environment. This option does require the +// entity to have a name for it to work. +// - Added the "target" field to light_environment. Add the light_environment +// entity, and in the target field, add the name of its target(another entity). +// Light_environment will now emit light in that direction from all sky brushes. +// This should save time from trying to figure out the annoying angles and pitches. +// - Added monster_scientist entity. Works the same as hostage_entity except that +// it uses the scientist model. The scientist type(luther, einstein, etc.) is +// also selectable. While it is possible to change hostage_entity into the +// scientist model, a specific scientist type is not selectable. +// Only monster_scientist has that option, which is why I added it. +// - Added the sprite color to the multisource and multi_manager entities so they +// are the same as Half-Life's FGD. +// - Added "Global State Master" to trigger_auto. +// - Fixed bug on trigger_counter, where field options repeated themselves. +// This same bug seems to be plaguing all the other FGD's. Whoever plans to +// updates those other FGD files should take note of it. +// - Added "Level Fade In" and "CD track to play" to WorldSpawn. These options +// should only be used for single player maps. +// - Changed the baseclass name, zhltlightflags to ZHLT. +// - Rearranged some of the entities code so that the most common fields and +// options come before the other options. It was annoying having to scroll to +// the bottom just to find out what some of them trigger or what their names are. +// The Name of the entity should always come first and the other important +// options right after. Something in the fashion listed below, that is, if they +// contain those fields. +// ------------------------ +// Name +// Global Entity Name +// Master +// Target +// Trigger delay +// Pitch Yaw Roll (Y Z X) +// Render FX +// Render Mode +// FX Amount(1 - 255) +// FX Color (R G B) +// Light Flags (ZHLT 2.2+) +// Light Origin (ZHLT 2.2+) +// ------------------------ +// Not all of them are exactly in this order since that would require re-writing +// the whole FGD file, but I did manage to rearrange them to some extent for the +// following baseclasses and entities listed below. +// BASECLASSES: breakable, gibshooterbase and trigger +// ENTITIES: env_sprite, func_button, func_door_rotating, func_pendulum, +// func_platrot, func_rot_button, func_rotating, func_tracktrain, func_vehicle, +// game_counter, game_counter_set, game_player_hurt, game_player_team, +// info_teleport_destination, light, momentary_rot_button, path_track, +// trigger_camera, trigger_changetarget, trigger_counter, trigger_hurt +// and xen entities +// - In order to help with the rearranging of the fields(read previous sentence), I +// had to create a Master Baseclass. These are the following baseclasses and +// entities that I removed the Master string from their code and replaced it with +// the Master baseclass. +// BASECLASSES: door and trigger +// ENTITIES: game_counter, game_counter_set, game_score, game_team_master, +// game_text, game_zone_player, trigger_hurt, func_button, func_rot_button, +// button_target and momentary_rot_button +// - Added some extra information to Basetank baseclass and func_rot_button entity. +// - Put line codes for trigger_gravity, func_wall, func_wall_toggle and func_water +// entities in alphabetical order. +// - Added some extra info to the previous update list and fixed some spelling errors. +// - Updated once again, "cs_fgd_readme.txt" and "INSTALL.TxT" +// ----------------------------------------------------------------------- +// March 16th, 2002 - fjl (0.7.7) +// - Added the "New Level Unit" Option on WorldSpawn. +// - Added "weapon" baseclass. +// - Added "Appearflags" baseclass. +// - Added "Global" baseclass. +// - Changed ZHLT _fade option to default to 1.0 instead of 0 +// - Changed ZHLT _falloff option to have a choice of "default," "linear," and "square." +// - Removed the zhlt_lightflags choices from the "breakable" baseclass. It didn't need it. +// - Added "Opaque + Concave Fix" to zhlt_lightflags. +// - Changed IS NOT LOOPED to NOT TOGGLED on ambient_generic +// - Removed ZHLT from func_wall_toggle. It caused ZHLT options to repeat. +// - Added a Targetname and ZHLT _fade and _falloff options to light_environment. +// - Changed light_environment so it defaults to an angle of 270 and pitch of -90. +// Similar to high noon sunlight. +// - Added the ZHLT _fade and _falloff options for light_spot. +// - Changed all light entities to start with a white brightness(255 255 255 200) +// instead of the annoying yellow color(255 255 128 200). +// - Added "Angular Velocity" to func_train. Angle does not reset with a new round. +// Hopefully VALVe will fix this in the future. +// - Changed trigger_gravity to display "Gravity (0.0-1)" instead of "Gravity (0-1)" +// - Added cycler entity. +// - Added cycler_wreckage. Seems its just a big smoke sprite used for machine wrecks +// so I edited it to not show the targetted sprite by default. If it does show the +// sprite, it will simply look like a sprite stuck inside the smoke stack. It was +// best to make it invisible. If a bigger sprite is used like say 320hud1.spr there +// will be a more spread out smoke stack. Bigger sprite = wider smoke stack. +// - Added env_fade. +// - Added env_fog in hopes to get VALVe to implement it for this mod and make it +// compatible for software and direct3d modes. Currently doesn't work with +// Counter-Strike version 1.3 +// LIMITATIONS: +// Currently (as of Half-Life 1.1.0.8), objects outside of the 100% opacity range +// are still drawn and still contribute to the overall polygon count. This entity is +// still quite under development. +// The fog is only drawn in OpenGL mode. This means users who are viewing the level +// in Software or Direct3D rendering will not see the fog. For this reason, if you +// plan on releasing your map publicly, the env_fog entity should not be used as it +// will put OpenGL users at a disadvantage. +// - Added func_guntarget. +// - Added func_recharge and func_healthcharger. Currently the dmdelay, +// "Deathmatch recharge delay" does not work with CS 1.3. Hopefully +// this will be fixed in the future. +// - Added func_tanklaser +// - Removed func_tankrocket seeing as how CS cannot support the rocket entity. +// - Added all missing weapons for game_player_equip plus added item_longjump & +// item_battery including all weapon ammo. Almost did a complete re-write to this +// entity to make it alot easier to use. I just can't figure out nightvision goggles +// and ammo for the para. If you figure it out, please contact me. I would advice +// using this item to give players the longjump or the battery wisely. Those items +// do not magically dissapear like all the others. They will remain even after +// a round ends. Also, You can't give all weapons and items at one time. SO DON'T TRY! +// - Added gibshooter entity. +// - Added item_longjump, item_battery and item_healthkit entities. These respawn +// like in HL deathmatch. They might be a bit buggy though. +// - Added xen entities. +// - Rearranged the update list so the latest additions are on top. +// - Updated the "readme.txt" that comes with the zip file and renamed it to +// "cs_fgd_readme.txt" so it will not over write Worldcraft's "readme.txt" file. +// - Created an "install.txt" for the zip file. +// - Created a single player FGD file for anyone wanting to create training maps. +// It contains the level transition entities required to make such maps. Plus it +// contains many other entities that have some type of use on single player maps but +// are not supported for multiplayer maps. The file is named "cs-single_player.fgd" +// and it MUST be used alongside this FGD file. Read that FGD file to learn more. +// +// Jan 26, 2001 - Tim Holt (0.7.6) +// - Added "No Clients" check option to Trigger base class per suggestion/lead +// from Mataleone (cs mapping forum) +//----------------------------------------------------------------------- +// Jan 6, 2001 - Tim Holt (0.7.5) +// - Added new parameter options for game_player_equip to list all +// CS items in dialog, thus removing the need to turn off SmartEdit +// to configure. +// - Added new sprite for trigger_auto (green box with words "Trigger Auto") +//----------------------------------------------------------------------- +// 01/05/2001 - Morlam (0.7.4) +// - Added _fade and _falloff keys to the light_ entities. Need ZHLT 2.2+ +// for these to work. +// - Added light_origin key to the ZHLT Light Flags BaseClass. Again, you +// need the latest version of Zoner's Tools for light_origin to work. +// - Moved circus and extra from the "Class Info" tab to the "Flags" tab. +// - Shortened the SmartEdit names of certain key/values in info_compile_params +// so that they aren't cut off (at least, on my 800X600 screen on a 15 inch +// monitor). +// +// 01/04/2001 - Morlam (0.7.3) +// - Arranged all the point entities in alphabetical order +// - Corrected a typo in hostage_entity: "Orange Suit Worker" from +// "Orange Suite Worker". +// - Changed func_water default WaveHeight to 0 +// - Added ZHLT Light Flags to func_plat, _pendulum and _vehicle +// - Under info_compile_params: +// - Changed extra to choices instead of a string; default is now 0 +// - Changed extra to read: "Enable Extra mode in HLRAD?" +// - Added hullfile, chop, texchop, circus, and dscale keys +// - Added "No Clip" flag under Run BSP in the spawnflags +// - Under info_lights_rad: +// - added radfile key/value, specifies custom texture light file +//----------------------------------------------------------------------- +// 01/01/2001 - Tim Holt (0.7.2) +// - Added new dropdown to hostage entity, so you can choose hostage skin +// directly by name (orange suit guy or tie guy) +// - Removed commented out "master" option for game_zone_player. It was +// commented out from the original HL FGD for some reason. Not sure why +// or if maybe there is a problem with it? +//----------------------------------------------------------------------- +// 12/31/2000 - Tim Holt (0.7.1) +// - Added new sprites for all the Game entities +// - Added new sprite for Player Weapon Strip +// - Added new sprite for Trigger_Relay +// - Added new sprite for Trigger_ChangeTarget +//----------------------------------------------------------------------- +// Original changes by Tim Holt (0.7.0) +// - Added new Trigger Changetarget sprite (green cube w/words) +// - Added new Info Target sprite (bullseye) +// - Added new trigger_camera sprite (Video camera) +// - Added new Multi Manager sprite (box w/arrows coming out of it) +// - Added new "Cycler Sprite" sprite (box w/arrow circle around it) +// - Added replacement ambient_generic sprite (changed from speaker to speaker +// with words "Ambient Generic" around it") +// - Added replacement env_sound sprite (changed from speaker to speaker +// with words "Env Sound" around it") +// - Added replacement light_spot sprite (changed from lightbulb to spotlight) +// - Added replacement Light Environment sprite (changed from lightbulb to sun) +// - Added all the "game_*" entities +// - Added info_compile_params and info_lights_rad entities. Idea is to +// get someone like Zoner to implement support for them in Zoners, or +// build support for them into a compile tool like Q2Beaver, HLCC, etc. +// - Added env_funnel +// - Added trigger_gravity +// - Added player_weaponstrip +// - Put Zoners RAD option (that allow solid (func_) based ents to cast +// shadows) into a number of new additional items that can support it. +// Use with caution, as for example a func_pushable can cast a shadow now, +// but if you push it, the shadow stays behind :^) +// +// -------------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------------- +// Note: I have not fully tested the support of ALL the game_ entities in +// CS. I DO know that some work thru experimentation. Let me know if you +// find interesting things about these little known and used entities in CS. +// --------------------------------------------------------------------------------- + + +// +// Worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 0 + light(integer) : "Default light level" : 0 + WaveHeight(string) : "Default Wave Height" : "0" + MaxRange(string) : "Max viewable distance" : "4096" + startdark(choices) : "Level Fade In" : "" = + [ + "" : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : "" = + [ + "" : "No, keep current" + 1 : "Yes, clear previous levels" + ] +] + +// +// BaseClasses +// + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Master +[ + master(string) : "Master" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : "" = + [ + "": "Normal" + //* Additive or Texture mode only. + 1: "Slow Pulse" + //* Additive or Texture mode only. + 2: "Fast Pulse" + //* Additive or Texture mode only. + 3: "Slow Wide Pulse" + //* Additive or Texture mode only. + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" +//*These don't seem to do anything. Correct me if I'm wrong... +//* 5: "Slow Fade Away" +//* 6: "Fast Fade Away" +//* 7: "Slow Become Solid" +//* 8: "Fast Become Solid" +//* Constant Glow only affects the Glow rendermode. With this setting, Glow mode behaves +//* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't +//* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this +//* useful?) + 14: "Constant Glow (Sprites)" + 15: "Distort (Models)" + 16: "Hologram (Distort + fade)" +//* Strange effect. As seen, briefly, when a Gargantua dies. + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : "" = + [ + "": "Normal - no light" + //* For BSP objects, the object will be rendered as a pure area of whatever + //* color is specified in FX Color. + //* For models and sprites, this is the same as Normal mode. + 1: "Pure Color" + //* For BSP objects, the object will be rendered without shadows. + //* For models and sprites, this is the same as Normal mode, except that the Pulse + //* renderfx settings work. + 2: "Texture - some light" + //* Like additive, but as the player gets further from the sprite, it gets + //* progressively larger and more transparent. The sprite is also not obscured by + //* intervening models, which can sometimes look bad. + //* Alphatest sprites won't use their masks in this mode. + 3: "Glow (sprites only)" + //* For BSP objects, this only affects textures beginning with {. Blue pixels + //* will be transparent; non-blue pixels will be solid. + //* For models, this mode is the same as Normal mode. + //* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e. + //* the palette positions are used as opacity settings; 0 for fully transparent, + //* and 255 for fully opaque, regardless of what the palette colors actually are. + //* The only palette colour that will be used is the last one, which sets the + //* colour for the whole sprite. (Needless to say, this will look odd unless the + //* sprite is designed to be displayed this way!) + //* Oddly, Alphatest sprites won't use their masks in this mode. + 4: "Solid - no light" + //* Only bright parts of the object are visible; darker parts are just more + //* transparent, and black is not drawn. Useful for making lighting or hologram + //* effects. + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" : 255 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// LRCHLT Texture light additions +// these will only work with advanced compiling tools that allow +// switchable texture lighting. note that lighting used by +// moveable entitys may be left behind! +// +@BaseClass = TexLightType +[ + style(choices) : "Texture Light Style" : "" = + [ + "" : "Normal" + -3: "Switch with TL@name" + 1 : "Flicker A" + 2 : "Slow, strong pulse" + 3 : "Candle A" + 4 : "Fast strobe" + 5 : "Gentle pulse" + 6 : "Flicker B" + 7 : "Candle B" + 8 : "Candle C" + 9 : "Slow strobe" + 10: "Fluorescent flicker" + 11: "Slow pulse, noblack" + 12: "underwater weird & buggy" + ] +] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Targetname, Global, Target, RenderFields, Angles) = BaseTank +[ + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : "" = + [ + "": "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Global) = Breakable +[ + target(target_destination) : "Target on break" + delay(string) : "Delay before fire" : "0" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : "" = + [ + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + "": "Glass" + //* Gibs: models/woodgibs.mdl + //* Break noise: debris/bustcrateX.wav + //* Bounce noise: debris/woodX.wav + 1: "Wood" + //* Gibs: models/metalplategibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/metalX.wav + 2: "Metal" + //* Gibs: models/fleshgibs.mdl + //* Break noise: debris/bustfleshX.wav + //* Bounce noise: debris/fleshX.wav + 3: "Flesh" + //* Gibs: models/cindergibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 4: "Cinder Block" + //* Gibs: models/ceilinggibs.mdl + //* Break noise: debris/bustceilingX.wav + //* Bounce noise: none + 5: "Ceiling Tile" + //* Gibs: models/computergibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/woodX.wav + //* Note: Generates sparks when damaged. + 6: "Computer" + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + //* Note: Makes ricochet noises when damaged. + 7: "Unbreakable Glass" + //* Gibs: models/rockgibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : "" = + [ + "": "Random" + 1: "Relative to Attack" + ] + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : "" = + [ + "": "Nothing" + 1: "Battery" + 2: "Healthkit" + 9: "Shotgun Shells" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@BaseClass base(Targetname, Global, Master, RenderFields, Angles, Appearflags) = Door +[ + target(target_destination) : "Target" + //*----------------------------------------------------------------- + //*This delay only applies to the Target, not the Fire on Open/Close + //*fields. + //*----------------------------------------------------------------- + delay(integer) : "Delay before fire" : 0 + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + //* ----------------------------------------------------------------- + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + //* ----------------------------------------------------------------- + movesnd(choices) : "Move Sound" : "" = + [ + "": "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + //* ----------------------------------------------------------------- + //* The number against each sound corresponds to the wav file played. + //* e.g. Chunk (4) plays "doors/doorstop4.wav". + //* ----------------------------------------------------------------- + stopsnd(choices) : "Stop Sound" : "" = + [ + "": "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] +//* Setting wait to -1 also prevents the door from reversing when it comes into +//* contact with the player, as seen on the bunker door in Crossfire. + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 +//* Normally a named door, or a door with "use only" selected, won't open when touched. + 256: "Use Only" : 0 + ] + locked_sound(choices) : "Locked Sound" : "" = + [ + //* The locked sound & sentence will be played if + //* The player walks into a door which has a name. + //* The number against each sound corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + + "": "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : "" = + [ + //* The unlocked sound & sentence will be played whenever a door starts to open and whenever + //* a button starts to push in. (They will never be played when a door starts to close, even if + //* "Toggle" is selected.) + //* + //* The number against each sound (except lightswitch) corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + "": "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : "" = + [ + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3. + "": "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : "" = + [ + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3. + "": "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass size(-16 -16 -16, 16 16 16) base(Targetname, Angles) = gibshooterbase +[ + //* The number of pieces to create. + m_iGibs(integer) : "Number of Gibs" : 3 + //* Delay (in seconds) between shots. If 0, all the gibs are fired at once. + delay(string) : "Delay between shots" : "0" + //* How fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + //* Course variance + m_flVariance(string) : "Course Variance" : "0.15" + //* Time in seconds for gibs to live, +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +//* Don't create a light whose name begins with "light" - a bug/feature in RAD means +//* that such a light won't be able to switch on and off. +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 255 200" + //* This field will have no effect on a dynamic (i.e. named) light. + style(Choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 2 : "Slow, strong pulse" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 10: "Fluorescent flicker" + 11: "Slow pulse, noblack" + ] + //* This field will have no effect on a static (i.e. nameless) light. + //* 'a' is dark, 'm' is normal brightness, 'z' is full brightness. + //* There's no support for a light to have a custom appearances when it's in a + //* state other than 'on'. See trigger_lightstyle if you need this effect. + pattern(string) : "Custom Appearance" + _fade(string) : "Fade (ZHLT Only)" : "1.0" + _falloff(Choices) : "Falloff (ZHLT Only)" : "" = + [ + "" : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : "" = + [ + "": "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : "" = + [ + "": "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass = PlayerAnim +[ + sequence(Choices) : "Animation Sequence (editor)" : 1 = + [ + "" : "dummy" + 1 : "idle1" + 2 : "crouch_idle" + 3 : "walk" + 4 : "run" + 5 : "crouchrun" + 6 : "jump" + 7 : "longjump" + 8 : "swim" + 9 : "treadwater" + 10 : "crouch_aim_carbine" + 11 : "crouch_shoot_carbine" + 12 : "crouch_reload_carbine" + 13 : "ref_aim_carbine" + 14 : "ref_shoot_carbine" + 15 : "ref_reload_carbine" + 16 : "crouch_aim_onehanded" + 17 : "crouch_shoot_onehanded" + 18 : "crouch_reload_onehanded" + 19 : "ref_aim_onehanded" + 20 : "ref_shoot_onehanded" + 21 : "ref_reload_onehanded" + 22 : "crouch_aim_dualpistols_1" + 23 : "crouch_shoot_dualpistols_1" + 24 : "crouch_shoot2_dualpistols_1" + 25 : "crouch_reload_dualpistols_1" + 26 : "ref_aim_dualpistols_1" + 27 : "ref_shoot_dualpistols_1" + 28 : "ref_shoot2_dualpistols_1" + 29 : "ref_reload_dualpistols_1" + 30 : "crouch_aim_rifle" + 31 : "crouch_shoot_rifle" + 32 : "crouch_reload_rifle" + 33 : "ref_aim_rifle" + 34 : "ref_shoot_rifle" + 35 : "ref_reload_rifle" + 36 : "crouch_aim_mp5" + 37 : "crouch_shoot_mp5" + 38 : "crouch_reload_mp5" + 39 : "ref_aim_mp5" + 40 : "ref_shoot_mp5" + 41 : "ref_reload_mp5" + 42 : "crouch_aim_shotgun" + 43 : "crouch_shoot_shotgun" + 44 : "crouch_reload_shotgun" + 45 : "ref_aim_shotgun" + 46 : "ref_shoot_shotgun" + 47 : "ref_reload_shotgun" + 48 : "crouch_aim_m249" + 49 : "crouch_shoot_m249" + 50 : "crouch_reload_m249" + 51 : "ref_aim_m249" + 52 : "ref_shoot_m249" + 53 : "ref_reload_m249" + 54 : "I_am_a_stupid_placeholder" + 55 : "so_am_I" + 56 : "ref_aim_grenade" + 57 : "ref_shoot_grenade" + 58 : "crouch_aim_grenade" + 59 : "crouch_shoot_grenade" + 60 : "crouch_aim_c4" + 61 : "crouch_shoot_c4" + 62 : "ref_aim_c4" + 63 : "ref_shoot_c4" + 64 : "ref_reload_c4" + 65 : "crouch_aim_dualpistols_2" + 66 : "crouch_shoot_dualpistols_2" + 67 : "crouch_shoot2_dualpistols_2" + 68 : "crouch_reload_dualpistols_2" + 69 : "ref_aim_dualpistols_2" + 70 : "ref_shoot_dualpistols_2" + 71 : "ref_shoot2_dualpistols_2" + 72 : "ref_reload_dualpistols_2" + 73 : "crouch_aim_knife" + 74 : "crouch_shoot_knife" + 75 : "ref_aim_knife" + 76 : "ref_shoot_knife" + 77 : "crouch_aim_ak47" + 78 : "crouch_shoot_ak47" + 79 : "crouch_reload_ak47" + 80 : "ref_aim_ak47" + 81 : "ref_shoot_ak47" + 82 : "ref_reload_ak47" + 83 : "crouch_aim_shieldgren" + 84 : "crouch_shoot_shieldgren" + 85 : "ref_aim_shieldgren" + 86 : "ref_shoot_shieldgren" + 87 : "crouch_aim_shieldknife" + 88 : "crouch_shoot_shieldknife" + 89 : "ref_aim_shieldknife" + 90 : "ref_shoot_shieldknife" + 91 : "crouch_aim_shieldgun" + 92 : "crouch_shoot_shieldgun" + 93 : "crouch_reload_shieldgun" + 94 : "ref_aim_shieldgun" + 95 : "ref_shoot_shieldgun" + 96 : "ref_reload_shieldgun" + 97 : "crouch_aim_shielded" + 98 : "ref_aim_shielded" + 99 : "gut_flinch" + 100 : "head_flinch" + 101 : "death1" + 102 : "death2" + 103 : "death3" + 104 : "head" + 105 : "gutshot" + 106 : "left" + 107 : "back" + 108 : "right" + 109 : "forward" + 110 : "crouch_die" + ] +] + +@BaseClass = HostageAnim +[ + sequence(Choices) : "Animation Sequence (editor)" : 27 = + [ + "" : "walk" + 1 : "walk_scared" + 2 : "run" + 3 : "run1" + 4 : "run2" + 5 : "180_Left" + 6 : "180_Right" + 7 : "flinch" + 8 : "flinch1" + 9 : "laflinch" + 10 : "raflinch" + 11 : "llflinch" + 12 : "rlflinch" + 13 : "idle1" + 14 : "idle3" + 15 : "idle4" + 16 : "idle5" + 17 : "idle6" + 18 : "idle7" + 19 : "crouchstand" + 20 : "crouch_idle" + 21 : "crouch_idle2" + 22 : "crouch_idle3_1" + 23 : "crouch_idle3_2" + 24 : "panic" + 25 : "fear1" + 26 : "fear2" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 31 : "diesimple" + 32 : "dieforward" + 33 : "dieforward1" + 34 : "diebackward" + 35 : "headshot" + 36 : "gutshot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 43 : "barnacled1" + 44 : "barnacled2" + 45 : "barnacled3" + 46 : "barnacled4" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "writeboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 58 : "pause" + 59 : "yes" + 60 : "no" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 70 : "startle" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 92 : "lookwindow" + 93 : "wave" + 94 : "pulldoor" + 95 : "beatdoor" + 96 : "fallingloop" + 97 : "crawlwindow" + 98 : "divewindow" + 99 : "locked_door" + 100 : "push_button2" + 101 : "unlock_door" + 102 : "quicklook" + 103 : "handrailidle" + 104 : "handrail" + 105 : "hanging_idle" + 106 : "fall" + 107 : "scientist_get_pulled" + 108 : "hanging_idle2" + 109 : "fall_elevator" + 110 : "scientist_idlewall" + 111 : "ickyjump_sci" + 112 : "haulscientist" + 113 : "c1a4_wounded_idle" + 114 : "c1a4_dying_speech" + 115 : "tentacle_grab" + 116 : "helicack" + 117 : "windive" + 118 : "scicrashidle" + 119 : "scicrash" + 120 : "onguard" + 121 : "seeya" + 122 : "rocketcrawl" + 123 : "portal" + 124 : "gluonshow" + 125 : "crouch" + 126 : "kneel" + 127 : "pepsiidle" + 128 : "pepsifall" + ] +] + +@BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles, Appearflags) = PlayerClass[] + +@BaseClass base(Targetname, Global, RenderFields, PlatSounds) = Trackchange +[ + //* height is the distance the track/train will move. By default, the track starts in its top position + //* and goes downward (This can be changed in the Flags section #8). + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + //* Auto activate and relink may not be funcional + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + //* rotation is the amount in degrees the track will turn to line up with the new track. + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + //* toptrack is the Name (targetname) of the last path_corner-track in the upper area, or last area, of the track. + toptrack(target_destination) : "Top track" + //* bottomtrack is the Name (targetname) of the first path_corner-track in the lower area, or next area, of the track + bottomtrack(target_destination) : "Bottom track" + //* speed is the speed in units per second that the track platform will move downward. + //* (If the #16 Rotate Only flag is set, this is just the speed of rotation). + speed(integer) : "Move/Rotate speed" : 0 +//* +//* The first path_track-corner should not have a Next stop target (target). Instead, where it says Fire on +//* dead end (netname), enter a value equal to the Name (targetname) of the func_trackautochange. Now, when +//* the train reaches the path_track-corner, it will stop, then activate the func_trackautochange. +//* When the it gets to the bottom, the train will continue on to the next path_track-corner defined +//* by Bottom track (bottomtrack) in the func_trackautochange properties. +//* +] + +@BaseClass base(Targetname, Master, Target) = Trigger +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" +//* style commented out, seems to serve no purpose besides adding +//* to the lightdata load. +//* style(integer) : "Style" : 32 + sounds(choices) : "Sound style" : "" = + [ + "": "No Sound, None" + //* the rest of these may or may not work, copied from button + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + message(string) : "Message (set sound too)" + spawnflags(flags) = + [ +//* 1: "monsters":0 + 2: "No Players,entity only":0 + 4: "Pushables": 0 + ] +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles, Targetx, RenderFields) = Weapon [] + +@BaseClass = ZHLT +[ + zhlt_invisible(choices) :"Invisible" : "" = + [ + "": "no" + 1: "yes" + ] + zhlt_noclip(choices) :"Non solid" : "" = + [ + "": "no" + 1: "yes" + ] + zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : "" = + [ + "": "Normal" + 1: "Embedded Fix" + 2: "Opaque (Blocks Light)" + 3: "Opaque + Embedded Fix" + 5: "Opaque + Concave Fix" + ] + zhlt_customshadow(string) : "Custom shadow" + light_origin(string) : "Light Origin (Zhlt 2.2+)" +] + +// +// Entities +// + +@PointClass base(Targetname) iconsprite("sprites/CS/AmbientGeneric.spr") = ambient_generic : "Universal sound Ambient" +[ + message(sound) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : "" = + [ + "": "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 +//*main pitch frequency + pitch(integer) : "Pitch (> 100 = higher)" : 100 +//*begin pitch + pitchstart(integer) : "Start Pitch" : 100 +//*how fast to change from begin pitch to main pitch. + spinup(integer) : "Spin up time (0-100)" : 0 +//*how fast to go back down from main pitch to nothing. + spindown(integer) : "Spin down time (0-100)" : 0 +//*LFO = low frequency oscillator. +//*type of sound wave, sqr will jump back and forth between low and high pitch, tri has sharp transitions, and rnd has smooth transitions. + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 +//*rate is the frequency (how often the LFO effect repeats itself). + lforate(integer) : "LFO rate (0-1000)" : 0 +//*how much pitch change, This effect is commonly called "vibrato" in music and song. + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 +//*how strong a "pulse" of volume rather than a wavering pitch. + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 +//*cspinup is unknown to me. + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 +//*small is <~800 units range + 2: "Small Radius" : 0 +//* Medium is the default radius, so ticking this does nothing. <~1250 units + 4: "Medium Radius" : 1 +//*large is <~2000 units range + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Not Toggled":0 + ] +] + +@PointClass base(Angles) iconsprite("sprites/CS/Armoury.spr") size(-16 -16 0, 16 16 16) = armoury_entity : "Items in the armoury" +[ + item(choices) : "Item" : "" = + [ + "": "weapon_mp5navy" + 1: "weapon_tmp" + 2: "weapon_p90" + 3: "weapon_mac10" + 4: "weapon_ak47" + 5: "weapon_sg552" + 6: "weapon_m4a1" + 7: "weapon_aug" + 8: "weapon_scout" + 9: "weapon_g3sg1" + 10: "weapon_awp" + 11: "weapon_m3" + 12: "weapon_xm1014" + 13: "weapon_m249" + 14: "weapon_flashbang" + 15: "weapon_hegrenade" + 16: "item_kevlar" + 17: "item_assaultsuit" + 18: "weapon_smokegrenade" + ] +//* +//*note: count always resets to only one item after first round +//* + count(integer) : "Count" : 1 +] + +@PointClass base(Targetname, Angles, RenderFields) size(-16 -16 0, 16 16 72) Studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model / Sprite" +] + +@PointClass base(Targetname, Angles, RenderFields) Studio() = cycler_sprite : "Sprite Cycler" +[ + model(studio) : "Model / Sprite" : "" + sequence(integer) : "Animation # sequence (Models only)" + framerate(string) : "Framerate (Sprites only)" : 10 +] + +@PointClass Studio() base(Targetname, Angles, RenderFields) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + model(studio) : "Model / Sprite" : "sprites/dot.spr" + framerate(string) : "Framerate (Sprites only)" : "10.0" + scale(string) : "Scale (Sprites only)" : "1.0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + ] +] + +// +// Environmental effects +// + +//* the beam can lead to network lag due to continous changing animation. +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CS/beam.spr") = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + //* If you only give the beam one endpoint, then radius will specifies how + //* far away the other endpoint should be (randomly) placed. + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + //* This is the default unless you specify a name. + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + //* Makes the beam form a circle, with a diameter that stretches between the two endpoints. + //* For some unknown reason, both endpoints must have a model. + //* NB: because the beam will stretch between the origins of the two entities, you'll + //* need to give each endpoint an origin brush. + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) Studio("models/can.mdl") = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : "" = + [ + "" : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/CS/blood.spr") = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : "" = + [ + "" : "Black/White blood with yellow decals" + 1 : "Yellow blood with yellow decals" + 2 : "Red blood with red decals" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +//* Bubbles cannot drift sideways with this entity; use an env_model and +//* "valve/models/pipe_bubbles.mdl" instead. +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/envexplosion.spr") = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/EnvFunnel.spr") = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/EnvGlobal.spr") color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : "" = + [ + "" : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : "" = + [ + "" : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) sprite() = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite" : "sprites/glow01.spr" + scale(integer) : "Sprite Scale" : 1 +] + +@PointClass base(Targetname) iconsprite("sprites/CS/fade.spr") = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +//* NOT YET SUPPORTED BY COUNTER-STRIKE AS OF VERSION 1.3 WITH HALF-LIFE VERSION 1.1.0.8 +// Still not there no need to have this in because of all the ppl that desent read this +//@PointClass base(Targetname) iconsprite("sprites/CS/envfog.spr") = env_fog : "Global Fog Properties" +//[ +// fadein(integer) : "Fade in time" : 0 +// holdtime(string) : "Hold time (0 = permanent)" : "0" +// fadeout(integer) : "Fade out time" : 0 +// startdist(integer) : "Fog start position" : 0 +// enddist(integer) : "Fog end position" : 1000 +// rendercolor(color255) : "Fog Color (R G B)" : "255 255 255" +// spawnflags(flags) = +// [ +// 1 : "Start active" : 0 +// ] +//] + +//*may cause network lag due to changing animation. +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CS/laser.spr") = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/CS/Announcement.spr") = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : "" = + [ +//*small is <~800 units range + "" : "Small Radius" +//*medium is <~1250 units range + 1 : "Medium Radius" +//*large is <~2000 units range + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//*beta tested by [dmv]Cross, works in STEAM CS 1.6 +@PointClass base(Targetname) iconsprite("sprites/CS/EnvRain.spr") = env_rain : "rain Properties" [] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) iconsprite("sprites/CS/render.spr") = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/EnvShake.spr") = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) Studio("models/CS/envshooter.mdl") size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model" : "models/can.mdl" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + //* debris/glass1-4.wav + "": "Glass" + //* debris/wood1-4.wav + 1: "Wood" + //* debris/metal1-6.wav + 2: "Metal" + //* debris/flesh1-7.wav + 3: "Flesh" + //* debris/concrete1-3.wav + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +//* +//*this changes sound for the player UNTIL IT IS RESET by another env sound. make sure you reset it! +//* +@PointClass iconsprite("sprites/CS/EnvSound.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : "" = + [ + "" : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +//*beta tested by [dmv]Cross, works in STEAM CS 1.6 +@PointClass base(Targetname) iconsprite("sprites/CS/EnvSnow.spr") = env_snow : "snow Properties" [] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CS/EnvSpark.spr") = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, Angles, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Still Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Master, Targetx) iconsprite("sprites/CS/GameCounter.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Master, Target) iconsprite("sprites/CS/GameCounterSet.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) iconsprite("sprites/CS/GameEnd.spr") = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +//* buggy entity, must use with weapon strip to avoid giving duplicate +//* weapons to a player and causing a crash. +@PointClass base(Targetname) iconsprite("sprites/CS/GamePlayerEquip.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + weapon_knife (choices) : "Give Knife" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_usp (choices) : "Give USP45 (45acp Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_glock18 (choices) : "Give Glock 18 (9mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_deagle (choices) : "Give Desert Eagle (50ae Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_p228 (choices) : "Give P-228 (357sig Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_elite (choices) : "Give Beretta Elites (9mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_fiveseven (choices) : "Give Five-Seven (57mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_m3 (choices) : "Give Benelli M3 (12 Gauge)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_xm1014 (choices) : "Give Benelli XM1014 (12 Gauge)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_mp5navy (choices) : "Give MP5/Navy (9mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_tmp (choices) : "Give TMP (9mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_p90 (choices) : "Give FN P90 (57mm Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_mac10 (choices) : "Give Mac-10 (45acp Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_ump45 (choices) : "Give UMP 45 (45acp Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_ak47 (choices) : "Give AK-47 (762nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_sg552 (choices) : "Give SG552 (556nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_m4a1 (choices) : "Give M4A1 (556nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_aug (choices) : "Give Aug (556nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_scout (choices) : "Give Scout (762nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_awp (choices) : "Give AWP (338magnum Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_g3sg1 (choices) : "Give G3/SG-1 (762nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_sg550 (choices) : "Give SG550 (556nato Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_m249 (choices) : "Give M249 (556natobox Calibre)" : "" = + [ + "": "No" + 1: "Yes" + ] + weapon_famas (choices) : "CS 1.6 Famas (762nato)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_galil (choices) : "CS 1.6 Galil (556natobox)" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_shield (choices) : "CS 1.6 Police Riot Shield" : "" = + [ + "": "No" + 1: "Yes" + ] + + item_kevlar (choices) : "Give Kevlar Vest" : "" = + [ + "": "No" + 1: "Yes" + ] + + item_assaultsuit (choices) : "Give Kevlar Vest+Ballistic Helmet" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_flashbang (choices) : "Give Flash Bang" : "" = + [ + "": "No" + 1: "1" + 2: "2" + ] + + weapon_hegrenade (choices) : "Give High-Explosive Grenade" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_smokegrenade (choices) : "Give Smoke Grenade" : "" = + [ + "": "No" + 1: "Yes" + ] + + item_thighpack (choices) : "Give Defuse Kit" : "" = + [ + "": "No" + 1: "Yes" + ] + + weapon_c4 (choices) : "Give C4 Plastique Bomb" : "" = + [ + "": "No" + 1: "Yes" + ] + + ammo_9mm (choices) : "Give 9mm Parabellum Ammo" : "" = + [ + "": "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips (Fill Glock 18)" + 4: "4 Clips (Fill Elites, MP5 & TMP)" + ] + + ammo_45acp (choices) : "Give .45 ACP Ammo" : "" = + [ + "": "No" + 1: "1 Clip (12 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill USP45)" + 5: "5 Clips" + 6: "6 Clips" + 7: "7 Clips" + 8: "8 Clips (Fill Mac-10)" + 9: "9 Clips (Fill UMP 45)" + ] + + ammo_50ae (choices) : "Give .50 Deagle Ammo" : "" = + [ + "": "No" + 1: "1 Clip (7 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips" + 5: "5 Clips (Fill Desert Eagle)" + ] + + ammo_57mm (choices) : "Give 5.7mm Ammo" : "" = + [ + "": "No" + 1: "1 Clip (50 Bullets Per Clip)" + 2: "2 Clips (Fill Five-Seven & P90)" + ] + + ammo_357sig (choices) : "Give .357 SIG Ammo" : "" = + [ + "": "No" + 1: "1 Clip (13 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill P-228)" + ] + + ammo_buckshot (choices) : "Give 12 Gauge Ammo" : "" = + [ + "": "No" + 1: "1 Clip (8 Shells Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips (Fill Benelli M3, XM1014)" + ] + + ammo_762nato (choices) : "Give 7.62mm NATO Ammo" : "" = + [ + "": "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips (Fill Scout & G3/S-G1)" + 3: "3 Clips (Fill AK-47)" + ] + + ammo_556nato (choices) : "Give 5.56mm NATO Ammo" : "" = + [ + "": "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Fill SG552 M4A1 Aug SG550" + ] + + ammo_556natobox (choices) : "Give 5.56mm NATO Box Ammo" : "" = + [ + "": "No" + 1: "1 Clip (30 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips" + 4: "4 Clips" + 5: "5 Clips" + 6: "6 Clips" + 7: "7 Clips (Fill FN M249 Para)" + + ] + + ammo_338magnum (choices) : "Give .338 AWP Ammo" : "" = + [ + "": "No" + 1: "1 Clip (10 Bullets Per Clip)" + 2: "2 Clips" + 3: "3 Clips (Fill AWP)" + ] + + item_healthkit (choices) : "Give Health Kit" : "" = + [ + "": "No" + 1: "1 Healthkit = 15 Health Points" + 2: "2 Healthkits = 30 Health Points" + 3: "3 Healthkits = 45 Health Points" + 4: "4 Healthkits = 60 Health Points" + 5: "5 Healthkits = 75 Health Points" + 6: "6 Healthkits = 90 Health Points" + 7: "7 Healthkits = 100 Health Points" + ] + + item_battery (choices) : "Give HL HEV Battery" : "" = + [ + "": "No" + 1: "1 Battery = 15 Kevlar Points" + 2: "2 Batteries = 30 Kevlar Points" + 3: "3 Batteries = 45 Kevlar Points" + 4: "4 Batteries = 60 Kevlar Points" + 5: "5 Batteries = 75 Kevlar Points" + 6: "6 Batteries = 90 Kevlar Points" + 7: "7 Batteries = 100 Kevlar Points" + ] + + item_longjump (choices) : "Give HL Long Jump Module" : "" = + [ + "": "No" + 1: "Yes (An Unrealistic Item)" + ] + + spark_shower (choices) : "Make sparks" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/GamePlayerHurt.spr") = game_player_hurt : "Hurts player who fires" +[ + master(string) : "Master" + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/CS/GamePlayerTeam.spr") = game_player_team : "Allows player to change teams" +[ + master(string) : "Master" + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" +] + +@PointClass base(Targetname) iconsprite("sprites/CS/GameScore.spr") = game_score : "Award/Deduct Points" +[ + master(string) : "Master" + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 +] + +@PointClass base(Targetname, Master, Targetx) iconsprite("sprites/CS/GameTeamMaster.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : "" = + [ + "": "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 +] + +@PointClass base(Targetname, Master, Targetx) iconsprite("sprites/CS/GameTeamSet.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master, Target) iconsprite("sprites/CS/GameText.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + message(string) : "Message Text (79 Char. Limit)" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : "" = + [ + "" : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + master(string) : "Master" + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" +] + +@PointClass base(gibshooterbase) iconsprite("sprites/CS/gib.spr") = gibshooter : "Gib Shooter" [] + +@PointClass studio() base(PlayerClass, RenderFields, HostageAnim) = hostage_entity : "Hostage" +[ + model(studio) : "Model" : "models/hostage.mdl" + skin(integer) : "Skin" : 0 + body(integer) : "Body part 2 sub model" : 0 +] + + +// +// Info entities +// + +@PointClass iconsprite("sprites/CS/BombTarget.spr") = info_bomb_target : "Bomb target point" [] +@PointClass iconsprite("sprites/CS/MapParams.spr") color(255 128 0) = info_texlights : "Textur lights" +[ +// not shure if the spawn flag is supported + spawnflags(flags) = + [ + 1 : "Override?" : 1 + ] +] + +@PointClass iconsprite("sprites/CS/InfoCompileParameters.spr") = info_compile_parameters : "Compile Options" +[ + texdata(string) : "Texture Data Memory" : "4096" + estimate(choices) :"Estimate Compile Times?" : "" = + [ + "": "No" + 1: "yes" + ] + + priority(choices) : "Priority Level" : "" = + [ + "" : "Normal" + 1 : "High" + -1 : "Low" + ] + verbose(choices) : "Verbose compile messages" : "" = + [ + "" : "Off" + 1 : "On" + ] + +hlcsg(choices) : "HLCSG" : 1 = + [ + 1 : "Normal" + 2 : "Onlyents" + "" : "Off" + ] + wadautodetect(choices) : "Wad Auto Detect" : 1 = + [ + 1 : "On" + "" : "Off" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : "" = + [ + "" : "Yes" + 1 : "No" + ] + noskyclip(choices) : "Clip sky" : "" = + [ + "" : "Yes" + 1 : "No" + ] + nocliphull(choices) : "Generate clipping hulls" : "" = + [ + "" : "Yes" + 1 : "No" + ] + cliptype(choices) : "clipping type" : 3 = + [ + "" : "Smallest" + 1 : "Normalized" + 2 : "simple" + 3 : "Precise" + 4 : "Legacy" + ] + hullfile(string) : "Custom Hullfile" + wadconfig(string) : "Custom Wad Configuration" + +hlbsp(choices) : "HLBSP" : 1 = + [ + "" : "Off" + 1 : "Normal" + 2 : "Leakonly" + ] + +hlvis(choices) : "HLVIS" : 2 = + [ + "" : "Off" + 1 : "Fast" + 2 : "Normal" + 3 : "Full" + ] + +hlrad(choices) : "HLRAD" : 1 = + [ + "" : "Off" + 1 : "Normal" + 2 : "Extra" + ] + sparse(choices) : "Vismatrix Method" : 1 = + [ + "" : "No Vismatrix" + 1 : "Sparse Vismatrix" + 2 : "Normal" + ] + bounce(integer) : "Number of radiosity bounces" : 1 + ambient(string) : "Ambient light (0.000 to 1.000, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 1 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + lightdata(string) : "Light Data Memory in KB" : "6144" + circus(choices) : "Circus RAD lighting" : "" = + [ + "" : "Off" + 1 : "On" + ] + +] + + +@PointClass iconsprite("sprites/CS/HostageRescue.spr") = info_hostage_rescue : "Hostage rescue point" [] + +@PointClass iconsprite("sprites/CS/MapParams.spr") = info_map_parameters : "Miscellaneous mapping parameters" +[ + buying(choices) : "Weapon_Buying" : "" = + [ + "": "Both teams can buy guns" + 1: "Only CT's can buy guns" + 2: "Only T's can buy guns" + 3: "Neither CT's nor T's can buy guns" + ] + bombradius(integer) : "Bomb Radius" : 500 +] + +@PointClass base(Targetname) iconsprite("sprites/CS/null.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass, PlayerAnim) studio() = info_player_deathmatch : "Terrorist start" +[ +model(choices) : "Model (editor)" : "models/player/guerilla/guerilla.mdl" = + [ + "models/player/arctic/arctic.mdl": "Arctic" + "models/player/guerilla/guerilla.mdl": "Guerilla" + "models/player/leet/leet.mdl": "Leet" + "models/player/terror/terror.mdl": "Terror" + ] +] + +@PointClass base(PlayerClass, PlayerAnim) studio() = info_player_start : "Counter-terrorist start" +[ +model(choices) : "Model (editor)" : "models/player/gsg9/gsg9.mdl" = + [ + "models/player/gign/gign.mdl": "Gign" + "models/player/gsg9/gsg9.mdl": "Gsg9" + "models/player/sas/sas.mdl": "Sas" + "models/player/urban/urban.mdl": "Urban" + ] +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/CS/EnvTarget.spr") = info_target : "Beam Target" [] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass) iconsprite("sprites/CS/infoteleportdestination.spr") = info_teleport_destination : "Teleport destination" [] + +@PointClass studio("models/player/vip/vip.mdl") base(PlayerClass, PlayerAnim) = info_vip_start : "VIP start" [] + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] +// +// items +// + +// all items will respawn after a shot period in a multiplayer game. +// in MP item_security respawns on time not round start +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_antidote.mdl") = item_antidote : "Antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_kevlar.mdl") = item_assaultsuit : "Assaultsuit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_kevlar.mdl") = item_kevlar : "Kevlar" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_battery.mdl") = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_longjump.mdl") = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon) Studio("models/w_security.mdl") = item_security : "Security card" [] + +// +// Light entities +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Light) = light : "Invisible lightsource" [] + +@PointClass base(Targetname, Target, Light) iconsprite("sprites/CS/LightEnvironment.spr") = light_environment : "Environment" +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 270 0" + pitch(integer) : "Pitch" : -90 +//Shade is used only by Adam Foster's hack of HLRAD to vary the color of shade. + _diffuse_light(color255) : "Shade" : "255 255 128 200" +] + +@PointClass base(Targetname, Target, Angles, Light) iconsprite("sprites/CS/LightSpot.spr") = light_spot : "Spotlight" +[ + pitch(integer) : "Pitch" : -90 + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + _sky(Choices) : "Is Sky" : "" = + [ + "" : "No" + 1 : "Yes" + ] +] + +//* ------------------------------------------------------------------------------------------------------------ +//* Triggers a sequence of up to 16 entities, at various time offsets. +//* To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode +//* and add fields manually. The name of the field is the targetname of the entity to trigger, +//* and the contents of the field are the time (in seconds) to wait before triggering it. +//* +//* Beware: the seconds countdown will continue thru round ends causing some events to happen into the next round. +//*------------------------------------------------------------------------------------------------------------ +@PointClass base(Targetname) color(255 128 0) iconsprite("sprites/CS/multi_manager.spr") = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + //* By default, a manager will ignore all inputs while it's performing a sequence. + //* Tick this to allow more than one sequence to run at a time. + 1 : "multithreaded" : 0 + ] +] + +//* +//*multiple inputs to one switch, the AND gate +//* +@PointClass base(Targetname, Target) color(128 255 128) iconsprite("sprites/CS/MultiSource.spr") = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) iconsprite("sprites/CS/PathCorner.spr") = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport to next corner" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 +//*if speed more than 2000 problems may result + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) size(16 16 16) iconsprite("sprites/CS/PathTrack.spr") = path_track : "Train Track Path" +[ + target(target_destination) : "Next stop target" + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" +//if speed more than 2000 problems may result + speed(integer) : "New Train Speed" : 0 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/CS/PlayerWeaponStrip.spr") = player_weaponstrip : "Strips player's weapons" [] + +// +// Monsters +// + +@PointClass studio("models/scientist.mdl") base(PlayerClass, RenderFields, HostageAnim) size(-16 -16 0, 16 16 72) = monster_scientist : "Scientist Hostage" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + "" : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass iconsprite("sprites/CS/TestEffect.spr") base(Targetname) = test_effect : "yellow charge" [] + +// +// Trigger entities +// + +// +//will only trigger ONCE per MAP, will not reset or retrigger for a new round! +// +@PointClass base(Targetx) iconsprite("sprites/CS/TriggerAuto.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : "" = + [ + "" : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +// +//before team selection, engine will cycle thru all camera views whether usable or not to show views of level. +// +@PointClass base(Targetname, Targetx, Angles) Studio("models\CS\TriggerCamera.mdl") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] +// +//note: max speed is 2000 or things go wrong +// + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +// +//makes another trigger point to something different. +// +@PointClass base(Targetname, Targetx) iconsprite("sprites/CS/TriggerChangetarget.spr") = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname, Master) = trigger_autosave : "Auto save" [] + +// +//gravity changes player state, will have to be reset to normal as player leaves low friction area. +// +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0.0-1)" : 1 + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname, Master, Target) = trigger_hurt : "Trigger player hurt" +[ + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + dmg(integer) : "Damage" : 10 + damagetype(choices) : "Damage Type" : "" = + [ + "" : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" +[ + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] +// +//speed of ~1000 needed to go up. +// + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/CS/TriggerRelay.spr") = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : "" = + [ + "": "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" +[ + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + + +// +// Function entities +// + +@SolidClass = func_bomb_target : "Bomb target zone" +[ + target(target_destination) : "Target (when bomb blows)" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT, TexLightType) = func_breakable : "Breakable Object" +[ + onlydamagedby(choices) : "Break on grenade touch" : 0 = + [ + 0: "No" + 1: "Yes" + ] + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Stand on Pressure is buggy" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Targetname, Global, Master, Target, RenderFields, Angles, ZHLT, TexLightType) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + netname(target_destination) : "Target Path" + //* Path Target overrides Targetted Object + health(integer) : "Health (shootable if > 0)" : 0 + lip(integer) : "Lip" : 0 + //* The number against each sound (except Lightswitch) corresponds to the wav file + //* played. e.g. Buzz (10) plays "buttons/button10.wav". + sounds(choices) : "Sounds" : "" = + [ + "": "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] +//* see baseclass door sound notes + locked_sound(choices) : "Locked Sound" : "" = + [ + "": "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : "" = + [ + "": "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : "" = + [ + "": "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : "" = + [ + "": "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass = func_buyzone : "Buy zone" +[ + team(choices) : "Team" : "" = + [ + "": "All teams (unassigned)" + 1: "Terrorist" + 2: "Counter-terrorist" + ] + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT, TexLightType) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Door, ZHLT, TexLightType) = func_door : "Basic sliding door" [] + +@SolidClass base(Door, Angles, ZHLT, TexLightType) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] +//*may not work in LINUX system servers. +@SolidClass = func_escapezone : "Terrorist escape zone" +[ + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +//* +//* friction changes player state, will have to be reset to normal as player leaves low friction area. +//* 0% = No friction, 100% = Normal Friction +//* +@SolidClass base(RenderFields, ZHLT, Appearflags, TexLightType) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +// Notes, from info by FJL: +// func_grencatch checks for what type grenade falls in its space. If for instance, func_grencatch +// is set up to check for a smokegrenade, then the smokegrenade must be thrown and +// land within the solid entities occupied space for it to trigger another entity. +// I do not really know what the "Disable On Grenade" field is for. +// This entity actually will work on multiplayer games but will only function ONCE per MAP, not per round. + +@SolidClass = func_grencatch : "Grenade Check" +[ + triggerongrenade(string) : "Trigger When Grenade Hits" + grenadetype(choices): "grenade type" : "flash" = + [ + "flash": "Flashbang" + "smoke": "Smoke grenade" + ] + disableongrenade(string) : "Disable On Grenade" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] + +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT, TexLightType) = func_guntarget : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Global, RenderFields, ZHLT, TexLightType) = func_healthcharger: "Wall health recharger" +[ + //* dmdelay may not work in CS + dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass = func_hostage_rescue : "Hostage rescue zone" +[ + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname, RenderFields, ZHLT, TexLightType) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -3: "water" + -4: "slime touch drown" + -5: "lava touch fire death" + -7: "Volumetric Light" + -16: "make ladder" + ] + _minlight(string) : "Minimum light level" : "0" +] + +//* Creates an invisible, climbable field. +@SolidClass base(Targetname) = func_ladder : "Ladder" +[ +zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : "" = + [ + "" : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +//* Only partially implemented, some keys don't work properly. +//* NOTE: the continous changing animation can lead to lag. +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, Appearflags, TexLightType) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(string) : "Minimum light level" : "0" +//* _minlight(integer) : "_minlight" : 0 +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT, TexLightType) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, TexLightType, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Breakable, RenderFields, ZHLT, TexLightType) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : "" = + [ + "": "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Broken on touch is buggy" : 0 + 4 : "Pressure is buggy" : 0 + 128: "Breakable" : 1 + 256: "Instant Crowbar" : 1 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Global, RenderFields, ZHLT, TexLightType) = func_recharge: "Battery recharger" +[ + dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" : "0" +] + +//* Like func_button, except it rotates. +@SolidClass base(Targetname, Global, Master, Target, Angles, RenderFields, ZHLT, TexLightType) = func_rot_button : "RotatingButton" +[ + delay(string) : "Delay before trigger" : "0" + //* changetarget will change the button's target's TARGET field to the button's changetarget when button is pressed. + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" : 0 + //* The number against each sound corresponds to the wav file + //* played. e.g. Squeaky (1) plays "buttons/lever1.wav". + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + 3: "3 sec default" + ] + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, TexLightType) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + //* The number against each sound corresponds to the wav file + //* played. e.g. Slow Rush (2) plays "fans/fan2.wav". + sounds(choices) : "Fan Sounds" : "" = + [ + "" : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + //* The sound to play while active. This will only be used if "Fan Sounds" is set to "No Sound". + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + //* This, and the other "radius" settings, only affect the + //* way the Fan Sounds are played; if you set a small radius, + //* the sounds will only be audible near to the fan. + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(string) : "Minimum light level" : "0" +//* _minlight(integer) : "_minlight" : 0 + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT, TexLightType) = func_tank : "Brush MG Turret" +[ + bullet(choices) : "Bullets" : "" = + [ + "": "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(BaseTank, ZHLT, TexLightType) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT, TexLightType) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Trackchange, ZHLT, TexLightType) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(Targetname, Global, Angles, RenderFields, ZHLT, TexLightType) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" +//* +//*if startspeed is not 0, then maybe no train sounds +//* + //* The number against each sound corresponds to the wav file + //* played. e.g. Rail 1 plays "plats/ttrain1.wav". + sounds(choices) : "Sound" : "" = + [ + "": "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] +//* +//*distance between wheels relates to stability in turns +//* + wheels(integer) : "Distance between the wheels" : 50 +//* +//*relates to how high above track ORIGIN brush for train runs. +//* + height(integer) : "Height above track" : 4 +//* +//*note: max speed is >2000 or things go wrong +//*and if startspeed is not 0, then maybe no train sounds +//* + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 +//*stabilty of turn Banking depends on distance between wheels + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" : "0" +] + + +//* A func_train will not be rendered correctly once it has gone about +//* 4096 units from its spawn position (ie where it sits in worldcraft +//* space). An invisible func_train will still be correctly moving +//* around your train path, it is only the visible piece of the train +//* that gets 'stuck'. +//* So try having your train sitting in the middle of worldcraft's +//* space when you compile the level. +//*(note- a func_train gets its lighting info from where it sits when +//* compiled) +@SolidClass base(Targetname, Global, RenderFields, ZHLT, TexLightType) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : "" = + [ + "": "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : "" = + [ + "": "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + ] +//* +//*note: max speed is 2000 or things go wrong +//* + speed(integer) : "Speed (units per second)" : 64 +//* +//* avelocity is fixed speed of tumbling, cannot be changed in play +//* + avelocity(string) : "Angular velocity (Y Z X)" : "0 0 0" + dmg(integer) : "Damage on crush" : 0 + skin(choices) : "Contents (if not solid)" : "" = + [ + "": "default" + -1: "if non solid Empty" + -3: "if non solid swimable water" +//* +//*odd slime, lava and ladder can be used, but do not behave as other slime,lava,ladders. +//* + -4: "if non solid odd slime" + -5: "if non solid odd lava" + -7: "if non solid Volumetric Light" + -16: "if non solid odd ladder" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname, Angles, RenderFields, ZHLT, TexLightType) = func_vehicle : "Drivable Vehicles" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : "" = + [ + "": "None" + 1: "Vehicle 1" + 2: "Vehicle 2" + 3: "Vehicle 3" + 4: "Vehicle 4" + 5: "Vehicle 6" + 6: "Vehicle 7" + ] + length(integer) : "Length of the vehicle" : 256 + width(integer) : "Width of the vehicle" : 128 + height(integer) : "Height above track" : 4 +//* +//*note: max speed is 2000 or things go wrong +//* + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass = func_vehiclecontrols : "Vehicle Controls" +[ + target(target_destination) : "Vehicle Name" + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass = func_vip_safetyzone : "VIP safety zone" +[ + zhlt_invisible(choices) :"Invisible" : 1 = + [ + 1: "yes" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT, TexLightType, Appearflags) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" : "0" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -1: "Empty" + -3: "Water" + -4: "Slime" + -5: "Lava" + -16: "ladder (only with non ! texture)" + ] + WaveHeight(string) : "Wave Height" : "0" +] + + +// +// Miscellaneous entities +// + + +@SolidClass base(Master, Target, Angles, RenderFields, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Master, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + sounds(choices) : "Sounds" : "" = + [ + "": "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(string) : "Minimum light level" : "0" +//* _minlight(integer) : "_minlight" : "0" +] \ No newline at end of file diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/cry-of-fear.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/cry-of-fear.fgd new file mode 100644 index 0000000..91333b5 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/cry-of-fear.fgd @@ -0,0 +1,5808 @@ +// Spirit of Half-Life v1.5 FGD +// For WorldCraft 3.5+ and Half-Life 1.1.0.8+ +// Last update: 4th August 2004 +// Created by Laurie Cheers - http://www.bearkey.com/?laurie +// Additions by Shambler Team - http://shamteam.cbi.ru/ +// Additions by Killar - http://www.bearkey.com/?killar +// Additions by Confused - http://www.bearkey.com/?confused +// Additions by Mike - http://www.bearkey.com/?mike2k +// Additions by ytiAdmin - http://www.bearkey.com/?ytiadmin +// Additions by DeathWish - http://www.bearkey.com/?deathwish + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : "0.0" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display 'Half-Life' title?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "Flush global entities?" : 0 = + [ + 0 : "No, keep global ents" + 1 : "Yes, flush global ents" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + startsuit(choices) : "HEV from start" = + [ + 0 : "No" + 1 : "Yes" + ] + allowmonsters(choices) : "Allow Monsters (MP only)" = + [ + 0 : "No" + 1 : "Yes" + ] + allow_sp_gjump(choices) : "Allow SP Gauss Jump" = + [ + 0 : "No (Default)" + 1 : "Yes" + ] + nomusicstop(choices) : "No Music Stop" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + noitemdropping(choices) : "No item dropping?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + noise3(string) : "Custom no item dropping message" + + nosimon(choices) : "No Sick Simon coop" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + iuser1(choices) : "Lobby map" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + doctormap(string) : "Custom doctor restart map" + iuser2(choices) : "Can drop phone?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + materialstxt(string) : "Custom materials.txt (eg sound/materials.txt)" : "sound/materials.txt" + player1(string) : "Custom plr mdl (1)" : "police1" + player2(string) : "Custom plr mdl (2)" : "police2" + player3(string) : "Custom plr mdl (3)" : "police3" + player4(string) : "Custom plr mdl (4)" : "police4" + customsleeve(string) : "Custom sleeve tga" + customfingers(string) : "Custom fingers tga" + customgloves(string) : "Custom gloves tga" + iuser3(choices) : "Allow revolver dualwield" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" +] +@BaseClass = ZHLTLightKeys +[ + zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 = + [ + 0: "Normal (0)" + 1: "Embedded Fix (1)" + 2: "Opaque (Blocks light) (2)" + 3: "Opaque + Embedded Fix (3)" + 6: "ConcaveFix (6)" + ] + light_origin(string) : "Light Origin (ZHLT 2.5.1+)" +] +@BaseClass = ZhltLights +[ + _fade(integer) : "Fade (ZHLT 2.5.1+)" + _falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 = + [ + 1: "Inverse Square (1)" + 2: "Inverse Linear (2)" + ] +] +@BaseClass = TexLight +[ + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] +@BaseClass = SwitchTexLight +[ + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + -1: "Switchable (starts on)" + -2: "Switchable (starts off)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] +@BaseClass = Appearflags +[ + skill(choices) : "Skill setting" : 0 = + [ + 0 : "All skills" + 1 : "Not in easy" + 2 : "Not in medium" + 4 : "Not in hard" + 6 : "Only in easy" + 5 : "Only in medium" + 3 : "Only in hard" + ] + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass = MoveWith +[ + movewith(target_destination) : "Moves with" +] +@BaseClass = Master +[ + master(string) : "Master" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon +[ + frags(choices) : "Default bullets in clip" : -1 = + [ + -1 : "Normal" + -2 : "Empty" + ] + master(string) : "Item Lock Master" + customv(string) : "Custom v model" + customw(string) : "Custom w model" + customscript(string) : "Custom weapon script" +] +@BaseClass base(Weapon) color(80 0 200) = Ammo [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 14: "Constant Glow (Sprites)" + 15: "Distort (Models)" + 16: "Hologram (Distort + fade)" + 18: "Bulge Sideways (Models)" + 19: "Glowing Aura (Models)" + 21: "Reflection (Models)" + 22: "Entity in PVS" + 70: "Skybox Entity" + 100: "Fullbright Pro" + 137: "Skybox Entity Fullbright Pro" + 184: "Camera attached light" + ] +] +@BaseClass = RenderMode +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Pure Color" + 2: "Texture" + 3: "Glow (sprites only)" + 4: "Solid" + 5: "Additive" + ] +] +@BaseClass base(RenderFxChoices, RenderMode) = RenderFields +[ + renderamt(integer) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] +@BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax +[ + renderamt(integer) : "FX Amount (1 - 255)" : 255 + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" +] +@BaseClass = LockSounds +[ + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0 : "None" + 2 : "Access Denied (2)" + 8 : "Small zap (8)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + 12: "Latch Locked (12)" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0 : "None" + 1 : "Big zap & Warmup (1)" + 3 : "Access Granted (3)" + 4 : "Quick Combolock (4)" + 5 : "Power Deadbolt 1 (5)" + 6 : "Power Deadbolt 2 (6)" + 7 : "Plunger (7)" + 8 : "Small zap (8)" + 9 : "Keycard Sound (9)" + 10: "Buzz (10)" + 13: "Latch Unlocked (13)" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied (NA)" + 2: "Security Lockout (ND)" + 3: "Blast Door (NF)" + 4: "Fire Door (NFIRE)" + 5: "Chemical Door (NCHEM)" + 6: "Radiation Door (NRAD)" + 7: "Gen. Containment (NCON)" + 8: "Maintenance Door (NH)" + 9: "Broken Shut Door (NG)" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted (EA)" + 2: "Security Disengaged (ED)" + 3: "Blast Door (EF)" + 4: "Fire Door (EFIRE)" + 5: "Chemical Door (ECHEM)" + 6: "Radiation Door (ERAD)" + 7: "Gen. Containment (ECON)" + 8: "Maintenance area (EH)" + ] +] +@BaseClass base(Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] +@BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster +[ + health(integer) : "Initial health (0 = normal)" + model(studio) : "Model (e.g. models/can.mdl)" + skin(integer) : "Skin" + scale(string) : "Scale (1.0 = normal size)" + target(string) : "Patrol Path" + m_iClass(choices) : "Behave as" : 0 = + [ + 0 : "Normal" + 3 : "Scientist" + 11: "Barney" + 4 : "Human Military" + 1 : "Machine (Human Military)" + 5 : "Alien Military" + 7 : "Other Alien" + 8 : "Headcrab" + 9 : "Bullsquid" + 14 : "Faction A" + 15 : "Faction B" + 16 : "Faction C" + ] + m_iPlayerReact(choices) : "Reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + 2 : "Friendly until hurt" + 3 : "Friendly unless provoked" + 4 : "Enemy" + ] + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "Monster Clip" : 0 + 16: "Prisoner" : 0 + 128: "No yellow blobs" : 0 + 512: "Fade Corpse" : 0 + 4096: "Doesn't scare" : 0 + ] +] +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" + RefusalSentence(String) : "Refusal Sentence" + master(String) : "Master (prevents following)" + SpeakAs(string) : "Speech Group" + spawnflags(Flags) = + [ + 256: "Pre-Disaster" : 0 + ] +] +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + m_iGibs(integer) : "Number of shots" : 1 + delay(string) : "Delay between shots" : "0" + m_iszPosition(string) : "At position (blank = here) [LP]" + m_iszVelocity(string) : "At velocity (blank = angle) [LV]" + m_flVelocity(string) : "Gib Speed Factor [LR]" : "200" + m_flVariance(string) : "Course Variance" : "0.15" + m_flGibLife(string) : "Shot lifetime (secs)" : "4" + m_iszTargetName(string) : "Shot's name" + m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + 4 : "Debug" : 0 + ] +] +@BaseClass = Light +[ + targetname(target_source) : "Name" + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance (static)" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + pattern(string) : "Custom Appearance (on)" + m_iOnStyle(Choices) : "Appearance (on)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + m_iOffStyle(Choices) : "Appearance (off)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 + m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 + m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] +@BaseClass base(Targetname, Global) = Breakable +[ + target(target_destination) : "Target on break" + whenhit(string) : "Trigger when hit (locus = position)" + health(integer) : "Strength" : 100 + material(choices) : "Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + respawn(choices) : "Respawn time (secs)" : 0 = + [ + 0: "No respawn" + -1: "Respawn when triggered" + ] + netname(string) : "Target on respawn" + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Fade Respawn" : 0 + 16 : "Invert Hit Vector" : 0 + 256: "Instant Crowbar" : 0 + ] +] +@BaseClass base(Appearflags) = Door +[ + target(target_destination) : "Target (Always)" + message(string) : "Target on Open" + netname(string) : "Target on Close" + killtarget(target_destination) : "KillTarget" + immediatemode(choices) : "Fire before moving" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + onoffmode(choices) : "On/Off Aware" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + speed(integer) : "Speed" : 100 + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake (1)" + 2: "Clang reverb (2)" + 3: "Ratchet Stop (3)" + 4: "Chunk (4)" + 5: "Light airbrake (5)" + 6: "Metal Slide Stop (6)" + 7: "Metal Lock Stop (7)" + 8: "Snappy Metal Stop (8)" + ] + wait(choices) : "Delay before close" : 3 = + [ + -1 : "Stays Open (-1)" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + delay(integer) : "Delay before fire" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + 1024: "Force Touchable" : 0 + ] + _minlight(string) : "Minimum light level" +] +@BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 2 : "Not Solid" : 0 + 16: "Line of Sight" : 0 + 32: "Controllable" : 0 + 64: "Laser Spot" : 0 + 128: "Match Target" : 0 + ] + master(string) : "(Team) Master" + firemaster(string) : "Fire Master" + m_iszLocusFire(string) : "Trigger on firing (locus = barrel)" + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + m_iClass(choices) : "Behaviour" : 0 = + [ + 0: "Attack only players" + 11: "Barney" + 4: "Human Military" + 5: "Alien Military" + ] + _minlight(string) : "Minimum light level" +] +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + custommovesnd(sound) : "Custom Move Sound" + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + customstopsnd(sound) : "Custom Stop Sound" + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] +@BaseClass base(Targetname, Master, Targetx) = Trigger [] +@BaseClass = TriggerCond +[ + netname(string) : "Triggered only by entity" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables" : 0 + 8: "Everything else": 0 + ] +] +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = Script +[ + target(target_destination) : "Target (fire when done)" + delay(string) : "Delay before firing target" : "0" + killtarget(target_destination) : "KillTarget when done" + m_iszFireOnBegin(string): "Fire after moving" + m_iszEntity(string) : "Target Monster [LE]" + m_flRadius(integer) : "Search Radius" : 512 + m_iPriority(choices) : "Priority" : 0 = + [ + 0 : "Normal" + 4 : "Override other sequences" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + m_iRepeats(integer) : "Repeat action X more times" : 0 + m_fRepeatFrame(string) : "Repeat from frame" : "0" + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 32: "No Interruptions" : 0 + ] +] +@BaseClass base(Script) size(-16 -16 0, 16 16 72) color(255 0 255) = ScriptSequence +[ + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No (don't turn)" + 1 : "Walk" + 2 : "Run" + 5 : "No - Only turn" + 4 : "Instant move + turn" + 6 : "No - Instant turn" + ] + m_iszAttack(string) : "Turn target (blank = this) [LE]" + m_fTurnType(choices) : "Turn mode" : 0 = + [ + 0 : "Match Angle" + 1 : "Turn to face" + 2 : "Don't Turn" + ] + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + spawnflags(Flags) = + [ + 8 : "Leave Corpse" : 0 + 128: "No Script Movement" : 0 + 256: "Monster Dies" : 0 + ] +] +@PointClass base(ScriptSequence) = aiscripted_sequence : "AI Scripted Sequence" [] +@PointClass base(Targetname) color(204 179 179) = ambient_fmodstream: "FMOD Audio player (MP3/OGG/WMA)" +[ + message(string) : "File Name" + spawnflags(flags) = + [ + 1: "Remove on fire" : 0 + 2: "Loop" : 0 + ] + frags(choices) : "Music fade in time" : 0 = + [ + 0 : "Instant" + ] +] +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name (e.g. vox/c.wav)" + health(integer) : "Volume (10 = loudest)" : 10 + target(target_destination) : "Entity to play from" + channel(choices) : "Channel to use for that entity" : 6 = + [ + 1: "Weapon" + 2: "Voice" + 3: "Item" + 4: "Body" + 5: "Stream" + 6: "Static" + ] + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + noise(string) : "Calc_ratio Volume (overrides)" : "" + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(choices) : "LFO type (0 - 3)" : 0 = + [ + 0: "Off" + 1: "Square" + 2: "Triangle" + 3: "Round" + ] + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 0 + 8: "Large Radius" : 0 + 16:"Start Silent" : 0 + 32:"Is NOT Looped" : 0 + ] +] +@SolidClass base(Target, Master, RenderFields, ZHLTLightKeys, MoveWith) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates": 0 + 2: "Start On" : 0 + 4: "Non Solid" : 0 + 8: "Can't shoot" : 0 + ] +] +@PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_position : "Calculate position" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Position to calculate" : 1 = + [ + 0 : "Origin" + 1 : "Eyes" + 2 : "Top" + 3 : "Centre" + 4 : "Bottom" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + 9 : "Random" + ] + message(string) : "Add offset [LV]" : "0 0 0" +] +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_ratio : "Ratio adjustment" +[ + target(string) : "Based on ratio [LR]" : "*locus" + skin(choices) : "Ratio to get (Basis)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + impulse(choices) : "Transformation" : 0 = + [ + 0 : "None" + 1 : "Reversed (1-X)" + 2 : "Negative (-X)" + 3 : "Reciprocal (1/X)" + ] + netname(string) : "Offset by [LR]" : "0" + body(choices) : "Ratio to get (Offset)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + message(string) : "Scale factor [LR]" : "1" + button (choices) : "Ratio to get (Scale)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + noise(string) : "Min (blank = none) [LR]" + noise1(string) : "Max (blank = none) [LR]" + frags(choices) : "If outside range" : 0 = + [ + 0 : "Pick nearest value" + 1 : "Wrap around" + 2 : "Bounce back" + ] +] +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_subvelocity : "Calculate velocity based on entity properties" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Value to calculate from" : 0 = + [ + 0 : "Movement Velocity" + 1 : "Angle" + 2 : "View Angle" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + ] + noise(string) : "Scale factor [LR]" : "1.0" + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + 1 : "Normalize" : 0 + 2 : "Flip Vertical" : 0 + 4 : "Discard X" : 0 + 8 : "Discard Y" : 0 + 16 : "Discard Z" :0 + ] +] +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_path : "Calculate velocity for travelling" +[ + target(string) : "Start position [LP]" : "*locus" + netname(string) : "Destination" + armorvalue(choices) : "Destination is" : 0 = + [ + 0 : "Position [LP]" + 1 : "Offset [LV]" + ] + health(choices) : "Length Calculation" : 0 = + [ + 4 : "Square (X = X*X)" + 0 : "None (X = X)" + 1 : "Normalise (X = 1)" + 2 : "Reciprocal (X = 1/X)" + 3 : "Inverse Square (X = 1/X*X)" + ] + noise(string) : "Length factor [LR]" : "1.0" + frags(choices) : "Line is blocked by" : 0 = + [ + 0 : "Nothing" + 1 : "Walls" + 2 : "Walls & Glass" + 3 : "Walls & Monsters" + 4 : "Walls, Monsters & Glass" + ] +] +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_polar : "Calculate velocity" +[ + netname(string) : "Based on velocity [LV]" + angles(string) : "Rotated by angle (Y Z X)" : "0 0 0" + noise(string) : "Length factor [LR]" : "1.0" + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + 1 : "Normalize" : 0 + ] +] +@SolidClass base(Targetname, Target, MoveWith) = camera_spot_trigger: "Camera trigger"[] +@PointClass base(Targetname, RenderFields, MoveWith) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" +] +@PointClass base(Targetname, RenderFields, MoveWith) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 +] +@PointClass base(Monster, MoveWith) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" [] +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass size(-8 -8 -8, 8 8 8) color(159 203 223) = env_static_decal : "new decal" +[ + netname(string) : "Decal group name" : "0" + skin(choices) : "Direction" : 0 = + [ + 0 : "Auto" + 1 : "Negative X" + 2 : "Positive X" + 3 : "Negative Y" + 4 : "Positive Y" + 5 : "Negative Z" + 6 : "Positive Z" + ] +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) iconsprite("sprites/envbeam.spr") size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "0" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Distortion (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (-1 = never)" : "0" + damage(string) : "Damage / second" : "0" + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 128 : "Crowbar" + 256 : "Electric shock" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + target(target_destination) : "Fire on trip" + netname(target_destination) : "Tripped only by entity" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_beamtrail : "Beam trail effect" +[ + target(string) : "Entity to trail (blank = this) [LE]" + netname(sprite) : "Sprite Name" : "sprites/smoke.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + armorvalue(integer) : "Width" : 5 + health(string) : "Fade time (secs)" : "4.0" + spawnflags(flags) = + [ + 1: "Start off" : 0 + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_beverage : "Beverage Dispenser" +[ + target(string) : "Initial position (blank = here) [LP]" + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/env.spr") = env_blood : "Blood Effects" +[ + target(string) : "Initial position (blank = here) [LP]" + netname(string) : "Direction (blank = angles) [LV]" + color(choices) : "Blood Color" : 0 = + [ + 0: "Red (Human)" + 1: "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] +@SolidClass base(Targetname, ZHLTLightKeys, MoveWith) iconsprite("sprites/env.spr") = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] +@PointClass color(78 32 108) = env_customize : "Change entity properties" +[ + targetname(target_source) : "Name" + target(string) : "Target to affect [LE]" + m_flRadius(integer) : "Search Radius" : 512 + body(choices) : "Set body" : -1 = + [ + -1 : "No change" + ] + skin(choices) : "Set skin" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Skin 0 (normal)" + 1 : "Skin 1" + 2 : "Skin 2" + 3 : "Skin 3" + ] + frame(choices) : "Set brush texture" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Texture 0 (normal)" + 1 : "Texture 1 (alternate)" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + m_iszModel(string) : "Set model (e.g. models/can.mdl)" + m_bloodColor(choices) : "Blood Color" : 0 = + [ + 0 : "No change" + -1 : "Don't Bleed" + 247 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + m_voicePitch(choices) : "Voice Pitch (100 = normal)" : -1 = + [ + -1 : "No change" + ] + m_fFramerate(string) : "Frame rate (-1 = no change)" : "-1" + m_fController0(choices) : "Bone controller 0" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_fController1(choices) : "Bone controller 1" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_fController2(choices) : "Bone controller 2" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_fController3(choices) : "Bone controller 3" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_iClass(choices) : "Set behaviour" : 0 = + [ + 0 : "No change" + 3 : "Scientist" + 11: "Barney" + 4 : "Human Military" + 1 : "Machine (Human Military)" + 5 : "Alien Military" + 7 : "Other Alien" + 8 : "Headcrab" + 9 : "Bullsquid" + 14 : "Faction A" + 15 : "Faction B" + 16 : "Faction C" + ] + m_iPlayerReact(choices) : "Reaction to player" : -1 = + [ + -1 : "No Change" + 0 : "Normal" + 1 : "Ignore" + 2 : "Friendly until hurt" + 3 : "Friendly unless provoked" + 4 : "Enemy" + ] + m_iVisible(choices) : "Visibility" : 0 = + [ + 0: "No change" + 1: "Visible" + 2: "Invisible" + 3: "Toggle" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + m_iSolid(choices) : "Solidity" : 0 = + [ + 0: "No change" + 1: "Solid" + 2: "Not Solid" + 3: "Toggle" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + m_iPrisoner(choices) : "Prisoner" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + m_iMonsterClip(choices) : "MonsterClip flag" : 0 = + [ + 0: "No change" + 1: "On" + 2: "Off" + 3: "Toggle" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + m_iProvoked(choices) : "Angry At Player" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + 4: "On/Off based on usetype" + 5: "Off/On based on usetype" + ] + spawnflags(flags) = + [ + 1: "Affect corpses" : 0 + 2: "Once Only" : 0 + 4: "Debug" : 0 + ] +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_decal : "Decal sprayer" +[ + target(string) : "Position (blank = here) [LP]" + netname(string) : "Spray direction (blank = angle) [LV]" + message(string) : "Max distance (blank = none) [LR]" + impulse(choices) : "Decal group" : 0 = + [ + 1 : "Gunshot" + 5 : "Big gunshot" + 2 : "Blood" + 3 : "Alien blood" + 4 : "Glass cracks" + 6 : "Scorch marks" + 7 : "Bullsquid splat" + 0 : "Custom (see below)" + ] + noise(sprite) : "Custom decal texture" +] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_dlight : "Dynamic light effect" +[ + message(string) : "Position (blank = here) [LP]" + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + radius(integer) : "Radius" : 12 + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_elight : "Entity light effect" +[ + netname(string) : "At position (blank = here) [LP]" + target(string) : "Entity to follow (blank = this) [LE]" + impulse(choices) : "Attachment point on that entity" : 0 = + [ + 0 : "None" + 1 : "1" + 2 : "2" + 3 : "3" + 4 : "4" + ] + renderamt(integer) : "Radius" : 12 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] +@PointClass iconsprite("sprites/env.spr") = rain_settings : "Constant map settings" +[ + m_flDistance(integer) : "Rain distance" : 1000 + m_iMode(choices) : "Weather type" : 0 = + [ + 0: "Rain" + 1: "Snow" + ] +] +@PointClass iconsprite("sprites/env.spr") = rain_modify : "Modify rain settings" +[ + m_flTime(integer) : "Fading time" : 0 + m_iDripsPerSecond(integer) : "Drips per second" : 800 + m_flWindX(integer) : "Wind X" : 0 + m_flWindY(integer) : "Wind Y" : 0 + m_flRandX(integer) : "Rand X" : 0 + m_flRandY(integer) : "Rand Y" : 0 +] +@SolidClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_rain : "Rain Effect" +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + m_dripSpeed(integer) : "Drip Speed" : 40 + m_dripSize(integer) : "Drip Width" : 5 + m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 + rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" + m_iNoise(integer) : "Beam noise (distortion)" : 0 + m_burstSize(integer) : "Number of drips per update" : 2 + m_flUpdateTime(string) : "Time between updates" : "0.5" + m_flMaxUpdateTime(string) : "Max time between updates (random)" + target(string) : "Fire on updating" + m_fLifeTime(string) : "Beam Lifetime (0 = three updates)" + texture(sprite) : "Drip Sprite" : "sprites/rain.spr" + m_axis(choices) : "Beam Direction" : 0 = + [ + 0 : "Z axis (vertical)" + 1 : "X axis" + 2 : "Y axis" + ] + m_iExtent(choices) : "Extent type" : 1 = + [ + 0 : "Fill brush" + 1 : "Obstructable" + 3 : "Reverse obstructable" + 2 : "Arcing" + 4 : "Reverse arcing" + 5 : "Arcing Through" + ] + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] +@SolidClass base(Targetname, MoveWith) = env_mirror : "Mirror" +[ + radius(integer) : "Radius" : 330 + frags(string) : "Frags ([SF]blank for auto)" + spawnflag(flags) = + [ + 1 : "Draw Player" : 0 + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_explosion : "Explosion" +[ + target(string) : "Initial position (blank = here) [LP]" + iMagnitude(integer) : "Magnitude/Radius" : 100 + spawnflags(flags) = + [ + 1 : "No Damage" : 0 + 2 : "Repeatable" : 0 + 4 : "No Fireball" : 0 + 8 : "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] +@PointClass base(Targetname) color(0 0 0) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + 8: "Permanent" : 0 + 16: "Fire at Camera" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fog : "Fog effect, DMC stylee" +[ + fadein(integer) : "Fade in time" : 0 + holdtime(string) : "Hold time (0 = permanent)" : "0" + fadeout(integer) : "Fade out time" : 0 + startdist(integer) : "Fog start position" : 0 + enddist(integer) : "Fog end position" : 1000 + rendercolor(color255) : "Fog Color (R G B)" : "255 255 255" + spawnflags(flags) = + [ + 1 : "Start active" : 0 + ] +] +@PointClass base(Targetname, Master) iconsprite("sprites/env.spr") = env_footsteps : "Change Movement Sounds" +[ + frags(choices) : "Preset Footstep type" : 0 = + [ + 0 : "Custom (see below)" + -1 : "Concrete" + 1 : "Metal" + 2 : "Dirt" + 3 : "Vent" + 4 : "Grate" + 5 : "Tile" + 6 : "Paddling" + 7 : "Wading" + 8 : "Ladder" + ] + noise(sound) : "Custom Footstep sound" + noise1(sound) : "Ladder sound" + noise2(sound) : "Wading sound" + noise3(sound) : "Paddling sound" + spawnflags(flags) = + [ + 1: "Set only" : 0 + 2: "Once only" : 0 + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_funnel : "Large Portal Funnel" +[ + message(string) : "Position (blank = here) [LP]" + netname(sprite) : "Particle sprite" + spawnflags(flags) = + [ + 1: "Reverse" : 0 + 2: "Repeatable" : 0 + ] +] +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger to send" : 3 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] +@PointClass sprite() base(Targetname, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) color(30 100 0) iconsprite("sprites/glow01.spr") = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] +@PointClass base(Targetname, RenderFxChoices, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_laser : "Laser Beam Effect" +[ + LaserStart(target_destination) : "Start At (blank = here) [LP]" + LaserTarget(target_destination) : "Fire Towards" + m_iTowardsMode(choices) : "Meaning of Fire Towards" : 0 = + [ + 0 : "Position [LP]" + 1 : "Direction [LV]" + ] + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + StartSprite(sprite) : "Start Sprite" : "" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (continuous)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + target(target_destination) : "Fire when tripped" + netname(target_destination) : "Tripped only by entity" + m_iProjection(choices) : "Projection mode" : 0 = + [ + 0: "Normal" + 1: "Extend past endpoint" + ] + m_iStoppedBy(choices) : "Stopped by" : 0 = + [ + 0: "Glass & Monsters" + 1: "Monsters only" + 2: "Glass & Monster hulls" + 3: "Monster hulls only" + 4: "Glass only" + 5: "Neither" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + 512: "Draw Solid" : 0 + 1024: "Interpolate" : 0 + ] +] +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] +@PointClass base(Targetname, Angles, MoveWith, RenderFields, Sequence) studio() = env_model : "New alternative to cyclers" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + scale(string) : "Scale (1.0 = normal size)" + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + 8: "Turn head" : 0 + ] + chestnums(choices) : "Has Chest Nums?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + iuser1(choices) : "Coop player" : 0 = + [ + 0 : "None" + 1 : "Player 1" + 2 : "Player 2" + 3 : "Player 3" + 4 : "Player 4" + ] +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_quakefx : "Quake 1 particle effects" +[ + message(string) : "Position (blank = here) [LP]" + impulse(choices) : "Effect type" : 4 = + [ + 4 : "Tar Explosion" + 10 : "Lava Splash" + 11 : "Teleport Splash" + 12 : "Explosion" + 122 : "Particle Burst" + ] + frags(integer) : "Particle Burst: color number" : 70 + armortype(integer) : "Particle Burst: radius" : 300 + health(string) : "Particle Burst: duration" : "1.0" + spawnflags(flags) = + [ + 1: "Repeatable" : 0 + ] +] +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFields) size (-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_particle : "Particle Effect" +[ + message(string) : "Particle file" : "aurora/smoke.aur" + spawnflags(flags) = + [ + 1: "Start On" : 0 + 2: "Spawn Use" : 0 + ] +] +@PointClass base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) iconsprite("sprites/env.spr") = env_render : "Render Controls" +[ + message(string) : "FX Amount factor [LR]" + m_fScale(string) : "Scale (0 = no change)" + m_lScale(string) : "Scale (0 = no change) [LR]" + target(target_destination) : "Target to affect [LE]" + frags(string) : "Fade Time (secs)" : "0" + armorvalue(string) : "Fade Coarseness (secs)" + netname(string) : "Trigger after fading" + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + 32: "Remove target" : 0 + 64: "Remove self" : 0 + ] +] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shockwave : "Shockwave Effect" +[ + spawnflags(flags) = + [ + 1: "Centered" : 0 + 2: "Repeatable" : 0 + ] + m_iszPosition(string) : "Position (blank = here) [LP]" + netname(string) : "Spritename" : "sprites/shockwave.spr" + rendercolor(string): "Color": "188 220 255" + renderamt(integer) : "Opacity (0-255)": 255 + m_iTime(integer) : "Duration" : 2 + m_iRadius(integer) : "Final radius" : 1000 + m_iHeight(integer) : "Wave height" : 32 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_iNoise(integer) : "Distortion ('noise')" : 0 + m_iFrameRate(integer) : "Frame Rate" : 0 + m_iStartFrame(integer) : "Starting Frame" : 0 +] +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) studio()= env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "sprites/ballsmoke.spr" + noise(string) : "Scale [LR]" : "" + skin(integer) : "Skin" : 0 + body(integer) : "Body (models only)" + frame(integer) : "Start frame" : 0 + framerate(string) : "Framerate" : "10.0" + m_iPhysics(choices) : "Behaviour of children" : 0 = + [ + 0: "Bouncy gib (normal)" + 1: "Sticky gib" + 2: "Noclip" + 3: "Fly (ignore gravity)" + 4: "Fly & bounce" + 5: "Arc (obey gravity)" + 6: "Arc & bounce" + ] + m_iBloodColor(choices) : "Blood color" : 0 = + [ + 0 : "Don't bleed" + 247 : "Red (human)" + 195 : "Yellow (alien)" + ] + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + m_fFriction(string) : "Bounce height" : "0.55" + m_iszTouch(string) : "Fire on collision (locus = shot)" + m_iszTouchOther(string) : "Fire on collision (locus = wall)" + m_vecSize(string) : "Shot size (X Y Z)" : "0 0 0" +] +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_sky : "Unreal-Tournament style sky view" +[ +] +@PointClass base(Master, MoveWith) iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + targetname(target_source) : "Name" + target(target_destination) : "Fire when activated" + radius(integer) : "Radius" : 128 + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_spark : "Spark" +[ + target(string) : "Initial position (blank = here) [LP]" + MaxDelay(string) : "Max Time between sparks" : "0" + spawnflags(flags) = + [ + 16: "Cyclic" : 0 + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + message(string) : "Attached to entity..." + frags(choices) : "...at attachment point" : 0 = + [ + 0 : "0" + 1 : "1" + 2 : "2" + 3 : "3" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] +@PointClass base(Targetname, Master) color(128 128 255) iconsprite("sprites/env.spr") = env_state : "Local State" +[ + target(target_destination) : "Target (on & off)" + noise1(target_destination) : "Fire when turned on" + noise2(target_destination) : "Fire when turned off" + turnontime(string) : "Time taken to turn on" : "0" + turnofftime(string) : "Time taken to turn off" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Debug Mode" : 0 + ] +] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_warpball : "Teleport-in effect" +[ + target(string) : "Initial position (blank = here) [LP]" + health(string) : "Max lightning-arc length" : "90" + frags(integer) : "Number of lightning bolts" : 12 +] + +@SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_asylumlookat : "For triggering the telescope cancel when you look at Simon in the asylum1" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight) = func_breakable : "Breakable Object" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global, LockSounds) = func_button : "Button" +[ + speed(integer) : "Speed" : 25 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" : 0 + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup (1)" + 2: "Access Denied (2)" + 3: "Access Granted (3)" + 4: "Quick Combolock (4)" + 5: "Power Deadbolt 1 (5)" + 6: "Power Deadbolt 2 (6)" + 7: "Plunger (7)" + 8: "Small zap (8)" + 9: "Keycard Sound (9)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + 14: "Lightswitch" + ] + wait(choices) : "Delay before Reset" : 0 = + [ + -1 : "Stays pressed (-1)" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 16: "Direct use only": 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 128: "Not Solid" : 0 + 256:"Touch Activates": 0 + 512:"Can't Use" : 0 + 1024:"Keep item after use" : 0 + 2048:"Unlock auto use" : 0 + ] + lockedby(string) : "Entity the door is locked by" + lockedmsg(string) : "Locked message" + lockedsnd(sound) : "Locked sound" + unlockedsnd(sound) : "Unlocked sound" + unlockedmsg(string) : "Unlocked message" + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys) = func_coopallplayersbutton : "A button that all players have to be near to use" +[ + message(string) : "Name of trigger_coop_changelevel" + target(string) : "Name of target to fire" + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door : "Basic door" +[ + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + acceleration(integer) : "Acceleration '0' for infinite" : 0 + deceleration(integer) : "Deceleration '0' for infinite" : 0 +] +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door_rotating : "Rotating door" +[ + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = func_escalatorstep : "Escalator Step" +[ + spawnflags(flags) = + [ + 1 : "End Section" : 0 + 2: "Start Off" : 0 + ] + forwardaxis(choices) : "Forward Axis" : 0 = + [ + 0 : "-X" + 1 : "+X" + 2 : "-Y" + 3 : "+Y" + ] +] + +@SolidClass base(Appearflags, MoveWith, RenderFields, ZHLTLightKeys) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire when damaged" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_healthcharger: "Wall health recharger" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_illusionary : "Fake Wall/Light" +[ + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + -17:"Zero-G" + -18:"Hover-Field" + -19:"Fog effect" + -20:"Special 1 (Particles)" + -21:"Special 2 (Particles)" + -22:"Special 3 (Particles)" + ] + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_ladder : "Ladder" +[ + spawnflags(flags) = + [ + 1 : "Visible" : 0 + ] +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_laddercontrol : "Ladder Controller" +[ + target(string) : "Target Ladder To Control" +] +@SolidClass base(Targetname, MoveWith) = func_monsterclip : "Monster clip brush" [] +@SolidClass base(Targetname, MoveWith) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Appearflags) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 8 : "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Angles, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] +@SolidClass base(Breakable, RenderFields, ZHLTLightKeys) = func_pushable : "Pushable object" +[ + spawnflags(flags) = + [ + 128: "Breakable" : 0 + 512: "Can't Pull" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] +@SolidClass base(MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_recharge: "Battery recharger" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, Target, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Master, LockSounds) = func_rot_button : "RotatingButton" +[ + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : -1 = + [ + -1: "None" + 21: "Squeaky (1)" + 22: "Squeaky Pneumatic (2)" + 23: "Ratchet Groan (3)" + 24: "Clean Ratchet (4)" + 25: "Gas Clunk (5)" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 16: "Direct use only" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128:"Y Axis" : 0 + 256:"Touch Activates" : 0 + 512:"Invert '+Use'able" : 0 + ] + _minlight(integer) : "_minlight" +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_rotating : "Rotating Object" +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + speed(integer) : "Rotation Speed" : 30 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine (1)" + 2 : "Slow Rush (2)" + 3 : "Medium Rickety (3)" + 4 : "Fast Beating (4)" + 5 : "Slow Smooth (5)" + ] + message(sound) : "WAV Name" :"" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] +@SolidClass base(Targetname) = func_shine : "Shiny Surface" +[ + message(sprite) : "Shine sprite" : "sprites/bgspr.spr" + scale(integer) : "Shine scale" : 10 + renderamt(integer) : "Shine brightness (0-255)" : 50 +] +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_stairs : "Stair segment to control speed" [] +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] +@SolidClass base(Targetname, MoveWith) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" + frags(integer) : "Tolerance (-1 = total)" : 30 + crosshair(choices) : "Crosshair to use" : 0 = + [ + 0: "None" + 4: "MP5" + ] + spawnflags(flags) = + [ + 1 : "Ignore +Use" : 0 + 2 : "Visible" : 0 + ] +] +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankrocket : "Brush Rocket Turret" [] +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 4 : "No Reverse" : 0 + 8 : "Passable" : 0 + 16: "No Yaw (Z-rot)" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Move Sound" : 0 = + [ + 0: "None (or custom)" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + custommovesound(sound) : "Custom Move Sound" + customstartsound(sound) : "Start Sound" + custombrakesound(sound) : "Stop Sound" + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" + avelocity(string) : "Initial avelocity (Y Z X)" +] +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + avelocity(string) : "Initial avelocity (Y Z X)" + dmg(choices) : "Damage on crush" : 2 = + [ + -1: "No damage" + ] + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 2 : "Origin on paths" : 0 + 4 : "Initially On" : 0 + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] +@SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_valve : "Stupid crap" +[ + iuser1(integer) : "Distance (deg)" : 0 + iuser2(integer) : "Degrees/0.025 secs" : 2 + iuser4(choices) : "Axis" : 0 = + [ + 0: "X" + 1: "Y" + 2: "Z" + ] + lockedby(string) : "Entity the valve is locked by" + lockedmsg(string) : "Locked message" + lockedsnd(sound) : "Locked sound" + unlockedsnd(sound) : "Unlocked sound" + unlockedmsg(string) : "Unlocked message" + message(string) : "Entity to rotate too" + impulse(choices) : "ENTITY Axis" : 0 = + [ + 0: "X" + 1: "Y" + 2: "Z" + ] + spawnflags(flags) = + [ + 1 : "Keep key after unlock" : 0 + ] + _minlight(string) : "Minimum light level" +] +@SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] +@SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] +@PointClass base(Targetname, Target, Master) iconsprite("sprites/game.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + frags(integer) : "New Value" : 10 +] +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_end : "End this multiplayer game" [] +@PointClass base(Targetname) iconsprite("sprites/game.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] +] +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" +] +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + points(integer) : "Points to add (+/-)" : 1 +] +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 +] +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 2: "Only once" : 0 + ] + target(string) : "Fire when done" + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] +@SolidClass base(Targetname) iconsprite("sprites/game.spr") = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" +] +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" +[ + m_iBloodColor(choices) : "Blood color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (human)" + 195 : "Yellow (alien)" + ] +] +@PointClass base(Targetname) = hud_sprite : "Hud Sprite Display" +[ + model(sprite): "Sprite name" : "dmg_poison" + rendercolor(color255) : "Color" : "255 255 255" + spawnflags(flags) = + [ + 1: "Start on" : 0 + ] +] +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_alias : "Alias" +[ + target(target_destination) : "Reference while On" + netname(string) : "Reference while Off" + mode(string) : "Use Mode, 0= On/Off 1= list mode" : "0" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Debug Mode" : 0 + ] +] +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) iconsprite("sprites/info.spr") = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] +@PointClass size(-8 -8 0, 8 8 32) iconsprite("sprites/info.spr") = info_compile_parameters : "Compile Options" +[ + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 1 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 2 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + spawnflags(flags) = + [ + 1 : "Run CSG" : 1 + 2 : " No Clip" : 0 + 4 : " Only Ents" : 0 + 8 : " No Sky Clip" : 0 + 32 : "Run BSP" : 1 + 64 : " Leak Only" : 0 + 128 : " No Clip" : 0 + 256 : "Run VIS" : 1 + 512 : " Fast " : 0 + 2048 : "Run RAD" : 1 + 4096 : " Sparse " : 0 + 8192 : " Circus Mode" : 0 + 16384 : " Extra Mode " : 0 + ] +] +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_group : "Entity Group" +[ + target(string) : "Alias to change when fired [LE]" + defaultmember(string) : "Default member prefix" + spawnflags(flags) = + [ + 2 : "Debug Mode" : 0 + ] +] +@PointClass base(Target, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = info_intermission : "Intermission Spot" [] +@PointClass base(Targetname, MoveWith) iconsprite("sprites/info.spr") = info_landmark : "Transition Landmark" [] +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_movewith : "Movewith relay" +[ + target(string) : "MoveWith when active" + netname(string) : "MoveWith when inactive" + spawnflags(flags) = + [ + 1 : "Start inactive" : 0 + 2 : "Blockable" : 0 + ] +] +@PointClass size(-2 -2 -2, 2 2 2) color(255 255 0) iconsprite("sprites/infonode.spr") = info_node : "ai node" [] +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) iconsprite("sprites/infonode.spr")= info_node_air : "ai air node" [] +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_null : "info_null (spotlight target)" [] +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass, Master, MoveWith) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" +] +@PointClass base(PlayerClass, MoveWith, Sequence) studio("models/player.mdl") = info_player_start : "Player 1 start" +[ + spawnflags(Flags) = + [ + 1 : "Start with HEV" : 0 + ] +] +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/info.spr") = info_target : "Beam Target" +[ + spawnflags(Flags) = + [ + 1 : "Use null.spr" : 0 + ] +] +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass, MoveWith) color(0 255 0) = info_teleport_destination : "Teleport destination" [] +@PointClass color(255 128 0) iconsprite("sprites/info.spr") = info_texlights : "Texture Light Config" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl")= item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl")= item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl")= item_battery : "HEV battery" +[ + model(string) : "Model (models/w_battery.mdl)" + skin(integer) : "Skin" + body(integer) : "Body" + noise(string) : "Sound (items/gunpickup2.wav)" + armorvalue(integer) : "Charge by (0 = normal)" +] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_flashlight : "FlashLight" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl")= item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl")= item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl")= item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Light, ZhltLights) = light : "Invisible lightsource" +[ + target(string) : "Target to shine at" + firetarget(string) : "Target to trigger" + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Targetname, MoveWith) = light_glow : "Dynamic Glow" +[ + frags(choices) : "Glow Type" : 1 = + [ + 2: "Brightest" + 1: "Flashlight" + 0: "None" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + 2 : "Flare" : 0 + ] +] +@PointClass base(Angles, ZhltLights) color(255 255 128) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" + _diffuse_light(color255) : "Shadow colour" : "255 255 128 200" +] +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Target, Light, ZhltLights) = light_spot : "Spotlight" +[ + firetarget(string) : "Target to trigger" + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _sky(choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] +@SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = momentary_door : "Momentary/Continuous door" +[ + speed(choices) : "Speed" : 100 = + [ + 0: "No limit" + ] + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + stopsnd(choices) : "Stop sound" : 0 = + [ + 0 : "No Sound" + 1 : "Clang with brake" + 2 : "Clang Reverb" + 3 : "Ratchet stop" + 4 : "Chunk" + 5 : "Light Airbrake" + 6 : "Metal Slide Stop" + 7 : "Metal Lock Stop" + 8 : "Snappy Metal Stop" + ] + lip(integer) : "Lip" + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] + _minlight(string) : "Minimum light level" +] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = locus_alias : "Locus System - Entity variable" +[ + netname(string) : "Initial value" +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_beam : "Locus System - Beam effect" +[ + m_iszStart(string) : "Start at (blank = here)" : "" + m_iszEnd(string) : "End at (blank = here)" : "*locus" + impulse(choices) : "Start & End are" : 0 = + [ + 0: "Entity & Entity [LE LE]" + 1: "Entity & Position [LE LP]" + 2: "Position & Position [LP LP]" + 3: "Position & Direction [LP LV]" + ] + m_iszSprite(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + m_iWidth(integer) : "Width" : 10 + m_iDistortion(integer) : "Distortion ('noise')" : 0 + m_fFrame(integer) : "Start frame" : 0 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_fDuration(string) : "Duration (0 = unlimited)" : 0 + m_fDamage(string) : "Damage amount" : 0 + m_iDamageType(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Blood Loss" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Internal bleeding" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + m_iszTargetName(target_source) : "Name of children" + target(target_destination) : "Fire on spawn (locus = child)" + spawnflags(flags) = + [ + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_variable : "Locus System - Variable for storing data" +[ + m_iszPosition(string) : "Position to record [LP]" : "*locus" + m_iszVelocity(string) : "Velocity to record [LV]" : "*locus" + m_iszRatio(string) : "Ratio to record [LR]" : "*locus" + m_iszTargetname(string) : "Child's name (blank = no child)" + m_iszFireOnSpawn(string) : "Fire on spawn (locus = child)" + m_fDuration(string) : "Removed after time (secs)" +] +@SolidClass base(Targetname, Target, Angles, Master, MoveWith, RenderFields, ZHLTLightKeys) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 4: "Target at degrees" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/baby.mdl") = monster_baby : "Baby Monster" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/booksimon.mdl") = monster_booksimon : "Book Simon" +[ + message(string) : "Name of boss healthbar monster" + frags(choices) : "SP/Coop" : 1 = + [ + 0 : "Coop" + 1 : "SP" + ] + iuser2(integer) : "Distance before hides" : 50 + iuser4(choices) : "Weapon" : 0 = + [ + 0 : "Shotgun" + 1 : "Glock" + 2 : "TMP" + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/booksimon.mdl") = monster_booksimonsledgehammer : "Book Simon Sledgehammer" +[ +message(string) : "Name of boss healthbar monster" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/chainsawguy.mdl") = monster_bosschainsaw : "Chainsaw Boss" [] + +@PointClass base(Monster) size(-10 -10 0, 10 10 60) studio("models/children.mdl") = monster_child : "Child fag" +[ + spawnflags(flags) = + [ + 8: "Burning" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/slower2.mdl") = monster_crab : "Gay crab" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/crazywoman.mdl") = monster_crazybitch : "Crazy Bitch" [] + +@PointClass base(Monster) size(-10 -10 0, 10 10 60) studio() = monster_custom : "Custom monster" +[ + attacksound1(sound) : "Attack 1 sound" : "common/null.wav" + attacksound2(sound) : "Attack 2 sound" : "common/null.wav" + + alertsound1(sound) : "Alert 1 sound" : "common/null.wav" + alertsound2(sound) : "Alert 2 sound" : "common/null.wav" + + painsound1(sound) : "Pain 1 sound" : "common/null.wav" + painsound2(sound) : "Pain 2 sound" : "common/null.wav" + + deathsound1(sound) : "Death 1 sound" : "common/null.wav" + deathsound2(sound) : "Death 2 sound" : "common/null.wav" + + attackhitsound1(sound) : "Body hit 1 sound" : "common/null.wav" + attackhitsound2(sound) : "Body hit 2 sound" : "common/null.wav" + + attackhitwallsound1(sound) : "Wall hit 1 sound" : "common/null.wav" + attackhitwallsound2(sound) : "Wall hit 2 sound" : "common/null.wav" + + attackmisssound1(sound) : "Attack miss 1 sound" : "common/null.wav" + attackmisssound2(sound) : "Attack miss 2 sound" : "common/null.wav" + + iuser1(Integer) : "Attack event 1 dmg" : 10 + iuser2(Integer) : "Attack event 2 dmg" : 10 + iuser3(Integer) : "Attack event 3 dmg" : 10 + + fuser1(Choices) : "Hurt by" : 0 = + [ + 0 : "All" + 1 : "Only bullets" + 2 : "Only melee" + ] +] + + +@PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio("models/doctor_boss.mdl") = monster_doctorboss : "Doctor boss" +[ + target(string) : "Trigger when killed" + message(string) : "Solid Damage Box" + sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "Idle" + 1 : "Box 1 hide" + 2 : "Box 1 get up" + 3 : "Box 1 shoot" + 4 : "Box 1 get back" + 5 : "Box 1 to box 2" + 6 : "Box 2 hide" + 7 : "Box 2 get up" + 8 : "Box 2 shoot" + 9 : "Box 2 get back" + 10 : "Box 2 to box 1" + 11 : "Box 2 to box 3" + 12 : "Box 3 hide" + 13 : "Box 3 get up" + 14 : "Box 3 shoot" + 15 : "Box 3 get back" + 16 : "Box 3 to box 2" + 17 : "Box 3 to box 4" + 18 : "Box 4 hide" + 19 : "Box 4 get up" + 20 : "Box 4 shoot" + 21 : "Box 4 get back" + 22 : "Box 4 to box 3" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/faceless.mdl") = monster_faceless : "Faceless fsdgfsdg" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/twisterv.mdl") = monster_facelessv : "Faceless Valve Head" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/faster.mdl") = monster_faster : "Faster Monster" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/flygare.mdl") = monster_flygare : "Flygare" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" [] +@PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 8 : "Head Controller" : 0 + 16 : "Player model" : 0 + 32: "Invulnerable" : 0 + ] + model(studio) : "model" + size(string) : "Size (X Y Z)" + body(Integer) : "Body" : 0 + health(Integer) : "Initial Health" : 0 + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + m_iszGibModel(string) : "Gib Model" + chestnums(choices) : "Has Chest Nums?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_generic_dead : "Generic Dead Body" +[ + spawnflags(Flags) = + [ + 8 : "Player model" : 0 + ] + netname(string) : "Sequence name" + frags(choices): "Death Type" : 36 = + [ + 36 : "Just dead" + 37 : "Fell backwards" + 38 : "Fell forwards" + 39 : "Died violently" + 66 : "Head shot" + 67 : "Chest shot" + 68 : "Gut shot" + 69 : "Shot in the back" + ] + body(Integer) : "Body" : 0 + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + m_iszGibModel(string) : "Gib Model" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/krypande.mdl") = monster_krypande : "Krypande Monster" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "randigman" + 1 : "goretex" + 2 : "jeans" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/flygare.mdl") = monster_nerd : "Flying nerd" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/runningcrazy.mdl") = monster_rcrazy : "Running Crazy" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/carcassboss.mdl") = monster_roofboss : "Roof Boss" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/props/blandat/headcrab.mdl") = monster_ruben : "Rubn" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sawcrazy.mdl") = monster_sawcrazy : "Saw crazy" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sewer_boss.mdl") = monster_sewerboss : "Sewer Boss" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sewmo.mdl") = monster_sewmo : "Sewer Monster" +[ + spawnflags(Flags) = + [ + 32 : "Lie in water" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/spitter.mdl") = monster_spitter : "Spitter" +[ + target(string) : "Gay to trigger when he appears" +] +@PointClass color(0 200 200) base(Monster) size(-32 -32 0, 32 32 168) = monster_taller : "Taller" [] +@PointClass color(0 200 200) base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monster_target : "Target for monsters to attack" +[ + frags(choices) : "When active, count as:" : 11 = + [ + 0 : "Ignored" + 3 : "Scientist" + 11: "Barney" + 4 : "Human Military" + 5 : "Alien Military" + 7 : "Other Alien" + 8 : "Headcrab" + 9 : "Bullsquid" + 14 : "Faction A" + 15 : "Faction B" + 16 : "Faction C" + ] + spawnflags(Flags) = + [ + 1: "Start inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/tenslower2.mdl") = monster_slowerstuck : "Unpro stuck faggot" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/slower.mdl") = monster_slower : "Zombie thing" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "randigman" + 1 : "goretex" + 2 : "jeans" + ] +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/slower3.mdl") = monster_slower3 : "Zombie thing" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "randigman" + 1 : "goretex" + 2 : "jeans" + ] +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sawrunner.mdl") = monster_sawrunner : "Chainsaw fag" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "randigman" + 1 : "goretex" + 2 : "jeans" + ] +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/stranger.mdl") = monster_stranger : "Stranger" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/suicider.mdl") = monster_suicider : "Suicider nerd" +[ + iuser1(choices) : "Weapon" : 0 = + [ + 0 : "Glock" + 1 : "P345" + ] + fuser1(integer) : "Multiply shoot dmg by" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/watro.mdl") = monster_watro : "Watro" [] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) studio() = monstermaker : "Monster Maker" +[ + monsterbody(integer) : "Body of monster" + model(studio) : "Custom model" + keyscript(String) : "Script (if item_key)" + noise(String) : "Position to place monster at [LP]" + noise1(String) : "Offset from position of monster [LV]" + noise2(String) : "Angles of monster [LV]" + noise3(String) : "Velocity of monster [LV]" + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(target_source) : "Name of Spawned Monsters" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + 2 : "Force fade" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + 16 : "Leave corpses" : 0 + 32 : "Force Spawn" : 0 + 64 : "Survival Mode" : 0 + 1024: "Don't Drop Gun" : 0 + ] + monstercount(choices) : "Number of Monsters" : -1 = + [ + -1 : "Unlimited" + ] + delay(string) : "Time between spawns" : "5" + spawndelay(string) : "Delay before release" : "0" + m_imaxlivechildren(integer) : "Max live children" : 5 + m_iClass(choices) : "Monsters behave as" : 0 = + [ + 0 : "Normal" + 3 : "Scientist" + 11: "Barney" + 4 : "Human Military" + 1 : "Machine (Human Military)" + 5 : "Alien Military" + 7 : "Other Alien" + 8 : "Headcrab" + 9 : "Bullsquid" + 14 : "Faction A" + 15 : "Faction B" + 16 : "Faction C" + ] + m_iPlayerReact(choices) : "Monsters reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + 2 : "Friendly until hurt" + 3 : "Friendly unless provoked" + 4 : "Enemy" + ] +] +@PointClass base(Targetname) = motion_manager : "Control the movement and direction of an entity" +[ + target(target_destination) : "Target to affect [LE]" : "*locus" + m_iszPosition(string) : "Position (blank = no change)" + spawnflags(flags) = + [ + 1: "Debug" : 0 + ] +] +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + netname(string) : "Target on turning off" + globalstate(string) : "Global State Master" +] +@PointClass base(Targetname) = multi_alias : "Multi-target alias" +[ + m_iMode(choices) : "Mode" : 0 = + [ + 0: "Normal" + 1: "Choose one (weighted)" + 2: "% chance for each" + ] +] +@PointClass base(Targetname, Master) color(255 128 0) iconsprite("sprites/multimanager.spr") = multi_manager : "MultiTarget Manager" +[ + wait(string) : "Time offset" + maxwait(string) : "Max Time offset (Random)" + triggerstate(choices) : "Trigger to send" = + [ + 0: "Toggle" + 1: "On" + 2: "Off" + 3: "Kill" + 4: "Same as input" + ] + mode(choices) : "Mode" = + [ + 0: "Normal (time offset)" + 1: "Choose one (weighted)" + 2: "% chance for each" + 3: "No delay (ordered)" + ] + m_iszThreadName(target_source) : "Name of threads" + m_iszLocusThread(string) : "Trigger on spawn (locus = thread)" + spawnflags(Flags) = + [ + 1 : "Multi-threaded" : 0 + 4 : "Loop" : 0 + 8 : "Once only" : 0 + 16 : "Start on" : 0 + 32 : "Debug mode" : 0 + ] +] +@PointClass base(Targetname) = multi_watcher : "State Watcher" +[ + m_fLogic(choices) : "Logical test" : 0 = + [ + 0: "All (AND)" + 2: "Not all (NAND)" + 1: "At least one (OR)" + 3: "None (NOR)" + 4: "Exactly one (XOR)" + 5: "Any number but one (XNOR)" + ] + target(target_destination) : "Entity to notify" + spawnflags(flags) = + [ + 1: "Send 'Toggle'" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) color(247 181 82) iconsprite("sprites/pathcorner.spr") = path_corner : "Path Corner" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire on Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "Speed (0 = no change)" : 0 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + 0 : "Set new speed" + 1 : "Increase speed by" + 2 : "Time to next corner" + ] + turnspeed(string) : "Turn speed (Y Z X)" + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname, Angles, MoveWith) color(159 151 232) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + altpath(target_destination) : "Branch Path" + message(target_destination) : "Fire on Pass" + netname(target_destination) : "Fire on dead end" + speed(integer) : "Speed (0 = no change)" : 0 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + 0 : "Set current speed" + 3 : "Set master speed" + 1 : "Increase speed by" + 2 : "Time to next corner" + ] + turnspeed(string) : "Turn speed (Y Z X)" + frags(choices) : "Meaning of 'Turn Speed'" : 0 = + [ + 0 : "Set current turn speed" + 1 : "Set master turn speed" + 2 : "Back to normal" + ] + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_freeze : "Stop player from moving" +[ + delay(string) : "Duration (0 = until retriggered)" : "5" + spawnflags(Flags) = + [ + 1: "Affect locus" : 0 + ] +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strip player's weapons" +[ + bullets(choices) : "Take 9mm bullets" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + magnum(choices) : "Take 357 bullets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + shotgun(choices) : "Take shotgun ammo" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + crossbow(choices) : "Take crossbow bolts" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + argrenades(choices) : "Take AR grenades" : 0 = + [ + 0: "All" + -1: "None" + ] + rockets(choices) : "Take rockets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + uranium(choices) : "Take uranium ammo" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + satchels(choices) : "Take satchel charges" : 0 = + [ + 0: "All" + -1: "None" + ] + snarks(choices) : "Take snarks" : 0 = + [ + 0: "All" + -1: "None" + ] + tripmines(choices) : "Take tripmines" : 0 = + [ + 0: "All" + -1: "None" + ] + handgrenades(choices) : "Take handgrenades" : 0 = + [ + 0: "All" + -1: "None" + ] + hornetgun(choices) : "Take Hornet Gun" : 0 = + [ + 0: "Gun & ammo" + -3: "Ammo" + -1: "None" + ] + spawnflags(Flags) = + [ + 1: "Remove suit" : 0 + 2: "Leave crowbar" : 0 + 4: "Leave glock" : 0 + 8: "Leave 357" : 0 + 16: "Leave mp5" : 0 + 64: "Leave crossbow" : 0 + 128: "Leave shotgun" : 0 + 256: "Leave rpg" : 0 + 512: "Leave gauss" : 0 + 1024: "Leave egon" : 0 + ] +] +@PointClass base(Script) = scripted_action : "Scripted Action" +[ + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 5 = + [ + 0 : "No (don't turn)" + 1 : "Walk" + 2 : "Run" + 5 : "No - Only turn" + 4 : "Instant move + turn" + 6 : "No - Instant turn" + ] + m_iszAttack(string) : "Entity to attack (blank = this) [LE]" + m_fTurnType(choices) : "Turn mode" : 1 = + [ + 0 : "Match Angle" + 1 : "Turn to face" + 2 : "Don't Turn" + ] + m_fAction(choices) : "Action to perform" : 0 = + [ + 0 : "Ranged Attack" + 1 : "Ranged Attack 2" + 2 : "Melee Attack" + 3 : "Melee Attack 2" + 4 : "Special Attack" + 5 : "Special Attack 2" + 6 : "Reload" + 7 : "Jump" + 8 : "No action" + ] + spawnflags(Flags) = + [ + 64: "Override AI" : 0 + ] +] +@PointClass base(Targetname, Targetx, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Target Monster (blank for HEV) [LE]" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Name/Class" : "player" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] +@PointClass base(ScriptSequence) size(-16 -16 0, 16 16 72) iconsprite("sprites/scriptedsequence.spr") = scripted_sequence : "Scripted Sequence" +[ + spawnflags(Flags) = + [ + 64: "Override AI" : 0 + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_tanksequence : "Scripted Tank Sequence" +[ + m_iszEntity(string) : "Tank to affect" + m_iTurn(choices) : "Turn to" : 2 = + [ + 0: "Don't turn" + 1: "Match angle" + 2: "Face sequence" + 3: "Face enemy" + ] + m_iszEnemy(string) : "Enemy to face" + m_iShoot(choices) : "Fire gun" : 1 = + [ + 0: "Don't fire" + 1: "Once (at end)" + 2: "Constantly" + 3: "While facing target" + ] + m_iUntil(choices) : "Halt condition" : 1 = + [ + 0: "None" + 1: "Tank faces target" + 2: "Enemy dies" + ] + target(string) : "Trigger on halt" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Trigger on timeout" + m_iActive(choices) : "Tank state afterwards" : 0 = + [ + 0: "No change" + 1: "Active" + 2: "Inactive" + 3: "Toggle" + ] + m_iControllable(choices) : "Control afterwards" : 0 = + [ + 0: "No change" + 1: "Controllable" + 2: "Not Controllable" + 3: "Toggle" + ] + m_iLaserSpot(choices) : "Laser Spot afterwards" : 0 = + [ + 0: "No change" + 1: "Turn on" + 2: "Turn off" + 3: "Toggle" + ] + spawnflags(flags) = + [ + 1: "Dump player" : 0 + 2: "Repeatable" : 0 + ] +] +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_trainsequence : "Scripted Train Sequence" +[ + m_iszEntity(string) : "Func_train to affect [LE]" + m_iszDestination(string) : "Destination to head for [LE]" + m_iDirection(choices) : "Train direction" : 4 = + [ + 4: "Towards destination" + 1: "Forwards" + 2: "Backwards" + 0: "No change" + ] + target(string) : "Fire on arrival" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Fire on timeout" + m_iszTerminate(string) : "Fire at end, regardless" + m_iPostDirection(choices) : "Direction afterwards" : 3 = + [ + 1: "Forwards" + 3: "Stop" + ] + spawnflags(flags) = + [ + 2: "Once only" : 0 + 4: "Skip path" : 0 + ] +] +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + 9: "C2A4 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + message(string) : "File Name" + radius(string) : "Player Radius" +] +@PointClass base(Targetx) iconsprite("sprites/trigger.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "From Player" : 0 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + 3 : "Kill" + ] +] +@SolidClass base(Targetname, Master, MoveWith) = trigger_autosave : "AutoSave Trigger" [] +@SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_bounce : "Bouncey area" +[ + frags(string) : "Factor (0=stop, 1=perfect bounce)" : "0.9" + armorvalue(string) : "Minimum Speed" : "100" + spawnflags(flags) = + [ + 16: "Truncate Speed" : 0 + ] +] +@SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_booksimon : "Trigger book simon to appear" +[ + message(string) : "Name of info_simon_spawnpoint to spawn him at" + target(string) : "Trigger when spawn Simon" + iuser1(choices) : "Start on" : 0 = + [ + 0 : "Off" + 1 : "On" + ] +] +@PointClass base(Targetname, Targetx) color(200 200 200) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + message(string) : "Fire when done" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + 16: "Disable HUD" : 0 + 32: "Black Bars" : 0 + 64: "No Cam Movement" : 0 + 128: "Noise Effect" : 0 + 256: "TV Frame" : 0 + 512: "Remove yesno" : 0 + 1024: "Unskippable" : 0 + 2048: "Cancel cof_mdlcutscene" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + m_iszViewEntity(string) : "Entity to view from (blank = this)" + zangle(integer) : "Z angle, bitches" + skipmanager(string) : "Name of Skip Manager" + m_sAttachedModel(string) : "Entity to attach to" + m_iAttachment(choices) : "Attachment number" : 0 = + [ + -1 : "No attachment (origin)" + ] + + keepblackbars(choices) : "Keep black bars after camera off" : 0 = + [ + 0 : "No (Remove bars)" + 1 : "Yes (Keep bars)" + ] + keepnohud(choices) : "Keep no HUD after camera off" : 0 = + [ + 0 : "No (Show HUD)" + 1 : "Yes (Keep HUD hidden)" + ] + iuser2(choices) : "Hide vignette?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + message(string) : "File Name" + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changealias : "Trigger Change Alias" +[ + target(string) : "Alias to affect" + netname(string) : "String to Set" + spawnflags(flags) = + [ + 1 : "Resolve references" : 0 + 2 : "Debug Mode" : 0 + ] +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changecvar : "Change Console Variable" +[ + netname(string) : "CVar to change" + message(string) : "Value to set" + armorvalue(string) : "Duration (-1 = until triggered)" +] +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + 4: "Transfer dropped items/weapons" : 0 + ] +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changetarget : "Trigger Change Target" +[ + target(string) : "Entity to affect [LE]" + m_iszNewTarget(string) : "New Target [LE]" +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changevalue : "Change any entity's values" +[ + target(string) : "Entity to affect [LE]" + netname(string) : "Keyname to change" + m_iszNewValue(string) : "New value to set" +] +@PointClass base(Targetname, Targetx) iconsprite("sprites/trigger.spr") = trigger_cofmobile : "Trigger Cof Mobile SMS" +[ + bodynumber(integer) : "Body to change to" : 0 + spawnflags(flags) = + [ + 1 : "No SMS sound" : 0 + 2 : "Low battery" : 0 + ] +] +@SolidClass base(Targetname, Master, MoveWith) = trigger_cofteleport : "CoF Teleport" +[ + target(string) : "Destination Entity" + spawnflags(flags) = + [ + 1: "Only Once" : 0 + ] +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_command : "Console Command" +[ + netname(string) : "Command String" +] +@SolidClass base(Targetname, Master, MoveWith, RenderFields) = trigger_coop_changelevel : "Coop changelevel field" +[ + +] +@SolidClass base(Trigger, MoveWith) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] +@SolidClass base(Targetname, MoveWith) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] +@SolidClass base(Targetname) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hevcharge : "Trigger charge hev" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 4: "Don't Speak" : 0 + ] + frags(integer) : "Charge Amount" : 10 + delay(string) : "Delay before trigger" : "0" +] +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Fire once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"Only when fired" : 0 + 32:"Only on touch" : 0 + ] + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + cangib(choices) : "To gib or not to gib" : 0 = + [ + 0 : "Normal" + 1 : "Always gib" + 2 : "Never gib" + ] +] +@SolidClass base(Master, MoveWith) = trigger_monsterjump : "Trigger monster jump" +[ + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_motion : "Set the position and movement of an entity" +[ + target(target_destination) : "Target to affect [LE]" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set new position [LP]" + 1 : "Add offset [LV]" + ] + m_iszAngles(string) : "Angles (blank = no change)" + m_iAngMode(choices) : "Meaning of Angles" : 0 = + [ + 0 : "Set new angle [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by (Y Z X)" + ] + m_iszVelocity(string) : "Velocity (blank = no change)" + m_iVelMode(choices) : "Meaning of Velocity" : 0 = + [ + 0 : "Set new velocity [LV]" + 1 : "Add to velocity [LV]" + 2 : "Rotate velocity by [LV]" + 3 : "Rotate velocity (Y Z X)" + ] + m_iszAVelocity(string) : "AVelocity (blank = no change)" + m_iAVelMode(choices) : "Meaning of AVelocity" : 0 = + [ + 0 : "Set new avelocity (Y Z X)" + 1 : "Add to avelocity (Y Z X)" + ] + spawnflags(flags) = + [ + 1: "Debug" : 0 + ] +] +@SolidClass base(Trigger, TriggerCond, MoveWith) = trigger_once : "Trigger: Activate once" +[ + message(string) : "Text when triggered" + noise(string) : "Sound when triggered" + iuser1(choices) : "Start on/off" : 0 = + [ + 0 : "On" + 1 : "Off" + ] +] +@SolidClass base(trigger_once) = trigger_multiple : "Trigger: Activate multiple" +[ + netname(string) : "fire when leave area" + wait(integer) : "Delay before reset" : 10 + iuser1(choices) : "Start on/off" : 0 = + [ + 0 : "On" + 1 : "Off" + ] +] +@PointClass base(Targetname, Master, MoveWith) iconsprite("sprites/trigger.spr") = trigger_onsight : "Trigger when A sees B" +[ + netname(string) : "Looking entity (blank=player)" + message(string) : "Entity/classname to look at" + target(string) : "Fire when seen" + noise(string) : "Fire when no longer seen" + noise1(string) : "Fire on/off (seen/not seen)" + frags(string) : "View range (0=unlimited)" : "512" + max_health(choices) : "Field of view (degrees)" : 90 = + [ + -1 : "(-1): Use monster's view" + ] + spawnflags(flags) = + [ + 1: "No LOS check" : 0 + 2: "Seethru glass" : 0 + 4: "Check State of 'looker'" : 0 + ] +] +@SolidClass base(Trigger, MoveWith) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + 4: "Only monsters" : 0 + ] + speed(integer) : "Speed of push" : 40 +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_lightstyle : "Trigger Change Lightstyle" +[ + target(target_destination) : "Target to affect [LE]" + style(choices) : "New Appearance" : 0 = + [ + 0 : "On" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + 14: "Slow Fade In" + 15: "Medium Fade In" + 16: "Fast Fade In" + ] + pattern(string) : "Custom Appearance" + m_iFade(string) : "Fade time" : 0 + m_iWait(string) : "Hold time (-1 = permanent)" : -1 +] +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/trigger.spr") = trigger_relay : "Trigger Relay" +[ + m_iszAltTarget(string) : "Target if locked by master" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + 4: "Kill" + 5: "Same as input" + 6: "Opposite of input" + 7: "Ratio (momentary doors)" + ] + value(string) : "Set ratio (blank = no change) [LR]" +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_rottest : "Trigger RotTest" +[ + target(target_destination) : "Marker ent" + netname(target_destination) : "Reference ent" + message(target_destination) : "Hinge ent" + health(integer) : "Distance" : 5 + armortype(integer) : "Angle Step" : 30 +] +@SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" +[ + target(target_destination) : "Fire when activated" + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_startpatrol : "Trigger Start Patrol" +[ + target(string) : "Target monster" + m_iszPath(string) : "Patrol path start" +] +@SolidClass base(Trigger, MoveWith) = trigger_suicide : "Trigger player suicide" +[ + iuser1(choices) : "Chance to trigger (1 in x)" : 1 = + [ + 1: "1 (always)" + ] +] +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_teleport : "Trigger teleport" +[ + target(target_destination) : "Destination entity" + message(target_destination) : "Landmark entity" + noise(target_destination) : "Fire on teleporting" +] +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] +@PointClass base(Targetname) = watcher : "State Watcher" +[ + m_iszWatch(string) : "Entity to watch [LE]" + m_fLogic(choices) : "State if entity isn't found" : 0 = + [ + 0: "On" + 1: "Off" + ] + target(target_destination) : "Target to notify" + spawnflags(flags) = + [ + 1: "Send 'Toggle'" : 0 + 2: "Don't Send On" : 0 + 4: "Don't Send Off" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] +@PointClass base(Targetname) = watcher_count : "Watcher, entity count" +[ + noise(string) : "Count entities named..." + impulse(integer) : "Comparison number" + m_iMode(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when count = number" + 3 : "'On' when count != number" + 1 : "'On' when count > number" + 5 : "'On' when count >= number" + 2 : "'On' when count < number" + 4 : "'On' when count <= number" + ] + target(string): "Fire on changing state" + netname(string): "Fire on turning on" + message(string): "Fire on turning off" + noise1(string): "Fire when count increases" + noise2(string): "Fire when count decreases" + spawnflags(flags) = + [ + 1: "Fire at startup" : 0 + ] +] +@PointClass base(Weapon) = weapon_debug : "Debugger" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_weaponbox.mdl")= weaponbox : "Weapon/Ammo Container" [] +@PointClass base(Weapon, Targetx, RenderFields) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// CRY OF FEAR ENTITIES + +@PointClass base(Ammo, Targetx) studio("models/ammo/ammo_shotshells.mdl") = ammo_shells : "Shotgun Shells" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/clip.mdl") = ammo_glock : "Glock Clip" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/p345_clip.mdl") = ammo_p345 : "P345 Clip" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/ammo_m16.mdl") = ammo_m16 : "M16 Clip" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/ammo_revolver.mdl") = ammo_revolver : "Revolver ammo" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/ammo_rifle.mdl") = ammo_rifle : "Rifle Clip" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/ammo_tmp.mdl") = ammo_tmp : "TMP Clip" [] +@PointClass base(Ammo, Targetx) studio("models/ammo/vp70_clip.mdl") = ammo_vp70 : "VP70 Clip" [] + +@PointClass color(255 255 128) base(Targetname, MoveWith, Angles) = env_dynlight : "Paranoia dynamic light" +[ + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + renderamt(integer) : "Radius" : 256 + scale(integer) : "Cone (spotlights)" : 0 + rendermode(integer) : "texture (spotlights)" : 0 + spawnflags(flags) = + [ + 1 : "Start off" : 0 + ] +] + +@PointClass size(-8 -8 -8, 8 8 8) color(0 100 160) = envpos_sky : "3d sky origin" +[ + skin(integer) : "Ambinet light hack" : 128 + body(integer) : "Direct light hack" : 128 + spawnflags(flags) = + [ + 1 : "Amblight hack" : 0 + 2 : "Dirlight hack" : 0 + ] +] + +@PointClass size(-8 -8 -8, 8 8 8) color(0 100 160) = envpos_world : "world origin" +[ + health(integer) : "Speed factor" : 16 +] + +@PointClass base(Targetname, Angles, RenderFields) studio() = door_prop : "Door prop" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + // NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = door_prop_view : "Door Scene View Pos" +[ + message(string) : "Name of model entity to follow" +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname) = camera : "3D camera" +[ + message(string) : "Name of model entity for animation" +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, MoveWith) color(200 200 200) = camera_model : "3D camera's model" +[ + model(studio) : "Model name" + animation1(string) : "Animation 1" + animation2(string) : "Animation 2" + animation3(string) : "Animation 3" + animation4(string) : "Animation 4" + animation5(string) : "Animation 5" +] + +@PointClass base(Targetname, Angles, RenderFields) studio() = prop : "Map prop" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + // NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + ] +] + +@SolidClass base(Targetname, Global, RenderFields, Master) = inter_door: "Silent Hill style door" +[ + target(target_destination) : "Exit Position" + opensound(sound) : "Door Open Sound" + closesound(sound) : "Door Close Sound" + _minlight(string) : "Minimum light level" + music(sound) : "Music after door closes" + lockedby(string) : "Entity the door is locked by" + lockedmsg(string) : "Locked message" + lockedsnd(sound) : "Locked sound" + unlockedsnd(sound) : "Unlocked sound" + unlockedmsg(string) : "Unlocked message" + propertarget(string) : "Target to fire on open" + useunlock(string) : "Door to unlock when used" + + newlevelsnd(sound) : "New level door close sound" + + musicfadein(choices) : "Music fade in time" : 2 = + [ + -1 : "Instant" + ] + + musicfadeout(choices) : "Music fade out time" : 2 = + [ + -1 : "Instant" + ] + + silentroom(choices) : "Silent Room" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + spawnflags(flags) = + [ + 1: "Keep key after unlock" : 0 + 2: "Loop gay music" : 0 + 4: "Start disabled" : 0 + ] +] + +@SolidClass base(Targetname, Global, RenderFields, Master) = inter_door_coop_changelevel: "Coop inter_door" +[ + target(string) : "Name of trigger_coop_changelevel" + noise(sound) : "Door Open Sound" + message(string) : "Name of map to change to" + music(string) : "Music4u" + iuser1(choices) : "Looping SHIT" : 0 = + [ + 0: "No" + 1: "Yes" + ] + fuser1(integer) : "Fade time" : 0 +] + +@Pointclass size(-8 -8 0, 8 8 16) base(Targetname, Global, RenderFields) studio("models/coop/door_coop.mdl") = inter_door_coop: "Silent Hill style door" +[ + model(studio) : "Custom model" + target(target_destination) : "Exit Position" + opensound(sound) : "Door Open Sound" + closesound(sound) : "Door Close Sound" + _minlight(string) : "Minimum light level" + music(sound) : "Music after door closes" + lockedby(string) : "Entity the door is locked by" + lockedmsg(string) : "Locked message" + lockedsnd(sound) : "Locked sound" + unlockedsnd(sound) : "Unlocked sound" + unlockedmsg(string) : "Unlocked message" + propertarget(string) : "Target to fire on open" + useunlock(string) : "Door to unlock when used" + + newlevelsnd(sound) : "New level door close sound" + + musicfadein(choices) : "Music fade in time" : 2 = + [ + -1 : "Instant" + ] + + musicfadeout(choices) : "Music fade out time" : 2 = + [ + -1 : "Instant" + ] + + silentroom(choices) : "Silent Room" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + spawnflags(flags) = + [ + 1: "Keep key after unlock" : 0 + 2: "Loop gay music" : 0 + 4: "Start disabled" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = inter_door_exit : "Door Exit Position" [] + +@PointClass size(-8 -8 -4, 8 8 4) base(Targetname) = inter_door_disable: "Disable/Enable an inter_door" +[ + target(string) : "Name of the door to enable/disable" + frags(choices) : "Enable/Disable door" : 0 = + [ + 0: "Disable" + 1: "Enable" + ] +] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetx) studio("models/weapons/glock/glock_taclight.mdl") = item_glocktaclight: "Glock taclight" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/items/w_nightvision.mdl")= item_nightvision : "Nightvision" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetx) studio("models/items/phone_battery.mdl") = item_phonebattery: "Phone battery" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetx) studio()= item_key: "Key Item" +[ + message(string) : "Name of .txt for the key (eg: testkey.txt)" + model(studio) : "Model (e.g. models/can.mdl)" + + spawnflags(flags) = + [ + 1: "Cassette Tapes" : 0 + 2: "Hidden package" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname) studio("models/items/padlock.mdl") = item_padlock : "Padlock gay" +[ + message(string) : "Name of camera to look at" + target(string) : "Trigger when unlocked" +] + +@PointClass base(MoveWith) studio("models/boat.mdl") = boat : "Boat" [] + +@PointClass base(MoveWith) = boat_exit : "Boat Exit" +[ + message(string) : "Name of place (Asylum dock etc)" + iuser1(integer) : "Set boat X pos" + iuser2(integer) : "Set boat Y pos" + iuser3(integer) : "Set boat Z pos" + iuser4(integer) : "Set boat Y angle" +] + +@PointClass size(-8 -8 -8, 8 8 8) base(Targetname, MoveWith) = boat_hide_spot : "Hide player here while using boat" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_addcodenote: "Add a code to the notes" +[ + iuser1(choices) : "Code type" : 2 = + [ + 1: "PC" + 2: "Videotape" + 3: "Window" + ] +] + +@SolidClass base(MoveWith, RenderFields) = cof_barshoot : "Shoot bars in the asylum" +[ + message(string) : "Name of entity to play voice sounds" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_begingame: "Tell the stats we've started the game" +[ + spawnflags(flags) = + [ + 1: "Doctor mode" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_billboard: "Show a billboard" +[ + message(string) : "Name of tga (eg: gustavdahlwelcome)" + noise(sound) : "Noise when triggered" + text(string) : "Message when used" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_blackandwhite: "Greyscale amounts" +[ + iuser1(integer) : "Amount - 255 max" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_blur: "Turn on the blur effect" +[ +rate(string) : "Blur Rate" : "70" +fade(string) : "Blur Fade" : "0.25" +strength(string) : "Blur Strength" : "1" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_bosshealthbar: "Show a boss healthbar" +[ + message(string) : "Name of boss" + emptytga(string) : "Name of empty bar tga" + fulltga(string) : "Name of full bar tga" +] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetname) studio("models/props/utomhusd/barrel_new.mdl")= cof_burningbarrel: "Burning Barrel" +[ + model(studio) : "Use custom model?" + noise(sound) : "Custom fire sound?" +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_camerazoom: "Camera Zoom Gay" +[ + zoomfov(integer) : "FOV" : 30 + zoomtime(choices) : "Zoom Speed" : 100 = + [ + 666 : "Instant" + ] + returntime(integer) : "Time until reset" + + spawnflags(flags) = + [ + 1: "Non-instant return" : 0 + ] +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_closeallvgui: "Close all open VGUI menus" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetname) = cof_changelevel: "Change level" +[ + message(string) : "Level name (eg c1a1a)" +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_clothesmenu: "Unlockable clothes menu" +[ + cameraent(string) : "Camera entity" + simonent(string) : "Simon entity" +] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetname) = cof_chapter: "New chapter message" +[ + message(string) : "Chapter name" + noise(sound) : "Text appear sound" : "ambience/new_chapter.wav" +] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetname) studio("models/props/inomhusd/cafe_monitor.mdl") = cof_computer : "Bring up the computer GUI for Start" +[ + target(string) : "Target when correct user+pass" +] + + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_coopgameover: "Trigger game over in coop" [] + +@PointClass size(-16 -16 -36, 16 16 36) base(Targetname) = cof_coop_spawn1: "Spawn area for coop character 1" +[ + iuser1(choices) : "Enabled/disabled" : 0 = + [ + 0: "Enabled" + 1: "Disabled" + ] +] + +@PointClass size(-16 -16 -36, 16 16 36) base(Targetname) = cof_coop_spawn2: "Spawn area for coop character 2" +[ + iuser1(choices) : "Enabled/disabled" : 0 = + [ + 0: "Enabled" + 1: "Disabled" + ] +] + +@PointClass size(-16 -16 -36, 16 16 36) base(Targetname) = cof_coop_spawn3: "Spawn area for coop character 3" +[ + iuser1(choices) : "Enabled/disabled" : 0 = + [ + 0: "Enabled" + 1: "Disabled" + ] +] + +@PointClass size(-16 -16 -36, 16 16 36) base(Targetname) = cof_coop_spawn4: "Spawn area for coop character 4" +[ + iuser1(choices) : "Enabled/disabled" : 0 = + [ + 0: "Enabled" + 1: "Disabled" + ] +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_coop_stats: "Coop stats " +[ + message(string) : "Next map to change to" + spawnflags(Flags) = + [ + 1 : "No credits" : 0 + ] +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_spawnpointonoff: "Turn a spawn point on/off" +[ + message(string) : "Name of spawn point" + iuser1(choices) : "Enable/disable" : 0 = + [ + 0: "Enable it" + 1: "Disable it" + ] + spawnflags(Flags) = + [ + 1 : "Teleport players" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_clearitems : "Remove an item from the inventory, or all" +[ + message(string) : "Single item to remove" + spawnflags(Flags) = + [ + 1 : "Remove ALL" : 0 + 2 : "All Players" : 0 + 4 : "Three slots" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_cracker : "Be pro" +[ + dmg(integer) : "Damage per trigger" +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_credits: "Trigger the text credits" +[ + message(string) : "Custom credits file (conclusions etc)" + iuser1(integer) : "Speed" : 30 + + spawnflags(Flags) = + [ + 1 : "Turn off credits" : 0 + 2 : "Trigger stats" : 0 + 4 : "Custom credits" : 0 + ] +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_customiseplayer: "Change coop player models" +[ + player1(string) : "Custom plr mdl (1)" : "police1" + player2(string) : "Custom plr mdl (2)" : "police2" + player3(string) : "Custom plr mdl (3)" : "police3" + player4(string) : "Custom plr mdl (4)" : "police4" + sleeve(string) : "Custom sleeve" + fingers(string) : "Custom fingers" + gloves(string) : "Custom gloves" +] + +@PointClass size(-16 -16 0, 16 16 16) base(Targetname) studio("models/props/blandat/dead_cat.mdl") = cof_deadcat : "Dead cat" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Targetname) studio("models/developer_commentary.mdl") = cof_developer_commentary : "Developer commentary" +[ + model(studio) : "Use custom model?" + noise(sound) : "Commentary file" + fuser2(integer) : "Length (in secs)" : 5 + iuser1(choices) : "Speaker" : 0 = + [ + 0: "Minuit" + 1: "ruMpel" + 2: "Sporkeh" + 3: "DragonNOR" + 4: "BerZerk" + ] + message(string) : "Custom speaker" + + spawnflags(Flags) = + [ + 1 : "Always unlocked" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_difficultysettings : "Show the difficulty settings" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_doctorweaponset : "Set the doctor's weapon" +[ + iuser1(choices) : "Doctor's Weapon" : 1 = + [ + 1: "P345" + 2: "Revolver" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_doctorweapontrigger : "Trigger something based on what gun the doctor has" +[ + target(string) : "Trigger if P345" + message(string) : "Trigger if revolver" +] + +@PointClass base(Targetname) size(8 8 8) = cof_document : "Readable Document" +[ + page1(string) : "Page 1" + page2(string) : "Page 2" + page3(string) : "Page 3" + page4(string) : "Page 4" + note1(string) : "Txt file Page 1" + note2(string) : "Txt file Page 2" + note3(string) : "Txt file Page 3" + note4(string) : "Txt file Page 4" + turnsound(string) : "Page Turn Sound" + label(string) : "Document title" +] + +@SolidClass base(Targetname, RenderFields) = cof_doctorshoot : "Check if we're shooting the doctor"[] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_ending : "Ending choices" +[ + iuser1(choices) : "Ending choice" : 0 = + [ + 0: "Killed roof boss" + 1: "Given doctor P345" + 2: "Delivered package" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_entityrestore : "Save/Restore dropped entities" +[ + impulse(choices) : "Save/Restore items" : 0 = + [ + 0: "Save items" + 1: "Restore items" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_entteleport : "Teleport an ent" [] + +@SolidClass base(MoveWith, RenderFields) = cof_fatfuckingcunt : "GAY." +[ + message(string) : "Name of entity to kill" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_giveitems: "Give the player a weapon or key, lol" +[ + message(string) : "Weapon or key to give. example:(weapon_glock or testkey.txt)" + spawnflags(Flags) = + [ + 1 : "Key Item" : 0 + 2 : "Always give" : 0 + 16: "Weapon Info" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_goodpoints: "Give or take a good point" +[ + impulse(choices) : "Add/Remove point" : 0 = + [ + 0: "Add" + 1: "Remove" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_goodpointstrigger: "Trigger something based on the amount of good points" +[ + triggerone(string) : "Trigger with only 1 point" + triggertwo(string) : "Trigger with only 2 points" + triggerthree(string) : "Trigger with only 3 points" + triggerfour(string) : "Trigger with only 4 points" + triggerfive(string) : "Trigger with only 5 points" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_greyfade: "Fade the grey in/out" +[ + iuser1(choices) : "Fade from/to grey" : 0 = + [ + 0: "Fade to grey" + 1: "Fade from grey" + ] + iuser2(choices) : "Custom fade time" : 0 = + [ + 0 : "Normal time" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_hint : "Show a hint" +[ + message(string) : "Hint to use (eg sprint)" +] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio("models/costumes/hoodie.mdl") = cof_hoodie : "Hoodie" +[ + model(studio) : "Custom hoodie model" + iuser1(choices) : "Hoodie type" : 0 = + [ + 0 : "Leatherhoff" + 1 : "ModDB" + 2 : "Hello Kitty" + 3 : "BF3" + 4 : "Camo" + 5 : "HLC" + 6 : "Black Metal" + 7 : "Psykskallar" + 8 : "Fuck anime" + 9 : "Sick Simon" + 10 : "Twitcher" + 11 : "Page 1 - Pages" + 12 : "Page 2 - Ranks" + 13 : "Page 3 - Suits" + 14 : "Page 4 - Items" + 15 : "Page 5 - Weapons" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_interdooronoff: "Lock/Unlock inter_door" +[ + message(string) : "Name of inter_door to toggle" + newlockedby(string) : "Custom LockedBy" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_introduction : "Hoodie" +[ + iuser1(choices) : "Type" : 0 = + [ + 0 : "SP" + 1 : "Doc" + 2 : "Coop" + ] + iuser2(choices) : "On/off" : 1 = + [ + 0 : "Off" + 1 : "On" + ] + iuser3(choices) : "Troll mod?" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_inter_door_exitchange: "Change exit position of an inter_door" +[ + message(string) : "Name of inter_door" + target(string) : "New inter_door_exit" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/env.spr") = cof_keypad : "Numeric Keypad VGUI" +[ + message(string) : "Message when unlocked" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/env.spr") = cof_keypad2 : "Switch to 2nd keypad" [] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/env.spr") = cof_keypad3 : "Switch to 3rd keypad" [] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/env.spr") = cof_keypad4 : "Switch to 4th keypad" [] + +@PointClass size(-8 -8 0, 8 8 8) base(Targetname) studio() = cof_keypadnew : "3D keypad" +[ + iuser1(integer) : "Number" + model(studio) : "Model" + target(string) : "Trigger when unlocked" + noise(sound) : "Sound to precache" + noise2(sound) : "Wrong code sound" + noise3(sound) : "Right code sound" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_killplayer : "Kill the player" +[ + spawnflags(Flags) = + [ + 1 : "No death sound" : 0 + 2 : "No arm" : 0 + 4 : "No camera" : 0 + 8 : "No fade" : 0 + 16 : "No music" : 0 + 32 : "No bodydrop" : 0 + ] +] + +@PointClass size(-8 -8 -8, 8 8 8) color(150 150 150) base(Targetname, RenderFxChoices, Targetx, Angles, Sequence) = cof_mdlcutscene: "MDL-based cutscene" +[ + model(studio) : "Model name" + animation1(string) : "Animation 1" + animation2(string) : "Animation 2" + animation3(string) : "Animation 3" + animation4(string) : "Animation 4" + animation5(string) : "Animation 5" + animation6(string) : "Animation 6" + animation7(string) : "Animation 7" + animation8(string) : "Animation 8" + animation9(string) : "Animation 9" + animation10(string) : "Animation 10" + animation11(string) : "Animation 11" + animation12(string) : "Animation 12" + animation13(string) : "Animation 13" + animation14(string) : "Animation 14" + animation15(string) : "Animation 15" + animation16(string) : "Animation 16" + animation17(string) : "Animation 17" + animation18(string) : "Animation 18" + animation19(string) : "Animation 19" + animation20(string) : "Animation 20" + animation21(string) : "Animation 21" + animation22(string) : "Animation 22" + animation23(string) : "Animation 23" + animation24(string) : "Animation 24" + animation25(string) : "Animation 25" + animation26(string) : "Animation 26" + animation27(string) : "Animation 27" + animation28(string) : "Animation 28" + animation29(string) : "Animation 29" + animation30(string) : "Animation 30" + message(string) : "Entity to move with" + + spawnflags(Flags) = + [ + 1 : "Freeze player" : 0 + 2 : "Hide HUD" : 0 + 4 : "Black bars" : 0 + 16 : "Cancel after anims" : 0 + 32 : "Cancel trigger_camera" : 0 + 64 : "Hide vignette" : 0 + ] +] + +@PointClass size(-16 -16 0, 16 16 72) color(128 0 255) base(Angles) studio() = cof_monster_random_spawn: "Spawn random monsters" +[ + model(studio) : "Model name" + targetname(string) : "Group name" + message(string) : "Monster type (monster_slower etc)" + frags(integer) : "Max nerds to spawn" + health(choices) : "Entity to check spawn (1 per group)" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + spawnflags(Flags) = + [ + 1 : "Monsterclip" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio("models/items/numeral_plate_left1.mdl") = cof_numeralplate_left : "Numeral Plate Left" [] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio("models/items/numeral_plate_right1.mdl") = cof_numeralplate_right : "Numeral Plate Right" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_objective : "Update the objectives" +[ + message(string) : "Name of hint to use" + target(string) : "Custom hints file" : "txtfiles/hints.txt" +] + +@PointClass base(Angles, RenderFields) studio("models/items/generic_note.mdl") = cof_passwordnote : "User/Password note" +[ + usertype(choices) : "Username or Password?" : 0 = + [ + 0: "Username" + 1: "Password" + ] +] + +@PointClass base(Angles, RenderFields) studio() = cof_pushablevan : "Pushable van" +[ + model(studio) : "model" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_phonecall : "Trigger a phone call" +[ + target(target_destination) : "Target after call" + + subtitlenumber1(integer) : "Subtile line 1" : 0 + subtitlenumber2(integer) : "Subtile line 2" : 0 + subtitlenumber3(integer) : "Subtile line 3" : 0 + subtitlenumber4(integer) : "Subtile line 4" : 0 + subtitlenumber5(integer) : "Subtile line 5" : 0 + subtitlenumber6(integer) : "Subtile line 6" : 0 + subtitlenumber7(integer) : "Subtile line 7" : 0 + subtitlenumber8(integer) : "Subtile line 8" : 0 + subtitlenumber9(integer) : "Subtile line 9" : 0 + subtitlenumber10(integer) : "Subtile line 10" : 0 + subtitlenumber11(integer) : "Subtile line 11" : 0 + subtitlenumber12(integer) : "Subtile line 12" : 0 + subtitlenumber13(integer) : "Subtile line 13" : 0 + subtitlenumber14(integer) : "Subtile line 14" : 0 + subtitlenumber15(integer) : "Subtile line 15" : 0 + subtitlenumber16(integer) : "Subtile line 16" : 0 + subtitlenumber17(integer) : "Subtile line 17" : 0 + subtitlenumber18(integer) : "Subtile line 18" : 0 + subtitlenumber19(integer) : "Subtile line 19" : 0 + subtitlenumber20(integer) : "Subtile line 20" : 0 + subtitlenumber21(integer) : "Subtile line 21" : 0 + subtitlenumber22(integer) : "Subtile line 22" : 0 + subtitlenumber23(integer) : "Subtile line 23" : 0 + subtitlenumber24(integer) : "Subtile line 24" : 0 + subtitlenumber25(integer) : "Subtile line 25" : 0 + subtitlenumber26(integer) : "Subtile line 26" : 0 + subtitlenumber27(integer) : "Subtile line 27" : 0 + subtitlenumber28(integer) : "Subtile line 28" : 0 + subtitlenumber29(integer) : "Subtile line 29" : 0 + subtitlenumber30(integer) : "Subtile line 30" : 0 + subtitlenumber31(integer) : "Subtile line 31" : 0 + subtitlenumber32(integer) : "Subtile line 32" : 0 + + subtitletime1(integer) : "Time until line 1" : 0 + subtitletime2(integer) : "Time until line 2" : 0 + subtitletime3(integer) : "Time until line 3" : 0 + subtitletime4(integer) : "Time until line 4" : 0 + subtitletime5(integer) : "Time until line 5" : 0 + subtitletime6(integer) : "Time until line 6" : 0 + subtitletime7(integer) : "Time until line 7" : 0 + subtitletime8(integer) : "Time until line 8" : 0 + subtitletime9(integer) : "Time until line 9" : 0 + subtitletime10(integer) : "Time until line 10" : 0 + subtitletime11(integer) : "Time until line 11" : 0 + subtitletime12(integer) : "Time until line 12" : 0 + subtitletime13(integer) : "Time until line 13" : 0 + subtitletime14(integer) : "Time until line 14" : 0 + subtitletime15(integer) : "Time until line 15" : 0 + subtitletime16(integer) : "Time until line 16" : 0 + subtitletime17(integer) : "Time until line 17" : 0 + subtitletime18(integer) : "Time until line 18" : 0 + subtitletime19(integer) : "Time until line 19" : 0 + subtitletime20(integer) : "Time until line 20" : 0 + subtitletime21(integer) : "Time until line 21" : 0 + subtitletime22(integer) : "Time until line 22" : 0 + subtitletime23(integer) : "Time until line 23" : 0 + subtitletime24(integer) : "Time until line 24" : 0 + subtitletime25(integer) : "Time until line 25" : 0 + subtitletime26(integer) : "Time until line 26" : 0 + subtitletime27(integer) : "Time until line 27" : 0 + subtitletime28(integer) : "Time until line 28" : 0 + subtitletime29(integer) : "Time until line 29" : 0 + subtitletime30(integer) : "Time until line 30" : 0 + subtitletime31(integer) : "Time until line 31" : 0 + subtitletime32(integer) : "Time until line 32" : 0 + + audiofile(sound) : "Sound (after answered)" + + iuser1(choices) : "Call type" : 0 = + [ + 0: "Incoming" + 1: "Outgoing" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_phonedisable : "Disable the phone" [] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_phonetrigger : "Trigger an ent by phone" [] + +@PointClass size(-8 -8 0, 8 8 32) base(PlayerClass, Targetname, Targetx) studio("models/props/inomhusd/puzzle_bar.mdl") = cof_puzzlebar : "Puzzle Bar" +[ + iuser3(choices) : "Start opened?" : 0 = + [ + 0 : "Opened" + 1 : "Closed" + ] +] + +@PointClass size(-8 -8 0, 8 8 32) base(PlayerClass, Targetname, Targetx) studio("models/props/inomhusd/puzzle_bar.mdl") = cof_puzzlebar2 : "Puzzle Bar 2" +[ + iuser3(choices) : "Start opened?" : 0 = + [ + 0 : "Opened" + 1 : "Closed" + ] +] + +@PointClass size(-8 -8 0, 8 8 32) base(PlayerClass, Targetname, Targetx) studio("models/props/inomhusd/puzzle_bar.mdl") = cof_puzzlebar3 : "Puzzle Bar 3" +[ + iuser3(choices) : "Start opened?" : 0 = + [ + 0 : "Opened" + 1 : "Closed" + ] +] + +@PointClass size(-8 -8 0, 8 8 32) base(PlayerClass, Targetname, Targetx) studio("models/props/inomhusd/puzzle_bar.mdl") = cof_puzzlebar4 : "Puzzle Bar 4" +[ + iuser3(choices) : "Start opened?" : 0 = + [ + 0 : "Opened" + 1 : "Closed" + ] +] + +@PointClass size(-8 -8 0, 8 8 32) base(PlayerClass, Targetname, Targetx) studio("models/props/inomhusd/puzzle_bar.mdl") = cof_puzzlebar5 : "Puzzle Bar 5" +[ + iuser3(choices) : "Start opened?" : 0 = + [ + 0 : "Opened" + 1 : "Closed" + ] +] + +@SolidClass base(RenderFields) = cof_puzzlebarbutton : "Brings up the Puzzle Bar VGUI" +[ + message(target_source) : "Name of Camera" + target(target_source) : "Fire when puzzle done" +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_randomtimedspawner: "Randomly spawn a monster somewhere " +[ + target(string) : "Monster to spawn" + message(string) : "Name of ents to spawn at (max 16)" + iuser1(integer) : "Minimum time before spawn" : 0 + iuser2(integer) : "Maximum time before spawn" : 0 + iuser4(choices) : "Max nerds to spawn" : 0 = + [ + 0 : "Infinite" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_simonspeak : "Make Simon say something" +[ + noise(sound) : "Sound to use" + iuser1(choices) : "Audio channel" : 0 = + [ + 0 : "CHAN_AUTO" + 1 : "CHAN_WEAPON" + 2 : "CHAN_VOICE" + 3 : "CHAN_ITEM" + 4 : "CHAN_BODY" + 5 : "CHAN_STREAM" + 6 : "CHAN_STATIC" + ] + fuser1(integer) : "Volume" : 1 +] + +@PointClass size(-4 -4 -4, 4 4 4) base(Targetname) = cof_simpletext: "Trigger a text message" +[ + message(string) : "Text to display" + iuser1(choices) : "Colour" : 0 = + [ + 0: "Yellow" + 1: "Blue" + 2: "Red" + 3: "Yellow" + 4: "Green" + 5: "Grey" + ] + spawnflags(Flags) = + [ + 1 : "All players" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_skipmanager : "Skip manager" +[ + entity(string) : "Entity to trigger" + aweapon(string) : "Weapon to give" + bweapon(string) : "Second weapon to give" + cweapon(string) : "Third weapon to give" + aitem(string) : "Item to give" + bitem(string) : "Second item to give" + citem(string) : "Third item to give" + teleport(string) : "Teleport entity" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_slowmotion : "Slow motion trigger" +[ + health(string) : "Slow motion speed" : "0.005" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_startdoctormode : "Start doctor mode" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_stats : "Stats" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_stopwheelchair : "Stop wheelchair mode" [ ] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_strangle : "Strangle Sick Simon" +[ + target(string) : "Fire after killing" + message(string) : "Name of boss healthbar monster" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_stresstest : "Starts the video stress test" [ ] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_survivalmode : "Starts survival mode" +[ + message(string) : "Trigger when won" : 0 + target(string) : "Trigger when all die" : 0 + iuser1(integer) : "How long to survive (secs)" : 900 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_updatekeypad : "Get Keypad Number" +[ + message(string) : "Name of tortyrscen2.mdl monster" : 0 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_telephone: "Trigger the telephone" +[ + target(string) : "Trigger after right number dialed" : 0 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_telescope: "Trigger the telescope" +[ + message(string) : "Entity to view from" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_telescope_camera: "Trigger the telescope" [ ] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_killmp3 : "Turn off all MP3s" +[ + frags(choices) : "Music fade out time" : 0 = + [ + 0 : "Instant" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_telescope_cancel: "Disable the telescope" +[ + message(string) : "Name of cof_telescope to cancel" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_ladderclimb : "Climb up/down a ladder" +[ + iuser1(choices) : "Up/down" : 0 = + [ + 0 : "Up" + 1 : "Down" + ] +] + +@PointClass size(-16 -16 0, 16 16 72) color(150 150 150) base(Targetname, Targetx, Angles, MoveWith, RenderFields, Sequence) = cof_ladder_manager: "Ladder manager" +[ + model(studio) : "Model name" + animation1(string) : "Animation 1" + animation2(string) : "Animation 2" + animation3(string) : "Animation 3" + animation4(string) : "Animation 4" + animation5(string) : "Animation 5" + animation6(string) : "Animation 6" + animation7(string) : "Animation 7" + animation8(string) : "Animation 8" + animation9(string) : "Animation 9" + animation10(string) : "Animation 10" + animation11(string) : "Animation 11" + animation12(string) : "Animation 12" + animation13(string) : "Animation 13" + animation14(string) : "Animation 14" + animation15(string) : "Animation 15" + animation16(string) : "Animation 16" + animation17(string) : "Animation 17" + animation18(string) : "Animation 18" + animation19(string) : "Animation 19" + animation20(string) : "Animation 20" + animation21(string) : "Animation 21" + animation22(string) : "Animation 22" + animation23(string) : "Animation 23" + animation24(string) : "Animation 24" + animation25(string) : "Animation 25" + animation26(string) : "Animation 26" + animation27(string) : "Animation 27" + animation28(string) : "Animation 28" + animation29(string) : "Animation 29" + animation30(string) : "Animation 30" + customoff(string) : "Custom Off animation" + customon(string) : "Custom On animation" + customoffd(string) : "Custom Off DESCEND animation" + customond(string) : "Custom On DESCEND animation" + descendoffset(integer) : "Number of units to start descent" : 0 + topent(string) : "Entity to end at(top)" + bottoment(string) : "Entity to end at(bottom)" +] + +@SolidClass base(Targetname, RenderFields) = cof_ladder_manager_use : "Trigger the ladder manager" +[ + spawnflags(Flags) = + [ + 1 : "Up AND down" : 0 + ] + + target(string) : "Name of cof_ladder_manager" + iuser1(choices) : "Up/Down" : 0 = + [ + 0 : "Up" + 1 : "Down" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_lensflare : "Gay" [] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_leveltrigger : "Trigger an entity when the next level starts" +[ + message(string) : "Name of entity to trigger" : 0 + map(string) : "Name of map to trigger it on" : 0 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_lobby_start: "Trigger when lobby ends" +[ + message(string) : "Name of entity to trigger" +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_logo : "Display the CoF Logo" +[ + frags(choices) : "Logo or Name" : 0 = + [ + 0 : "CoF Logo" + 1 : "Andreas" + 2 : "James" + 3 : "Jordy" + 4 : "Stig" + 5 : "Lasse" + 6 : "Aina" + ] +] + +@PointClass base(Targetname) = cof_lookat: "Look at this entity's origin for X seconds" +[ + fuser1(integer) : "How long to look for (seconds)" : 5 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_maxhealthchange : "Change the player's max health" +[ + impulse(choices) : "Max health" : 0 = + [ + 0 : "100%" + 1 : "80%" + 2 : "66%" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_phonecheck : "Trigger something with the phone" +[ + impulse(integer) : "Number to call" + noise(sound) : "Play sound when triggered" + iuser1(integer) : "Max distance" + frags(choices) : "Distance based?" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] + spawnflags(Flags) = + [ + 1 : "Infinite use" : 0 + 2 : "Call from anywhere" : 0 + ] +] + +@PointClass base(Targetname) = cof_playerbreathetoggle : "Trigger player breathing on/off" +[ + frags(choices) : "Turn breathing on/off" : 0 = + [ + 0 : "Off" + 1 : "On" + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = cof_serversettings : "Show the server settings" [] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_speedchange : "Change the gay speed" +[ + speed(integer) : "Speed to set" +] + +@PointClass base(Targetname) color(171 211 172) = cof_teleport : "Point Entity Teleport" +[ + target(target_destination) : "Teleport Destination" + message(string) : "Name of entity to teleport (blank = player)" +] + +@PointClass base(Targetname) size(48 48 48) = cof_trainprop : "Moving train prop" +[ + iuser1(choices) : "Direction to go along" : 0 = + [ + 0 : "X Axis" + 1 : "Y Axis" + 2 : "Z Axis" + ] + iuser3(integer) : "How far to go, in units" + fuser1(integer) : "Speed (units/frame)" + spawnflags(Flags) = + [ + 1 : "Hill" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = cof_triggeron : "Trigger on" [] + +@PointClass base(Targetname) = cof_yesno: "Brings up a yes/no dialogue" +[ + spawnflags(Flags) = + [ + 1 : "Remove weapon/item" : 0 + ] + + message(string) : ".tga to use for panel" + target(target_destination) : "Target (Yes)" + notrigger(target_destination) : "Target (No)" + cvarset(string) : "Cvar to set Yes? (sv_cheats for example)" + cvarvalue(integer) : "Value of cvar to set Yes (1 for example)" + cvarsetno(string) : "Cvar to set No? (sv_cheats for example)" + cvarvalueno(integer) : "Value of cvar to set No (1 for example)" + weaponneed(string) : "Weapon needed to show yes/no (weapon_mobile for example)" + itemneed(string) : "Item needed to show yes/no (inventoryitems/test.txt for example)" + noitemmsg(string) : "Message displayed when don't have weapon/item needed" +] + +@PointClass base(Targetname) color(255 128 64) = cof_weaponswitch : "Select a player's weapon" +[ + message(string) : "Weapon (eg weapon_mobile)" +] + +@PointClass base(Targetname) color(255 128 64) = cof_weapontrigger : "Trigger something if we do/don't have a weapon" +[ + message(string) : "Weapon needed (eg weapon_mobile)" + target(string) : "Trigger if we DO have weapon" + noise(string) : "Trigger if we DON'T have weapon" +] + +@PointClass base(Targetname) color(128 128 64) = cof_wheelchairmode : "Activate wheelchair mode" +[ + message(string) : "Entity to spawn wheelchair at" +] + +@PointClass size(-8 -8 0, 8 8 16) base(RenderFields, Targetname) studio() = cutscene_model : "Gay shit for making cutscene models" +[ + spawnflags(Flags) = + [ + 1 : "No anim blend" : 0 + ] + + model(studio) : "Model name" + animation1(string) : "Animation 1" + animation2(string) : "Animation 2" + animation3(string) : "Animation 3" + animation4(string) : "Animation 4" + animation5(string) : "Animation 5" + animation6(string) : "Animation 6" + animation7(string) : "Animation 7" + animation8(string) : "Animation 8" + animation9(string) : "Animation 9" + animation10(string) : "Animation 10" + animation11(string) : "Animation 11" + animation12(string) : "Animation 12" + animation13(string) : "Animation 13" + animation14(string) : "Animation 14" + animation15(string) : "Animation 15" + animation16(string) : "Animation 16" + animation17(string) : "Animation 17" + animation18(string) : "Animation 18" + animation19(string) : "Animation 19" + animation20(string) : "Animation 20" + animation21(string) : "Animation 21" + animation22(string) : "Animation 22" + animation23(string) : "Animation 23" + animation24(string) : "Animation 24" + animation25(string) : "Animation 25" + animation26(string) : "Animation 26" + animation27(string) : "Animation 27" + animation28(string) : "Animation 28" + animation29(string) : "Animation 29" + animation30(string) : "Animation 30" +] + +@PointClass base(Targetname) = dripper: "Create drips" +[ + fuser1(integer) : "Drip speed" : -250 +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_fogfield : "Field of fog" +[ + _minlight(string) : "Minimum light level" + + axis(choices) : "NOT USED Axis" : -1 = + [ + 1: "X/Y - Left/right" + 2: "Z - Up" + ] + + spawnflags(Flags) = + [ + 2 : "Start on" : 0 + ] +] + +@SolidClass base(Targetname) = func_timer : "Gay Timer" +[ + iuser1(choices) : "Start or Finish" : 0 = + [ + 0: "Start timer" + 1: "Finish timer" + ] +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_trainbutts : "Brush cof_trainprop" +[ + iuser1(choices) : "Direction to go along" : 0 = + [ + 0 : "X Axis" + 1 : "Y Axis" + 2 : "Z Axis" + ] + iuser3(integer) : "How far to go, in units" + fuser1(integer) : "Speed (units/frame)" +] + +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(128 64 0) iconsprite("sprites/info.spr") = info_roofboss_target : "Roof boss target to fly to sometimes" [] + +@PointClass size(-32 -32 0, 32 32 72) base(PlayerClass, Targetname) studio("models/camera_player.mdl") = real_camera : "Actually pro" +[ + message(string) : "Animation to play when used" +] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields, Sequence) studio("models/props/utomhusd/eagle.mdl") = statue_eagle : "Eagle statue for statue puzzle" +[ + startpos(choices) : "Starting Position" : 0 = + [ + 0 : "Centre" + 1 : "Left" + 2 : "Up" + 3 : "Right" + 4 : "Down" + ] +] +@PointClass base(Targetname, Angles, MoveWith, RenderFields, Sequence) studio("models/props/utomhusd/horse.mdl") = statue_horse : "Horse statue for statue puzzle" +[ + startpos(choices) : "Starting Position" : 0 = + [ + 0 : "Centre" + 1 : "Left" + 2 : "Up" + 3 : "Right" + 4 : "Down" + ] +] +@PointClass base(Targetname, Angles, MoveWith, RenderFields, Sequence) studio("models/props/utomhusd/lion.mdl") = statue_lion : "Lion statue for statue puzzle" +[ + startpos(choices) : "Starting Position" : 0 = + [ + 0 : "Centre" + 1 : "Left" + 2 : "Up" + 3 : "Right" + 4 : "Down" + ] +] +@PointClass base(Targetname, Angles, MoveWith, RenderFields, Sequence) studio("models/props/utomhusd/owl.mdl") = statue_owl : "Owl statue for statue puzzle" +[ + startpos(choices) : "Starting Position" : 0 = + [ + 0 : "Centre" + 1 : "Left" + 2 : "Up" + 3 : "Right" + 4 : "Down" + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = statue_puzzle_complete : "Fire this when statue puzzle is done" +[] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = subtitle_main : "Subtitle Manager" +[ + linenumber(integer) : "Subtitle Line Number" : 1 +] + +@PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = subtitle_linechange : "Change and display subtitle_main line" +[ + linechange(integer) : "Subtitle line to use" : 1 +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = subtitle_multiple : "Subtitle Line Changer (Multiple)" +[ + subtitlenumber1(integer) : "Subtile line 1" : 0 + subtitlenumber2(integer) : "Subtile line 2" : 0 + subtitlenumber3(integer) : "Subtile line 3" : 0 + subtitlenumber4(integer) : "Subtile line 4" : 0 + subtitlenumber5(integer) : "Subtile line 5" : 0 + subtitlenumber6(integer) : "Subtile line 6" : 0 + subtitlenumber7(integer) : "Subtile line 7" : 0 + subtitlenumber8(integer) : "Subtile line 8" : 0 + subtitlenumber9(integer) : "Subtile line 9" : 0 + subtitlenumber10(integer) : "Subtile line 10" : 0 + subtitlenumber11(integer) : "Subtile line 11" : 0 + subtitlenumber12(integer) : "Subtile line 12" : 0 + subtitlenumber13(integer) : "Subtile line 13" : 0 + subtitlenumber14(integer) : "Subtile line 14" : 0 + subtitlenumber15(integer) : "Subtile line 15" : 0 + subtitlenumber16(integer) : "Subtile line 16" : 0 + subtitlenumber17(integer) : "Subtile line 17" : 0 + subtitlenumber18(integer) : "Subtile line 18" : 0 + subtitlenumber19(integer) : "Subtile line 19" : 0 + subtitlenumber20(integer) : "Subtile line 20" : 0 + subtitlenumber21(integer) : "Subtile line 21" : 0 + subtitlenumber22(integer) : "Subtile line 22" : 0 + subtitlenumber23(integer) : "Subtile line 23" : 0 + subtitlenumber24(integer) : "Subtile line 24" : 0 + subtitlenumber25(integer) : "Subtile line 25" : 0 + subtitlenumber26(integer) : "Subtile line 26" : 0 + subtitlenumber27(integer) : "Subtile line 27" : 0 + subtitlenumber28(integer) : "Subtile line 28" : 0 + subtitlenumber29(integer) : "Subtile line 29" : 0 + subtitlenumber30(integer) : "Subtile line 30" : 0 + subtitlenumber31(integer) : "Subtile line 31" : 0 + subtitlenumber32(integer) : "Subtile line 32" : 0 + + subtitletime1(integer) : "Time until line 1" : 0 + subtitletime2(integer) : "Time until line 2" : 0 + subtitletime3(integer) : "Time until line 3" : 0 + subtitletime4(integer) : "Time until line 4" : 0 + subtitletime5(integer) : "Time until line 5" : 0 + subtitletime6(integer) : "Time until line 6" : 0 + subtitletime7(integer) : "Time until line 7" : 0 + subtitletime8(integer) : "Time until line 8" : 0 + subtitletime9(integer) : "Time until line 9" : 0 + subtitletime10(integer) : "Time until line 10" : 0 + subtitletime11(integer) : "Time until line 11" : 0 + subtitletime12(integer) : "Time until line 12" : 0 + subtitletime13(integer) : "Time until line 13" : 0 + subtitletime14(integer) : "Time until line 14" : 0 + subtitletime15(integer) : "Time until line 15" : 0 + subtitletime16(integer) : "Time until line 16" : 0 + subtitletime17(integer) : "Time until line 17" : 0 + subtitletime18(integer) : "Time until line 18" : 0 + subtitletime19(integer) : "Time until line 19" : 0 + subtitletime20(integer) : "Time until line 20" : 0 + subtitletime21(integer) : "Time until line 21" : 0 + subtitletime22(integer) : "Time until line 22" : 0 + subtitletime23(integer) : "Time until line 23" : 0 + subtitletime24(integer) : "Time until line 24" : 0 + subtitletime25(integer) : "Time until line 25" : 0 + subtitletime26(integer) : "Time until line 26" : 0 + subtitletime27(integer) : "Time until line 27" : 0 + subtitletime28(integer) : "Time until line 28" : 0 + subtitletime29(integer) : "Time until line 29" : 0 + subtitletime30(integer) : "Time until line 30" : 0 + subtitletime31(integer) : "Time until line 31" : 0 + subtitletime32(integer) : "Time until line 32" : 0 +] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio("models/tape_recorder.mdl") = tape_recorder : "Tape Recorder for saving" +[ + model(studio) : "Different Model?" + + message(string) : "Location" + + custommsg(string) : "Custom first message" + + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + + spawnflags(flags) = + [ + 1 : "Alley Recorder" : 0 + 2 : "Don't drop" : 0 + ] +] + +@SolidClass base(Targetname, RenderFields) = trigger_checkbrush : "Brush equivalent of recb_message" +[ + message(string) : "Text to Display" + usesound(sound) : "Sound when used (if wanted)" + checkdelay(integer) : "Minimum time between each +use" : 2 + spawnflags(Flags) = + [ + 1 : "Code msg?" : 0 + ] +] + +@SolidClass base(Targetname, RenderFields, Master) = trigger_statueuse : "Trigger Statue Puzzle" +[ + statuetype(choices) : "Statue/Sign Type" : 0 = + [ + 0 : "Eagle" + 1 : "Horse" + 2 : "Lion" + 3 : "Owl" + 4 : "You Are Here" + ] +] + +@SolidClass base(Targetname, RenderFields) = trigger_subwaywall : "The thing for smashing down the subway" +[ + target(string) : "Fire when broken" + noise1(sound) : "Sound when hit" : "ambience/subway_wall_hit.wav" + noise2(sound) : "Sound when breaks" : "ambience/subway_wall_break.wav" + frags(integer) : "Number of hits to break" : 3 + message(string) : "Message when used" +] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/axe/w_axe.mdl")= weapon_axe: "Axe" +[ + spawnflags(Flags) = + [ + 1 : "Ending5b" : 0 + ] +] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/booklaser/w_booklaser.mdl")= weapon_booklaser: "Booklaser" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/branch/w_branch.mdl")= weapon_branch: "Branch" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/camera/w_camera.mdl")= weapon_camera: "Camera" +[ + spawnflags(Flags) = + [ + 1 : "Unlockable" : 0 + ] +] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/famas/w_famas.mdl")= weapon_famas: "FAMAS" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/flashlight/w_flashlight.mdl")= weapon_flashlight: "Flashlight" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/flare/w_flare.mdl")= weapon_flare: "Flare" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/lantern/w_lantern.mdl")= weapon_lantern: "Lantern" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/m16/w_m16.mdl")= weapon_m16: "M16A2 Rifle" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/mobile/w_mobile.mdl")= weapon_mobile: "Mobile Phone" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/nightstick/w_nightstick.mdl")= weapon_nightstick: "Night Stick" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/p345/w_p345.mdl")= weapon_p345: "P345 Pistol" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/revolver/w_revolver.mdl")= weapon_revolver: "Revolver" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/rifle/w_rifle.mdl")= weapon_rifle: "Hunting Rifle" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/shotgun/w_shotgun.mdl")= weapon_shotgun: "Pump Shotgun" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/sledgehammer/w_sledgehammer.mdl")= weapon_sledgehammer: "Sledgehammer" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/syringe/w_syringe.mdl")= weapon_syringe: "Syringe" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/switchblade/w_switchblade.mdl")= weapon_switchblade: "Switch Blade" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/tmp/w_tmp.mdl")= weapon_tmp: "TMP" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/glock/w_glock.mdl")= weapon_vp70: "VP70" [] + +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) studio("models/weapons/glock/w_glock.mdl")= weapon_glock: "Glock 9mm" [] + +@PointClass base(PlayerClass, MoveWith, Sequence) studio("models/booksimon.mdl") = info_simon_spawnpoint : "Boom Simon spawn point" [] + +@PointClass base(Targetx) iconsprite("sprites/trigger.spr") = trigger_booksimon : "Trigger Book Simon" +[ + message(string) : "Entity to spawn Sick Simon at" + target(string) : "Trigger when Sick Simon spawns" +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) = monster_twitcher : "Twitcher" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "original" + 1 : "no" + 2 : "turken" + 3 : "nono" + 4 : "polisen" + 5 : "bruden" + 6 : "rymden" + 7 : "groenus" + 8 : "originalei" + 9 : "vitei" + 10 : "graglass" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) = monster_twitcher2 : "Twitcher2" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "original" + 1 : "no" + 2 : "turken" + 3 : "nono" + 4 : "polisen" + 5 : "bruden" + 6 : "rymden" + 7 : "groenus" + 8 : "originalei" + 9 : "vitei" + 10 : "graglass" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) = monster_twitcher3 : "Twitcher3" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "original" + 1 : "no" + 2 : "turken" + 3 : "nono" + 4 : "polisen" + 5 : "bruden" + 6 : "rymden" + 7 : "groenus" + 8 : "originalei" + 9 : "vitei" + 10 : "graglass" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) = monster_twitcher4 : "Twitcher4" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "original" + 1 : "no" + 2 : "turken" + 3 : "nono" + 4 : "polisen" + 5 : "bruden" + 6 : "rymden" + 7 : "groenus" + 8 : "originalei" + 9 : "vitei" + 10 : "graglass" + ] +] + +@PointClass size(-16 -16 0, 16 16 16) base(Targetname) studio("models/items/w_pills.mdl") = aom_pills : "AoM pills" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/day-of-defeat.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/day-of-defeat.fgd new file mode 100644 index 0000000..33de211 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/day-of-defeat.fgd @@ -0,0 +1,2993 @@ +// --------------------------------------------------------------------------------- +// Day of Defeat game definition file (.fgd) +// Version 2.0.3.A.SP +// For Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above +// Last update: April 26, 2002 by Tim "Waldo" Holt +// +// --------------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------------- +// Version Number Convention +// --------------------------------------------------------------------------------- +// First version number reflects major version # of game +// Second version number reflects minor version # of game +// Third version number reflects version # of FGD for given game version +// Alternate ending digits reflect game type and FGD status... +// "A" = alpha +// "B" = beta +// "SP" = single player +// "MP" = multiplayer +// --------------------------------------------------------------------------------- + +// --------------------------------------------------------------------------------- +// Revision history +// --------------------------------------------------------------------------------- +// by Justin DeJong aka "N0TH1NG" +// modified from code by Chris Bokitch aka "autolycus" +// +// by Tim Holt aka Waldo (burkenholt@home.com) +// modified from code by Justin DeJong aka "N0TH1NG" +// +// Version 0.7.3 and 0.7.4 by Morlam (morlam@gamespotmail.com) +// slightly modified from code by Chris Bokitch (Autolycus), Justin DeJong (NOTH1NG), and +// Tim Holt (Waldo). +// +// version 0.8.0 by Matt Boone aka "Mugsy" +// modified from version 0.7.4 +// +// version 2.0.1 by Tim Holt aka "Waldo" +// modified from version 0.8.0 +// changed first digit of version number to reflect DoD version. +// +// version 2.0.2 by Brandon Russell aka "Axis" +// modified from version 2.0.1 +// --------------------------------------------------------------------------------- +// Original changes by Tim Holt (0.7.0) +// - Added new Trigger Changetarget sprite (green cube w/words) +// - Added new Info Target sprite (bullseye) +// - Added new trigger_camera sprite (Video camera) +// - Added new Multi Manager sprite (box w/arrows coming out of it) +// - Added new "Cycler Sprite" sprite (box w/arrow circle around it) +// - Added replacement ambient_generic sprite (changed from speaker to speaker +// with words "Ambient Generic" around it") +// - Added replacement env_sound sprite (changed from speaker to speaker +// with words "Env Sound" around it") +// - Added replacement light_spot sprite (changed from lightbulb to spotlight) +// - Added replacement Light Environment sprite (changed from lightbulb to sun) +// - Added all the "game_*" entities +// - Added info_compile_params and info_lights_rad entities. Idea is to +// get someone like Zoner to implement support for them in Zoners, or +// build support for them into a compile tool like Q2Beaver, HLCC, etc. +// - Added env_funnel +// - Added trigger_gravity +// - Added player_weaponstrip +// - Put Zoners RAD option (that allow solid (func_) based ents to cast +// shadows) into a number of new additional items that can support it. +// Use with caution, as for example a func_pushable can cast a shadow now, +// but if you push it, the shadow stays behind :^) +// +// 12/31/2000 - Tim Holt (0.7.1) +// - Added new sprites for all the Game entities +// - Added new sprite for Player Weapon Strip +// - Added new sprite for Trigger_Relay +// - Added new sprite for Trigger_ChangeTarget +// +// 01/01/2001 - Tim Holt (0.7.2) +// - Added new dropdown to hostage entity, so you can choose hostage skin +// directly by name (orange suit guy or tie guy) +// - Removed commented out "master" option for game_zone_player. It was +// commented out from the original HL FGD for some reason. Not sure why +// or if maybe there is a problem with it? +// +// 01/04/2001 - Morlam (0.7.3) +// - Arranged all the point entities in alphabetical order +// - Corrected a typo in hostage_entity: "Orange Suit Worker" from +// "Orange Suite Worker". +// - Changed func_water default WaveHeight to 0 +// - Added ZHLT Light Flags to func_plat, _pendulum and _vehicle +// - Under info_compile_params: +// - Changed extra to choices instead of a string; default is now 0 +// - Changed extra to read: "Enable Extra mode in HLRAD?" +// - Added hullfile, chop, texchop, circus, and dscale keys +// - Added "No Clip" flag under Run BSP in the spawnflags +// - Under info_lights_rad: +// - added radfile key/value, specifies custom texture light file +// +// 01/05/2001 - Morlam (0.7.4) +// - Added _fade and _falloff keys to the light_ entities. Need ZHLT 2.2+ +// for these to work. +// - Added light_origin key to the ZHLT Light Flags BaseClass. Again, you +// need the latest version of Zoner's Tools for light_origin to work. +// - Moved circus and extra from the "Class Info" tab to the "Flags" tab. +// - Shortened the SmartEdit names of certain key/values in info_compile_params +// so that they aren't cut off (at least, on my 800X600 screen on a 15 inch +// monitor). +// +// Jan 6, 2001 - Tim Holt (0.7.5) +// - Added new parameter options for game_player_equip to list all +// CS items in dialog, thus removing the need to turn off SmartEdit +// to configure. +// - Added new sprite for trigger_auto (green box with words "Trigger Auto") +// +// Jan 26, 2001 - Tim Holt (0.7.6) +// - Added "No Clients" check option to Trigger base class per suggestion/lead +// from Mataleone (cs mapping forum) +// +// Aug 27, 2001 - Tim Holt (0.7.7) +// - Removed some old CS entities that had not been removed +// - Added cycler_wreckage +// - Added Angular velocity option to func_train (see +// http://www.chatbear.com/cgi-bin/board.pl?action=viewthread&threadid=252,994640145,10305&id=47702&boardid=9) +// +// Dec, 2001 - Matt Boone ( 0.8.0 ) +// - added dod 2.0 objectives +// +// Dec 11, 2001 - Tim Holt (2.0.0bmp) +// - merged some spirit features with Matt Boone's revised 2.0 DoD entities +// +// Jan 11, 2002 - Brandon Russell (2.0.2bmp) +// - Added 2 new settings to the spawn flags of Game_text to fix Kami's map +// +// April 26, 2002 - Tim Holt (2.0.3mp) +// Rolling in a bunch of fixes based +// - Removed info_initial_player_allies as it is no longer used in 2.0 +// - Removed info_initial_player_axis as it is no longer used in 2.0 +// - Removed sprite from info_player_allies and info_player_axis. Hard to judge +// player spawn location and player size with sprites. Axis is red, Allies are +// green. Colors were also incorrect for these entities. Set to be correct. +// - Added new _defuse_light attribute for the HLRAD tweak by Adam Foster (see +// http://www.chatbear.com/cgi-bin/board.pl?action=viewthread&threadid=860,1014492782,1883&id=158865&boardid=653&view=flatold +// - Added missing "movewith" attribute to all trigger brush ents +// - Added skin value -3 for water to func_illusionary +// - Added in all the weapon_ entities for weapons on the ground +// - Added in all the ammo_ entities for ammo on the ground +// +// April 28, 2002 - Tim Holt (2.0.3.A.SP) +// Adding in single player stuff +// - Add HintTypeChoices base class +// - Add ActivityTypeChoices base class +// - Add Monster base class +// - Add info_node entity +// - Add info_intermission entity +// - Add info_landmark entity +// - Add AiScriptedSequence entity +// - Added scripted_action entity +// - Added scripted_sentence entity +// - Added scripted_sequence entity +// - Added trigger_transition entity +// - Added monster_axis_grunt +// - Added monster_allied_grunt +// - Added monster_allied_barney + +// --------------------------------------------------------------------------------- + +// Worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (Sky name)" + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + newunit(choices) : "Flush global entities?" : 0 = + [ + 0 : "No, keep global ents" + 1 : "Yes, flush global ents" + ] +] + + +// +// BaseClasses +// + +// --------------------------------------------------------------------- +// These are the possible hint types currently suported by +// the HL code. Note that very few monsters actually support +// them, but anyone editing custom monster AI could easily +// utilize them. +// +// Bullsquid will trigger selected activity if node is marked with... +// World Human Blood +// +// Houndeye will trigger selected activity if node is marked with... +// World Machinery +// Blinking Light +// Human Blood +// Alien Blood +// +// Basically to override the default monster behaviour (which is to +// ignore all hint types), a monster's code needs to override the +// default method FValidateHintType, and return TRUE if the hint type +// passed is "interesting", or FALSE if it is not "interesting" +// +// Note that the values below MUST match the enum set defined in +// nodes.h +// +// Tim Holt ("Waldo") +// --------------------------------------------------------------------- +@BaseClass = HintTypeChoices +[ + hinttype(Choices) : "Hint Type" : 0 = + [ + 0 : "None" + 1 : "World Door" + 2 : "World Window" + 3 : "World Button" + 4 : "World Machinery" + 5 : "World Ledge" + 6 : "World Source" + 7 : "World Source" + 8 : "World Blinking Light" + 9 : "World Bright Colors" + 10 : "World Human Blood" + 11 : "World Alien Blood" + 100 : "Tactical Exit" + 101 : "Tactical Vantage" + 102 : "Tactical Ambush" + 300 : "Stuka Perch" + 301 : "Stuka Landing" + ] +] + +// --------------------------------------------------------------------- +// These are the possible activity values that are shared by all +// monsters. Note that not all monsters can do all activities! +// +// These activity values must NOT be changed as they must reflect the +// values set in an enum in activity.h +// +// Tim Holt ("Waldo") +// --------------------------------------------------------------------- + +@BaseClass = ActivityTypeChoices +[ + activity(Choices) : "Hint Activity" : 0 = + [ + 0 : "Reset" + 1 : "Idle" + 2 : "Guard" + 3 : "Walk" + 4 : "Run" + 5 : "Fly" + 6 : "Swim" + 7 : "Hop" + 8 : "Leap" + 9 : "Fall" + 10 : "Land" + 11 : "Strafe Left" + 12 : "Strafe Right" + 13 : "Roll Left" + 14 : "Roll Right" + 15 : "Turn Left" + 16 : "Turn Right" + 17 : "Crouch" + 18 : "Crouch Idle" + 19 : "Stand" + 20 : "Use" + 21 : "Signal 1" + 22 : "Signal 2" + 23 : "Signal 3" + 24 : "Twitch" + 25 : "Cower" + 26 : "Small Flinch" + 27 : "Big Flinch" + 28 : "Range Attack 1" + 29 : "Range Attack 2" + 30 : "Melee Attack 1" + 31 : "Melee Attack 2" + 32 : "Reload" + 33 : "Arm" + 34 : "Disarm" + 35 : "Eat" + 36 : "Die Simple" + 37 : "Die Backward" + 38 : "Die Forward" + 39 : "Die Violent" + 40 : "Barnacle Hit" + 41 : "Barnacle Pull" + 42 : "Barnacle Chomp" + 43 : "Barnacle Chew" + 44 : "Sleep" + 45 : "Inspect Floor" + 46 : "Inspect Wall" + 47 : "Idle Angry" + 48 : "Walk Hurt" + 49 : "Run Hurt" + 50 : "Hover" + 51 : "Glide" + 52 : "Fly Left" + 53 : "Fly Right" + 54 : "Detect Scent" + 55 : "Sniff" + 56 : "Bite" + 57 : "Threat Display" + 58 : "Fear Display" + 59 : "Excited" + 60 : "Special Attack 1" + 61 : "Special Attack 2" + 62 : "Combat Idle" + 63 : "Walk Scared" + 64 : "Run Scared" + 65 : "Victory Dance" + 66 : "Die Headshot" + 67 : "Die Chestshot" + 68 : "Die Gutshot" + 69 : "Die Backshot" + 70 : "Flinch Head" + 71 : "Flinch Stomach" + 72 : "Flinch Left Arm" + 73 : "Flinch Right Arm" + 74 : "Flinch Left Leg" + 75 : "Flinch Right Leg" + ] +] + + + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = MoveWith +[ + movewith(target_destination) : "Moves with" +] + +@BaseClass = Master +[ + //* To invert the master relationship (that is, to disable this entity whenever the master is on), + //* add a tilde (~) at the start of the master's name. + master(string) : "Master" +] + +@BaseClass = DoDCam [ + zoomlevel(integer): "Zoom FOV (scope=20, binoc=50, normal=90)" : 110 + cam_overlay(choices) : "dod_camera View" : 3 = + [ + 0: "normal" + 1: "Scope (20)" + 2: "Binoculars (50)" + 3: "Widescreen (110)" + ] + subtitle(integer) :"Subtitle" : 0 +] + +@BaseClass = CPMaster +[ + spawn_cp_master(string) : "Master Control Point " : "" + spawn_cp_neutral(choices) : "Active if neutral?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawn_cp_incontrol(choices) : "Active if in control?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawn_cp_notincontrol(choices) : "Active if not in control?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles) = Weapon [] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles) = PlayerClass [] + +@BaseClass size(-16 -16 -16, 16 16 16) base(Targetname, Angles, MoveWith) = gibshooterbase +[ + m_iGibs(integer) : "Number of Gibs" : 3 + delay(string) : "Delay between shots" : "0" + m_flVelocity(integer) : "Gib Velocity" : 200 + m_flVariance(string) : "Course Variance" : "0.15" + m_flGibLife(string) : "Gib Life" : "4" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + // ------------------------------------------------------------------------------ + // This field will have no effect on a static (i.e. nameless) light. + // 'a' is dark, 'm' is normal brightness, 'z' is full brightness. + // There's no support for a light to have a custom appearances when it's in a + // state other than 'on'. See @trigger_lightstyle if you need this effect. + // ------------------------------------------------------------------------------ + pattern(string) : "Custom Appearance (on)" + + m_iOnStyle(Choices) : "Appearance (on)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + + m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 + + // This field will have no effect on a static (i.e. nameless) light. + m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 + + m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + + _fade(integer) : "Fade (ZHLT Only)" + _falloff(integer) : "Falloff 1-2 (ZHLT Only)" + +] + +@BaseClass base(Targetname) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + 0: "Glass" + //* Gibs: models/woodgibs.mdl + //* Break noise: debris/bustcrateX.wav + //* Bounce noise: debris/woodX.wav + 1: "Wood" + //* Gibs: models/metalplategibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/metalX.wav + 2: "Metal" + //* Gibs: models/fleshgibs.mdl + //* Break noise: debris/bustfleshX.wav + //* Bounce noise: debris/fleshX.wav + 3: "Flesh" + //* Gibs: models/cindergibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 4: "Cinder Block" + //* Gibs: models/ceilinggibs.mdl + //* Break noise: debris/bustceilingX.wav + //* Bounce noise: none + 5: "Ceiling Tile" + //* Gibs: models/computergibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/woodX.wav + //* Note: Generates sparks when damaged. + 6: "Computer" + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + //* Note: Makes ricochet noises when damaged. + 7: "Unbreakable Glass" + //* Gibs: models/rockgibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 = + [ + 0: "Normal" + 1: "Embedded Fix" + 2: "Opaque (Blocks Light)" + 3: "Opaque + Embedded Fix" + 6: "ConcaveFix (6)" + ] +] + +@BaseClass base(Targetname, RenderFields, Angles, MoveWith, Master) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + // ----------------------------------------------------------------- + // The number against each sound corresponds to the wav file played. + // e.g. Vacuum (4) plays "doors/doormove4.wav". + // ----------------------------------------------------------------- + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + // ----------------------------------------------------------------- + // The number against each sound corresponds to the wav file played. + // e.g. Chunk (4) plays "doors/doorstop4.wav". + // ----------------------------------------------------------------- + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + + // ----------------------------------------------------------------- + // Setting wait to -1 also prevents the door from reversing when it comes into + // contact with the player, as seen on the bunker door in Crossfire. + // This setting isn't recommended if the door is using MoveWith. + // ----------------------------------------------------------------- + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + + // ----------------------------------------------------------------- + // This delay only applies to the Target, not the Fire on Open/Close + // fields. + // ----------------------------------------------------------------- + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + //DoD - AXIS + TeamDoors(choices) : "Team Specific Door" : 0 = + [ + 0: "Both Teams" + 1: "Allies Only" + 2: "Axis Only" + ] + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 1024: "Force Touchable" : 0 + // ----------------------------------------------------------------- + // A synchronised door is different from an unsynchronised door in + // two ways: + // Firstly it'll trigger its targets as soon as it starts to + // move, instead of waiting until it finishes moving. + // Secondly, instead of sending USE_TOGGLE, it sends USE_ON + // and USE_OFF as appropriate. It also responds appropriately + // to USE_ON and USE_OFF. + // The main function for synchronised doors is as double doors; + // that is, make two synchronised doors which target each other, + // and the doors will then open and close as one. This flag + // should probably be split into two, but I've run out of flags + // to use. :( + // ----------------------------------------------------------------- + 2048: "Synch movement" : 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Angles, MoveWith, Master) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Line of Sight" : 0 + 32: "Controllable" : 0 + 64: "Laser Spot" : 0 + 128: "Match Target" : 1 + ] + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname, MoveWith) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + style(integer) : "Style" : 32 + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too)" + spawnflags(flags) = + [ + 4: "Pushables": 0 + ] +] + +@BaseClass = ZhltLightFlags +[ + zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 = + [ + 0: "Normal" + 1: "Embedded Fix" + 2: "Opaque (Blocks Light)" + 3: "Opaque + Embedded Fix" + 6: "ConcaveFix (6)" + ] + light_origin(string) : "Light Origin (Zhlt 2.2+)" +] + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@BaseClass base(Targetname, Angles, RenderFields) color(0 200 200) = Monster +[ + target(string) : "Patrol Path" + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + ] + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + //* Don't attack the player until s/he can see us. + 1 : "WaitTillSeen" : 0 + //* Don't speak except when in combat. Don't make "idle" noises. + 2 : "Gag" : 0 + //* If ticked, the monster can't enter a func_monsterclip area. + 4 : "Monster Clip" : 0 + //* If ticked, the monster will ignore all other monsters and vice versa. + 16: "Prisoner" : 0 + //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck + //* in a wall and unable to move. Only tick this if you're happy for it to be stuck. + 128: "No yellow blobs" : 0 + 512: "Fade Corpse" : 0 + //* Prevents the monster from attacking the player. The monster's relationships with + //* other monsters won't change. (If you set "behaves as" to Scientist or Barney, this + //* flag will make the monster attack the player.) + 2048: "Player Ally" : 0 + ] +] + +@BaseClass = TalkMonster +[ + //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow + UseSentence(String) : "Use Sentence" + //* The sentence to speak when the player tells us to stop following + UnUseSentence(String) : "Un-Use Sentence" + //* The sentence to speak when refusing to follow the player + RefusalSentence(String) : "Refusal Sentence" + //* While locked by the master, this monster will refuse to follow the player. + master(String) : "Master (prevents following)" + //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for this are BA + //* (speak as a Barney) and SC (speak as a Scientist). + SpeakAs(string) : "Speech Group" + spawnflags(Flags) = + [ + //* Unless given a Master, a pre-disaster monster will refuse to follow the player. + 256: "Pre-Disaster" : 0 + //* Makes the monster attack the player. The monster's relationships with + //* other monsters won't change. (If you set "behaves as" to a class which usually + //* attacks the player, this flag will instead prevent the monster from attacking.) + 2048: "Attacks Player" : 0 + ] +] + +// =================================================================================================== + +@PointClass base(Targetname) iconsprite("sprites/DoD/AmbientGeneric.spr") = ambient_generic : "Universal Ambient" +[ + message(sound) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + + +@PointClass base(Targetname, Angles) iconsprite("sprites/DoD/CyclerSprite.spr") = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" + [ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(integer) : "Scale" : 1 + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] + ] + +// +// Environmental effects +// + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles, MoveWith, RenderFields) = env_model : "New alternative to cyclers" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + ] +] + + +// ------------------------------------------------------------------------------------------ +// Essentially, this produces a shifting group of parallel beams. I've called it +// env_rain because that's the most-requested use for it. +// For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, +// Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr. +// For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, +// Drip Sprite = sprites/rain.spr. +// FROM SPIRIT +// ------------------------------------------------------------------------------------------ +@SolidClass base(Targetname) = env_rain : "Rain Effect" +[ + //* Set this to (for example) "70 0 0" to make slanted rain. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + //* Negative numbers will make the rain fall upwards. + //* This is an average; each drip will move at between 75%-125% of this speed. + m_dripSpeed(integer) : "Drip Speed" : 40 + m_dripSize(integer) : "Drip Width" : 5 + m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 + rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" + m_burstSize(integer) : "Number of drips (per update)" : 2 + //* If 0, no updates; all the beams will appear as soon as it's created. + //* Each beam lasts for three updates. + m_flUpdateTime(string) : "Time between updates" : "0.5" + texture(sprite) : "Drip Sprite" : "sprites/rain.spr" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/DoD/EnvGlobal.spr") color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, MoveWith) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "model" : "sprites/glow01.spr" + scale(integer) : "Sprite Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_smoker : "Smoke" +[ + health(integer) : "Strength" : 1 + scale(integer) : "Smoke Scale" : 1 +] + + +@PointClass iconsprite("sprites/DoD/EnvSound.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/DoD/EnvSpark.spr") = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles, MoveWith) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +//* Simply keeps track of a state. Useful as a master or a conditional "branch". +@PointClass base(Targetname, Master) color(128 128 255) = env_state : "Local State" +[ + //* This entity will be fired (using whatever action you've specified) both when the env_state turns on, and when it turns off. + target(target_destination) : "Target (always)" + noise1(target_destination) : "Target (when on)" + noise2(target_destination) : "Target (when off)" + turnontime(string) : "Time taken to turn on" : 0 + turnofftime(string) : "Time taken to turn off" : 0 + onmode(choices) : "Action when turned on" : 0 = + [ + 0 : "Send Toggle" + 1 : "Send On" + 2 : "Send Off" + 3 : "Send Kill" + 4 : "Do nothing" + ] + offmode(choices) : "Action when turned off" : 0 = + [ + 0 : "Send Toggle" + 1 : "Send On" + 2 : "Send Off" + 3 : "Send Kill" + 4 : "Do nothing" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + //* If you're trying to work out what's actually happening in your level, + //* try ticking here and the env_state will tell you when it triggers, etc. + 2 : "Debug Mode" : 0 + ] +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameCounter.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) iconsprite("sprites/DoD/GameCounterSet.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) iconsprite("sprites/DoD/GameEnd.spr") = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + + + +@PointClass base(Targetname) iconsprite("sprites/DoD/GamePlayerHurt.spr") = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) iconsprite("sprites/DoD/GamePlayerTeam.spr") = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) iconsprite("sprites/DoD/GameScore.spr") = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameTeamMaster.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameTeamSet.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) iconsprite("sprites/DoD/GameText.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 4: "Allies Only" : 0 + 8: "Axis Only" : 0 + 16: "Allied Player Only" : 0 + 32: "Axis Player Only" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + master(string) : "Master" +] + + + +// +// Info entities +// + +//* An alias makes itself an "alternative name" for an entity. To refer to an entity through the alternative name, +//* use the alias name preceeded by a *. +//* For example, suppose you set up an info_alias entity called 'myalias'. 'Myalias' targets a light called 'redlight'. +//* suppose a you set up a @func_trigger field targetting "*myalias", so that when you walk through the func_trigger +//* field, redlight gets turned on and off. So far, info_alias seems to be like a @trigger_relay. However, you can also +//* set up a switch which targets "myalias", to turn it off... +//* This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. +@PointClass base(Targetname) = info_alias : "Alias" +[ + target(target_destination) : "Reference while On" + netname(string) : "Reference while Off" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Debug Mode" : 0 + ] +] + +// ------------------------------------------------------------------------------------------------------------ +// An info_group acts similarly to an @info_alias, except that it has several "members" which are are accessed +// by 'mygroup.membername'. +// These members are set up just like the targets of a @multi_manager- except that they'll contain an entity +// reference instead of a delay time. +// If you set up its "target" field to refer to an info_alias entity, then when an info_group is triggered, +// it will change that info_alias entity to target the group. +// This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. +// ------------------------------------------------------------------------------------------------------------ +@PointClass base(Targetname) = info_group : "Entity Group" +[ + target(string) : "Alias to change when fired" + spawnflags(flags) = + [ + 2 : "Debug Mode" : 0 + ] +] + + +@PointClass base(Targetname) iconsprite("sprites/DoD/EnvTarget.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/DoD/EnvTarget.spr") = info_target : "Beam Target" [] + +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + + +@PointClass decal() base(Targetname) = infodecal : "Decal" +[ + texture(decal) +] + + +// +// Light entities +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass base(Angles) iconsprite("sprites/DoD/LightEnvironment.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" + _diffuse_light(color255) : "Diffuse Brightness" : "128 255 255 200" +] + +@PointClass base(Targetname, Target, Angles) iconsprite("sprites/DoD/LightSpot.spr") = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +// ------------------------------------------------------------------------------------------------------------ +// A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities +// together, while still allowing them to have individual names. +// For example, suppose you have a set of lights in your level. Each one has its own lightswitch, +// which allows it to be switched on and off on its own. But later in the level, you want the power +// (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which +// targets all the lights, and simply trigger what that alias refers to. +// ------------------------------------------------------------------------------------------------------------ +@PointClass base(Targetname) = multi_alias : "Multi-target alias" [] + +// ------------------------------------------------------------------------------------------------------------ +// Triggers a sequence of up to 16 entities, at various time offsets. +// To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode +// and add fields manually. The name of the field is the targetname of the entity to trigger, +// and the contents of the field are the time (in seconds) to wait before triggering it. +// If a master is given, then while the master is in any state but ON, the manager will ignore +// all signals. This won't prevent it from continuing a sequence that started while the master +// was ON, but it will prevent a new sequence from starting. +// ------------------------------------------------------------------------------------------------------------ +@PointClass base(Targetname, Master) iconsprite("sprites/DoD/multi_manager.spr") = multi_manager : "MultiTarget Manager" +[ + //* How long to wait before starting the sequence. This delay is in addition to the offsets given for each individual target. + wait(string) : "Time offset" + //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset" value is used as a minimum offset. + maxwait(string) : "Max Time offset (Random)" + //* Message sent to the targets. There's no way (currently) to have a different message be sent to + //* each target. + triggerstate(choices) : "Trigger to send" = + [ + 0: "Toggle" + 1: "On" + 2: "Off" + 3: "Kill" + //* If you select this, the manager will send on whatever triggers it received itself. + //* So this is a way to "fork" the signal sent by another entity. + 4: "Same as input" + ] + mode(choices) : "Mode" = + [ + //* The 'value' for each target is the time offset at which to fire it. + 0: "Normal (time offset)" + //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance + //* that each target will be chosen. + 1: "Choose one (weighted)" + //* Go through the list of targets, and for each one either fire it, or don't fire it. + //* The 'value' gives the percentage chance that a value will get fired. + 2: "% chance for each" + ] + spawnflags(Flags) = + [ + //* By default, a manager will ignore all inputs while it's performing a sequence. + //* Tick this to allow more than one sequence to run at a time. + 1 : "Multi-threaded" : 0 + //* When the sequence ends, start again from the beginning. You can stop the + //* loop by toggling the manager a second time. + 2 : "Loop" : 0 + //* The manager will USE_KILL itself when the sequence is complete. + //* In loop mode, the manager will only USE_KILL itself when told to stop the loop. + 3 : "Once only" : 0 + ] +] + +// ------------------------------------------------------------------------------------------------------------ +// A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once. +// The entity is probably most useful when used as a master for another entity- a versatile replacement +// for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a +// multi_watcher which watches other multi_watchers. +// The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the +// 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.) +// This is a very powerful entity, but is probably only useful for experienced mappers. +// ------------------------------------------------------------------------------------------------------------ +@PointClass iconsprite("sprites/multiwatcher.spr") base(Targetname) = multi_watcher : "State Watcher" +[ + m_fLogic(choices) : "Logical test" : 0 = + [ + 0: "All (AND)" + 2: "Not all (NAND)" + 1: "At least one (OR)" + 3: "None (NOR)" + 4: "Exactly one (XOR)" + 5: "Any number but one (XNOR)" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Entity to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/DoD/MultiSource.spr") = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles, DoDCam) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass iconsprite("sprites/DoD/Announcement.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/DoD/PlayerWeaponStrip.spr") = player_weaponstrip : "Strips player's weapons" [] + + +// +// Trigger entities +// + +@PointClass base(Targetx) iconsprite("sprites/DoD/TriggerAuto.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/DoD/TriggerCamera.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@PointClass base(Targetx, Targetname, DoDCam) iconsprite("sprites/DoD/TriggerCamera.spr") = dod_camera : "DoD Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + teambound(choices) : "Team that is bound to" : 3 = [ + 1 : "Allies" + 2 : "Axis" + 3 : "Both" + ] +] + +//* This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. +@PointClass base(Targetname) = trigger_changealias : "Trigger Change Alias" +[ + target(string) : "Alias to affect" + netname(string) : "String to Set" + spawnflags(flags) = + [ + //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are + //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1 + //* to target "*myalias". + //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is, + //* in future any changes to "myalias" will also change what "alias1" refers to. + //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias" + //* is referring to at the time the trigger_changealias takes effect. Future changes to "myalias" will + //* therefore not affect "alias1". + 1 : "Resolve references" : 0 + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/DoD/TriggerChangetarget.spr") = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname,Target,MoveWith) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + 64:"DontHurtAllies" : 0 + 128:"DontHurtAxis" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 + teamonly (choices) : "Team Affected" : 0 = [ + 0 : "Both" + 1 : "Allied" + 2 : "Axis" + ] +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [ + teamonly (choices) : "Team Affected" : 0 = [ + 0 : "Both" + 1 : "Allied" + 2 : "Axis" + ] +] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +//* Only affects dynamic lights. +@PointClass base(Targetname, Target) = trigger_lightstyle : "Trigger Change Lightstyle" +[ + style(choices) : "New Appearance" : 0 = [ + 0 : "On" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + 14: "Slow Fade In" + 15: "Medium Fade In" + 16: "Fast Fade In" + ] + pattern(string) : "Custom Appearance" + m_iWait(integer) : "Hold time (-1 for permanent)" +] +@PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/TriggerRelay.spr") = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" +[ + target(target_destination) : "Fire when activated" + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] + spawnflags(flags) = + [ + //* If ticked, this entity will override the effect of a env_sound or non-Priority trigger_sound. + //* (The default is for an env_sound to override a trigger_sound.) + //* This is only usually useful if an env_sound's radius extends inside a trigger_sound, + //* or if two trigger_sounds overlap/come very close. + 1: "Priority" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" +[ + spawnflags(flags) = + [ + 8: "No Allies" : 0 + 16: "No Axis" : 0 + ] +] + + +// +// Function entities +// + +@SolidClass base(Breakable, RenderFields, ZhltLightFlags, MoveWith) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targetted object" + netname(target_destination) : "Target Path" + // Path Target overrides Targetted Object + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 2:"Allies Can't activate" : 0 + 4:"Axis Can't activate" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + + +@SolidClass base(RenderFields, Targetname, Angles, ZhltLightFlags) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZhltLightFlags) = func_door : "Basic door" [] + +@SolidClass base(Door, ZhltLightFlags) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, ZhltLightFlags, MoveWith) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -3: "Water" + -7: "Volumetric Light" + -17: "Zero-G" + -18: "Hover-Field" + -19: "Fog effect" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith) = func_ladder : "Ladder" [ + spawnflags(flags) = + [ + 1 : "Silent" : 0 + ] +] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds, ZhltLightFlags) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds, Angles, ZhltLightFlags) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZhltLightFlags) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, ZhltLightFlags) = func_rot_button : "Rotating Button" +[ + target(target_destination) : "Targetted object" + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZhltLightFlags) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(MoveWith) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZhltLightFlags) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(BaseTank, ZhltLightFlags) = func_tankrocket : "Brush Rocket Turret" [] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZhltLightFlags) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZhltLightFlags) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + + //* plats/vehicle1.wav + 14: "Medium pitch" + //* plats/vehicle2.wav + 15: "High pitch" + //* plats/vehicle3.wav + 16: "Low pitch" + //* plats/vehicle4.wav + 17: "Really low pitch" + //* plats/vehicle6.wav + 19: "Medium low rough pitch" + //* plats/vehicle7.wav + 19: "Medium low rough pitch" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + //* plats/vehicle_brake1.wav + 8: "screeching brakes" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular velocity (Y Z X)" : "0 0 0" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, RenderFields, ZhltLightFlags, MoveWith) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall, ZhltLightFlags) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +// +// Miscellaneous entities +// + +@SolidClass base(Target, Angles, ZhltLightFlags) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@SolidClass base(Door, ZhltLightFlags) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname, Angles, ZhltLightFlags) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// ---------------------------------------------------------------------------------------------------- +// A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for +// the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times. +// The main use for a watcher is to fire another entity (the "entity to notify") each time the +// watcher's state changes. +// ---------------------------------------------------------------------------------------------------- +@PointClass iconsprite("sprites/watcher.spr") base(Targetname) = watcher : "State Watcher" +[ + m_iszWatch(string) : "Entity to watch" + //* The watcher will revert to this state if the watched entity is missing or killed. + m_fLogic(choices) : "Default State" : 0 = + [ + 0: "On" + 1: "Off" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Target to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns on. + 2: "Don't Send On" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns off. + 4: "Don't Send Off" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +// +// 1019 - Mugsy added territorial control objective +// + +// +// 0629 - version 1.0 BETA +// - readded everything so destroy objective would work +// + +// +// DoD Spawn Points +// +// @PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(255 0 0) iconsprite("sprites/DoD/AlliesTeamStart.spr") = info_player_allies : "Allies team start" +@PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 255 0) = info_player_allies : "Allies team start" +[ +] + +// @PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 0 255) iconsprite("sprites/DoD/AxisTeamStart.spr") = info_player_axis : "Axis team start" +@PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(255 0 0) = info_player_axis : "Axis team start" +[ +] + +@PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 0 255) iconsprite("sprites/DoD/ObserverStart.spr") = info_player_observer : "Observer start" +[ +] + +// --- Removed info_initial_player_allies as it is no longer used in 2.0 +// @PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(255 0 0) iconsprite("sprites/DoD/AlliesInitialStart.spr") = info_initial_player_allies: "Allies initial start" +// [ +// ] + +// --- Removed info_initial_player_axis as it is no longer used in 2.0 +// @PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 0 255) iconsprite("sprites/DoD/AxisInitialStart.spr") = info_initial_player_axis : "Axis initial start" +// [ +// ] + + +// +// Objectives! +// + +// Object Objective +@PointClass base(Targetname,Target, MoveWith) iconsprite("sprites/DoD/Enigma.spr") = dod_object : "Object Objective" +[ + model(studio) : "Model" : "models/Tnt.mdl" + object_name(string) : "Objects Name" : "" + object_owner(choices) : "Team that can pick up" : 0 = + [ + 0 : "Both" + 1 : "Allies" + 2 : "Axis" + ] + object_group(string) : "Group Name" : "" + object_takesound(sound) : "Sound when taken" + object_capsound(sound) : "Sound when captured" + object_dropsound(sound) : "Sound when dropped" + object_returnsound(sound) : "Sound when returned" + object_carryspeed(string) : "Carry speed (this*speed)" : "0.5" + object_resetontouch(choices) : "Reset on touch" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + object_resettime(integer) : "Reset time (secs, max. 600)" : 60 + object_cappoints(integer) : "Points to capturer" : 10 + object_otherpoints(integer) : "Points for teammates" : 5 + object_donetarget(string) : "Target When Complete" : "" + + object_player_sprite(sprite) : "Sprite to show above player if carried" : "sprites/obj_tnt_sm.spr" + object_hud_sprite(sprite) : "Sprite to show on HUD if carried" : "sprites/obj_tnt.spr" + master(string) : "Master" +] + +// Capture points +@SolidClass base(Targetname,Target, MoveWith) = dod_object_goal : "Object Capturepoint" +[ + spawnflags(flags) = + [ + 1 : "Dont Multicap" : 0 + 2 : "Cap once per round" : 0 + ] + capobj_group(string) : "Group Name" : "" + capobj_donetarget(string) : "Target When Complete" : "" + capobj_hud_sprite(sprite) : "Sprite to show on HUD if in zone without object" : "sprites/obj_tnt.spr" + master(string) : "Master" +] + +// Scoring events +@PointClass base(Targetname,Target) iconsprite("sprites/DoD/PrimaryScore.spr") = dod_score_ent : "Used for done sequences" +[ + team(choices) : "For Team" : 0 = + [ + 0 : "Both" + 1 : "Allies" + 2 : "Axis" + ] + score_points(integer) : "Points" : 10 + score_resetitemtime(integer) : "Reset Items Time (0 = none)" : 3 + score_resetplayerstime(integer) : "Reset Players Time (0 = none)" : 3 + noise(string) : "Reset Group (blank for all)" : "" + noise2(choices) : "End game?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + message(string) : "Message" : "" + score_nextmap(string) : "Move to Next Map" : "" + score_nextmapdelay(integer) : "Change level delay ( 0 = none )" : 3 +] + +// Territorial Control Objectives - by Mugsy +@PointClass base(Targetname,Target) iconsprite("sprites/DoD/ControlPointMaster.spr") = dod_control_point_master : "Control Point Master" +[ + point_give_delay_time(integer) : "Time between point gives ( seconds )" : 20 + allies_capture_target(string) : "Target when allies capture" : "" + axis_capture_target(string) : "Target when axis capture" : "" + + master(string) : "Master" : "" + cpm_group(string) : "Group Name" : "" +] + + +@PointClass base(MoveWith,Master) iconsprite("sprites/DoD/ControlPoint.spr") = dod_location : "Location" +[ +location_name(string) : "Name of this location" : "" +] + +@PointClass base(Targetname,Target,MoveWith) iconsprite("sprites/DoD/ControlPoint.spr") = dod_control_point : "Control Point" +[ + spawnflags(flags) = + [ + 1: "Hide Control Point on HUD" : 0 + ] + point_name(string) : "Control Point Name" : "a control point" + + point_can_allies_touch(choices) : "Can Allies Touch This Point?" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] + + point_can_axis_touch(choices) : "Can Axis Touch This Point?" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] + + point_pointvalue(integer) : "Time based points value" : 1 + point_points_for_cap(integer) : "Points given to capturer" : 1 + point_default_owner(choices) : "Default Owner of the control point" : 0 = + [ + 0 : "Neither" + 1 : "Allies" + 2 : "Axis" + ] + point_axis_capsound(sound) : "Sound Made when Axis captures" : "" + point_allies_capsound(sound) : "Sound Made when Allies captures" : "" + point_resetsound(sound) : "Sound Made when point resets" : "" + point_allies_model(string) : "Model when allies capture" : "models/w_aflag.mdl" + point_axis_model(string) : "Model when axis capture" : "models/w_gflag.mdl" + point_reset_model(string) : "Model when point reset" : "models/w_wflag.mdl" + + point_allies_target(string) : "Target when allies capture" : "" + point_axis_target(string) : "Target when axis capture" : "" + point_reset_target(string) : "Target when point reset" : "" + + point_win_string(string) : "String to Show when capped (vars)" : "%p captured the %n for the %t" + + point_group(string) : "Group Name" : "" + + point_index(integer) : "Index of this point ( unique )" : -1 + +// point_cap_delaytime(integer) : "Time between possible captures(seconds)" : 1 +] + +@SolidClass base(Targetname,Target,MoveWith,Master) = dod_trigger_sandbag : "Sandbag Trigger" +[ + sandbag_range(integer) : "Degrees in either direction" : 15 +] + +@SolidClass base(Targetname,Target,MoveWith,Master) = dod_capture_area : "Capture Area" +[ + area_allies_cancap(choices) : "Can Allies Cap?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + area_axis_cancap(choices) : "Can Axis Cap?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + area_allies_numcap(integer) : "Number of Allies to cap" : 1 + area_axis_numcap(integer) : "Number of Axis to cap" : 1 + + area_time_to_cap(integer) : "Time to cap (sec)" : 5 + + area_allies_startcap(string) : "Target when allies start capture" : "" + area_allies_breakcap(string) : "Target when allies cap is broken" : "" + area_allies_endcap(string) : "Target when allies complete capture" : "" + + area_axis_startcap(string) : "Target when axis start capture" : "" + area_axis_breakcap(string) : "Target when axis cap is broken" : "" + area_axis_endcap(string) : "Target when axis complete capture" : "" + + area_hud_sprite(sprite) : "Sprite to show on HUD" : "" + + area_object_group(string) : "Requires Object from this group:" : "" +] + + +@PointClass base(Targetname,Target) iconsprite("sprites/DoD/PointRelay.spr") = dod_point_relay : "Capture Relay" +[ + dod_relay_team(choices) : "Relay triggers point with which team" : 1 = + [ + 1 : "Allies" + 2 : "Axis" + 0 : "Reset Point" + ] +] + +@PointClass base(Targetname,Target) iconsprite("sprites/DoD/RoundTimer.spr") = dod_round_timer : "DoD Timer" +[ + spawnflags(flags) = + [ + 1 : "Shown On HUD" : 1 + 2 : "Start Off" : 0 + ] + + master(string) : "Master" + + round_timer_length(integer): "Timer Length( in seconds )" : 60 +] + + +// +// Weapons! +// + +@PointClass base(Weapon, Targetx) = weapon_30cal : "30 cal MG" [] +@PointClass base(Weapon, Targetx) = weapon_amerknife : "American Knife" [] +@PointClass base(Weapon, Targetx) = weapon_bar: "BAR" [] +@PointClass base(Weapon, Targetx) = weapon_colt : "Colt Pistol" [] +@PointClass base(Weapon, Targetx) = weapon_garand : "Garand Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_gerknife : "German Knife" [] +@PointClass base(Weapon, Targetx) = weapon_gewehr : "KAR Sniper Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_kar : "KAR Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_luger : "Luger Pistol" [] +@PointClass base(Weapon, Targetx) = weapon_m1carbine : "M1 Carbine" [] +@PointClass base(Weapon, Targetx) = weapon_mg34 : "MG34" [] +@PointClass base(Weapon, Targetx) = weapon_mg42 : "MG42" [] +@PointClass base(Weapon, Targetx) = weapon_mp40 : "MP40" [] +@PointClass base(Weapon, Targetx) = weapon_mp44: "MP44" [] +@PointClass base(Weapon, Targetx) = weapon_spade: "spade" [] +@PointClass base(Weapon, Targetx) = weapon_spring: "Springfield Sniper Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_thompson: "Thompson" [] + +@PointClass base(Weapon, Targetx) = ammo_30cal: "30 cal Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_bar: "BAR Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_colt : "Colt Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_garand : "Garand Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_gewehr: "K98 Sniper Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_kar: "KAR Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_luger : "Luger Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_m1carbine : "M1 Carbine Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_mg34 : "MG34 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_MG42 : "MG42 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_mp40 : "MP40 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_mp44 : "MP44 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_spring : "Springfield Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_thompson : "Thompson Ammo" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/deathmatch-classic.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/deathmatch-classic.fgd new file mode 100644 index 0000000..8df1d76 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/deathmatch-classic.fgd @@ -0,0 +1,1916 @@ +// +// DMC game definition file (.fgd) +// for Worldcraft 3.x and above +// +// updated by Chris Bokitch +// autolycus@valvesoftware.com +// http://www.valve-erc.com/ +// + +// +// sep 19 2001 - 3.0.0.2 +// - added env_fog (from HL 1.1.0.8) +// +// aug 28 2001 - 3.0.0.1 +// - changed IS NOT LOOPED to NOT TOGGLED on ambient_generic (royalef) +// - gave light_environment a Name +// - added Angular Velocity to func_train +// - created ZHLT_point baseclass +// - added ZHLT_point base to light, light_environment, and light_spot +// - created ZHLT baseclass +// - added ZHLT base to all applicable brush entities +// - above list compiled by Unquenque +// ------------------------------------------------------------------------ + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + worldtype(choices) : "Ambience" : 0 = + [ + 0 : "Medieval" + 1 : "Runic (metal)" + 2 : "Present (base)" + ] + skyname(string) : "Sky Name" : "dmcw" + sounds(integer) : "CD track to play" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Not Toggled":0 + ] +] + +@SolidClass base(Target, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname, ZHLT) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) = env_fog : "Global Fog Properties" +[ + rendercolor(color255) : "Fog Color (RGB)" : "0 0 0" + startdist(string) : "Start Distance" : "0" + enddist(string) : "End Distance" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular Veocity (y z x)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light, ZHLT_point) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles, ZHLT_point) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +// +// weapons +// + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +// DMC/Quake1 entities + +@PointClass base(Ammo) = item_cells : "Thunderbolt ammo" [] +@PointClass base(Ammo) = item_rockets : "Rockets" [] +@PointClass base(Ammo) = item_shells : "Shells" [] +@PointClass base(Ammo) = item_spikes : "Perforator/Nailgun ammo" [] + +@PointClass size(0 0 0, 32 32 32) base(Target, Appearflags) = item_health : "Health pak" +[ + spawnflags(flags) = + [ + 1 : "Rotten" : 0 + 2 : "Megahealth" : 0 + ] +] + +@PointClass base(Target, Appearflags) = item_artifact_envirosuit : "Environmental protection suit" [] +@PointClass base(Target, Appearflags) = item_artifact_super_damage : "Quad damage" [] +@PointClass base(Target, Appearflags) = item_artifact_invulnerability : "Pentagram of Protection" [] +@PointClass base(Target, Appearflags) = item_artifact_invisibility : "Ring of Shadows" [] + +@PointClass size(-16 -16 -24, 16 16 32) base(Target, Appearflags) = item_armorInv : "200% armor (Red)" [] +@PointClass size(-16 -16 -24, 16 16 32) base(Target, Appearflags) = item_armor2 : "150% armor (Yellow)" [] +@PointClass size(-16 -16 -24, 16 16 32) base(Target, Appearflags) = item_armor1 : "100% armor (Green)" [] + +@PointClass base(Weapon) = weapon_supershotgun : "Super shotgun" [] +@PointClass base(Weapon) = weapon_nailgun : "Nailgun" [] +@PointClass base(Weapon) = weapon_supernailgun : "Perforator" [] +@PointClass base(Weapon) = weapon_grenadelauncher : "Grenade launcher" [] +@PointClass base(Weapon) = weapon_rocketlauncher : "Rocket launcher" [] +@PointClass base(Weapon) = weapon_lightning : "Thunderbolt" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/firearms.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/firearms.fgd new file mode 100644 index 0000000..cb7401a --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/firearms.fgd @@ -0,0 +1,2391 @@ +// +// Firearms Mod for HalfLife game definition file (.fgd) +// +// Based on version 1.56 of halflife.fgd +// +// Last updated: Feb 2, 2000 by Eric Smith & Sven Jacobs +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 5 : "(N/A) Squad Member Dead" + 6 : "(N/A)Squad Leader Dead" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + targetname (target_source) : "Name" + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(string) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(string) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + style(integer) : "Style" : 32 + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Firearms Entities +// + +@PointClass base(PlayerClass) = info_playerstart_blue : "Blue Force teamplay start" [] +@PointClass base(PlayerClass) = info_playerstart_red : "Red Force teamplay start" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(string) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +@PointClass base(Targetname) size(-32 -24 0, 32 24 36) = ammobox : "Ammo Reload Box" +[ + delay(integer) : "Delay between ammo" : 1 + damage(integer) : "Damage before exploding" : 2000 + respawntime(integer) : "Seconds before respawn" : 30 +] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(string) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = cycler_sprite : "Sprite Cycler" +[ + model(string) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(string) : "model" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(string) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(string) : "model" : "sprites/glow01.spr" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(string) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(string) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(string) : "Sound effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(string) : "Model" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass size(-8 -8 -8, 8 8 8) = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(string) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targetted object" + netname(target_destination) : "Target Path" + // Path Target overrides Targetted Object + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(RenderFields, Targetname) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door : "Basic door" [] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(RenderFields) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Appearflags, Targetname, RenderFields) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, RenderFields) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(string) : "Path/filename.wav of WAV" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "308" + 3: "50cal" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, RenderFields, Global) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass base(Targetname, Appearflags) size(-8 -8 -8, 8 8 8) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" +[ + hinttype(choices) : "Hint" : 0 = + [ + 0 : "None" + + 1: "World: Door" + 2: "World: Window" + 3: "World: Button" + 4: "World: Machinery" + 5: "World: Ledge" + 6: "World: Light Source" + 7: "World: Heat Source" + 8: "World: Blinking Light" + 9: "World: Bright Colors" + 10: "World: Human Blood Decal" + 11: "World: Alien Blood Decal" + + 300: "Stuka: Ceiling Perch" + 301: "Stuka: Landing spot" + ] + activity(choices) : "Activity" : 0 = + [ + 0: "None" + 35: "Eat" + 45: "Inspect Ground" + 46: "Inspect Wall" + ] +] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) = item_bandage : "Bandage" [] +@PointClass size(-16 -16 0, 16 16 36) = item_claymore : "Claymore Mine" [] +@PointClass size(-16 -16 0, 16 16 36) = item_flashbang : "Flashbang Grenade" [] +@PointClass size(-16 -16 0, 16 16 36) = item_frag : "Fragmentation Grenade" [] +@PointClass size(-16 -16 0, 16 16 36) = item_stg24 : "Stiehlhandgrenade" [] +@PointClass size(-16 -16 0, 16 16 36) = item_security : "Security card" [] + +// +// lights +// + +@PointClass size(-8 -8 -8, 8 8 8) base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass base(Targetname, Target) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(string) : "model" + +] +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(string) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Targetname) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + targetname(target_source) : "Target Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// ammo +// + +@PointClass base(Weapon, Targetx) = ammo_ak47 : "AK-47 Clip" [] +@PointClass base(Weapon, Targetx) = ammo_anaconda : "Colt Anaconda Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_aug : "Steyr Aug Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_benelli : "Benelli M3 Super 90 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_ber92f : "Beretta 92F Clip" [] +@PointClass base(Weapon, Targetx) = ammo_ber93r : "Beretta 93R Clip" [] +@PointClass base(Weapon, Targetx) = ammo_coltgov : "Colt Government M1911A1 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_desert : "IMI Desert Eagle Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_g36e : "H&K G36E Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_g3a3 : "H&K G3A3 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_m11 : "Ingram M11 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_m16 : "M16 Clip" [] +@PointClass base(Weapon, Targetx) = ammo_m4 : "M4 Beta-C Magazine" [] +@PointClass base(Weapon, Targetx) = ammo_m60 : "M-60 Machinegun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_m79 : "M79 40mm HE Grenades" [] +@PointClass base(Weapon, Targetx) = ammo_m82 : "M82 Clip" [] +@PointClass base(Weapon, Targetx) = ammo_mp5a5 : "MP5A5 Clip" [] +@PointClass base(Weapon, Targetx) = ammo_mp5k : "MP5K Clip" [] +@PointClass base(Weapon, Targetx) = ammo_psg1 : "H&K PSG-1 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_saiga : "Saiga 12K Clip" [] + + +// +// weapons +// + +@PointClass base(Weapon, Targetx) = weapon_ak47 : "AK-47" [] +@PointClass base(Weapon, Targetx) = weapon_anaconda : "Colt Anaconda" [] +@PointClass base(Weapon, Targetx) = weapon_aug : "Steyr AUG A1" [] +@PointClass base(Weapon, Targetx) = weapon_benelli : "Benelli M3 Super 90 Combat Shotgun" [] +@PointClass base(Weapon, Targetx) = weapon_ber92f : "Beretta 92F" [] +@PointClass base(Weapon, Targetx) = weapon_ber92f : "Beretta 92F" [] +@PointClass base(Weapon, Targetx) = weapon_claymore : "Claymore Mines" [] +@PointClass base(Weapon, Targetx) = weapon_coltgov : "Colt Government M1911A1" [] +@PointClass base(Weapon, Targetx) = weapon_desert : "IMI Desert Eagle" [] +@PointClass base(Weapon, Targetx) = weapon_flashbang : "Flashbang Grenades" [] +@PointClass base(Weapon, Targetx) = weapon_g36e : "H&K G36E" [] +@PointClass base(Weapon, Targetx) = weapon_g3a3 : "H&K G3A3" [] +@PointClass base(Weapon, Targetx) = weapon_frag : "Fragmentation Grenades" [] +@PointClass base(Weapon, Targetx) = weapon_knife : "Combat Knife" [] +@PointClass base(Weapon, Targetx) = weapon_m11 : "Ingram M11" [] +@PointClass base(Weapon, Targetx) = weapon_m16 : "Colt M-16A1" [] +@PointClass base(Weapon, Targetx) = weapon_m4 : "Colt M4A1" [] +@PointClass base(Weapon, Targetx) = weapon_m60 : "M-60 Machinegun" [] +@PointClass base(Weapon, Targetx) = weapon_m79 : "M-79 Grenade Launcher" [] +@PointClass base(Weapon, Targetx) = weapon_m82 : "Barett M-82A1" [] +@PointClass base(Weapon, Targetx) = weapon_mp5a5 : "H&K MP5A5" [] +@PointClass base(Weapon, Targetx) = weapon_mp5k : "H&K MP5K" [] +@PointClass base(Weapon, Targetx) = weapon_psg1 : "H&K PSG-1" [] +@PointClass base(Weapon, Targetx) = weapon_saiga : "Kalashnikov Saiga-12k Combat Shotgun" [] +@PointClass base(Weapon, Targetx) = weapon_stg24 : "Stiehlandgrenade" [] + +@PointClass base(Weapon, Targetx) = weapon_mc51 : "H&K 51-B Vollmer beltfed" [] +@PointClass base(Weapon, Targetx) = weapon_famas : "FA-MAS" [] + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// FireArms Modified Trigger Multiple Entity -epls +// + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 + impulse(choices) : "Team Trigger" : 0 = + [ + 0 : "Either team" + 1 : "Red Force only" + 2 : "Blue Force only" + ] + team(choices) : "Team Item Required" : -1 = + [ + 0 : "No Item Required" + -1 : "Neutral Item" + 1 : "Red Force Item" + 2 : "Blue Force Item" + ] + dmg(choices) : "Capture Item?" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +// +// FireArms Team Goal Entity -epls +// + +@PointClass base(Targetname, Target) = fa_team_goal : "Used for doing team goal operations" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + ] + team(choices) : "Team/Item Applies To" : -1 = + [ + -1 : "Either Team" + 1 : "Red Force" + 2 : "Blue Force" + ] + message(string) : "Activation Message" + dmg(choices) : "Goal Effect" : 0 = + [ + 0: "Nothing" + 1: "Respawn Team" + ] + frags(integer) : "Team Point Gain (+/-)" : 1 + impulse(choices) : "Point Gain Given To" : 0 = + [ + 0: "All Team Members" + 1: "Just Activator" + ] + health(choices) : "Reset Team Items?" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + speed(integer) : "Reinforcement Gain (+/-)" : 0 +] + + +// +// FireArms Team Goal Item -epls +// +@PointClass base(Targetname, Target) = fa_team_item : "Used team items" +[ + team(choices) : "Owner" : -1 = + [ + -1 : "Either team" + 1 : "Red Force" + 2 : "Blue Force" + ] + impulse(choices) : "Carrier Death Placement" : 0 = + [ + 0 : "At Item Spawn Point" + 1 : "Where Carrier Dies" + ] + message(string) : "Item Name" : "enemy item" + model(string) : "Item Model to Use" : "models/case.mdl" + noise3(string) : "Carrier Killed Target" + noise(string) : "Pickup Sound" + noise1(string) : "Drop Sound" + noise2(string) : "Capture Sound" + weapon(choices) : "Valid weapons" : 0 = + [ + 0: "Knife only" + 1: "Pistols and Knife" + ] +] +// +// FireArms Parachute -epls +// +@Pointclass base(Targetname, Target) size(-8 -8 -8, 8 8 8) color(200 100 50) = fa_parachute : "parachute" [] + +//epls 0.4.2 @add +@PointClass = info_firearms_detect : "Firearms Detection Entity" +[ + title(string) : "Map Title" + impulse(integer) : "Red maxplayer Factor" : 7 + dmg(integer) : "Blue maxplayer Factor" : 7 +] +//end + +//epls 0.5.1 @add +@SolidClass base(Targetname, Target) = fa_push_point : "Push Point" +[ + message(string) : "Point Description" + noise(string) : "This Flag" + noise1(string) : "Next Flag" + noise2(string) : "Previous Flag" + noise3(string) : "Win Target" +] + +@Pointclass base(Targetname, Target) size(-8 -8 -16, 8 8 16) color(200 200 0) = fa_push_flag : "Push Flag" [] +//end + +// rc2.65 mazor @add +@SolidClass base(Targetname, Target) = trigger_zone: "Zone Entity" +[ + type(choices) : "Type of zone" : 0 = + [ + 0: "No mortar" + 1: "No medevac" + 2: "No claymore" + 3: "No mortar/claymore" + 4: "No mortar/medevac" + 5: "No claymore/medevac" + 6: "Block all" + ] +] +@PointClass base(gibshooterbase) = env_spriteshooter : "Animated Sprite Shooter" +[ + shootmodel(string) : "Sprite File" +] +// rc2.65b mazor @add +@PointClass = env_fog : "Fog" +[ + colorr(integer): "Color - Red" + colorg(integer): "Color - Green" + colorb(integer): "Color - Blue" + fogstart(integer): "Fog Start" + fogend(integer): "Fog End" +] \ No newline at end of file diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/flatlife.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/flatlife.fgd new file mode 100644 index 0000000..b9a334b --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/flatlife.fgd @@ -0,0 +1,6085 @@ + + +// Flat-Life FGD rc3 +// Revised 18:41 2008-02-21 +// Based on SOHL fgd + +// - http://chickenfist.fre3.com/hl2d/ + +// Spirit of Half-Life v1.4 FGD +// For WorldCraft 3.5+ and Half-Life 1.1.0.8+ +// Last update: 4th August 2004 +// Created by Laurie Cheers - http://www.bearkey.com/?laurie +// Additions by Shambler Team - http://shamteam.cbi.ru/ +// Additions by Killar - http://www.bearkey.com/?killar +// Additions by Confused - http://www.bearkey.com/?confused +// Additions by Mike - http://www.bearkey.com/?mike2k +// Additions by ytiAdmin - http://www.bearkey.com/?ytiadmin +// Additions by DeathWish - http://www.bearkey.com/?deathwish + +// In textpad use regular expression ^[\t ]*//.*\n to remove ALL comments + +//INFO +// +// For any "target" type value, you can use a "+" or "-" prefix to +// specify that the target should be turned on or off, respectively. +// (e.g. suppose you have an entity which targets "mylight". If you tell it +// to target "+mylight" instead, then it will only turn the light on, never +// off.) +// Similarly, for any Master, you can invert the master relationship (that +// is, you can disable the entity whenever the master is on) by +// adding a tilde (~) at the start of the master's name. +// +// When testing your level, it's sometimes helpful to be able to trigger +// entities manually. To trigger an entity named "mydoor", you can simply +// type "fire mydoor" at the console. +// Similarly, if you just type "fire", you will trigger whatever entity the +// player is aiming at. +// NB: this command will only work if sv_cheats is set to 1. +// +//ENDS + +// +// Worldspawn +// + +//* Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."] +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : "0.0" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display 'Half-Life' title?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "Flush global entities?" : 0 = + [ + 0 : "No, keep global ents" + 1 : "Yes, flush global ents" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + //NEW 0.3 + //* Yes means the player will start this level wearing an HEV suit. + startsuit(choices) : "HEV from start" = + [ + 0 : "No" + 1 : "Yes" + ] + allowmonsters(choices) : "Allow Monsters (MP only)" = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 1.4 + // Yes means the player may Gauss Jump in singleplayer. This has no effect in a multi player level. + allow_sp_gjump(choices) : "Allow SP Gauss Jump" = + [ + 0 : "No (Default)" + 1 : "Yes" + ] + cameradist(string) : "Initial Camera Distance" + cameramode(choices) : "Initial Camera Mode" = + [ + 1 : "Platform" + 2 : "Topdown" + ] +] + +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" +] + +//* "ZHLTReference.html" (included with the ZHLT Distribution) contains information on using these keys. +@BaseClass = ZHLTLightKeys +[ + zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 = + [ + 0: "Normal (0)" + 1: "Embedded Fix (1)" + 2: "Opaque (Blocks light) (2)" + 3: "Opaque + Embedded Fix (3)" + 6: "ConcaveFix (6)" + ] + light_origin(string) : "Light Origin (ZHLT 2.5.1+)" +] + +@BaseClass = ZhltLights +[ + _fade(integer) : "Fade (ZHLT 2.5.1+)" + _falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 = + [ + 1: "Inverse Square (1)" + 2: "Inverse Linear (2)" + ] +] + +@BaseClass = TexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = SwitchTexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + -1: "Switchable (starts on)" + -2: "Switchable (starts off)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = Appearflags +[ + //NEW 0.6 + skill(choices) : "Skill setting" : 0 = + [ + 0 : "All skills" + 1 : "Not in easy" + 2 : "Not in medium" + 4 : "Not in hard" + 6 : "Only in easy" + 5 : "Only in medium" + 3 : "Only in hard" + ] + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = MoveWith +[ + //NEW 0.3 + movewith(target_destination) : "Moves with" +] + +@BaseClass = Master +[ + master(string) : "Master" +] + +//HL2'd for custom weapon system +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon +[ + message(string) : "Player Model (models/p_.mdl)" + model(string) : "World Model (models/w_.mdl)" + master(string) : "Item Lock Master" +] + +@BaseClass base(Weapon) color(80 0 200) = Ammo [] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + //* Additive or Texture mode only. + 1: "Slow Pulse" + //* Additive or Texture mode only. + 2: "Fast Pulse" + //* Additive or Texture mode only. + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" +//These don't seem to do anything. Correct me if I'm wrong... +// 5: "Slow Fade Away" +// 6: "Fast Fade Away" +// 7: "Slow Become Solid" +// 8: "Fast Become Solid" + +//* This setting only affects the Glow rendermode. With this setting, Glow mode behaves +//* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't +//* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this +//* useful?) + 14: "Constant Glow (Sprites)" + 15: "Distort (Models)" + 16: "Hologram (Distort + fade)" +//* Strange effect. As seen, briefly, when a Gargantua dies. + 18: "Bulge Sideways (Models)" +//* Quite pretty. As seen in Valve's mod Deathmatch Classic. + 19: "Glowing Aura (Models)" +//NEW 1.0 +//* Draw a reflection under this model's feet. + 21: "Reflection (Models)" +//NEW 1.4 + 22: "Entity in PVS" + ] +] + +@BaseClass = RenderMode +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + //* For BSP objects, the object will be rendered as a pure area of whatever + //* color is specified in FX Color. + //* For models and sprites, this is the same as Normal mode. + 1: "Pure Color" + //* For BSP objects, the object will be rendered without shadows. + //* For models and sprites, this is the same as Normal mode, except that the Pulse + //* renderfx settings work. + 2: "Texture" + //* Like additive, but as the player gets further from the sprite, it gets + //* progressively larger and more transparent. The sprite is also not obscured by + //* intervening models, which can sometimes look bad. + //* Alphatest sprites won't use their masks in this mode. + 3: "Glow (sprites only)" + //* For BSP objects, this only affects textures beginning with {. Blue pixels + //* will be transparent; non-blue pixels will be solid. + //* For models, this mode is the same as Normal mode. + //* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e. + //* the palette positions are used as opacity settings; 0 for fully transparent, + //* and 255 for fully opaque, regardless of what the palette colors actually are. + //* The only palette colour that will be used is the last one, which sets the + //* colour for the whole sprite. (Needless to say, this will look odd unless the + //* sprite is designed to be displayed this way!) + //* Oddly, Alphatest sprites won't use their masks in this mode. + 4: "Solid" + //* Only bright parts of the object are visible; darker parts are just more + //* transparent, and black is not drawn. Useful for making lighting or hologram + //* effects. + 5: "Additive" + ] +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFields +[ + renderamt(integer) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax +[ + renderamt(integer) : "FX Amount (1 - 255)" : 255 + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" +] + +@BaseClass = LockSounds +[ + //* The locked sound & sentence will be played if: + //* 1) The player walks into a door which has a name. (and Force Touchable isn't selected.) + //* 2) A door/button with a master gets activated, but the master is disabled. + //* + //* The number against each sound corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0 : "None" + 2 : "Access Denied (2)" + 8 : "Small zap (8)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + 12: "Latch Locked (12)" + ] + //* The unlocked sound & sentence will be played whenever a door starts to open and whenever + //* a button starts to push in. (They will never be played when a door starts to close, even if + //* "Toggle" is selected.) + //* + //* The number against each sound (except lightswitch) corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0 : "None" + 1 : "Big zap & Warmup (1)" + 3 : "Access Granted (3)" + 4 : "Quick Combolock (4)" + 5 : "Power Deadbolt 1 (5)" + 6 : "Power Deadbolt 2 (6)" + 7 : "Plunger (7)" + 8 : "Small zap (8)" + 9 : "Keycard Sound (9)" + 10: "Buzz (10)" + 13: "Latch Unlocked (13)" + 14: "Lightswitch" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3. + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied (NA)" + 2: "Security Lockout (ND)" + 3: "Blast Door (NF)" + 4: "Fire Door (NFIRE)" + 5: "Chemical Door (NCHEM)" + 6: "Radiation Door (NRAD)" + 7: "Gen. Containment (NCON)" + 8: "Maintenance Door (NH)" + 9: "Broken Shut Door (NG)" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3. + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted (EA)" + 2: "Security Disengaged (ED)" + 3: "Blast Door (EF)" + 4: "Fire Door (EFIRE)" + 5: "Chemical Door (ECHEM)" + 6: "Radiation Door (ERAD)" + 7: "Gen. Containment (ECON)" + 8: "Maintenance area (EH)" + ] +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster +[ + //NEW 0.7.1 + health(integer) : "Initial health (0 = normal)" + //NEW 0.7.1 + //* Be careful when changing this - a monster's actions are tied closely to its model. + model(studio) : "Model (e.g. models/can.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + target(string) : "Patrol Path" + //NEW 0.4 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + //* Don't attack the player until s/he can see us. + 1 : "WaitTillSeen" : 0 + //* Don't speak except when in combat. Don't make "idle" noises. + 2 : "Gag" : 0 + //* If ticked, the monster can't enter a func_monsterclip area. + 4 : "Monster Clip" : 0 + //* If ticked, the monster will ignore all other monsters and vice versa. + 8: "Always Aligned" : 0 + 16: "Prisoner" : 0 + //NEW 0.4 + //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck + //* in a wall and unable to move. Only tick this if you're happy for it to be stuck. + 128: "No yellow blobs" : 0 + 512: "Fade Corpse" : 0 + 2048: "Allow Unaligned" : 0 + ] +] + +@BaseClass = TalkMonster +[ + //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow. + UseSentence(String) : "Use Sentence" + //* The sentence to speak when the player tells us to stop following. + UnUseSentence(String) : "Un-Use Sentence" + //NEW 0.4 + //* The sentence to speak when refusing to follow the player. + RefusalSentence(String) : "Refusal Sentence" + //NEW 0.4 + //* While locked by the master, this monster will refuse to follow the player. + master(String) : "Master (prevents following)" + //NEW 0.4 + //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for + //* this are BA (speak as a Barney) and SC (speak as a Scientist). To define a + //* speech group "XX", you need to define sentences XX_ANSWER, XX_QUESTION, XX_IDLE, + //* XX_STARE, XX_OK, XX_WAIT, XX_STOP, XX_NOSHOOT, XX_HELLO, XX_SMELL, XX_WOUND and + //* XX_MORTAL. (as well as some others, if the monsters are going to be Pre-Disaster.) + SpeakAs(string) : "Speech Group" + spawnflags(Flags) = + [ + //* Unless given a Master, a pre-disaster monster will refuse to follow the player. + 256: "Pre-Disaster" : 0 + ] +] + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + //* The number of pieces to create. + m_iGibs(integer) : "Number of shots" : 1 + //* Delay (in seconds) between shots. If 0, all the shots are fired at once. + delay(string) : "Delay between shots" : "0" + m_iszPosition(string) : "At position (blank = here) [LP]" + m_iszVelocity(string) : "At velocity (blank = angle) [LV]" + //* How fast the gibs are fired + m_flVelocity(string) : "Gib Speed Factor [LR]" : "200" + //* Course variance + m_flVariance(string) : "Course Variance" : "0.15" + //* Time in seconds for gibs to live, +/- 5% + m_flGibLife(string) : "Shot lifetime (secs)" : "4" + m_iszTargetName(string) : "Shot's name" + //NEW 0.7.1 + //* If you want to change the behaviour of the shot, this is the field to use - + //* for example, you could target a motion_manager here, to change the shot's movement. + m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + 4 : "Debug" : 0 + ] +] + +@BaseClass = Light +[ + //* Don't create a light whose name begins with "light" - a bug/feature in RAD means + //* that such a light won't be able to switch on and off. + targetname(target_source) : "Name" + _light(color255) : "Brightness" : "255 255 128 200" + //* This field will have no effect on a dynamic (i.e. named) light. + style(Choices) : "Appearance (static)" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //* This field will have no effect on a static (i.e. nameless) light. + //* 'a' is dark, 'm' is normal brightness, 'z' is full brightness. + //* There's no support for a light to have a custom appearances when it's in a + //* state other than 'on'. See @trigger_lightstyle if you need this effect. + pattern(string) : "Custom Appearance (on)" + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOnStyle(Choices) : "Appearance (on)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOffStyle(Choices) : "Appearance (off)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass base(Targetname, Global) = Breakable +[ + target(target_destination) : "Target on break" + //NEW 0.7.1 + //* Whenever the breakable takes damage, this entity will be triggered, and passed + //* the position and direction of the bullet (or whatever). + whenhit(string) : "Trigger when hit (locus = position)" + health(integer) : "Strength" : 100 + material(choices) : "Material type" : 0 = + [ + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + 0: "Glass" + //* Gibs: models/woodgibs.mdl + //* Break noise: debris/bustcrateX.wav + //* Bounce noise: debris/woodX.wav + 1: "Wood" + //* Gibs: models/metalplategibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/metalX.wav + 2: "Metal" + //* Gibs: models/fleshgibs.mdl + //* Break noise: debris/bustfleshX.wav + //* Bounce noise: debris/fleshX.wav + 3: "Flesh" + //* Gibs: models/cindergibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 4: "Cinder Block" + //* Gibs: models/ceilinggibs.mdl + //* Break noise: debris/bustceilingX.wav + //* Bounce noise: none + 5: "Ceiling Tile" + //* Gibs: models/computergibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/woodX.wav + //* Note: Generates sparks when damaged. + 6: "Computer" + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + //* Note: Makes ricochet noises when damaged. + 7: "Unbreakable Glass" + //* Gibs: models/rockgibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + //* Can be used to override the default "gibs" value for the material you've specified. + gibmodel(studio) : "Gib Model" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + //NEW 0.4 + respawn(choices) : "Respawn time (secs)" : 0 = + [ + 0: "No respawn" + -1: "Respawn when triggered" + ] + //NEW 0.4 + netname(string) : "Target on respawn" + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Fade Respawn" : 0 + 16 : "Invert Hit Vector" : 0 + 256: "Instant Crowbar" : 0 + ] +] + +@BaseClass base(Appearflags) = Door +[ + target(target_destination) : "Target (Always)" + //NEW 0.4 + message(string) : "Target on Open" + netname(string) : "Target on Close" + killtarget(target_destination) : "KillTarget" + //NEW 0.5 + //* Together with "On/Off Aware", this field replaces the old + //* "synchronised" flag. + //* When set, the door will fire its Target as soon as it + //* starts to move, instead of firing when it reaches the end + //* of its move. + //* (NB: the "Target on Open" and "Target on Close" fields are not + //* affected; they will still fire at the end of movement.) + immediatemode(choices) : "Fire before moving" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 0.5 + //* Together with "Fire before moving", this field replaces the old + //* "synchronised" flag. + //* When this is set, instead of always firing its target with + //* USE_TOGGLE, the door will send USE_ON when opening and USE_OFF + //* when closing. (NB: the "fire on open" and "fire on close" fields + //* will still send USE_TOGGLE.) + //* Additionally, instead of simply toggling whenever it's + //* triggered, the door will open when sent USE_ON, and close when + //* sent USE_OFF. + onoffmode(choices) : "On/Off Aware" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + speed(integer) : "Speed" : 100 + + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Chunk (4) plays "doors/doorstop4.wav". + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake (1)" + 2: "Clang reverb (2)" + 3: "Ratchet Stop (3)" + 4: "Chunk (4)" + 5: "Light airbrake (5)" + 6: "Metal Slide Stop (6)" + 7: "Metal Lock Stop (7)" + 8: "Snappy Metal Stop (8)" + ] + //* Setting wait to -1 also prevents the door from reversing when it comes into + //* contact with the player, as seen on the bunker door in Crossfire. + //* This setting isn't recommended if the door is using MoveWith. + wait(choices) : "Delay before close" : 3 = + [ + -1 : "Stays Open (-1)" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + //* This delay only applies to the Target, not the Fire on Open/Close fields. + delay(integer) : "Delay before fire" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + //NEW 0.3 + //* Normally a named door, or a door with "use only" selected, won't open when touched. + //* Tick here to override that. + 1024: "Force Touchable" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + //* For computer-controlled guns. The gun is 'On'- i.e. ready to fire at the player- at the start of the level. + 1 : "Active" : 0 + //* For computer-controlled guns. If the gun can't see the player, it won't fire. + //* (usually, for a while, the tank will keep firing at the last place it saw the player.) + 2 : "Not Solid" : 0 + 16: "Line of Sight" : 0 + //* To make a tank which the player can use, you'll also need a @func_tankcontrols entity. + 32: "Controllable" : 0 + //NEW 0.2 + //* Makes the gun project a laser spot, similar to the player's rocket launcher. + //* This is helpful for players who are trying to aim with it. + 64: "Laser Spot" : 0 + //NEW 0.2 + //* For player-controlled guns. + //* Makes the gun point at whatever is at the centre of the player's view, instead of simply facing the same way as the player. + 128: "Match Target" : 0 + ] + + //* Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + //NEW 0.6 + //* While this master is locked, the gun cannot fire, but the player can still control it. + //* (Intended to enable reloading effects.) + firemaster(string) : "Fire Master" + //NEW 0.7.1 + //* Whenever the tank fires, this entity is triggered. (the locus for this is + //* the coordinates and direction at the end of the gun.) + m_iszLocusFire(string) : "Trigger on firing (locus = barrel)" + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + //* Bug fixed: rotate sound now stops when a player releases control of the gun. + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + //NEW 0.4 + m_iClass(choices) : "Behaviour" : 0 = + [ + 0: "Attack only players" + 11: "Barney" + 4: "Human Military" + 5: "Alien Military" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + ] + custommovesnd(sound) : "Custom Move Sound" + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + ] + customstopsnd(sound) : "Custom Stop Sound" + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Targetname, Master, Targetx) = Trigger [] + +@BaseClass = TriggerCond +[ + //NEW 0.5 + //* Only trigger when touched by an entity with this name. + //* If this is set, the flags "Monsters", "Pushables", etc will be ignored. + //* (Alternatively you can specify a classname, e.g. monster_barney.) + netname(string) : "Triggered only by entity" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables" : 0 + //NEW 0.6 + 8: "Everything else": 0 + ] +] + + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = Script +[ + target(target_destination) : "Target (fire when done)" + delay(string) : "Delay before firing target" : "0" + killtarget(target_destination) : "KillTarget when done" + //NEW 0.4 + //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) + //* This is useful to let you have special effects etc triggered during the animation. + m_iszFireOnBegin(string): "Fire after moving" + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + m_iszEntity(string) : "Target Monster [LE]" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + m_flRadius(integer) : "Search Radius" : 512 + //NEW 1.0 + m_iPriority(choices) : "Priority" : 0 = + [ + 0 : "Normal" + 4 : "Override other sequences" + ] + //NEW 1.0 + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + //NEW 0.7.1 + m_iRepeats(integer) : "Repeat action X more times" : 0 + //NEW 0.7.1 + m_fRepeatFrame(string) : "Repeat from frame" : "0" + spawnflags(Flags) = + [ + //* Default behaviour for a sequence is to delete itself after finishing. + 4 : "Repeatable" : 0 + //* If the player shoots a monster or tells a scientist/barney to follow him, any + //* scripts the monster is playing will usually be interrupted. + 32: "No Interruptions" : 0 + ] +] + +@BaseClass base(Script) size(-16 -16 0, 16 16 72) color(255 0 255) = ScriptSequence +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Turn target (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 0 = + [ + //* Turn to the same angle the turn target is facing. + 0 : "Match Angle" + //* Turn to look at the turn target. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + //* Animation to play after moving. Note that a @monster_generic won't add any sounds or + //* special effects to its animations. If you need those to appear, you'll have to use the + //* specific monster_<whatever> entities, instead. + m_iszPlay(string) : "Action Animation" : "" + //* If you specify an idle animation, then when the level begins the monster will be frozen and made + //* to play that animation (this is the main use for the idle animation in Valve's levels). After that + //* the monster will play the action animation when you trigger the sequence, and will then revert to its + //* normal AI. + //* If there are any other scripted_sequences with the same name as this one, then the monster will also play the "idle" animation + //* while it's waiting for the other sequences to be ready to start. + //* And finally, if the action animation is the same as the idle animation, then any time the monster would be playing the idle + //* animation, instead it will be frozen. + //* Obvious, eh? ;) + m_iszIdle(string) : "Idle Animation" : "" + spawnflags(Flags) = + [ + //* If the animation includes the monster dying, don't fade the corpse afterwards. + 8 : "Leave Corpse" : 0 + //* Even if the animation makes the monster look like it's walking around, DON'T shift + //* the monster to its apparent new location when the animation ends. + 128: "No Script Movement" : 0 + //NEW 0.4 + //* Some death sequences kill the monster automatically (e.g. "herodie" in loader.mdl) + //* but for most you'll have to tick this box. This is affected by Leave Corpse in the + //* obvious way. + 256: "Monster Dies" : 0 + ] +] + +// +// Entities +// + +//* Obsolete. Use scripted_sequence. (The only difference between them is that aiscripted_sequence +//* effectively has its "Override AI" flag ticked all the time. +@PointClass base(ScriptSequence) = aiscripted_sequence : "AI Scripted Sequence" [] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name (e.g. vox/c.wav)" + health(integer) : "Volume (10 = loudest)" : 10 + //NEW 0.5 + //* The entity you name here will play the sound, instead of the ambient_generic doing so itself. + //* Be aware that if the entity is playing another sound on the same channel, they will interfere + //* with each other. + target(target_destination) : "Entity to play from" + //NEW 0.5 + channel(choices) : "Channel to use for that entity" : 6 = + [ + 1: "Weapon" + //* If a monster's model has a mouth, and you play a sound on its "voice" channel, + //* the mouth will automatically move. + 2: "Voice" + 3: "Item" + 4: "Body" + 5: "Stream" + 6: "Static" + ] + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + noise(string) : "Calc_ratio Volume (overrides)" : "" + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(choices) : "LFO type (0 - 3)" : 0 = + [ + 0: "Off" + 1: "Square" + 2: "Triangle" + 3: "Round" + ] + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + //* Medium is the default radius, so ticking this does nothing. + //* (These should really be chosen from a pull-down menu.) + 4: "Medium Radius" : 0 + 8: "Large Radius" : 0 + 16:"Start Silent" : 0 + 32:"Is NOT Looped" : 0 + ] +] + +// +// ammo +// + + +@PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Ammo, Targetx) studio("models/w_shotshell.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "RPG Ammo" [] + +//* This entity is probably obsolete, now that @func_button has a "Can't Use" flag. +@SolidClass base(Target, Master, RenderFields, ZHLTLightKeys, MoveWith) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates": 0 + 2: "Start On" : 0 + 4: "Non Solid" : 0 + 8: "Can't shoot" : 0 + ] +] + + +// +// locus calculation entities +// + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LP]. +@PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_position : "Calculate position" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Position to calculate" : 1 = + [ + 0 : "Origin" + 1 : "Eyes" + 2 : "Top" + 3 : "Centre" + 4 : "Bottom" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + //* Return a random point from within the entity's bounding box. + 9 : "Random" + ] + message(string) : "Add offset [LV]" : "0 0 0" +] + + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LR]. +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_ratio : "Ratio adjustment" +[ + target(string) : "Based on ratio [LR]" : "*locus" + skin(choices) : "Ratio to get (Basis)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + //2 : "IsSneaking (Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + impulse(choices) : "Transformation" : 0 = + [ + 0 : "None" + 1 : "Reversed (1-X)" + 2 : "Negative (-X)" + 3 : "Reciprocal (1/X)" + ] + netname(string) : "Offset by [LR]" : "0" + body(choices) : "Ratio to get (Offset)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + //2 : "IsSneaking (Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + + message(string) : "Scale factor [LR]" : "1" + button (choices) : "Ratio to get (Scale)" : 0 = + [ + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "speed (use scalefactor to obtain a ratio)(Monsters/Players)" + //2 : "IsSneaking (Players)" + 3 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] + + noise(string) : "Min (blank = none) [LR]" + noise1(string) : "Max (blank = none) [LR]" + frags(choices) : "If outside range" : 0 = + [ + //* e.g. if the range were 0%-100%, and the value were 120%, the result would be 100%. + 0 : "Pick nearest value" + //* In the case above, the result would be 20%. + 1 : "Wrap around" + //* In the case above, the result would be 80%. + 2 : "Bounce back" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_subvelocity : "Calculate velocity based on entity properties" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Value to calculate from" : 0 = + [ + 0 : "Movement Velocity" + 1 : "Angle" + 2 : "View Angle" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + ] + noise(string) : "Scale factor [LR]" : "1.0" + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + 1 : "Normalize" : 0 + 2 : "Flip Vertical" : 0 + 4 : "Discard X" : 0 + 8 : "Discard Y" : 0 + 16 : "Discard Z" :0 + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//* This calculates the velocity that would be needed to travel from one point to another. +//* By default, things will take 0.1 seconds to travel this distance. (Use the "length +//* factor" setting to change this.) +//* This can also be used to calculate (for example) where a beam's endpoint should +//* be, in order for it to point towards a given location. +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_path : "Calculate velocity for travelling" +[ + target(string) : "Start position [LP]" : "*locus" + netname(string) : "Destination" + armorvalue(choices) : "Destination is" : 0 = + [ + //* The destination is the end position. + 0 : "Position [LP]" + //* To find the end position, add this offset to the start position. + 1 : "Offset [LV]" + ] + health(choices) : "Length Calculation" : 0 = + [ + 4 : "Square (X = X*X)" + 0 : "None (X = X)" + //* With this choice, the actual distance between the points is ignored. + //* So instead of taking a fixed time to travel, the object will move at + //* a fixed speed, or the beam will extend a fixed distance. + 1 : "Normalise (X = 1)" + 2 : "Reciprocal (X = 1/X)" + 3 : "Inverse Square (X = 1/X*X)" + ] + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + //* A negative number here will make the line go in the opposite direction. + noise(string) : "Length factor [LR]" : "1.0" + //* If this is set, a line will be drawn from the start position to the end + //* position. The first obstacle it hits will then be used as the new end + //* position. + frags(choices) : "Line is blocked by" : 0 = + [ + 0 : "Nothing" + 1 : "Walls" + 2 : "Walls & Glass" + 3 : "Walls & Monsters" + 4 : "Walls, Monsters & Glass" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_polar : "Calculate velocity" +[ + netname(string) : "Based on velocity [LV]" + //* Rotate the velocity by this amount. + angles(string) : "Rotated by angle (Y Z X)" : "0 0 0" + //* Scale the velocity by this factor. + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + noise(string) : "Length factor [LR]" : "1.0" + //* After rotation and scaling, add this offset to the velocity. + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + //* The "length factor" field will set the exact length of the velocity, + //* instead of scaling it by a factor. + 1 : "Normalize" : 0 + ] +] + +// +// cyclers +// + +// This entity is probably obsolete, now that env_model exists. +@PointClass base(Targetname, RenderFields, MoveWith) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" +] + +@PointClass base(Targetname, RenderFields, MoveWith) = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 +] + +@PointClass base(Monster, MoveWith) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" [] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) iconsprite("sprites/envbeam.spr") size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + //* If you only give the beam one endpoint, then radius will specify how + //* far away the other endpoint should be (randomly) placed. + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "0" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Distortion (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (-1 = never)" : "0" + //NEW 0.6 + //* If you use a negative number for the damage, it'll now heal the target. + damage(string) : "Damage / second" : "0" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 128 : "Crowbar" + 256 : "Electric shock" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire on trip" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + spawnflags(flags) = + [ + //* This is the default unless you specify a name. + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + //* Makes the beam form a circle, with a diameter that stretches between the two endpoints. + //* For some unknown reason, both endpoints must have a model. + //* NB: because the beam will stretch between the origins of the two entities, you'll + //* need to give each endpoint an origin brush. + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //NEW 0.4 + //* For making a rope, etc. + //* NB: this flag will be ignored unless the beam's Life is 0. + //* This also won't work on a Ring beam. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* If you specify an "entity to trail", a trail will be attached or removed from the entity you +//* specify. The trail will turn off automatically if the +//* entity remains stationary for a few seconds, or alternatively you can turn it on and off by +//* triggering the env_beamtrail. +//* If you don't specify an "entity to trail", the env_beamtrail itself will have a trail; in that case +//* you probably want to tell it what entity it should MoveWith. +//* Neither version will do anything if the trailed entity isn't moving when you activate the trail. +//* The trail effect doesn't correspond exactly to with the movement of the entity, so don't expect too +//* much from it. We're not mapping for UT2003 here. +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_beamtrail : "Beam trail effect" +[ + target(string) : "Entity to trail (blank = this) [LE]" + netname(sprite) : "Sprite Name" : "sprites/smoke.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + armorvalue(integer) : "Width" : 5 + health(string) : "Fade time (secs)" : "4.0" + spawnflags(flags) = + [ + 1: "Start off" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_beverage : "Beverage Dispenser" +[ + target(string) : "Initial position (blank = here) [LP]" + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/env.spr") = env_blood : "Blood Effects" +[ + target(string) : "Initial position (blank = here) [LP]" + netname(string) : "Direction (blank = angles) [LV]" + color(choices) : "Blood Color" : 0 = + [ + 0: "Red (Human)" + 1: "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +//* Bubbles cannot drift sideways with this entity; use an @env_model and +//* "models/pipe_bubbles.mdl" instead. +@SolidClass base(Targetname, ZHLTLightKeys, MoveWith) iconsprite("sprites/env.spr") = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +//NEW 0.4 +//* Works like an @env_render: you trigger it to change the properties of the target. +@PointClass iconsprite("sprites/env.spr") = env_customize : "Change entity properties" +[ + //* Leave this blank to have it take effect as soon as the level starts. + targetname(target_source) : "Name" + //* You can also specify a classname here, e.g. monster_barney. + target(string) : "Target to affect [LE]" + //* If the target is a classname, the game picks a random monster of that type from within this + //* search radius. This has no effect if the target is anything except a classname. + m_flRadius(integer) : "Search Radius" : 512 + //* Player: 0 = gordon's head, 1 = helmeted. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + //* Note that this entity can only change their appearance- for example, grunts who had shotguns will still fire shotgun rounds. + body(choices) : "Set body" : -1 = + [ + -1 : "No change" + ] + //* Scientists and Human Grunts: 1 = black skin. + //* Bullsquids, Houndeyes, Slaves: 1 = eyes shut. + //* Ichthyosaur: 0-4 = different eye positions. + skin(choices) : "Set skin" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Skin 0 (normal)" + 1 : "Skin 1" + 2 : "Skin 2" + 3 : "Skin 3" + ] + //* If the target is a brush entity with a switchable texture (one with both a +0 version and + //* a +A version), then this switches between the two versions. + //* If the entity has switchable texlights on it, this will also turn those lights on and off. + frame(choices) : "Set brush texture" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Texture 0 (normal)" + 1 : "Texture 1 (alternate)" + //* With this set, triggering the env_customize On makes the target + //* use its normal texture, and Off makes it use the alternate one. + 4: "On/Off based on usetype" + //* The opposite of the previous setting; On sets the alternate texture, + //* Off sets the normal one. + 5: "Off/On based on usetype" + ] + //* Use this setting with caution - a lot of a monster's behaviour is + //* determined by its model. (You should be safe if the new model is just + //* a set of different textures.) + m_iszModel(string) : "Set model (e.g. models/can.mdl)" + m_bloodColor(choices) : "Blood Color" : 0 = + [ + 0 : "No change" + -1 : "Don't Bleed" + 247 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* Change the pitch of the monster's voice (100 = normal pitch, higher numbers = higher pitch) + m_voicePitch(choices) : "Voice Pitch (100 = normal)" : -1 = + [ + -1 : "No change" + ] + //* >1 = fast + //* 1 = normal speed + //* 0..1 = slow + //* 0 = stop + //* -1 = no change + m_fFramerate(string) : "Frame rate (-1 = no change)" : "-1" + //* Sets: + //* agrunt.mdl: head position (45..-45) + //* hgrunt.mdl: head position (70..-70) + //* barney.mdl, gman.mdl, islave.mdl, scientist.mdl: head position (60..-60) + //* apache.mdl: gun yaw (90..-90) + //* barnacle.mdl: tongue length (0..-1024) + //* garg.mdl: body yaw (60..-60) + //* osprey.mdl: rotor angle (0..-90) + //* icky.mdl: tail position (45..-45) + //* miniturret.mdl, sentry.mdl, turret.mdl: gun yaw (0..360) + m_fController0(choices) : "Bone controller 0" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* Sets: + //* apache.mdl: gun pitch (45..-10) + //* (mini)turret.mdl: gun pitch (15..-90) + //* sentry.mdl: gun pitch (60..-60) + //* garg.mdl: body pitch (35..-35) + m_fController1(choices) : "Bone controller 1" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController2(choices) : "Bone controller 2" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController3(choices) : "Bone controller 3" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_iClass(choices) : "Set behaviour" : 0 = + [ + 0 : "No change" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : -1 = + [ + -1 : "No Change" + //* That is, normal for the monster's current behaviour. + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. The monster will + //* stop being friendly when hurt by the player, regardless of + //* how. (e.g. even if they stupidly ran into the middle of a firefight.) + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. The monster will + //* stop being friendly when shot deliberately by the player, + //* but not when (for instance) caught in grenade explosions, or in the + //* middle of combat. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist, + // following the player on request. + //5 : "Follower" + ] + //* If you want the entity to be partly transparent, use @env_render instead. + m_iVisible(choices) : "Visibility" : 0 = + [ + 0: "No change" + 1: "Visible" + 2: "Invisible" + 3: "Toggle" + //* Trigger the env_customize On for visible, and Off for invisible. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for visible, and On for invisible. + 5: "Off/On based on usetype" + ] + //* Currently, this will cause problems if used to solidify a non-monster, + //* non-brush entity. + //* Note that a @func_ladder will still act as a ladder if you make it + //* non-solid. + m_iSolid(choices) : "Solidity" : 0 = + [ + 0: "No change" + 1: "Solid" + 2: "Not Solid" + 3: "Toggle" + //* Trigger the env_customize On for solid, and Off for non-solid. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for solid, and On for non-solid. + 5: "Off/On based on usetype" + ] + m_iPrisoner(choices) : "Prisoner" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On for a prisoner, and Off for a non-prisoner. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for a prisoner, and On for a non-prisoner. + 5: "Off/On based on usetype" + ] + m_iMonsterClip(choices) : "MonsterClip flag" : 0 = + [ + 0: "No change" + 1: "On" + 2: "Off" + 3: "Toggle" + //* Trigger the env_customize On to use Monsterclip, and Off to not use it. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to use Monsterclip, and On to not use it. + 5: "Off/On based on usetype" + ] + //* Applies to barneys, scientists, "Friendly until hurt" and "Friendly + //* until provoked" monsters, and overrides these monsters' usual liking + //* for the player- e.g. as if the player had shot them. + m_iProvoked(choices) : "Angry At Player" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On to be angry, and Off to calm down. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to be angry, and On to calm down. + 5: "Off/On based on usetype" + ] + spawnflags(flags) = + [ + 1: "Affect corpses" : 0 + 2: "Once Only" : 0 + 4: "Debug" : 0 + ] +] + +//NEW 0.7.1 +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_decal : "Decal sprayer" +[ + target(string) : "Position (blank = here) [LP]" + netname(string) : "Spray direction (blank = angle) [LV]" + message(string) : "Max distance (blank = none) [LR]" + impulse(choices) : "Decal group" : 0 = + [ + 1 : "Gunshot" + 5 : "Big gunshot" + 2 : "Blood" + 3 : "Alien blood" + 4 : "Glass cracks" + 6 : "Scorch marks" + 7 : "Bullsquid splat" + 0 : "Custom (see below)" + ] + noise(sprite) : "Custom decal texture" +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. +//* Note that this primarily lights the world (i.e. brushes); studio models will +//* pick up the lighting if they're standing in it, but they'll just be a solid colour. +//* To just light studio models, see @env_elight. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_dlight : "Dynamic light effect" +[ + message(string) : "Position (blank = here) [LP]" + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + renderamt(integer) : "Radius" : 12 + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. Only lights studio models +//* (e.g. monsters), but does light them properly. Quite pretty. +//* See @env_dlight if you want to light the walls, etc. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_elight : "Entity light effect" +[ + netname(string) : "At position (blank = here) [LP]" + target(string) : "Entity to follow (blank = this) [LE]" + impulse(choices) : "Attachment point on that entity" : 0 = + [ + 0 : "None" + 1 : "1" + 2 : "2" + 3 : "3" + 4 : "4" + ] + renderamt(integer) : "Radius" : 12 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.4 +//* Essentially, this produces a shifting group of parallel beams. I've called it +//* env_rain because that's the most-requested use for it. +//* For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, +//* Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr. +//* For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, +//* Drip Sprite = sprites/rain.spr. +@SolidClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_rain : "Rain Effect" +[ + //* Set this to (for example) "70 0 0" to make slanted rain. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + //* Negative numbers will make the rain fall upwards. + //* This is an average; each drip will move at between 75%-125% of this speed. + m_dripSpeed(integer) : "Drip Speed" : 40 + m_dripSize(integer) : "Drip Width" : 5 + m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 + rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" + m_iNoise(integer) : "Beam noise (distortion)" : 0 + m_burstSize(integer) : "Number of drips per update" : 2 + //* If 0, no updates; all the beams will appear as soon as it's activated. + m_flUpdateTime(string) : "Time between updates" : "0.5" + m_flMaxUpdateTime(string) : "Max time between updates (random)" + target(string) : "Fire on updating" + m_fLifeTime(string) : "Beam Lifetime (0 = three updates)" + texture(sprite) : "Drip Sprite" : "sprites/rain.spr" + m_axis(choices) : "Beam Direction" : 0 = + [ + 0 : "Z axis (vertical)" + 1 : "X axis" + 2 : "Y axis" + ] + m_iExtent(choices) : "Extent type" : 1 = + [ + 0 : "Fill brush" + 1 : "Obstructable" + 3 : "Reverse obstructable" + 2 : "Arcing" + 4 : "Reverse arcing" + 5 : "Arcing Through" + ] + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@SolidClass base(Targetname, MoveWith) = env_mirror : "Mirror" +[ + radius(integer) : "Radius" : 330 + frags(string) : "Frags ([SF]blank for auto)" + spawnflag(flags) = + [ + 1 : "Draw Player" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_explosion : "Explosion" +[ + target(string) : "Initial position (blank = here) [LP]" + iMagnitude(integer) : "Magnitude/Radius" : 100 + spawnflags(flags) = + [ + 1 : "No Damage" : 0 + 2 : "Repeatable" : 0 + 4 : "No Fireball" : 0 + 8 : "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + //* If activated by a player, that player's screen will fade, + //* but other players will be unaffected. + 4: "Activator Only" : 0 + //NEW 0.7.1 + //* Ignore the hold time; just fade out permanently. + //* (To fade back in, you'll need to use another env_fade.) + 8: "Permanent" : 0 + 16: "Fire at Camera" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fog : "Fog effect, DMC stylee" +[ + fadein(integer) : "Fade in time" : 0 + holdtime(string) : "Hold time (0 = permanent)" : "0" + fadeout(integer) : "Fade out time" : 0 + startdist(integer) : "Fog start position" : 0 + enddist(integer) : "Fog end position" : 1000 + rendercolor(color255) : "Fog Color (R G B)" : "255 255 255" + spawnflags(flags) = + [ + 1 : "Start active" : 0 + ] +] + +//NEW 0.6 +//* To set the player's footstep sounds, trigger this entity 'on'. To revert to normal, +//* trigger it 'off' in the same way. +//* Alternatively, you can just toggle it, to alternately set and unset the sounds. +//* If one of the sound fields is left blank, it will have no effect... so if you +//* actually want it to become silent, choose common/null.wav. +//* This entity is probably most useful as the "fire on/off" target of a trigger_inout, +//* to specify the area over which the footsteps are to be changed. +@PointClass base(Targetname, Master) iconsprite("sprites/env.spr") = env_footsteps : "Change Movement Sounds" +[ + frags(choices) : "Preset Footstep type" : 0 = + [ + 0 : "Custom (see below)" + -1 : "Concrete" + 1 : "Metal" + 2 : "Dirt" + 3 : "Vent" + 4 : "Grate" + 5 : "Tile" + 6 : "Paddling" + 7 : "Wading" + 8 : "Ladder" + ] + //* Here, you can either specify a single sound file as normal, or else specify + //* a group of 4 sounds by inserting '?' instead of the number 1-4. + //* (for example, to play a random sound in the range player/pl_step1.wav to + //* player/pl_step4.wav, you would write 'player/pl_step?.wav'.) + //* (This works on the other sound fields, too.) + noise(sound) : "Custom Footstep sound" + noise1(sound) : "Ladder sound" + noise2(sound) : "Wading sound" + noise3(sound) : "Paddling sound" + spawnflags(flags) = + [ + 1: "Set only" : 0 + 2: "Once only" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_funnel : "Large Portal Funnel" +[ + //NEW 0.7.1 + message(string) : "Position (blank = here) [LP]" + //NEW 0.7.1 + //* Default: sprites/flare6.spr + netname(sprite) : "Particle sprite" + spawnflags(flags) = + [ + 1: "Reverse" : 0 + //NEW 0.5 + 2: "Repeatable" : 0 + ] +] + +//* See also @env_state +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger to send" : 3 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) color(30 100 0) iconsprite("sprites/env.spr") = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_laser : "Laser Beam Effect" +[ + //NEW 1.0 + LaserStart(target_destination) : "Start At (blank = here) [LP]" + LaserTarget(target_destination) : "Fire Towards" + m_iTowardsMode(choices) : "Meaning of Fire Towards" : 0 = + [ + 0 : "Position [LP]" + 1 : "Direction [LV]" + ] + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + //NEW 1.0 + //* If you want, you can name an env_sprite here, and the laser will use that as its start sprite. + StartSprite(sprite) : "Start Sprite" : "" + //* If you want, you can name an env_sprite here, and the laser will use that as its end sprite. + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + //NEW 0.6 + //* If you specify a negative number here, the target will be healed instead. + damage(string) : "Damage / second" : "100" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (continuous)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire when tripped" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + //NEW 0.6 + m_iProjection(choices) : "Projection mode" : 0 = + [ + 0: "Normal" + //* With this enabled, the laser's Target position only specifies + //* the direction. The beam can actually extend beyond it. + 1: "Extend past endpoint" + ] + //NEW 0.6 + m_iStoppedBy(choices) : "Stopped by" : 0 = + [ + 0: "Glass & Monsters" + 1: "Monsters only" + //* Monster hulls are a little bigger than monster hitboxes, + //* so with this option the beam will be more likely to hit them. + 2: "Glass & Monster hulls" + 3: "Monster hulls only" + 4: "Glass only" + 5: "Neither" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + //NEW 0.6 + 1024: "Interpolate" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio() = env_model : "New alternative to cyclers" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + 8: "Toggle Visibility" : 0 + 16: "Start Invisible" : 0 + ] +] + +//NEW 0.7.1 +//* Creates various particle effects when triggered. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_quakefx : "Quake 1 particle effects" +[ + message(string) : "Position (blank = here) [LP]" + impulse(choices) : "Effect type" : 4 = + [ + //* A burst of twinkly orangey particles, with explosion sound effect. + //* Quite pretty. + //* (As seen in Quake when the blob monsters are killed.) + 4 : "Tar Explosion" + //* A strange field of red particles. + 10 : "Lava Splash" + //* A smallish mass of white particles. + //* (As seen in Quake when a player spawns or teleports.) + 11 : "Teleport Splash" + //* A burst of yellowy-white particles, with explosion sound effect. + //* (As seen in Quake when a grenade or rocket goes off.) + 12 : "Explosion" + //* An expanding cube of particles. Quite pretty. + 122 : "Particle Burst" + ] + //* Used only by Particle Burst. This is an index into the + //* standard engine palette; e.g. 247 is human blood, 195 is alien blood. + frags(integer) : "Particle Burst: color number" : 70 + armortype(integer) : "Particle Burst: radius" : 300 + health(string) : "Particle Burst: duration" : "1.0" + spawnflags(flags) = + [ + 1: "Repeatable" : 0 + ] +] + +//NEW 1.2 +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFields) size (-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_particle : "Particle Effect" +[ + message(string) : "Particle file" : "aurora/smoke.aur" + netname(string) : "Child Particles name" + spawnflags(flags) = + [ + 1: "Start On" : 0 + 2: "Spawn Use" : 0 + ] +] + + +@PointClass base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + //NEW 0.7.1 + //* The Renderamt number will be multiplied by this factor. + message(string) : "FX Amount factor [LR]" + //NEW 0.7.1 + //* Set the scale of the affected model or sprite. + //* (If Fade Time is set, the scale will change slowly over time.) + m_fScale(string) : "Scale (0 = no change) [LR]" + target(target_destination) : "Target to affect [LE]" + //NEW 0.5 + //* If you set this, the affected entity (or entities) will fade + //* progressively to the new settings you specify. Only Renderamt + //* and rendercolor will fade; the other values will change + //* instantly, as usual. + frags(string) : "Fade Time (secs)" : "0" + //NEW 0.5 + //* The frequency at which the fade gets updated. If left blank (or + //* set to 0), it updates as fast as possible. + //* You probably won't need to set this unless you actually want + //* it to look coarse. + //* If a lot of entities are fading at the same time, and + //* you find the game is slowing down, you may want to try setting + //* this to 0.2 or so. + armorvalue(string) : "Fade Coarseness (secs)" + //NEW 0.5 + netname(string) : "Trigger after fading" + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + //NEW 0.7.1 + //* Useful if you want something to fade out and then be removed. + 32: "Remove target" : 0 + //NEW 0.7.1 + //* The env_render will killtarget itself after use. + 64: "Remove self" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +//NEW 0.5 +//* Creates a shockwave effect (like @monster_houndeye) when triggered. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shockwave : "Shockwave Effect" +[ + spawnflags(flags) = + [ + //* Normally, the env_shockwave entity marks the bottom of the shockwave. + //* Tick here to mark its centre instead. + 1: "Centered" : 0 + 2: "Repeatable" : 0 + ] + m_iszPosition(string) : "Position (blank = here) [LP]" + netname(string) : "Spritename" : "sprites/shockwave.spr" + rendercolor(string): "Color": "188 220 255" + renderamt(integer) : "Opacity (0-255)": 255 + m_iTime(integer) : "Duration" : 2 + m_iRadius(integer) : "Final radius" : 1000 + m_iHeight(integer) : "Wave height" : 32 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_iNoise(integer) : "Distortion ('noise')" : 0 + m_iFrameRate(integer) : "Frame Rate" : 0 + m_iStartFrame(integer) : "Starting Frame" : 0 +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) studio()= env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "sprites/ballsmoke.spr" + noise(string) : "Scale [LR]" : "" + skin(integer) : "Skin" : 0 + body(integer) : "Body (models only)" + //NEW 0.7.1 + frame(integer) : "Start frame" : 0 + //NEW 0.7.1 + framerate(string) : "Framerate" : "10.0" + //NEW 0.7.1 + m_iPhysics(choices) : "Behaviour of children" : 0 = + [ + 0: "Bouncy gib (normal)" + //* When it hits a wall, it sticks. + 1: "Sticky gib" + //* Not affected by walls or gravity + 2: "Noclip" + //* Stopped by walls, ignore gravity + 3: "Fly (ignore gravity)" + //* Bounce off walls, ignore gravity + 4: "Fly & bounce" + //* Blocked by walls, affected by gravity + 5: "Arc (obey gravity)" + //* Bounce off walls, affected by gravity + 6: "Arc & bounce" + ] + //NEW 0.7.1 + //* Used by the "bouncy gib" and "sticky gib" behaviours. + m_iBloodColor(choices) : "Blood color" : 0 = + [ + 0 : "Don't bleed" + 247 : "Red (human)" + 195 : "Yellow (alien)" + ] + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + //* debris/glass1-4.wav + 0: "Glass" + //* debris/wood1-4.wav + 1: "Wood" + //* debris/metal1-6.wav + 2: "Metal" + //* debris/flesh1-7.wav + 3: "Flesh" + //* debris/concrete1-3.wav + 4: "Concrete" + ] + //NEW 0.7.1 + m_fFriction(string) : "Bounce height" : "0.55" + //NEW 0.7.1 + //* If you need access to both the entities involved in a collision, try targetting + //* a locus_alias with this field. Then, target the effect you actually want with the + //* "locus = wall" field, and you'll be able to refer to the shot via the alias. + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouch(string) : "Fire on collision (locus = shot)" + //NEW 0.7.1 + //* This won't be fired when the shot hits a wall that's not tied to an entity. + //* (But a func_wall works fine.) + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouchOther(string) : "Fire on collision (locus = wall)" + //NEW 0.7.1 + m_vecSize(string) : "Shot size (X Y Z)" : "0 0 0" +] + +//NEW 1.1 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_sky : "Unreal-Tournament style sky view" +[ +] + +@PointClass base(Master, MoveWith) iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + //NEW 0.5 + //* If set, the env_sound won't use its Radius- it will simply take effect when triggered. + targetname(target_source) : "Name" + target(target_destination) : "Fire when activated" + radius(integer) : "Radius" : 128 + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_spark : "Spark" +[ + target(string) : "Initial position (blank = here) [LP]" + MaxDelay(string) : "Max Time between sparks" : "0" + spawnflags(flags) = + [ + 16: "Cyclic" : 0 + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + message(string) : "Attached to entity..." + frags(choices) : "...at attachment point" : 0 = + [ + 0 : "0" + 1 : "1" + 2 : "2" + 3 : "3" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +//NEW 0.3 +//* Simply keeps track of a state. Useful as a master or a conditional "branch". +@PointClass base(Targetname, Master) color(128 128 255) iconsprite("sprites/env.spr") = env_state : "Local State" +[ + target(target_destination) : "Target (on & off)" + noise1(target_destination) : "Fire when turned on" + noise2(target_destination) : "Fire when turned off" + //* If the env_state gets turned off before it finishes turning on, + //* the "fire on turning on" target will never get triggered. This is very + //* useful for setting up "if you stay in this area for 5 seconds" type triggers. + turnontime(string) : "Time taken to turn on" : "0" + turnofftime(string) : "Time taken to turn off" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + //* If you're trying to work out what's actually happening in your level, + //* try ticking here and the env_state will tell you when it triggers, etc. + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.4 +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_warpball : "Teleport-in effect" +[ + target(string) : "Initial position (blank = here) [LP]" + health(string) : "Max lightning-arc length" : "90" + frags(integer) : "Number of lightning bolts" : 12 +] + +@SolidClass base(Breakable, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight) = func_breakable : "Breakable Object" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global, LockSounds) = func_button : "Button" +[ + speed(integer) : "Speed" : 25 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" : 0 + //* The number against each sound (except Lightswitch) corresponds to the wav file + //* played. e.g. Buzz (10) plays "buttons/button10.wav". + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup (1)" + 2: "Access Denied (2)" + 3: "Access Granted (3)" + 4: "Quick Combolock (4)" + 5: "Power Deadbolt 1 (5)" + 6: "Power Deadbolt 2 (6)" + 7: "Plunger (7)" + 8: "Small zap (8)" + 9: "Keycard Sound (9)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + //* buttons/lightswitch2.wav + 14: "Lightswitch" + ] + wait(choices) : "Delay before Reset" : 0 = + [ + -1 : "Stays pressed (-1)" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + //NEW 0.7.1 + //* Normally, the player can use buttons through walls etc. Tick here to + //* prevent that. + //* (With this set, it's also impossible to use the button unless it's in + //* the centre of the player's crosshairs. So at last, control panels can + //* have their buttons close together!) + //* Don't combine this with Not Solid - the button will become unusable. + 16: "Direct use only": 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 128: "Not Solid" : 0 + 256:"Touch Activates": 0 + //NEW 0.4 + //* Normally, a button can be activated with the Use key. Tick here to disable that behaviour. + //* If "Touch activates" is also selected, this flag will instead enable the use key. + 512:"Can't Use" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door : "Basic door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + acceleration(integer) : "Acceleration '0' for infinite" : 0 + deceleration(integer) : "Deceleration '0' for infinite" : 0 +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door_rotating : "Rotating door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, MoveWith, RenderFields, ZHLTLightKeys) = func_friction : "Surface with a change in friction" +[ + //* 0% = No friction, 100% = Normal Friction + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire when damaged" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_healthcharger: "Wall health recharger" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_illusionary : "Fake Wall/Light" +[ + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + -17:"Zero-G" + -18:"Hover-Field" + -19:"Fog effect" + -20:"Special 1 (Particles)" + -21:"Special 2 (Particles)" + -22:"Special 3 (Particles)" + + + ] + _minlight(string) : "Minimum light level" +] + +//* Creates an invisible, climbable field. +//* To show the actual ladder image, either add a @func_illusionary covered with a {ladder texture, or tick the Visible flag. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_ladder : "Ladder" +[ + spawnflags(flags) = + [ + //NEW 0.5 + 1 : "Visible" : 0 + ] +] + +//* Also prevents hlcsg.exe from making a path between two @info_node entities on opposite sides of the brush. +@SolidClass base(Targetname, MoveWith) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname, MoveWith) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +//* Only partially implemented, some keys don't work properly. +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Appearflags) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 8 : "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +//* With any luck, I've fixed the bug which caused players to sometimes be frozen. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLTLightKeys) = func_pushable : "Pushable object" +[ + spawnflags(flags) = + [ + 128: "Breakable" : 0 + //NEW 0.3 + //* Tick here if the crate can only ever be pushed. + 512: "Can't Pull" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_recharge: "Battery recharger" +[ + _minlight(string) : "Minimum light level" +] + +//* Like @func_button, except it rotates. +@SolidClass base(Targetname, Target, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Master, LockSounds) = func_rot_button : "RotatingButton" +[ + //* if set, then when the button is pressed, the "target" field of the entity targetted by the button will be set to this value. + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + health(integer) : "Health (shootable if > 0)" + //* The number against each sound corresponds to the wav file + //* played. e.g. Squeaky (1) plays "buttons/lever1.wav". + sounds(choices) : "Sounds" : -1 = + [ + -1: "None" + 21: "Squeaky (1)" + 22: "Squeaky Pneumatic (2)" + 23: "Ratchet Groan (3)" + 24: "Clean Ratchet (4)" + 25: "Gas Clunk (5)" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + //NEW 0.7.1 + //* See the notes about this on @func_button. + 16: "Direct use only" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128:"Y Axis" : 0 + 256:"Touch Activates" : 0 + 512:"Invert '+Use'able" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_rotating : "Rotating Object" +[ + //* This sets the initial orientation of the entity, but that could + //* be achieved by simply rotating the brushes, in Worldcraft. + //* More importantly, it will change the position of the axes + //* the entity pivots around. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + speed(integer) : "Rotation Speed" : 30 + //NEW 0.5 + //* This field overrides the "X Axis" and "Y Axis" flags. It's + //* mostly useful to make a complex orbit for an object. (If you + //* just want to have a tilted axis for an otherwise normal rotating + //* object, you'll want to change the "angle" field instead.) + //* For example, set this field to "0 12 1" and the Z axis will + //* rotate 12 times in the time it takes the X axis to complete one + //* turn. (the entity will also turn 12 times faster than the + //* Rotation Speed you specify.) + //* NB: The way the quake engine handles rotation is not exactly + //* intuitive. The Z axis is the primary axis, so rotation around + //* the Y and X axes will be affected by the current Z position. + //* Similarly, the Y axis is the secondary axis, so rotation around + //* the X axis will be affected by the current Y position. + //* To get a feel for how this works, try making a func_rotating + //* cube whose origin is at one corner, set its "axes" value to + //* "1 1 0", and watch how it moves. One edge will simply go around + //* in a horizontal circle, while the rest of the cube rotates + //* around that edge. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + //* The number against each sound corresponds to the wav file + //* played. e.g. Slow Rush (2) plays "fans/fan2.wav". + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine (1)" + 2 : "Slow Rush (2)" + 3 : "Medium Rickety (3)" + 4 : "Fast Beating (4)" + 5 : "Slow Smooth (5)" + ] + //* The sound to play while active. This will only be used if "Fan Sounds" is set to "No Sound". + message(sound) : "WAV Name" :"" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + //* This, and the other "radius" settings, only affect the + //* way the Fan Sounds are played; if you set a small radius, + //* the sounds will only be audible near to the fan. + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +//NEW 1.1 +@SolidClass base(Targetname) = func_shine : "Shiny Surface" +[ + message(sprite) : "Shine sprite" : "sprites/bgspr.spr" + scale(integer) : "Shine scale" : 10 + renderamt(integer) : "Shine brightness (0-255)" : 50 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(Targetname, MoveWith) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" + //NEW 0.5 + //* This specifies how far the player has to move before the controls will dump him off. + //* If you set -1, the player never gets dumped off. (In which case, the + //* func_tankcontrols can only be deactivated by triggering it with another entity.) + frags(integer) : "Tolerance (-1 = total)" : 30 + //NEW 0.5 + //* More crosshair choices will be available in future. + crosshair(choices) : "Crosshair to use" : 0 = + [ + 0: "None" + 4: "MP5" + ] + spawnflags(flags) = + [ + //NEW 0.5 + //* If you tick here, the controls can only be activated by triggering it with + //* another entity. + 1 : "Ignore +Use" : 0 + //NEW 1.0 + 2 : "Visible" : 0 + ] +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankrocket : "Brush Rocket Turret" [] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 4 : "No Reverse" : 0 + 8 : "Passable" : 0 + 16: "No Yaw (Z-rot)" : 0 + ] + target(target_destination) : "First stop target" + //* The number against each sound corresponds to the wav file + //* played. e.g. Rail 1 plays "plats/ttrain1.wav". + sounds(choices) : "Move Sound" : 0 = + [ + 0: "None (or custom)" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + //NEW 0.6 + custommovesound(sound) : "Custom Move Sound" + //NEW 0.6 + //* Default is "plats/ttrain_start1.wav". For silence, use "common/null.wav". + customstartsound(sound) : "Start Sound" + //NEW 0.6 + //* Default is "plats/ttrain_brake1.wav". For silence, use "common/null.wav". + custombrakesound(sound) : "Stop Sound" + //* This setting controls how smoothly the train turns corners - if the wheels are + //* close together, it will turn sharply, and if far apart, it will turn more gradually. + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" + avelocity(string) : "Initial avelocity (Y Z X)" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + avelocity(string) : "Initial avelocity (Y Z X)" + dmg(choices) : "Damage on crush" : 2 = + [ + //NEW 0.3 + -1: "No damage" + ] + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + //NEW 0.5 + //* Usually, the center of the train (in fact, the center of its bounding box) + //* will be the point used when positioning the train at a path_corner. Tick + //* here to use its origin for this instead. + 2 : "Origin on paths" : 0 + //NEW 0.4 + //* This is the default if you don't specify a name. + 4 : "Initially On" : 0 + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//* Note that unlike func_tankcontrols, this defines what area the player must be standing in in order to use the tank. +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +//NEW 1.5, func_walls can now be rotated ingame when they spawn +//This allows you to get around Hammer stuffing up rotating complex brushes +@SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + vuser1(string) : "Rotate by Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target, Master) iconsprite("sprites/game.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_end : "End this multiplayer game" [] + +@PointClass base(Targetname) iconsprite("sprites/game.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 2: "Only once" : 0 + 4: "No HL2D" : 0 + ] + + //NEW 0.6 + target(string) : "Fire when done" + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] + +@SolidClass base(Targetname) iconsprite("sprites/game.spr") = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" +[ + m_iBloodColor(choices) : "Blood color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (human)" + 195 : "Yellow (alien)" + ] +] + + +// +// hud entities +// + +//NEW 1.0 +//* At the moment, this can only display sprites that are defined in sprites/hud.txt, and +//* will always display them in the status icon area on the left of the screen. +//* Bear in mind, the hud isn't displayed unless you have an HEV suit. + + +// +// info entities +// + +//* If you give a decal a targetname, then it won't appear until fired. +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +//NEW 0.3 +//* An alias makes itself an "alternative name" for an entity. To refer to +//* an entity through the alternative name, use the alias name preceeded by a *. +//* For example, suppose you set up an info_alias entity called 'myalias'. +//* 'Myalias' targets a light called 'redlight'. suppose a you set up a +//* @trigger_once field targetting "*myalias", so that when you walk through the +//* trigger field, redlight gets turned on and off. So far, info_alias seems to +//* be like a @trigger_relay. However, you can also set up a switch which targets +//* "myalias", to turn it off... +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_alias : "Alias" +[ + target(target_destination) : "Reference while On" + netname(string) : "Reference while Off" + mode(string) : "Use Mode, 0= On/Off 1= list mode" : "0" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) iconsprite("sprites/info.spr") = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +//NEW 1.0 +//* Which compile options to use. +@PointClass size(-8 -8 0, 8 8 32) iconsprite("sprites/info.spr") = info_compile_parameters : "Compile Options" +[ + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 1 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 2 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + spawnflags(flags) = + [ + 1 : "Run CSG" : 1 + 2 : " No Clip" : 0 + 4 : " Only Ents" : 0 + 8 : " No Sky Clip" : 0 + 32 : "Run BSP" : 1 + 64 : " Leak Only" : 0 + 128 : " No Clip" : 0 + 256 : "Run VIS" : 1 + 512 : " Fast " : 0 + 2048 : "Run RAD" : 1 + 4096 : " Sparse " : 0 + 8192 : " Circus Mode" : 0 + 16384 : " Extra Mode " : 0 + ] +] + +//NEW 0.4 +//* An info_group acts similarly to an @info_alias, except that it has several +//* "members" which are are accessed by writing 'mygroup.membername'. +//* These members are set up just like the targets of a @multi_manager- except +//* that they'll contain an entity reference instead of a delay time. +//* If you set up its "target" field to refer to an info_alias entity, then when +//* an info_group is triggered, it will change that info_alias entity to target the +//* group. +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_group : "Entity Group" +[ + target(string) : "Alias to change when fired [LE]" + //* If you refer to a group member which hasn't been defined explicitly, + //* but you do define a default prefix here, then the member name will be + //* added to the prefix to generate an appropriate reference. + //* e.g: Suppose an info_group named "bob" defines a default prefix + //* "bobs_". Now; if you refer to, for example, "bob.house" or + //* "bob.gun", you'll actually affect entities named "bobs_house" + //* and "bobs_gun", respectively. + defaultmember(string) : "Default member prefix" + spawnflags(flags) = + [ + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Target, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/info.spr") = info_landmark : "Transition Landmark" [] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_movewith : "Movewith relay" +[ + target(string) : "MoveWith when active" + netname(string) : "MoveWith when inactive" + spawnflags(flags) = + [ + 1 : "Start inactive" : 0 + //* Usually, info_movewith will happily pass straight through a wall. + //* Tick here if you want it to stop when it hits walls. + //* Incidentally, ticking this will also allow it to set off trigger + //* fields, such as @trigger_multiple. + 2 : "Blockable" : 0 + ] +] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) iconsprite("sprites/infonode.spr") = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) iconsprite("sprites/infonode.spr")= info_node_air : "ai air node" [] + +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass, Master, MoveWith) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" +] +@PointClass base(PlayerClass, MoveWith, Sequence) = info_player_start : "Player 1 start" +[ + spawnflags(Flags) = + [ + 1 : "Start with HEV" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/info.spr") = info_target : "Beam Target" +[ + spawnflags(Flags) = + [ + //NEW 0.4 + //* Essentially, this flag forces the game engine to treat an info_target as visible + //* (even though it isn't). This has two effects: + //* 1) Normally if an env_beam is attached to an info_target which can move (via MoveWith), + //* the env_beam won't follow the info_target properly. Ticking here fixes that problem. + //* 2) If an env_beam's "ring" mode is selected, you must make both ends of the beam + //* into 'visible' entities, otherwise the beam won't be displayed. + //* (Note that if you're making a mod and you tell an info_target to use null.spr, you will + //* of course have to distribute null.spr with the mod.) + 1 : "Use null.spr" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass, MoveWith) iconsprite("sprites/info.spr") = info_teleport_destination : "Teleport destination" [] + +//NEW 1.0 +@PointClass color(255 128 0) iconsprite("sprites/info.spr") = info_texlights : "Texture Light Config" [] + + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl")= item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl")= item_antidote : "Poison antidote" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl")= item_battery : "HEV battery" +[ + //NEW 0.7.1 + model(string) : "Model (models/w_battery.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 0.7.1 + body(integer) : "Body" + //NEW 0.7.1 + noise(string) : "Sound (items/gunpickup2.wav)" + //NEW 0.7.1 + armorvalue(integer) : "Charge by (0 = normal)" +] +//NEW 1.4 +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_flashlight.mdl")= item_flashlight : "FlashLight" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl")= item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl")= item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl")= item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Light, ZhltLights) = light : "Invisible lightsource" +[ + target(string) : "Target to shine at" + firetarget(string) : "Target to trigger" + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +//NEW 0.5 +//* See also @env_dlight. +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Targetname, MoveWith) = light_glow : "Dynamic Glow" +[ + frags(choices) : "Glow Type" : 1 = + [ + 2: "Brightest" + 1: "Flashlight" + 0: "None" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + 2 : "Flare" : 0 + ] +] + +@PointClass base(Angles, ZhltLights) color(255 255 128) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Target, Light, ZhltLights) = light_spot : "Spotlight" +[ + firetarget(string) : "Target to trigger" + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 +// _light(color255) : "Brightness" : "255 255 128 200" + _sky(choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = momentary_door : "Momentary/Continuous door" +[ + //NEW 0.4 + //* Maximum speed the door is allowed to move at. + speed(choices) : "Speed" : 100 = + [ + 0: "No limit" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + stopsnd(choices) : "Stop sound" : 0 = + [ + 0 : "No Sound" + 1 : "Clang with brake" + 2 : "Clang Reverb" + 3 : "Ratchet stop" + 4 : "Chunk" + 5 : "Light Airbrake" + 6 : "Metal Slide Stop" + 7 : "Metal Lock Stop" + 8 : "Snappy Metal Stop" + ] + lip(integer) : "Lip" + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//NEW 0.7.1 +//* Stores a reference to an entity. Whenever the alias is triggered, +//* it changes to record what triggered it. +//* Thereafter, you can refer to that entity by *aliasname (where aliasname is the name +//* of the locus_alias). +//* Note that this records a specific entity - unlike @info_alias which +//* records the name of an entity. So info_alias always refers to all entities with a particular +//* name, whereas locus_alias always refers to one specific entity. +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = locus_alias : "Locus System - Entity variable" +[ + netname(string) : "Initial value" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_beam : "Locus System - Beam effect" +[ + m_iszStart(string) : "Start at (blank = here)" : "" + m_iszEnd(string) : "End at (blank = here)" : "*locus" + impulse(choices) : "Start & End are" : 0 = + [ + 0: "Entity & Entity [LE LE]" + 1: "Entity & Position [LE LP]" + 2: "Position & Position [LP LP]" + 3: "Position & Direction [LP LV]" + ] + m_iszSprite(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + m_iWidth(integer) : "Width" : 10 + m_iDistortion(integer) : "Distortion ('noise')" : 0 + m_fFrame(integer) : "Start frame" : 0 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_fDuration(string) : "Duration (0 = unlimited)" : 0 + m_fDamage(string) : "Damage amount" : 0 + m_iDamageType(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Blood Loss" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Internal bleeding" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + m_iszTargetName(target_source) : "Name of children" + target(target_destination) : "Fire on spawn (locus = child)" + spawnflags(flags) = + [ + //* This will only work if "Start & End" is set to "Entity & Entity". + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* As the name suggests, this acts like a variable in a programming language. It +//* stores three values - a position, a velocity, and a ratio. (if you want a variable +//* that records entities, see @locus_alias). To set values, trigger the entity; and to +//* access them, just refer to it like the appropriate calc_x entity. +//* locus_variable can also be used another way; if you give a "Child's Name" +//* value, triggering it will create a reference point with that name. So for example, +//* suppose you want to create streams of water wherever an object gets shot. You +//* trigger a locus_variable to record where the shot hits, and then have its "fire +//* on spawn" value triggering the water stream. But if you don't have it make seperate +//* reference points, then all the water will come out of the last shot position. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_variable : "Locus System - Variable for storing data" +[ + m_iszPosition(string) : "Position to record [LP]" : "*locus" + m_iszVelocity(string) : "Velocity to record [LV]" : "*locus" + m_iszRatio(string) : "Ratio to record [LR]" : "*locus" + m_iszTargetname(string) : "Child's name (blank = no child)" + m_iszFireOnSpawn(string) : "Fire on spawn (locus = child)" + m_fDuration(string) : "Removed after time (secs)" +] + +@SolidClass base(Targetname, Target, Angles, Master, MoveWith, RenderFields, ZHLTLightKeys) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// Monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //NEW 1.0 + 1024: "Drop gun" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //* This monster won't attack unless provoked. + 64 : "Start Peaceful" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "No Wreckage" : 0 + 64: "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] +@PointClass base(Targetname, RenderFields) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" +[ + frags(choices) : "Weapon" : 0 = + [ + 0 : "Glock (normal)" + 1 : "Python 357" + ] + spawnflags(Flags) = + [ + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "Idle1" + 1 : "Idle2" + 2 : "Idle3" + 3 : "Idle4" + 4 : "walk" + 5 : "run" + 6 : "shootgun" + 7 : "shootgun2" + 8 : "draw" + 9 : "disarm" + 10 : "reload" + 11 : "turnleft" + 12 : "turnright" + 13 : "laflinch" + 14 : "raflinch" + 15 : "llflinch" + 16 : "rlflinch" + 17 : "smlflinch" + 18 : "cower stand" + 19 : "locked door" + 20 : "fall loop" + 21 : "barn wave" + 22 : "beat grunt" + 23 : "beat grunt idle" + 24 : "flashlight" + 25 : "diesimple" + 26 : "dieviolent" + 27 : "diegutshot" + 28 : "die forward" + 29 : "die back" + 30 : "die crump" + 31 : "barnaclehit" + 32 : "barnaclepull" + 33 : "barnaclecrunch" + 34 : "barnaclechew" + 35 : "lie back" + 36 : "lie side" + 37 : "lie stomach" + 38 : "stuffed in vent" + 39 : "standing idle" + 40 : "cpr barney" + 41 : "cpr revive" + 42 : "barney drag vent" + 43 : "dying" + 44 : "dying idle" + 45 : "dying friend" + 46 : "dying friend idle" + 47 : "c1a3idle" + 48 : "c1a3ventb" + 49 : "c1a3 emergeidle" + 50 : "c1a3emerge" + 51 : "haul barney" + 52 : "push buttons" + 53 : "fence die" + 54 : "sit1" + 55 : "almostidle" + 56 : "almost" + 57 : "laseridle" + 58 : "laser top" + 59 : "laser bottom" + 60 : "fallidle" + 61 : "fall" + 62 : "c3a2 draw" + 63 : "corner2" + 64 : "unlatch" + 65 : "retina" + 66 : "relax stand" + 67 : "assasinated" + 68 : "plunger" + 69 : "pepsiswing" + 70 : "pepsi push" + 71 : "push button" + ] + +] +@PointClass base(Targetname, Angles, RenderFields, Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" +] +//* Not fully implemented: rudimentary AI. Will run away if attacked, +//* otherwise will stand still. +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullSquid" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] +//@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer : "Single Flyer" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(integer) : "Flock Size" : 8 + flFlockRadius(integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] +@PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + //NEW 0.4 + //* Tick here if you're using a model from the models/player/ directories. + //* This option sets it up so that the model's bounding box is centered on its origin (the X in + //* the middle of the entity, in WorldCraft), instead of being the middle of its bottom face. + 8 : "Head Controller" : 0 + 16 : "Player model" : 0 + //NEW 0.4 + 32: "Invulnerable" : 0 + ] + model(studio) : "model" + //NEW 0.4 + //* Headcrab: 24 24 24 + //* Houndeye: 32 32 36 + //* Human: 32 32 72 + //* Most Aliens: 64 64 64 + size(string) : "Size (X Y Z)" + //NEW 0.4 + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //NEW 0.4 + //* If not set, health is 8. + health(Integer) : "Initial Health" : 0 + //NEW 0.4 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //NEW 0.5 + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_generic_dead : "Generic Dead Body" +[ + spawnflags(Flags) = + [ + 8 : "Player model" : 0 + ] + //* The corpse's pose will be the last frame of this sequence. + //* This overrides the 'death type' value. + netname(string) : "Sequence name" + //* If you don't specify a 'Sequence name', the monster will select a random death + //* animation of the type you specify here. Not all models have all these death types. + frags(choices): "Death Type" : 36 = + [ + 36 : "Just dead" + 37 : "Fell backwards" + 38 : "Fell forwards" + 39 : "Died violently" + 66 : "Head shot" + 67 : "Chest shot" + 68 : "Gut shot" + 69 : "Shot in the back" + ] + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Targetname, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + //NEW 0.5 + weapons(Choices) : "Weapon" : 0 = + [ + 0 : "MP5" + 1 : "Shotgun" + 2 : "No gun" + ] + //NEW 0.5 + //* The "no gun" settings are only included here for backwards compatibility. + body(Choices) : "Head" : 0 = + [ + 0 : "Gasmask" + 6 : "Gasmask (black skin)" + 1 : "Beret" + 4 : "Skimask" + 7 : "Skimask (black skin)" + 5 : "Cigar (black skin)" + 2 : "(Gasmask, no gun)" + 3 : "(Beret, no gun)" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10: "Shotgun + HG" + ] + sequence(Choices) : "Animation Sequence (editor)" : 11 = + [ + 0 : "walk1" + 1 : "run" + 2 : "victorydance" + 3 : "cower" + 4 : "smflinch" + 5 : "leftlegsmflinch" + 6 : "rightlegsmflinch" + 7 : "rightarmflinch" + 8 : "leftarmflinch" + 9 : "launchgrenade" + 10 : "throwgrenade" + 11 : "idle1" + 12 : "idle2" + 13 : "combatidle" + 14 : "frontkick" + 15 : "crouching_idle" + 16 : "crouching_wait" + 17 : "crouching_mp5" + 18 : "standing_mp5" + 19 : "reload_mp5" + 20 : "crouching_shotgun" + 21 : "standing_shotgun" + 22 : "reload_shotgun" + 23 : "advance_signal" + 24 : "flank_signal" + 25 : "retreat_signal" + 26 : "drop_grenade" + 27 : "limpingwalk" + 28 : "limpingrun" + 29 : "180L" + 30 : "180R" + 31 : "strafeleft" + 32 : "straferight" + 33 : "dieback1" + 34 : "dieforward" + 35 : "diesimple" + 36 : "diebackwards" + 37 : "dieheadshot" + 38 : "diegutshot" + 39 : "barnacled1" + 40 : "barnacled2" + 41 : "barnacled3" + 42 : "barnacled4" + 43 : "dead_on_stomach" + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + 47 : "repel_jump" + 48 : "repel_repel" + 49 : "repel_shoot" + 50 : "repel_land" + 51 : "repel_die" + 52 : "dragholeidle" + 53 : "draghole" + 54 : "bustwall" + 55 : "hoprail" + 56 : "converse1" + 57 : "converse2" + 58 : "startleleft" + 59 : "startleright" + 60 : "divecover" + 61 : "defuse" + 62 : "corner1" + 63 : "corner2" + 64 : "stonetoss" + 65 : "cliffdie" + 66 : "diveaside_idle" + 67 : "diveaside" + 68 : "kneeldive_idle" + 69 : "kneeldive" + 70 : "WM_button" + 71 : "WM_moatjump" + 72 : "bustwindow" + 73 : "dragleft" + 74 : "dragright" + 75 : "trackwave" + 76 : "trackdive" + 77 : "flyback" + 78 : "impaled" + 79 : "jumptracks" + 80 : "pipetoss" + 81 : "plunger" + ] + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] + +//* The helicopter which flies around and drops grunts. Basically, whenever a grunt +//* dies, a replacement will be dropped so that the level contains the same number as +//* before. +//* With Spirit, it's no longer necessary to place grunts in your level: +//* in that situation the Osprey pretends, arbitrarily, that 4 have already died. +//* NB: An osprey must have a patrol path; if you don't give one, it will fail to +//* work. Spirit also fixes the Half-Life bug which meant a path_corner had to give +//* a Speed value... though the Speed values will still function if you choose to use them. +//* FYI: an Osprey will only drop grunts at path_corners whose Speed is set +//* to 0. After dropping grunts, it will head for the nearest path_corner whose Speed +//* is greater than 400, if one exists. Spirit also fixes the Half-Life bug which +//* crashed the game if no such corner was available. +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + //* Until triggered, the osprey won't move or drop grunts. + 64 : "Start Inactive" : 0 + ] +] +//* Like @monster_bloater: no AI, no death animation. +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" [] +@PointClass base(Weapon,Targetx,RenderFields) studio("models/w_satchel.mdl") = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 0 : "walk" + 1 : "walk_scared" + 2 : "run" + 3 : "run1" + 4 : "run2" + 5 : "180_Left" + 6 : "180_Right" + 7 : "flinch" + 8 : "flinch1" + 9 : "laflinch" + 10 : "raflinch" + 11 : "llflinch" + 12 : "rlflinch" + 13 : "idle1" + 14 : "idle3" + 15 : "idle4" + 16 : "idle5" + 17 : "idle6" + 18 : "idle7" + 19 : "crouchstand" + 20 : "crouch_idle" + 21 : "crouch_idle2" + 22 : "crouch_idle3" + 23 : "crouch_idle3" + 24 : "panic" + 25 : "fear1" + 26 : "fear2" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 31 : "diesimple" + 32 : "dieforward" + 33 : "dieforward1" + 34 : "diebackward" + 35 : "headshot" + 36 : "gutshot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 43 : "barnacled1" + 44 : "barnacled2" + 45 : "barnacled3" + 46 : "barnacled4" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 58 : "pause" + 59 : "yes" + 60 : "no" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 70 : "startle" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 92 : "panic1" + 93 : "lookwindow" + 94 : "wave" + 95 : "pulldoor" + 96 : "beatdoor" + 97 : "fallingloop" + 98 : "crawlwindow" + 99 : "divewindow" + 100 : "locked_door" + 101 : "push_button2" + 102 : "unlock_door" + 103 : "quicklook" + 104 : "handrailidle" + 105 : "handrail" + 106 : "hanging_idle" + 107 : "fall" + 108 : "scientist_get_pulled" + 109 : "hanging_idle2" + 110 : "fall_elevator" + 111 : "scientist_idlewall" + 112 : "ickyjump_sci" + 113 : "haulscientist" + 114 : "c1a4_wounded_idle" + 115 : "c1a4_dying_speech" + 116 : "tentacle_grab" + 117 : "helicack" + 118 : "windive" + 119 : "scicrashidle" + 120 : "scicrash" + 121 : "onguard" + 122 : "seeya" + 123 : "rocketcrawl" + 124 : "portal" + 125 : "gluonshow" + 126 : "crouch" + 127 : "kneel" + ] +] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] + sequence(Choices) : "Animation Sequence (editor)" : 37 = + [ + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + spawnflags(Flags) = + [ + //NEW 0.4 + //* Sitting scientists are pre-disaster by default. + 1024: "Post-Disaster" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 74 = + [ + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] + +//NEW 0.7 +//* While a monster_target is active, monsters will attack it as though it were another monster. +//* An easy way to make monsters shoot out lights, attack func_tanks, etc. +@PointClass color(0 200 200) base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monster_target : "Target for monsters to attack" +[ + frags(choices) : "When active, count as:" : 11 = + [ + 0 : "Ignored" + //* Disliked by human military and most aliens. + 3 : "Scientist" + //* Hated by human military, disliked by most aliens. + 11: "Barney" + //* Hated by alien military, disliked by barneys and most aliens. + 4 : "Human Military" + //* Hated by human military, disliked by barneys. + 5 : "Alien Military" + //* Disliked by human miliary and barneys. + 7 : "Other Alien" + //* Disliked by all humans. Hated by Bullsquids. + 8 : "Headcrab" + //* Disliked by all humans and by other Bullsquids. Feared by Headcrabs. + 9 : "Bullsquid" + //* Disliked by everyone, except other Faction A members. + 14 : "Faction A" + //* Disliked by everyone, except other Faction B members. + 15 : "Faction B" + //* Disliked by everyone, except other Faction C members. + 16 : "Faction C" + ] + spawnflags(Flags) = + [ + 1: "Start inactive" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(choices) : "Tap Sound" : -1 = + [ + -1: "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [ + +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + noise(String) : "Position to place monster at [LP]" + noise1(String) : "Offset from position of monster [LV]" + noise2(String) : "Angles of monster [LV]" + noise3(String) : "Velocity of monster [LV]" + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(target_source) : "Name of Spawned Monsters" + spawnflags(Flags) = + [ + //* If you don't give the monstermaker a Name, this is the default. + 1 : "Start ON" : 0 + //* In Cyclic mode, the maker will spawn a monster each time it's triggered. + //* (Otherwise, triggering the maker will turn it on, and it will then make monsters as + //* often as its 'delay' permits.) + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + //NEW 0.5 + //* By default, unless "number of monsters" is 1, the corpses of the monsters will fade out. + //* Tick here to override this. In order to prevent infinite numbers of corpses from appearing, + //* this flag is ignored if Number of Monsters is set to unlimited, + 16 : "Leave corpses" : 0 + //NEW AJH + //* Tick to force monsters to spawn regardless of other monsters being present. + 32 : "Force Spawn" : 0 + //NEW 0.6 + //* If this is ticked, the created monsters won't drop their weapons when they die. + 1024: "Don't Drop Gun" : 0 + ] + //* The total number of monsters the monstermaker can create (-1 = unlimited) + monstercount(choices) : "Number of Monsters" : -1 = + [ + -1 : "Unlimited" + ] + //* If -1, a new monster will only be made when the last monster dies. + //* Otherwise, this is is the time to wait (seconds) between producing new monsters. + delay(string) : "Time between spawns" : "5" + //NEW 0.4 + //* Mainly for use with @env_warpball. This makes a delay between the monstermaker triggering + //* its "target on release" entity and the monster appearing. For best results, set the + //* "target on release" value to the env_warpball, and set the "delay before release" to about 0.5. + spawndelay(string) : "Delay before release" : "0" + //* The maximum number of live children allowed at one time; if this is set, new children will + //* not be made until one dies. (-1 = no limit) + m_imaxlivechildren(integer) : "Max live children" : 5 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Monsters behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Monsters reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] +] + +//NEW 0.7.1 +//* For controlling the movement of other entities. There are two main ways to use this entity: +//* a) Don't give it a targetname, just tell it what entity to affect. In this case, the +//* motion of the affected entity will be managed however you want. This is mostly useful to +//* make things MoveWith a @func_pushable or a monster. (Just name the func_pushable in the +//* manager's "Position" field.) +//* b) Give it a targetname, but leave the "target to affect" set to *locus. Then, type the +//* motion_manager's name into the "trigger on spawn" field of, for example, an env_shooter. +//* In this case, every shot the shooter makes will be managed throughout its lifetime. +//* If you just want to change an entity's position or velocity instantly, once, then see +//* @trigger_motion. +@PointClass base(Targetname) = motion_manager : "Control the movement and direction of an entity" +[ + target(target_destination) : "Target to affect [LE]" : "*locus" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set position [LP]" + 1 : "Offset position [LV]" + 2 : "Set velocity [LV]" + 3 : "Accelerate by [LV]" + 4 : "Follow position [LV]" + ] + m_iPosAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "X axis only" + 2 : "Y axis only" + 4 : "Z axis only" + 6 : "Not X (YZ only)" + 5 : "Not Y (XZ only)" + 3 : "Not Z (XY only)" + ] + m_iszFacing(string) : "Facing (blank = no change)" + m_iFaceMode(choices) : "Meaning of Facing" : 0 = + [ + 0 : "Face direction [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by (Y Z X)" + 3 : "Set avelocity (Y Z X)" + ]m_iFaceAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "Pitch only" + 2 : "Yaw only" + 4 : "Roll only" + 6 : "Not Pitch" + 5 : "Not Yaw" + 3 : "Not Roll" + ] + + spawnflags(flags) = + [ + 1: "Debug" : 0 + 2: "swap pitch/yaw" : 0 + 4: "swapyaw/roll" : 0 + 8: "swap roll/pitch" : 0 + 16: "stepped" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + //NEW 0.3 + netname(string) : "Target on turning off" + globalstate(string) : "Global State Master" +] + +//NEW 0.4 +//* A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities +//* together, while still allowing them to have individual names. +//* For example, suppose you have a set of lights in your level. Each one has its own lightswitch, +//* which allows it to be switched on and off on its own. But later in the level, you want the power +//* (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which +//* targets all the lights, and simply trigger what that alias refers to. +@PointClass base(Targetname) = multi_alias : "Multi-target alias" +[ + //NEW 0.5 + m_iMode(choices) : "Mode" : 0 = + [ + 0: "Normal" + //* Each time the alias is used, one of the targets will be chosen + //* at random. Targets with higher values are proportionally more + //* likely to be chosen. + 1: "Choose one (weighted)" + //* Each time the alias is used, zero or more of the targets will + //* be valid. The 'value' for each target gives the percentage + //* chance that it will be valid each time. + 2: "% chance for each" + ] +] + +//* Triggers a sequence of up to 16 entities, at various time offsets. +//* To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode +//* and add fields manually. The name of the field is the targetname of the entity to trigger, +//* and the contents of the field are the time (in seconds) to wait before triggering it. +//* If a master is given, then while the master is locked, the manager will ignore +//* all signals. This won't prevent it from continuing a sequence that started while the master +//* was unlocked, but it will prevent new sequences from starting. + +@PointClass base(Targetname, Master) color(255 128 0) iconsprite("sprites/multimanager.spr") = multi_manager : "MultiTarget Manager" +[ + //NEW 0.3 + //* How long to wait before starting the sequence. This delay is in addition to the offsets given for each individual target. + wait(string) : "Time offset" + //NEW 0.3 + //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset" + //* value is used as a minimum offset. + maxwait(string) : "Max Time offset (Random)" + //NEW 0.3 + //* Message to send to the targets. + triggerstate(choices) : "Trigger to send" = + [ + 0: "Toggle" + 1: "On" + 2: "Off" + 3: "Kill" + //* If you select this, the manager will send on whatever triggers (e.g. USE_ON) that it received + //* itself. So this is a way to "fork" the signal sent by another entity. + 4: "Same as input" + ] + //NEW 0.3 + mode(choices) : "Mode" = + [ + //* The 'value' for each target is the time offset at which to fire it. + 0: "Normal (time offset)" + //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance + //* that each target will be chosen. + 1: "Choose one (weighted)" + //* Go through the list of targets, and for each one either fire it, or don't fire it. + //* The 'value' gives the percentage chance that a value will get fired. + 2: "% chance for each" + //* In this mode, the number for each target specifies its position in the sequence + //* (relative to the other numbers), but all the targets will actually be fired at the same time. + //* So setting the targets to A 1, B 2 and C 3 would be equivalent to + //* setting A 0, B 0, and C 0 in normal mode - except that you can guarantee A will be + //* fired just before B, which will be just before C. + 3: "No delay (ordered)" + ] + //NEW 0.7.1 + //* Gives threads a name of their own. This lets you kill/trigger the threads + //* without affecting the manager, and vice versa. (If this is left blank, the + //* threads have the same name as the manager.) + //* This is mostly useful on a multithreaded looped manager, where you can stop all the loops + //* simultaneously by triggering the threads off. + m_iszThreadName(target_source) : "Name of threads" + //NEW 0.7.1 + //* Whenever a thread is created, the entity named here will be triggered, + //* with the new thread as the locus. + m_iszLocusThread(string) : "Trigger on spawn (locus = thread)" + spawnflags(Flags) = + [ + //* By default, a manager will ignore all inputs while it's performing a sequence. + //* Tick this to allow more than one sequence to run at a time. + 1 : "Multi-threaded" : 0 + //NEW 0.6 + //* NB: This flag has been moved. Apologies. + //* When the sequence ends, it will start again from the beginning. To stop the + //* loop, toggle the manager a second time. + 4 : "Loop" : 0 + //NEW 0.6 + //* The manager will USE_KILL itself when the sequence is complete. + //* If Loop is also ticked, the manager will only USE_KILL itself when told to stop the loop. + 8 : "Once only" : 0 + //NEW 0.7.1 + //* The manager will activate itself when the level starts, so that you don't + //* have to use a trigger_auto. (particularly useful for looping multi_managers.) + 16 : "Start on" : 0 + //NEW 0.7.1 + //* The manager will report to the console when it fires, etc. + 32 : "Debug mode" : 0 + ] +] + +//NEW 0.3 +//* A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once. +//* The entity is probably most useful when used as a master for another entity- a versatile replacement +//* for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a +//* multi_watcher which watches other multi_watchers. +//* The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the +//* 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.) +//* This is a very powerful entity, but is probably only useful for experienced mappers. +@PointClass base(Targetname) = multi_watcher : "State Watcher" +[ + m_fLogic(choices) : "Logical test" : 0 = + [ + 0: "All (AND)" + 2: "Not all (NAND)" + 1: "At least one (OR)" + 3: "None (NOR)" + 4: "Exactly one (XOR)" + 5: "Any number but one (XNOR)" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Entity to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) color(247 181 82) iconsprite("sprites/pathcorner.spr") = path_corner : "Path Corner" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire on Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + 0 : "Set new speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + 2 : "Time to next corner" + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + altpath(target_destination) : "Branch Path" + message(target_destination) : "Fire on Pass" + netname(target_destination) : "Fire on dead end" + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + //* In normal Half-Life, this was the only setting available. + //* NB: This will have no effect unless the train has the "No Control" flag set. + 0 : "Set current speed" + //* This sets the train's 'master speed', which means that the train's speed in + //* all gears (half speed, quarter speed, etc) will also change in proportion to + //* the number you set. + 3 : "Set master speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + //* (This changes the 'master speed'). + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + //* (This changes the 'master speed'). + 2 : "Time to next corner" + + // 3: "Change gear"? + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + frags(choices) : "Meaning of 'Turn Speed'" : 0 = + [ + 0 : "Set current turn speed" + //* The value specified will be scaled to fit the speed (e.g. half + //* speed, quarter speed) the train is currently moving at. + 1 : "Set master turn speed" + //* When you set Turn Speed to make a tracktrain turn around, its normal turning + //* (face along the track, turn at corners) gets suppressed. Select this when you + //* want to reenable it. (The 'Turn Speed' value isn't used when this option is + //* selected.) + 2 : "Back to normal" + ] + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_freeze : "Stop player from moving" +[ + delay(string) : "Duration (0 = until retriggered)" : "5" + spawnflags(Flags) = + [ + //* If you set this, then the entity expects to freeze the locus you tell it. + //* If there's no locus, or it isn't a player, nothing will happen. + //* (If you don't tick this, then player_freeze will just affect player 1.) + 1: "Affect locus" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +// this may be the most irritating, repetitive, time-consuming entity I've ever implemented... +// HL's ammo system is _not_ set up to make this easy. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strip player's weapons" +[ + //NEW 0.6 + //* In each of these fields, either choose a preset value from the menu, or else specify + //* a number of bullets to remove (e.g. 8). + bullets(choices) : "Take 9mm bullets" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + magnum(choices) : "Take 357 bullets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + shotgun(choices) : "Take shotgun ammo" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + crossbow(choices) : "Take crossbow bolts" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + argrenades(choices) : "Take AR grenades" : 0 = + [ + 0: "All" + -1: "None" + ] + rockets(choices) : "Take rockets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + uranium(choices) : "Take uranium ammo" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + satchels(choices) : "Take satchel charges" : 0 = + [ + 0: "All" + -1: "None" + ] + snarks(choices) : "Take snarks" : 0 = + [ + 0: "All" + -1: "None" + ] + tripmines(choices) : "Take tripmines" : 0 = + [ + 0: "All" + -1: "None" + ] + handgrenades(choices) : "Take handgrenades" : 0 = + [ + 0: "All" + -1: "None" + ] + hornetgun(choices) : "Take Hornet Gun" : 0 = + [ + 0: "Gun & ammo" + -3: "Ammo" + -1: "None" + ] + spawnflags(Flags) = + [ + 1: "Remove suit" : 0 + 2: "Leave crowbar" : 0 + 4: "Leave glock" : 0 + 8: "Leave 357" : 0 + 16: "Leave mp5" : 0 + // chaingun was never used + 64: "Leave crossbow" : 0 + 128: "Leave shotgun" : 0 + 256: "Leave rpg" : 0 + 512: "Leave gauss" : 0 + 1024: "Leave egon" : 0 + ] +] + +//NEW 0.3 +//* Note that a @monster_generic won't usually do these actions correctly. +//* If you're using this to make a @monster_barney shoot, it'll look odd (as if he's shooting bullets from his +//* knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize +//* (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level. +@PointClass base(Script) = scripted_action : "Scripted Action" +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 5 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Entity to attack (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 1 = + [ + //* Turn to the same angle as the attack entity is facing. + 0 : "Match Angle" + //* Turn to look (and aim) at the entity to attack. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + m_fAction(choices) : "Action to perform" : 0 = + [ + //* Headcrabs: leap. Houndeye: sonic attack. Barney: fire pistol... and so on. Most monsters have a ranged attack of some kind. + 0 : "Ranged Attack" + //* Grunts and assassins: throw or launch a grenade at the "attack" entity. + //* Alien Controller: big homing fireball. + 1 : "Ranged Attack 2" + //* Scientist: Heal. Everyone else: Kick, punch, bite, slash with claws, etc. + 2 : "Melee Attack" + //* Assassins: kick. Bullsquids:bite. Headcrab: rear up on hind legs. + //* Big Momma: lay a baby headcrab. Gargantua: Flame Thrower. + 3 : "Melee Attack 2" + //* Grunts: place a grenade on the ground. + 4 : "Special Attack" + //* Don't know of any monsters which use this, but feel free to try... + 5 : "Special Attack 2" + //* Grunts and barneys: Reload. The same thing can be done with a @scripted_sequence, but it's available here for convenience. + 6 : "Reload" + //* Assassins: jump to the "attack" entity. Houndeyes, Bullsquids and Big Momma: just jump. + 7 : "Jump" + //* Just turn and/or move. + 8 : "No action" + ] + spawnflags(Flags) = + [ + //* If this isn't ticked, the script will be ignored while the monster is in combat. + 64: "Override AI" : 0 + ] +] + +//* If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits. +@PointClass base(Targetname, Targetx, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + //NEW 0.4 + entity(string) : "Target Monster (blank for HEV) [LE]" + duration(string) : "Sentence Time" : "3" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Name/Class" : "player" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//* If a scripted_sequence has no targetname, it will start playing as soon as the level begins. +//* If two or more scripted_sequences have the same targetname, they will be synchronised so that +//* no matter how long it takes the monsters to walk to the sequence entities, their action animations +//* will start at the same time. Also, if one of the monsters cancels its sequence (e.g. if it gets +//* hurt), the other one will too. +@PointClass base(ScriptSequence) size(-16 -16 0, 16 16 72) iconsprite("sprites/scriptedsequence.spr") = scripted_sequence : "Scripted Sequence" +[ + spawnflags(Flags) = + [ + //* Unless you tick this, the monster won't play the script when it's in combat. + 64: "Override AI" : 0 + ] +] + +//NEW 0.6 +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_tanksequence : "Scripted Tank Sequence" +[ + m_iszEntity(string) : "Tank to affect" + m_iTurn(choices) : "Turn to" : 2 = + [ + 0: "Don't turn" + 1: "Match angle" + 2: "Face sequence" + 3: "Face enemy" + ] + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + //* If you leave this blank, the tank will just pick its nearest enemy. + m_iszEnemy(string) : "Enemy to face" + m_iShoot(choices) : "Fire gun" : 1 = + [ + 0: "Don't fire" + 1: "Once (at end)" + 2: "Constantly" + 3: "While facing target" + ] + m_iUntil(choices) : "Halt condition" : 1 = + [ + 0: "None" + 1: "Tank faces target" + 2: "Enemy dies" + ] + target(string) : "Trigger on halt" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Trigger on timeout" + m_iActive(choices) : "Tank state afterwards" : 0 = + [ + 0: "No change" + 1: "Active" + 2: "Inactive" + 3: "Toggle" + ] + m_iControllable(choices) : "Control afterwards" : 0 = + [ + 0: "No change" + 1: "Controllable" + 2: "Not Controllable" + 3: "Toggle" + ] + m_iLaserSpot(choices) : "Laser Spot afterwards" : 0 = + [ + 0: "No change" + 1: "Turn on" + 2: "Turn off" + 3: "Toggle" + ] + spawnflags(flags) = + [ + //* Usually, if a player is using the tank when the sequence is activated, + //* the sequence won't work. Tick here to override that, by dumping the + //* player when the sequence starts. + 1: "Dump player" : 0 + 2: "Repeatable" : 0 + ] +] + +//NEW 0.6 +//* This entity is by no means complete, but is still somewhat usable. +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_trainsequence : "Scripted Train Sequence" +[ + m_iszEntity(string) : "Func_train to affect [LE]" + m_iszDestination(string) : "Destination to head for [LE]" + m_iDirection(choices) : "Train direction" : 4 = + [ + 4: "Towards destination" + 1: "Forwards" + 2: "Backwards" + 0: "No change" + ] + target(string) : "Fire on arrival" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Fire on timeout" + //* This entity will be triggered regardless of how the sequence ends: + //* by reaching the destination, by timing out, or by the sequence being + //* triggered 'off' (which causes it to abort). + m_iszTerminate(string) : "Fire at end, regardless" + m_iPostDirection(choices) : "Direction afterwards" : 3 = + [ + 1: "Forwards" + 3: "Stop" + ] + spawnflags(flags) = + [ + 2: "Once only" : 0 + //* The train will just move straight to the destination + //* you specify, without trying to follow an existing path. + 4: "Skip path" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +//* Be careful when using this entity; it will trigger not only when the level starts, +//* but also when a saved game is loaded. +@PointClass base(Targetx) iconsprite("sprites/trigger.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + //NEW 0.5 + //* Tick here to have the trigger_auto's "activator" be the player. + //* (Not for use in multiplayer levels.) + 2 : "From Player" : 0 + ] + globalstate(string) : "Global State to Read" + //NEW 0.3 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + 3 : "Kill" + ] +] + +@SolidClass base(Targetname, Master, MoveWith) = trigger_autosave : "AutoSave Trigger" [] + +//NEW 0.6 +//* An entity that things bounce off. Set its Angle to specify the angle to reflect them in; +//* objects already moving in this direction will be unaffected. (E.g. to make a trampoline, +//* you would specify "up". Objects which are already moving upwards will be unaffected.) +//* Try Factor = 2 and Minimum Speed = 150 to make a corridor which players can't run through, +//* only walk slowly. (Something like the force-fields in Dune.) +@SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_bounce : "Bouncey area" +[ + //* Acts like friction - each bounce will be scaled up or down by this amount. + //* (for instance, if the factor is 0.5, and you hit the trigger_bounce at 100 + //* units/sec, you'll bounce off at 50 units/sec.) + frags(string) : "Factor (0=stop, 1=perfect bounce)" : "0.9" + //* If an object hits the trigger_bounce entity slower than this, then it'll + //* go straight through. + armorvalue(string) : "Minimum Speed" : "100" + spawnflags(flags) = + [ + //* Tells the entity to reduce bounce speeds by the 'minimum speed' value. + //* (for instance, if you hit the trigger_bounce at 100 units/sec, the Factor is + //* 0.5 and the min.speed is 20, then you'll bounce off at 40 units/sec. + 16: "Truncate Speed" : 0 + ] +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/trigger.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + m_iszViewEntity(string) : "Entity to view from (blank = this)" +] + +//NEW 1.4 +//1.5 the default folder of /sounds/fmod/ was removed from the code +@PointClass base(Targetname) = ambient_fmodstream: "FMOD Audio player (MP3/OGG/WMA)" +[ + message(string) : "File Name" + spawnflags(flags) = + [ + 1: "Remove on fire" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +//NEW 0.3 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changealias : "Trigger Change Alias" +[ + target(string) : "Alias to affect" + netname(string) : "String to Set" + spawnflags(flags) = + [ + //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are + //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1 + //* to target "*myalias". + //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is, + //* in future any changes to "myalias" will also change what "alias1" refers to. + //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias" + //* is referring to at the time the trigger_changealias takes effect. Future changes to "myalias" will + //* therefore not affect "alias1". + 1 : "Resolve references" : 0 + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changecvar : "Change Console Variable" +[ + netname(string) : "CVar to change" + message(string) : "Value to set" + armorvalue(string) : "Duration (-1 = until triggered)" +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changetarget : "Trigger Change Target" +[ + target(string) : "Entity to affect [LE]" + m_iszNewTarget(string) : "New Target [LE]" +] + +//NEW 1.0 +//* A really bad idea, IMHO, but created by popular demand. +//* Use at your own risk, and/or the risk of everyone else in the room. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changevalue : "Change any entity's values" +[ + target(string) : "Entity to affect [LE]" + netname(string) : "Keyname to change" + m_iszNewValue(string) : "New value to set" +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_command : "Console Command" +[ + netname(string) : "Command String" +] + +//* While locked by its master, the trigger_counter _will_ keep counting when fired, +//* but it won't fire anything itself. +@SolidClass base(Trigger, MoveWith) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname, MoveWith) = trigger_endsection : "EndSection Trigger" +[ + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +//NEW 0.5 +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hevcharge : "Trigger charge hev" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + //* Usually, the HEV suit will comment on the new power level. + 4: "Don't Speak" : 0 + ] + frags(integer) : "Charge Amount" : 10 + delay(string) : "Delay before trigger" : "0" +] + +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Fire once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"Only when fired" : 0 + 32:"Only on touch" : 0 + ] + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + //NEW 0.7.1 + cangib(choices) : "To gib or not to gib" : 0 = + [ + 0 : "Normal" + 1 : "Always gib" + 2 : "Never gib" + ] +] + +//NEW 0.5 +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_inout : "Trigger: Activate on entering or leaving" +[ + target(string) : "Fire on entering" + m_iszAltTarget(string) : "Fire on leaving" + m_iszBothTarget(string) : "Fire on/off (entering/leaving)" +] + +@SolidClass base(Master, MoveWith) = trigger_monsterjump : "Trigger monster jump" +[ + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +//NEW 0.7.1 +//* This replaces the trigger_setposition and trigger_setvelocity entities, which have +//* been removed. Apologies for any inconvenience. +//* If you want to control motion for a period of time, see @motion_manager. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_motion : "Set the position and movement of an entity" +[ + target(target_destination) : "Target to affect [LE]" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set new position [LP]" + 1 : "Add offset [LV]" + ] + m_iszAngles(string) : "Angles (blank = no change)" + m_iAngMode(choices) : "Meaning of Angles" : 0 = + [ + 0 : "Set new angle [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by (Y Z X)" + ] + m_iszVelocity(string) : "Velocity (blank = no change)" + m_iVelMode(choices) : "Meaning of Velocity" : 0 = + [ + 0 : "Set new velocity [LV]" + 1 : "Add to velocity [LV]" + 2 : "Rotate velocity by [LV]" + 3 : "Rotate velocity (Y Z X)" + ] + m_iszAVelocity(string) : "AVelocity (blank = no change)" + m_iAVelMode(choices) : "Meaning of AVelocity" : 0 = + [ + 0 : "Set new avelocity (Y Z X)" + 1 : "Add to avelocity (Y Z X)" + ] + spawnflags(flags) = + [ + 1: "Debug" : 0 + ] +] + +@SolidClass base(Trigger, TriggerCond, MoveWith) = trigger_once : "Trigger: Activate once" +[ + message(string) : "Text when triggered" + noise(string) : "Sound when triggered" +] + +@SolidClass base(trigger_once) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +//NEW 0.6 +//* In fact, this should probably be called watcher_onsight. +@PointClass base(Targetname, Master, MoveWith) iconsprite("sprites/trigger.spr") = trigger_onsight : "Trigger when A sees B" +[ + //* Put the targetname of the entity(ies) whose eyes the trigger_onsight should look through. + //* (if you want to trigger when the trigger_onsight itself sees something, i.e. + //* simulating a security camera, put the name of the trigger_onsight.) + netname(string) : "Looking entity (blank=player)" + //* Leave this blank to have it trigger when something sees the trigger_onsight. + //* You can also put a classname here, to trigger when the Looking Entity sees + //* any entity of that class. + message(string) : "Entity/classname to look at" + target(string) : "Fire when seen" + noise(string) : "Fire when no longer seen" + noise1(string) : "Fire on/off (seen/not seen)" + frags(string) : "View range (0=unlimited)" : "512" + //* Currently, only the horizontal view will be checked. + max_health(choices) : "Field of view (degrees)" : 90 = + [ + -1 : "(-1): Use monster's view" + ] + spawnflags(flags) = + [ + //* Don't check line of sight: i.e. it doesn't matter if there's something + //* in the way. + 1: "No LOS check" : 0 + 2: "Seethru glass" : 0 + 4: "Check State of 'looker'" : 0 + ] +] + +@SolidClass base(Trigger, MoveWith) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +//NEW 0.3 +//* Only affects dynamic (i.e. named) lights. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_lightstyle : "Trigger Change Lightstyle" +[ + target(target_destination) : "Target to affect [LE]" + style(choices) : "New Appearance" : 0 = + [ + 0 : "On" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + 14: "Slow Fade In" + 15: "Medium Fade In" + 16: "Fast Fade In" + ] + pattern(string) : "Custom Appearance" + m_iFade(string) : "Fade time" : 0 + m_iWait(string) : "Hold time (-1 = permanent)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/trigger.spr") = trigger_relay : "Trigger Relay" +[ + //NEW 0.5 + //* This field allows you to use the trigger_relay as a kind of conditional jump: it + //* looks at its master, and does different actions based on the master's state. + m_iszAltTarget(string) : "Target if locked by master" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + //NEW 0.4 + //* If you're trying to work out what's going wrong with your level, + //* try ticking here and the relay will tell you when it triggers, etc. + //* Here's a useful trick: make a trigger_relay with this field ticked, + //* and give it the same name as an entity that you're interested in. + //* The relay will then notify you whenever that entity gets triggered. + //2: "Debug Mode" : 0 + 2 : "Fire at Camera" : 0 + ] + //NEW 0.4 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + 4: "Kill" + 5: "Same as input" + //* I.e. when triggered ON, send OFF. And vice versa. + 6: "Opposite of input" + //* Setting this will cause the target momentary door to move to a particular position. + 7: "Ratio (momentary doors)" + ] + //* Use this in combination with usetype Ratio, to trigger momentary doors. + //* For example, sending 1.0 tells them to go fully + //* open, 0.0 fully closed, and 0.5 half-way. + message(string) : "Set ratio (blank = no change) [LR]" +] + +//* don't use. This is just a test entity. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_rottest : "Trigger RotTest" +[ + target(target_destination) : "Marker ent" + netname(target_destination) : "Reference ent" + message(target_destination) : "Hinge ent" + health(integer) : "Distance" : 5 + armortype(integer) : "Angle Step" : 30 +] + +//NEW 0.6 +@SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" +[ + target(target_destination) : "Fire when activated" + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +//NEW 0.2 +//* Suggest to the specified monster that it should follow the given path. This is a low priority +//* activity, superceded when it spots a player (for instance). +//* (The same thing happens if you give the monster a "target".) +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_startpatrol : "Trigger Start Patrol" +[ + target(string) : "Target monster" + m_iszPath(string) : "Patrol path start" +] + +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_teleport : "Trigger teleport" +[ + target(target_destination) : "Destination entity" + //NEW 0.6 + message(target_destination) : "Landmark entity" + //NEW 0.6 + noise(target_destination) : "Fire on teleporting" +] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +//NEW 0.3 +//* A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for +//* the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times. +//* The main use for a watcher is to fire another entity (the "entity to notify"), each time the +//* watcher's state changes. +@PointClass base(Targetname) = watcher : "State Watcher" +[ + m_iszWatch(string) : "Entity to watch [LE]" + //* The watcher will revert to this state if the watched entity is killtargetted, or if it's a func_breakable which breaks. + m_fLogic(choices) : "State if entity isn't found" : 0 = + [ + 0: "On" + 1: "Off" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Target to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns on. + 2: "Don't Send On" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns off. + 4: "Don't Send Off" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +// NEW 1.0 +// * Compare two entity references, and see if they're the same. +// * For example, you could type "*myalias" as your first reference, +// * and "bob" as the second. As long as the alias "myalias" refers to +// * the entity "bob", the watcher will be active. The rest of the time +// * it will be inactive. +// * (If "bob" doesn't exist, it will also be inactive.) +//@PointClass base(Targetname) = watcher_alias : "Watcher" +//[ +// m_iszEntityA(string) : "Entity A [LE]" +// m_iszEntityB(string) : "Entity B [LE]" +// m_iMode(choices) : "Type of comparison" : 0 = +// [ +// 0 : "On when A = B" +// //* != means "not equal" +// 1 : "On when A != B" +// ] +// target(string): "Fire on changing state" +// netname(string): "Fire on turning on" +// message(string): "Fire on turning off" +// spawnflags(flags) = +// [ +// //* If this is set, one set of targets (on or off) will be fired, +// //* as appropriate, when the level starts. +// 1: "Fire at startup" : 0 +// ] +//] + +@PointClass base(Targetname) = watcher_count : "Watcher, entity count" +[ + noise(string) : "Count entities named..." + impulse(integer) : "Comparison number" + m_iMode(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when count = number" + //* != means "not equal" + 3 : "'On' when count != number" + 1 : "'On' when count > number" + 5 : "'On' when count >= number" + 2 : "'On' when count < number" + 4 : "'On' when count <= number" + ] + target(string): "Fire on changing state" + netname(string): "Fire on turning on" + message(string): "Fire on turning off" + noise1(string): "Fire when count increases" + noise2(string): "Fire when count decreases" + spawnflags(flags) = + [ + //* If this is set, one set of targets (on or off) will be fired, + //* as appropriate, when the level starts. + 1: "Fire at startup" : 0 + ] +] + +// NEW 1.0 +// * Compare two ratios. +//@PointClass base(Targetname) = watcher_ratio : "Watcher, compare ratios" +//[ +// m_iszRatioA(string) : "Ratio A [LR]" +// m_iszRatioB(string) : "Ratio B [LR]" : "0.0" +// m_iMode(choices) : "Type of comparison" : 0 = +// [ +// 0 : "'On' when A = B" +// //* != means "not equal" +// 3 : "'On' when A != B" +// 1 : "'On' when A > B" +// 5 : "'On' when A >= B" +// 2 : "'On' when A < B" +// 4 : "'On' when A <= B" +// ] +// target(string): "Fire on changing state" +// netname(string): "Fire on turning on" +// message(string): "Fire on turning off" +// spawnflags(flags) = +// [ +// //* If this is set, one set of targets (on or off) will be fired, +// //* as appropriate, when the level starts. +// 1: "Fire at startup" : 0 +// ] +//] + +// +// Weapons +// +//NEW 1.4 +@PointClass base(Weapon) = weapon_debug : "Debugger" [] +//@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weapon_eagle : "Desert Eagle" [] WTF? + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_weaponbox.mdl")= weaponbox : "Weapon/Ammo Container" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357.mdl")= weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl")= weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl")= weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crossbow.mdl")= weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl") = weapon_glock : "9mm Handgun" [] +@PointClass base(Targetx, RenderFields) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl") = weapon_mp5 : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] +@PointClass base(Targetx, RenderFields) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Targetx, RenderFields) studio("models/w_sqknest.mdl") = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] + +@PointClass base(Weapon, Targetx, RenderFields) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Targetname, Angles, RenderFields) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Target, Targetname, Angles, RenderFields) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl")= xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, Angles, RenderFields) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl")= xen_spore_large : "Xen Spore (large)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl")= xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl")= xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl")= xen_tree : "Xen Tree" [] + +//NEW 1.5 +//G-Conts Rain System (rain_settings & rain_modify) +@PointClass iconsprite("sprites/env.spr") = rain_settings : "Constant map settings" +[ +m_flDistance(integer) : "Rain distance" : 1000 +m_iMode(choices) : "Weather type" : 0 = +[ +0: "Rain" +1: "Snow" +] +] +@PointClass iconsprite("sprites/env.spr") = rain_modify : "Modify rain settings" +[ +m_flTime(integer) : "Fading time" : 0 +m_iDripsPerSecond(integer) : "Drips per second" : 800 +m_flWindX(integer) : "Wind X" : 0 +m_flWindY(integer) : "Wind Y" : 0 +m_flRandX(integer) : "Rand X" : 0 +m_flRandY(integer) : "Rand Y" : 0 +] + +//Flat-Life + +@PointClass base(Targetname) = trigger_play_chipmod : "Chipmod Audio player" +[ + message(string) : "File Name" + spawnflags(flags) = + [ + 1: "Remove on fire" : 0 + ] +] + +@PointClass base(Targetname,Target) = trigger_random : "Random Trigger" +[ + health(integer) : "Minimum" : 0 + max_health(integer) : "Maximum" : 2 + frags(integer) : "Fire if greater then" : "" + message(string) : "Else" : "" +] + +@PointClass base(Targetname) = trigger_set_camera : "Trigger Set Camera" +[ + frags(integer) : "Camera Distance" : 256 + health(choices) : "Camera Mode" : 0 = + [ + 0 : "No Change" + 1 : "Platform" + 2 : "Topdown" + ] +] + +@PointClass base(Targetname) = trigger_set_physics : "Trigger Set Physics" +[ + m_iWalljump(choices) : "Walljump?" : 0 = + [ + 0 : "No Change" + 1 : "Disable" + 2 : "Enable" + ] + m_iDoublejump(choices) : "Doublejump?" : 0 = + [ + 0 : "No Change" + 1 : "Disable" + 2 : "Enable" + ] + message(string) : "Jumpheight" : "" + frags(integer) : "Player Speed" : "" +] + +@PointClass base(Targetname) = trigger_turn_player : "Trigger Player Turn" +[ + target(string) : "Path Corner" : "" +] + +@PointClass base(Targetname,Target) = trigger_set_model : "Trigger Setmodel" +[ + model(string) : "Model (eg models/blah.mdl)" : "" +] + +@PointClass base(Targetname) = trigger_set_flashlight : "Flashlight Settings" +[ + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + renderamt(integer) : "Radius ( 255 = max )" : 128 +] + +@PointClass base(Targetname) = trigger_changelevel_simple : "Trigger Simple Changelevel" +[ + message(string) : "Mapname" : "" +] + +@PointClass base(Targetname,Target) = trigger_keyboard : "Keyboard (Hook) Trigger" +[ + m_Button(choices) : "Button" : 0 = + [ + 0 : "IN_LEFT" + 1 : "IN_RIGHT" + 2 : "IN_FORWARD" + 3 : "IN_BACK" + 4 : "IN_MOVELEFT" + 5 : "IN_MOVERIGHT" + 6 : "IN_USE" + 7 : "IN_JUMP" + 8 : "IN_ATTACK" + 9 : "IN_ATTACK2" + 10 : "IN_DUCK" + 11 : "IN_RELOAD" + 12 : "IN_ALT1" + 13 : "IN_SCORE" + ] + + spawnflags(flags) = + [ + 1: "Start ON" : 0 + ] +] + +@PointClass base(Targetname) = hud_triapi : "TriApi Display" +[ + model(sprite): "Sprite name" : "sprites/redglow.spr" + x(integer) : "X (-1 centers)" : 0 + y(integer) : "Y (-1 centers)" : 0 + w(integer) : "Width" : 64 + h(integer) : "Height" : 64 + + alpha(choices) : "Rendermode" : 0 = + [ + 0 : "Normal" + 1 : "Additive" + ] + + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Static Size" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water_noshader : "No Shader Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_viewdistance : "Viewdistance Booster" +[ + health(integer) : "Distance" : 512 + frags(integer) : "Duration" : 8 +] + +@PointClass base(PlayerClass, MoveWith, Sequence) = info_player_red : "Player RED start" [] +@PointClass base(PlayerClass, MoveWith, Sequence) = info_player_blue : "Player BLUE start" [] + +//End Flat-Life \ No newline at end of file diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/gunman-chronicles.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/gunman-chronicles.fgd new file mode 100644 index 0000000..ed40dd9 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/gunman-chronicles.fgd @@ -0,0 +1,2887 @@ +// +// Gunman Chronicles game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// original version from +// https://developer.valvesoftware.com/wiki/Gunman.fgd +// modified by H-3D +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 : "CD track to play when the level begins." + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : : "Set the default wave height here (can be overridden by the properties in func_water)." + MaxRange(string) : "Max viewable distance" : "4096" : "Maximum distance the player can see." + chaptertitle(string) : "Chapter Title Message" : "" : "Text displayed when entering the level." + startdark(choices) : "Level Fade In" : 0 : "If Yes, then the level will start black and fade into normal light." = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 : "Game title that appears onscreen when this level starts." = + [ + 0 : "No" : "Don't display game title sprite." + 1 : "Yes" : "Display game title sprite." + ] + newunit(choices) : "New Level Unit" : 0 : "Used to clear out savegame data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = + [ + 0 : "No, keep current" : "Keeps all globals alive." + 1 : "Yes, clear previous levels" : "Flushes all globals." + ] + mapteams(string) : "Map Team List" : : "This will be copied into the mp_teamlist while your map is running if the server allows maps to override the team list." + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" : : "Sequence to display in Jackhammer. This does not affect gameplay." +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Sets the pitch (up / down), yaw (left / right) and roll (bank) respectively. The compass in Jackhammer corresponds to Yaw. The settings are not always (or not all) used." +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" : : "When an entity is activated, it triggers the entity with the name specified by Target." +] + + +@BaseClass = Item +[ + nopickupsound(integer) : "No Pickup Sound" : 0 +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Item) = Weapon [] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + killtarget(target_destination) : "KillTarget" : : "When an entity is triggered, it will remove from the game the entity specified by this property." +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags) flags(Angle) size(-16 -16 -36, 16 16 36) color(0 255 0) offset(0 0 36) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields) flags(Angle) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] + + spawndeadpose(Choices) : "Spawn Dead" : 0 = + [ + 36 : "Normal Die" + 37 : "Backward" + 38 : "Forward" + 39 : "Violent" + 66 : "HeadShot" + 67 : "ChestShot" + 68 : "GutShot" + 69 : "BackShot" + ] + + netname(string) : "Squadname for Squadmonsters" : "" +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + targetname (target_source) : "Name" + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + + + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Mayan Block" + 5: "Ice" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "item_battery" + 2: "item_healthkit" + 3: "weapon_fists" + 4: "weapon_shotgun" + 5: "weapon_SPchemicalgun" + 6: "weapon_beamgun" + 7: "weapon_minigun" + 8: "weapon_dml" + 9: "weapon_gausspistol" + 10: "ammo_buckshot" + 11: "ammo_chemical" + 12: "ammo_beamgunclip" + 13: "ammo_minigunClip" + 14: "ammo_dmlclip" + 15: "ammo_gaussclip" + 16: "weapon_gausspistol" + 17: "entity_clustergod" + 18: "cust_2MinigunCooled" + 19: "cust_2GaussPistolSniper" + 20: "item_armor" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + + + +@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, ZHLT) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds, ZHLT) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) flags(Angle) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + corpse_offset(integer) : "Offset for teleporting" : 0 + + m_iszAnimMovement(string) : "Movement Animation" : "" + + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + +@PointClass base(Weapon, Targetx) studio("models/beamgunammo.mdl") = ammo_beamgunclip : "BeamGun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/shotgunammo.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/chem_ammo.mdl") = ammo_chemical : "ChemGun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/dmlammo.mdl") = ammo_dmlclip : "DML Ammo Clip" [] +@PointClass base(Weapon, Targetx) studio("models/dmlrocket.mdl") = ammo_dmlsingle : "DML Ammo Single" [] +@PointClass base(Weapon, Targetx) studio("models/guassammo.mdl") = ammo_gaussclip : "Gauss Pistol Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/mechammo.mdl") = ammo_minigunClip : "MiniGun Ammo" [] + + +@PointClass size( -16 -16 0, 16 16 16) = button_aiwallplug : "AIWallPlug Button" +[ + target(target_destination) : "Targetted object" + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + 256: "Leave Core In: " : 0 + ] +] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +//Cust + +@PointClass base(Weapon, Targetx) studio("models/w_snipercase.mdl") = cust_2GaussPistolSniper : "Sniper Kit" [] +@PointClass base(Weapon, Targetx) studio("models/w_coolers.mdl") = cust_2MinigunCooled : "Barrel Cooler Item" [] + + + +@PointClass base(Monster, Sequence) flags(Angle) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + + + +// +// cyclers +// + +@PointClass base(Targetname, Angles, Sequence) flags(Angle) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) flags(Angle) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +//Decore + +@PointClass size( -16 -16 0, 16 16 40) = decore_asteroid : "Asteroid" +[ + asteroidsize(choices) : "Asteriod type" : 1 = + [ + 0 : "big asteroid" + 1 : "medium asteroid" + 2 : "small asteroid" + ] +] + +@PointClass size( -24 -24 -24, 24 24 24) = decore_aicore : "insert AI here"[] +@PointClass size( -16 -16 0, 16 16 16) = decore_baboon : "Decoration Hanging Baboon"[] + +@PointClass size( -16 -16 0, 16 16 40) = decore_bodygib : "Sprawled bitten human body"[] +@PointClass size( -16 -16 0, 16 16 40) = decore_butterflyflock : "Spawns a flock of butterflies" +[ + iFlockSize(integer) : "Number of butterflies" : 10 + flFlockRadius(integer) : "RADIUS of Spawning(KEEP SAFE!!)" : 0 +] +@PointClass size(-16 -16 0, 16 16 64) = decore_cactus : "Decoration Cactus"[] + + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 16) = decore_cam : "Decoration Cam"[] + +@PointClass size( -16 -16 0, 16 16 40) = decore_corpse : "Generic Body/Death Spawn - MIGHT NOT BE FUNCTIONING" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "On Back" + 3 : "Seated" + ] + creaturetype(choices) : "Monsters Type" : 0 = + [ + 0 : "Rustbot" + 1 : "NOT YET Rustbit" + 2 : "NOT YET Gunner" + 3 : "NOT YET Beak" + 4 : "NOT YET Critter" + 5 : "NOT YET Hiveback" + 6 : "NOT YET Tube" + 7 : "NOT YET Tubeball" + 8 : "NOT YET Xenome" + 9 : "NOT YET Gator" + 10 : "NOT YET Ourano" + 11 : "NOT YET Penta" + 12 : "NOT YET Raptor" + ] +] +@PointClass base(Monster) size(-32 -32 -16, 32 32 16)= decore_eagle : "eagle" [] +@PointClass base(Targetname, RenderFxChoices, RenderFields) = decore_explodable : "Exploding Gibbing Decore" +[ + decoremodel(studio) : "Model" : "models/dropship.mdl" + decoregib(studio) : "Gib Model" : "models/gunnergibs.mdl" + decoreidle(string) : "Idle Anim" : "idle" + decoreaction(string) : "Action Anim" : "none" +] +@PointClass size(-24 -24 -24, 24 24 24) = decore_foot : "giant scripted dino foot"[] +@PointClass base(Monster) size(-10 -10 -12, 10 10 12) = decore_goldskull : "Decoration GoldenSkull"[] +@PointClass size(-16 -16 0, 16 16 40) = decore_gutspile : "Discusting Pile of Human"[] +@PointClass size(-16 -16 0, 16 16 40) = decore_hatgib : "Bandit hat"[] +@PointClass base(Monster) size(-16 -16 0, 16 16 40) = decore_ice : "Decore Ice" +[ + beakinside (choices) : "W/O Filling" : 0 = + [ + 0 : "Normal Ice" + 1 : "Beak Inside" + ] +] +@PointClass size(-16 -16 0, 16 16 16) = decore_mushroom : "Decoration Mushroom"[] +@PointClass size(-16 -16 0, 16 16 16) = decore_mushroom2 : "Decoration Mushroom2"[] +@PointClass size(-32 -32 0, 32 32 16) = decore_nest : "Ourano nest"[] +@PointClass size(-16 -16 -16, 16 16 0) = decore_pipes : "Hanging Pipes"[] +@PointClass size(-8 -8 0, 8 8 8) = decore_prickle: "Decoration Prickle"[] +@PointClass base(Monster) size(-32 -32 -16, 32 32 16) = decore_pteradon : "Pteradon"[] +@PointClass size( -32 -32 0, 32 32 64) = decore_sittingtubemortar : "TubeMortar Standing"[] +@PointClass size(-48 -48 -16, 48 48 16) = decore_scripted_boulder : "Scripted boulder(mayan)"[] + +@PointClass base(Targetname,Target) = decore_spacedebris: "SpaceDebris" +[ + modelname(string) : "Model" : "" + forwardspeed(string) : "Speed" : "100" + anglespeed(string) : "SpinSpeed" : "100" + debrislife(string) : "Life" : "10" + +] + + +@PointClass size(-16 -16 0, 16 16 64) = decore_swampplants : "Decoration SwampPlants" +[ + body (Choices) : "Plant Type" : 0 = + [ + 0 : "Leafy" + 1 : "Stalky" + 2 : "3 Lily" + 3 : "1 Lily w/flower" + 4 : "1 lily" + 5 : "1 lily smaller" + ] +] + +@PointClass size(-8 -8 -8, 8 8 16) = decore_torch : "Torch with a Flame"[] +@PointClass size(-4 -4 -8, 4 4 16) = decore_torchflame : "Flame Like Torch Flame"[] +@PointClass base(Targetname) size(-4 -4 -4, 4 4 8) = demoman_mine : "Demoman Proximity Mine"[] + +@PointClass size(-16 -16 0, 16 16 16) = entity_clustergod : "Spawns Cluster Grenades"[] + +@PointClass base(Targetname,Target) = entity_digitgod : "Digit God" +[ + maxdamage(integer) : "Max Damage Before Use" : 500 +] + +@PointClass base(Targetname) sprite() = entity_spritegod : "SpriteSpray" +[ + spritename(sprite) : "Sprite" : "" + spritenoise(integer) : "Noise" : 50 + spritespeed(integer) : "Speed" : 100 + spritestartstate(choices) : "Start State" : 1 = + [ + 0: "Off" + 1: "On" + ] + spritecount(integer) : "NumberPerSpray" : 1 + spritefreq(integer) : "Frequence-dividedBy10" : 5 + spritex(integer) : "x Direction" : 0 + spritey(integer) : "y Direction" : 0 + spritez(integer) : "z Direction" : 0 + targetent(target_destination) : "Target" : "" +] + + +@PointClass size(-4 -4 -4, 4 4 4) = entity_volcanoSpew : "Volcano Eruption"[] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 0, 16 16 16) = env_clusterExplosion: "Cluster Grenade Spawn" +[ + clusterDamage(integer) : "Damage of Cluster Grenades" : 40 + numGrenades(integer) : "Number of grenades" : 4 + spawnflags(flags) = + [ + 2 : "Repeatable" : 0 + ] + +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tanklaserrust : "Rust Eye Laser" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + + + +@PointClass = func_wind : "Wind creator entity (see leaf doc for more info) DEFAULT VALUES ARE NOT TESTED AND TO BE CHANGED" +[ + minamp(string) : "Minimum amplitude of the wind " : "1" + maxamp(string) : "Maximum amplitude of the wind" : "5" + minfreq(string) : "Minimum frequency of wind speed changes" : "1" + maxfreq(string) : "Maximum frequency of wind speed changes" : "5" + dir_x(string) : "Direction of the wind (X component)" : "1" + dir_y(string) : "Direction of the wind (Y component)" : "1" + dir_z(string) : "Direction of the wind (Z component)" : "1" +] + + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio() = gunman_cycler : "Gunman Cycler" +[ + model(studio) : "model" + cyc_submodel1(integer) : "Body1" : 1 + cyc_submodel2(integer) : "Body2" : 1 + cyc_submodel3(integer) : "Body3" : 1 +] + + +@PointClass base(Targetname) = hologram_beak : "Hologram Beak" +[ + creaturetype(choices) : "CreatureType" : 0 = + [ + 0 : "Beak" + 1 : "Tube" + 2 : "MicroRaptor" + ] + + targetfail(target_source) : "Failname" +] + +@PointClass base(Targetname,Target) = hologram_damage : "Hologram Damage" +[ + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "gauss-pulse" + 1 : "gauss-charged" + 2 : "gauss-rapid" + 3 : "gauss-sniper" + 4 : "generic-bullet" + 5 : "chemgun acid damage" + 6 : "chemgun base damage" + 7 : "chemgun explosive damage" + 8 : "chemgun smoke damage" + ] + + targetfail(target_source) : "Failname" + creaturetype(choices) : "CreatureType" : 0 = + [ + 0 : "Beak" + 1 : "Tube" + 2 : "MicroRaptor" + ] +] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Target) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/w_armor.mdl") = item_armor : "Armor Jacket" [] +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/gastank.mdl") = item_gascan : "Gas for the Tank" [] +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/w_medkit.mdl") = item_healthkit : "Small Health Kit" [] + +// +// lights +// + +@PointClass iconsprite("sprites/light.spr") base(Target, Targetname, Light, ZHLT_point) flags(Light) = light : "Invisible lightsource." : "http://twhl.info/wiki.php?id=148" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] +] + +@PointClass iconsprite("sprites/light.spr") base(Targetname, Target, Angles, ZHLT_point) flags(Light) = light_spot : "The light_spot entity allows you to create direct beams of light (like from a, err, spotlight)." : "http://twhl.info/wiki.php?id=147" +[ + _cone(integer) : "Inner (bright) angle" : 30 : "The angle of the cone formed around the directional axis. The area inside this cone will contain the brightest light." + _cone2(integer) : "Outer (fading) angle" : 45 : "As above, although the area inside this cone will fade increasingly towards the outer edges." + pitch(integer) : "Pitch" : -90 : "The pitch of the light (-90 is straight down, 90 is straight up)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + _sky(Choices) : "Is Sky" : 0 : "If Yes, the spot_light will affect the sky brushes, rather than project any light itself." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] + style(Choices) : "Appearance" : 0 : "Light appearance. Values:" = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/light_environment.spr") flags(Light) = light_environment : "This entity makes a map's sky emit light. The only practical way of lighting outdoor maps." : "http://twhl.info/wiki.php?id=146" +[ + pitch(integer) : "Pitch" : 0 : "A negative number will give downward pitch (which is normally what you want)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = meteor_god : "Meteor God" +[ + typestreak(integer) : "Ratio of Streakers" : 1 + typelarge(integer) : "Ratio of Large Meteors" : 1 + typesmall(integer) : "Ratio of Small Meteors" : 1 + dropsizex(string) : "Half X Distance" : "0" + dropsizey(string) : "Half Y Distance" : "0" + mindropfreq(string) : "Min Drop Frequency in Seconds" : "1" + maxdropfreq(string) : "Max Drop Frequency in Seconds" : "5" + pitch(string): "Pitch" : "-90" + debris(choices) : "Debris Dropped" : 1 = + [ + 1 : "No Debris" + 2 : "Debris" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = meteor_target : "Target Meteor" +[ + pitch(string) : "Pitch" : "-90" + heightabove(string) : "Height Above" : "4096" + type(choices) : "Meteor Type" : 2 = + [ + 0 : "Streak" + 1 : "Small" + 2 : "Large" + ] +] + +@SolidClass base(RenderFields, Targetname, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// monsters +// + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 40) studio("models/beak.mdl") = monster_beak : "Xenome Beak" [] +@PointClass base(Monster, Sequence) size(-4 -4 -4, 4 4 4) studio("models/cricket.mdl") = monster_cricket : "Cricket" +[ + _skin(integer) : "_skin" : 0 +] + +@PointClass base(Monster, Sequence) size( -48 -48 0, 48 48 64 ) studio("models/critter.mdl") = monster_critter : "Xenome Critter" [] + +@PointClass base(Monster) size(-12 -12 -12, 12 12 12) = monster_darttrap : "DartTrapShooter" +[ + dartcount(integer) : "Darts to fire(-1 is infinite)" : -1 + timebetweenshots(string) : "Frequency of firing" : "0.1" + spread(integer) : "spread in degrees" : 10 +] + +@PointClass base(Monster, Sequence) size(-5 -5 0, 5 5 2) studio("models/dragonfly.mdl") = monster_dragonfly : "Dragon Fly" [] + +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_flashlight : "Monster With Flashlight" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] + +@PointClass base(Monster, Sequence) size(-48 -48 0, 48 48 300) studio("models/endboss.mdl") = monster_endboss : "Monster EndBoss" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] + +@PointClass base(Monster, Sequence) size(-35 -35 -48, 35 35 -35) studio("models/gator.mdl") = monster_gator : "Animal Gator" [] + +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] + +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 150) studio("models/aigunner.mdl") = monster_gunner_friendly : "Monster Gunner Friendly"[] + +@PointClass base(Monster, Sequence) size(-25 -25 -20, 1 1 2) studio("models/hatchet.mdl") = monster_hatchetfish : "Hatchetfish" +[ + skin(choices) : "Skin" : 0 = + [ + 0: "Light" + 1: "Dark" + ] +] + +@PointClass base(Monster, Sequence) size(-50 -50 -45, 50 50 50) = monster_hiveback : "Xenome Hiveback" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/bandit.mdl") = monster_human_bandit : "Human Bandit" +[ + StartDrawn(Choices) : "Gun Drawn" : 1 = + [ + 2 : "No" + 1 : "Yes" + ] + +MechaGunBandit(Choices) : "Is a MechBandit" : 0 = +[ + 0 : "No" + 1 : "Yes" +] + + body(Choices) : "Head" : 0 = + [ + 0 : "Random" + 1 : "Original" + 2 : "Bandana" + 3 : "Tail" + 4 : "Pilot" + 5 : "!!Headless!!" + ] +] + +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) studio("models/chopper.mdl") = monster_human_chopper : "bandit chopper" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/demolitionman.mdl") = monster_human_demoman : "Human Demoman" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gunmantrooper.mdl") = monster_human_gunman : "Human Gunman Friendly" +[ + healthvalue(integer) : "Heath" : 100 + + gunstate(Choices) : "Gun state" : 1 = + [ + 1 : "Drawn" + 2 : "None" + ] + + gn_answer(string) : "Answer Group" : "" + gn_question(string) : "Question Group" : "" + gn_idle(string) : "Idle Talk Group" : "" + gn_stare(string) : "Player Staring at me Group" : "" + gn_use(string) : "Player Used Me Group" : "" + gn_unuse(string) : "Player Used Me Again" : "" + gn_stop(string) : "Can't Do it" : "" + gn_noshoot(string) : "Friendly, Don't shoot Group" : "GN_DONTSHOOT" + gn_hello(string) : "Hello Player Group" : "" + gn_plhurt1(string) : "You are Very Hurt Group" : "" + gn_plhurt2(string) : "You are Pretty Hurt Group" : "" + gn_plhurt3(string) : "You are Hurt a Bit Group" : "" + gn_phello(string) : "Predisaster Hello Group" : "" + gn_pidle(string) : "Predisaster Idle Group" : "" + gn_pquestion(string) : "Predisaster Question Group" : "" + gn_smell(string) : "Talk About Smell Group" : "" + gn_wound(string) : "I was hurt Group" : "" + gn_mortal(string) : "I was Very Hurt Group" : "" + gn_kill(string) : "I just killed something Group" : "" + gn_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/evil_scientist.mdl") = monster_human_scientist : "Human Evil Scientist" +[ + skin(Choices) : "Suit Color" : 0 = + [ + 0 : "White Suit" + 1 : "Red Suit" + 2 : "Bloody" + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gunmantrooper_ng.mdl") = monster_human_unarmed : "Unarmed Gunman" +[ + gunstate(Choices) : "Gun state" : 0 = + [ + 0 : "Holstered" + 1 : "Drawn" + 2 : "None" + ] + + gn_answer(string) : "Answer Group" : "" + gn_question(string) : "Question Group" : "" + gn_idle(string) : "Idle Talk Group" : "" + gn_stare(string) : "Player Staring at me Group" : "" + gn_use(string) : "Player Used Me Group" : "" + gn_unuse(string) : "Player Used Me Again" : "" + gn_stop(string) : "Can't Do it" : "" + gn_noshoot(string) : "Friendly, Don't shoot Group" : "GN_DONTSHOOT" + gn_hello(string) : "Hello Player Group" : "" + gn_plhurt1(string) : "You are Very Hurt Group" : "" + gn_plhurt2(string) : "You are Pretty Hurt Group" : "" + gn_plhurt3(string) : "You are Hurt a Bit Group" : "" + gn_phello(string) : "Predisaster Hello Group" : "" + gn_pidle(string) : "Predisaster Idle Group" : "" + gn_pquestion(string) : "Predisaster Question Group" : "" + gn_smell(string) : "Talk About Smell Group" : "" + gn_wound(string) : "I was hurt Group" : "" + gn_mortal(string) : "I was Very Hurt Group" : "" + gn_kill(string) : "I just killed something Group" : "" + gn_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Sequence) size(-24 -24 0, 24 24 36) studio("models/scorpion_large.mdl") = monster_largescorpion : "Animal Large Scorpion" +[ + _skin(integer) : "_skin" : 0 +] + +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) studio("models/tank.mdl") = monster_tank : "Scripted Tank" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] +] + +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) = monster_manta : "Manta ship script bombs" [] + +@PointClass base(Monster, Sequence) size(-16 -16 -16, 16 16 16) studio("models/raptor.mdl") = monster_microraptor : "Small raptor" [] +@PointClass base(Monster, Sequence) size(-40 -40 -5, 40 40 60) studio("models/ourano.mdl") = monster_ourano : "Animal Ourano" [] +@PointClass base(Monster, Sequence) size(-70 -70 -40, 70 70 60) studio("models/penta.mdl") = monster_penta : "Animal Pentaceratops" [] +@PointClass base(Monster, Sequence) size(-32 -32 -45, 32 32 20) studio("models/rheptor.mdl") = monster_raptor : "Animal Raptor" +[ + skin(choices) : "Skin" : 0 = + [ + 0: "Green" + 1: "Red" + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 -16, 16 16 16) = monster_rustbattery: "Rust Rustbattery" [] +@PointClass base(Monster, Sequence) size(-36 -36 -5, 36 36 40) studio("models/rustbit.mdl") = monster_rustbit : "Rust Rustbit" [] +@PointClass base(Monster, Sequence) size(-36 -36 -5, 36 36 40) studio("models/rustbit.mdl") = monster_rustbit_friendly : "Friendly Rust Rustbit"[] +@PointClass base(Monster, Sequence) size(-36 -36 -16, 36 36 48) studio("models/rustbot.mdl") = monster_rustbot : "Rust Rustbot" [] +@PointClass base(Monster, Sequence) size(-36 -36 -16, 36 36 48) studio("models/rustbot.mdl") = monster_rustbot_friendly : "Friendly Rust Rustbot"[] + +@PointClass base(Monster, Sequence) size(-64 -64 0, 64 64 64) studio("models/rustflyer.mdl") = monster_rustflier : "Rust Flier" +[ + // Allow the mapper to set the shield status + startshieldstate(Choices) : "Starting state of Shield" : 1 = + [ + 0 : "Off" + 1 : "On" + ] + + targetdamage(string) : "Target and die when this damage is taken at once" : "10000" + deathpath(string) : "Name of path to fly to when killed" : "" + timetillcrash(string) : "Time till we want to reach death point" : "10" + deathangle(string) : "Angle be at when we reach deathpath" : "0 0 0" + triggerondeath(string) : "Triggered when killed" : "" +] + +@PointClass base(Monster, Sequence) size(-45 -45 0, 45 45 140) studio("models/gunner.mdl") = monster_rustgunr : "Rust Gunner" [] +@PointClass base(Monster, TalkMonster, Sequence) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + knife(integer) : "Knife" : 0 + + skin(Choices) : "Suit Color" : 0 = + [ + 0 : "White Suit" + 1 : "Red Suit" + 2 : "Bloody" + ] + + clearvoice(Choices) : "Clear Voice Channel On Scared" : 0 = + [ + 0 : "Don't clear channels" + 1 : "Clear on scared" + ] + + blocksound(Choices) : "Responds to sounds" : 0 = + [ + 0 : "Normal Sound Response" + 1 : "No Sound Response" + ] + + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Young" + 1 : "Bald" + 2 : "Beard" + 3 : "Mask" + ] + + sc_answer(string) : "Answer Group" : "" + sc_question(string) : "Question Group" : "" + sc_idle(string) : "Idle Talk Group" : "" + sc_stare(string) : "Player Staring at me Group" : "" + sc_use(string) : "Player Used Me Group" : "" + sc_unuse(string) : "Player Used Me Again" : "" + sc_stop(string) : "Can't Do it" : "" + sc_noshoot(string) : "Don't shoot Group" : "SC_DONTSHOOT" + sc_hello(string) : "Hello Player Group" : "" + sc_plhurt1(string) : "You are Very Hurt Group" : "" + sc_plhurt2(string) : "You are Pretty Hurt Group" : "" + sc_plhurt3(string) : "You are Hurt a Bit Group" : "" + sc_phello(string) : "Predisaster Hello Group" : "" + sc_pidle(string) : "Predisaster Idle Group" : "" + sc_pquestion(string) : "Predisaster Question Group" : "" + sc_smell(string) : "Talk About Smell Group" : "" + sc_wound(string) : "I was hurt Group" : "" + sc_mortal(string) : "I was Very Hurt Group" : "" + sc_kill(string) : "I just killed something Group" : "" + sc_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Angles) size(-32 -32 0, 32 32 64) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster, Angles) size(-16 -16 0, 16 16 32) studio("models/small_sentry.mdl") = monster_sentry_mini : "Small Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Young" + 1 : "Bald" + 2 : "Beard" + 3 : "Mask" + ] +] + +@PointClass base(Monster) size(-12 -12 0, 12 12 24) studio("models/scorp.mdl") = monster_scorpion : "Animal Scorpion" +[ + _skin(integer) : "_skin" : 0 +] +@PointClass base(Monster) size(-12 -12 -12, 12 12 12) = monster_targetrocket : "On Targeting, FireRocketAtTarget"[] +@PointClass base(Monster) size(-16 -16 0, 16 16 40) studio("models/battbot.mdl") = monster_trainingbot : "Training bot" +[ + spawnflags(Flags) = + [ + 1024 : "No Distortion Rings" : 0 + ] + +] +@PointClass base(Monster) size(-32 -32 -28, 32 32 24) studio("models/tube.mdl") = monster_tube : "Xenome Tube" [] +@PointClass base(Monster) size( -12 -12 -16, 12 12 24) studio("models/tubryo.mdl") = monster_tube_embryo : "TubeEmbryo"[] +@PointClass base(Monster) size(-32 -32 0, 32 32 50) studio("models/xenome.mdl") = monster_xenome : "Xenome Xenome" [] +@PointClass base(Monster) size( -6 -6 -6, 6 6 12) studio("models/xmbryo.mdl") = monster_xenome_embryo : "XenomeEmbryo"[] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + 16: "Warp In Effect" : 0 + 32: "Dont Fall to Ground" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 + + // give the mappers a way of sying directly if a monster fades or not + fadestatus(Choices) : "Fade on Death" : -1 = + [ + -1 : "Default Handling" + 0 : "Dont Fade" + 1 : "Fade" + ] + + // skin option for setting childrens skin + _skin(integer) : "Childrens Skin" : 0 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 + angles(string) : "X Y Z angles" +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + 16: "Teleport" : 0 + + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_giveitems : "give player weapons" +[ + spawnflags(Flags) = + [ + 1: "Fists" : 0 + 2: "Pistol" : 0 + 4: "Sniper" : 0 + 8: "Shotgun" : 0 + 16: "Mechagun" : 0 + 32: "Coolers" : 0 + 64: "Beamgun" : 0 + 128: "Dml" : 0 + 256: "Chemgun" : 0 + 512: "Aicore" : 0 + 1024: "Armor" : 0 + 2048: "Healthkit1" : 0 + 4096: "Healthkit2" : 0 + 8192: "Healthkit3" : 0 + 16384: "Healthkit4" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_speaker : "Player Speaker" +[ + sentencegroup(string) : "Name of group to play" : "!GENERAL1" + sentencelength(string) : "Length of sentence" : "5.0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_togglehud : "Player Toggle Hud"[] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass iconsprite("sprites/speaker.spr") = random_speaker : "Random Time Wav Player" +[ + rsnoise(sound) : "Path/filename.wav of WAV" + volume(string) : "Volume (0 to 1)" : "1" + wait(string) : "Minimum time for sound repetition" : "10" + random(string) : "Random % of this added to wait" : "20" +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 16) = random_trigger : "Random Trigger" +[ + start_state(Choices) : "Start State" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wait(string) : "Min Random Time" : "5" + random_min(string) : "Min Random Time Added" : "5" + random_max(string) : "Max Random Time Added" : "10" +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx) flags(Angle) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + 6 : "walk and face player" + 7 : "run and face player" + 8 : "turn and face player" + + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = sphere_explosion : "Exposion Effect Entity" +[ + maxradius(string) : "Length of Effect" : "200" + radiusstep(integer) : "Speed of Expansion" : 4 + trans(integer) : "Starting transparency of sphere" : 255 + transstep(integer) : "Speed of Fade out" : 5 + numtracers(choices) : "Tracers" : 1 = + [ + 0 : "No tracers" + 1 : "15 tracers" + ] + + shockwave(choices) : "Ring" : 1 = + [ + 0 : "No ring" + 1 : "ring" + ] + + implosion(choices) : "Implosion" : 0 = + [ + 0 : "No implosion" + 1 : "Imposion" + ] + + shakeduration(integer) : "Length of shake" : 0 + fadeholdtime(string) : "time between fades" : "0.1" + fadetime(string) : "time till fade in (0 for never)" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = targ_speaker : "targeted Time Wav Player" +[ + targetname(target_source) : "Name" + tsnoise(sound) : "path/name.wav" : "path/name.wav" + volume(string) : "Volume (0 to 1)" : "1" +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + + + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + instantangle(choices) : "Instant Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + overridehack(choices) : "Override Hack" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@PointClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@PointClass base(Trigger) = trigger_gunmanteleport : "Trigger Gunman Teleport" [] +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + + +@SolidClass base(Trigger) = trigger_tank : "Tank Trigger"[] +@SolidClass base(Trigger) = trigger_tankoutofgas : "Tank Trigger out of Gas"[] +@SolidClass base(Trigger) = trigger_tankshell : "TankShellTriggered"[] +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] +//@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] +//@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" +//[ +// landmark(string) : "Landmark name" +//] + +@PointClass = vehicle_tank: "Vehicle_tank" +[ + vehicle_id(integer) : "Tank Id" : 1 + spawnflags(flags) = + [ + 1 : "No Turret Weapons" : 0 + 2 : "No Machine Guns" : 0 + ] + vehicle_volume(string) : "Volume Adj Value (0 to 1)" : "1" +] +// +// weapons +// + +@PointClass base(Weapon, Targetx, Angles) studio("models/w_knife.mdl") = weapon_fists : "Fists" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_beam.mdl") = weapon_beamgun : "BeamGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_dml.mdl") = weapon_dml : "DualMissileLauncher" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_gauss.mdl") = weapon_gausspistol : "Gauss Pistol" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_mechagun.mdl") = weapon_minigun : "MiniGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_chemgun.mdl") = weapon_SPchemicalgun : "ChemGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_aicore.mdl") = weapon_aicore : "AI Core Pickup" [] + + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/half-life.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/half-life.fgd new file mode 100644 index 0000000..6ea2ba9 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/half-life.fgd @@ -0,0 +1,2467 @@ +// +// Half-Life game definition file (.fgd) +// version 3.0.0.1 +// for Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above +// +// updated by Chris Bokitch +// autolycus@valvesoftware.com +// http://www.valve-erc.com/ +// + +// +// aug 28 2001 - 3.0.0.1 +// - changed IS NOT LOOPED to NOT TOGGLED on ambient_generic (royalef) +// - gave light_environment a Name +// - added Angular Velocity to func_train +// - added cycler_wreckage (Waldo) +// - created ZHLT_point baseclass +// - added ZHLT_point base to light, light_environment, and light_spot +// - created ZHLT baseclass +// - added ZHLT base to all applicable brush entities +// - above list compiled by Unquenque +// ------------------------------------------------------------------------ + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1 : "Play Everywhere" : 0 + 2 : "Small Radius" : 0 + 4 : "Medium Radius" : 1 + 8 : "Large Radius" : 0 + 16 : "Start Silent":0 + 32 : "Not Toggled":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx) = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx) = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx) = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_crossbow : "Crossbow Ammo" [] + +@SolidClass base(Target, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(string) : "Scale" : "1.0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, ZHLT) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular Veocity (y z x)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light, ZHLT_point) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles, ZHLT_point) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields) size(-16 -16 -36, 16 16 0) = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney" [] +@PointClass base(RenderFields,Appearflags, Angles) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_headcrab : "Head Crab" [] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" [] +@PointClass base(Weapon,Targetx,RenderFields) = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_snark : "Armed Snark" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 1 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx) = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx) = weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx) = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx) = weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx) = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx) = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx) = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx) = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx) = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx) = weapon_hornetgun : "Hornet Gun" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/opposing-force.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/opposing-force.fgd new file mode 100644 index 0000000..af3c475 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/opposing-force.fgd @@ -0,0 +1,3298 @@ +// +// Half-Life: Opposing Force game definition file (.fgd) +// version 3.0.0.1 +// for Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above +// +// updated by Chris Bokitch +// autolycus@valvesoftware.com +// http://www.valve-erc.com/ +// + +// +// aug 28 2001 - 3.0.0.1 +// - changed IS NOT LOOPED to NOT TOGGLED on ambient_generic (royalef) +// - gave light_environment a Name +// - added Angular Velocity to func_train +// - added cycler_wreckage (Waldo) +// - created ZHLT_point baseclass +// - added ZHLT_point base to light, light_environment, and light_spot +// - created ZHLT baseclass +// - added ZHLT base to all applicable brush entities +// - above list compiled by Unquenque +// - previous updates by David 'Alpha_Male' Mertz +// ------------------------------------------------------------------------ + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" : "grunt;scientist" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + defaultctf(choices) : "Default CTF" : 0 = + [ + 0 : "Not CTF map" + 1 : "CTF map" + ] +] + +// +// BaseClasses +// + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags, Angles) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + killtarget(target_destination) : "KillTarget" + delay(string) : "Delay before trigger" : "0" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(choices) : "Delay before close" : 4 = + [ + -1 : "Stays open" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Not Toggled":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_crossbow : "Crossbow Ammo" [] + +@SolidClass base(Target, Targetname, Angles, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// +// cyclers +// + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + bodygroup(integer) : "Body Group" : 0 +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(string) : "Scale" : "1.0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0= + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname, ZHLT) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +// use game_text instead +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "path/filename.wav of WAV" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, Angles, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targetted object" + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +// THIS CREATES AN INVISIBLE CLIMBABLE FIELD +// You must create the physical ladder yourself +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +// blocks monster path ai +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +// not fully implemented +@SolidClass base(Appearflags, Targetname, Global, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + speed(integer) : "Speed" : 100 + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "Path/filename.wav of WAV" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular Veocity (y z x)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, Appearflags, RenderFields, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" +[ + body(Choices) : "Body" : 0 = + [ + 0 : "Standing" + 1 : "Laying Flat" + ] + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light, ZHLT_point) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles, ZHLT_point) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname, Angles, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields) size(-16 -16 -36, 16 16 0) = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney" +[ + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname,RenderFields,Appearflags, Angles) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 8 : "Head Controller" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_headcrab : "Head Crab" [] +@PointClass base(Targetname,Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Targetname,Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" [] +@PointClass base(Weapon,Targetx,RenderFields) = monster_satchel : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + 4 : "Einstein w/ Clipboard" + 5 : "Slick w/ Stick" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname,Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_snark : "Armed Snark" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_tentacle : "Tentacle Arm" +[ + spawnflags(Flags) = + [ + 64 : "Tentacle3" : 0 + ] + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 1 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + 2 : "PVS On/Off" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Entity" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + 256: "No Reset Entity" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer): "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetx, Targetname) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" +[ + telesound(string) : "Teleport Sound" +] + + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx, RenderFields) = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_hornetgun : "Hornet Gun" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 1 = + [ + 44: "Battery" + 42: "Antidote" + 43: "Security Card" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] + + + + + + +////////////////////////////////////////////////////////////////////////////// +// Opposing Force Entities // +////////////////////////////////////////////////////////////////////////////// + + +// +//AMMO +// + +@PointClass base(Weapon, Targetx, RenderFields) = ammo_556 : "M249 Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) = ammo_762 : "Sniper Ammo" [] + +//Spore ammo orientation refers to the direction that the base of the plant faces +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -16, 16 16 16) = ammo_spore : "Spore" [] + + + +// +// ENV ENTITIES +// +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_blowercannon : "Blower Cannon" +[ + delay(string) : "Delay" : "0" + zoffset(integer) : "Z Offset" : 0 + target(string) : "Target" : "" + weaptype(choices) :"Weapon Type" : 1 = + [ + 1: "Spore (Rocket)" + 2: "Spore (Grenade)" + 3: "Shock Beam" + 4: "Displacer Ball" + ] + firetype(choices) :"Fire Type" : 1 = + [ + 1: "Toggle On/Off" + 2: "Fire When Triggered" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_electrified_wire : "Electrified Wire" +[ + segments(integer) : "Segments" : 16 + sparkfrequency(integer) : "Spark Frequency" : 3 + bodysparkfrequency(integer) : "Body Spark Frequency" : 3 + lightningfrequency(integer) : "Lightning Frequency" : 3 + xforce(integer) : "X Force" : 80000 + yforce(integer) : "Y Force" : 80000 + zforce(integer) : "Z Force" : 80000 + disable(choices) :"Disable Use" : 0 = + [ + 0: "Not Disabled" + 1: "Disabled" + ] + endingmodel(studio) : "Ending Model" : "models/wire_copper16.mdl" + bodymodel(studio) : "Body Model" : "models/wire_black16.mdl" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_rope : "Rope" +[ + segments(integer) : "Segments" : 16 + disable(choices) :"Disable Use" : 0 = + [ + 0: "Not Disabled" + 1: "Disabled" + ] + endingmodel(studio) : "Ending Model" : "models/rope16.mdl" + bodymodel(studio) : "Body Model" : "models/rope16.mdl" +] + + + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(0 128 255)= env_spritetrain : "Sprite Train" +[ + target(target_source) : "First stop target" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + speed(integer) : "Speed (units per second)" : 64 + scale(string) : "Sprite Scale" +] + + +// +// FUNC ENTITIES +// + +@SolidClass base(Target, ZHLT) = func_op4mortarcontroller : "Op4 Mortar Controller" +[ + mortar_axis(Choices) : "Axis" : 0 = + [ + 0 : "Vertical" + 1 : "Horizontal" + ] +] + +@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTankOF +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" + enemytype(Choices) : "Enemy Type" : 1 = + [ + 0: "Player" + 1: "Ally" + 2: "Random" + ] +] + +// Don't forget func_tankcontrols_of +@SolidClass base(BaseTankOF, ZHLT) = func_tank_of : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols_of : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +// Don't forget func_tankcontrols_of +@SolidClass base(BaseTankOF, ZHLT) = func_tanklaser_of : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +// Don't forget func_tankcontrols +@SolidClass base(BaseTankOF, ZHLT) = func_tankrocket_of : "Brush Rocket Turret" [] + + +// Don't forget func_tankcontrols +@SolidClass base(BaseTankOF, ZHLT) = func_tankmortar_of : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +// +// INFO ENTITIES +// + +// Displacer target placement represents the point where the player's feet shall be +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_xen_target : "Displacer XEN Target" [] +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_earth_target : "Displacer EARTH Target" [] + +@PointClass base(Targetname, Target) = info_pitworm_steam_lock : "Pitworm Steam Lock" [] + + +// +// ITEM ENTITIES +// + +@PointClass base(Weapon, Targetx) = item_generic : "Generic scenery item" +[ + model(studio) : "Model" : "models/egg.mdl" + sequencename(string) : "Sequence Name" : "idle" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 +] + +@PointClass base(Weapon, Targetx) size(-16 -16 0, 16 16 36) = item_nuclearbomb : "Nuclear Bomb" +[ + initialstate(integer) : "Initial State" : 0 + wait(integer) : "Wait" : 1 +] + + + +// +// MONSTERS +// + +@PointClass base(Monster) size(-40 -40 0, 40 40 64) = monster_alien_babyvoltigore : "Baby Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + + + +@PointClass base(Monster) size(-80 -80 0, 80 80 90) = monster_alien_voltigore : "Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave_dead : "Dead Vortigaunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On Stomach" + ] +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_assassin_repel : "Male Assassin (Repel)" [] + +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_blkop_apache : "Black Ops Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_blkop_osprey : "Black Ops Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] + + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_cleansuit_scientist : "Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Targetname,Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_cleansuit_scientist_dead : "Dead Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + 7 : "Hi Mike!" + 8 : "Dead Against Wall" + ] +] + +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_cleansuit_scientist : "Sitting Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_drillsergeant : "Drill Sergeant" [] + +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_geneworm : "Gene Worm" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gonome : "Gonome" [] +@PointClass base(Targetname,Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_gonome_dead : "Dead Gonome" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On Stomach" + 1 : "On Back" + 2 : "On Side" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_houndeye_dead : "Dead Houndeye" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "Just plain dead" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_ally_repel : "Human Grunt Ally (Repel)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt_ally : "Human Grunt Ally (camo)" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + weapons(Choices) : "Weapons" : 3 = + [ + 0 : "None" + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + ] + + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + 6 : "Major" + 7 : "Beret (Black)" + ] +] + + +@PointClass base(Targetname,Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_human_grunt_ally_dead : "Dead Human Grunt Ally" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + 3 : "Dead On Back" + 4 : "Dead On Stomach" + 5 : "Head Crabbed" + ] + + weapons(Choices) : "Weapons" : 1 = + [ + 0 : "None" + 1 : "9mmAR" + 8 : "Shotgun" + 16 : "Saw" + ] + + head(Choices) : "Heads" : 0 = + [ + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + ] +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_medic_ally : "Medic" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + head(Choices) : "Heads" : -1 = + [ + -1 : "Random" + 0 : "White" + 1 : "Black" + ] + + weapons(Choices) : "Weapons" : 2 = + [ + 0 : "None" + 1 : "Desert Eagle" + 2 : "9mm Handgun" + 4 : "Hypodermic Needle" + ] +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_torch_ally : "Torch" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "Desert Eagle" + 2 : "Blow Torch" + ] +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_male_assassin : "Male Assassin" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + head(Choices) : "Heads" : 0 = + [ + -1 : "Random" + 0 : "Ski Mask White" + 1 : "Ski Mask Black" + 2 : "Night Goggles" + ] + + weapons(Choices) : "Weapons" : 3 = + [ + 0 : "None" + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Sniper Rifle" + ] + standgroundrange(string) : "Stand Ground Range" : "0.0" +] + +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_op4loader : "Loader machine" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] +] + + +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_otis : "Otis" +[ + bodystate(Choices) : "bodystate" : -1 = + [ + -1 : "Random" + 0 : "Gun Holstered" + 1 : "Gun Drawn" + 3 : "Donut" + ] + head(Choices) : "head" : -1 = + [ + -1 : "Random" + 0 : "Bald Head" + 1 : "Head with hair" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname,Appearflags) size(-16 -16 0, 16 16 72) = monster_otis_dead : "Dead Otis" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + 3 : "Stuffed in Vent" + 4 : "Dead Sitting" + ] +] + + +@PointClass base(Monster) size(-24 -24 0, 24 24 32) = monster_pitdrone : "PitDrone" +[ +initammo(string) : "Initial Ammo" : "6" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 32) = monster_pitworm : "Pit Worm" [] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_pitworm_up : "Pit Worm Upright" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_shockroach : "Shock Roach" [] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_barney : "Barney Zombie" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_soldier : "Soldier Zombie" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_soldier_dead : "Dead Soldier Zombie" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On stomach" + ] +] + +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_recruit : "Recruit" [] + +@PointClass base(Targetname,Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_skeleton_dead : "Dead Skeleton" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "Against Wall" + 3 : "On Stomach" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_shocktrooper : "Shock Trooper" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] + +@PointClass base(Targetname) = op4mortar : "Op4 Mortar" +[ + spawnflags(Flags) = + [ + 1 : "Active" : 0 + 16 : "Line of Sight" : 1 + 32 : "Can Control" : 1 + ] + mortar_velocity(integer) : "Velocity" : 800 + h_min(integer) : "Horiz MIN" : -90 + h_max(integer) : "Horiz MAX" : 90 + mindist(integer) : "Min Target Dist" : 256 + maxdist(integer) : "Max Target Dist" : 2048 + enemytype(Choices) : "Enemy Type" : 0 = + [ + 0 : "Player" + 1 : "Ally" + 2 : "Random" + ] + firedelay(integer) : "Fire Rate" : 5 +] + + +@PointClass base(gibshooterbase) = pitworm_gibshooter : "Pitworm Gib Shooter" [] + + +// +// TRIGGERS +// + +@SolidClass base(Targetname,Target) = trigger_geneworm_hit : "Trigger GeneWorm Hit" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + delay(string) : "Delay before trigger" : "0" +] + +@PointClass base(Targetx, Targetname) = trigger_playerfreeze : "Trigger Player Freeze" [] +@SolidClass base(Trigger) = trigger_xen_return : "Return To Earth (self-tele)" [] + +// +//WEAPONS +// +@PointClass base(Weapon, Targetx, RenderFields) = weapon_displacer : "Displacer" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_eagle : "Desert Eagle" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_grapple : "Barnacle Grapple" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_knife : "Knife" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_m249 : "M249 SAW" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_penguin : "Killer Penguin" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_pipewrench : "Pipe Wrench" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_shockrifle : "Shock Roach" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_sniperrifle : "Sniper Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) = weapon_sporelauncher : "Spore Launcher" [] + + + +////////////////////////////////////////////////////////////////////////////// +// Opposing Force CTF Entities // +////////////////////////////////////////////////////////////////////////////// + + +// +// BaseClasses +// + + +@BaseClass = CTFAttributes +[ + goal_no(Choices) : "Team" : 1 = + [ + 1 : "Black Mesa" + 2 : "Opposing Force" + ] + goal_min(string) : "Min Bounds" : "-16 -16 0" + goal_max(string) : "Max Bounds" : "16 16 72" +] + +@BaseClass = CTFItem +[ + spawnflags(flags) = + [ + 4: "Random Spawn" : 1 + ] + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + + +// +// Items +// + + +@PointClass base(CTFAttributes) size(-16 -16 0, 16 16 72) = item_ctfflag : "CTF Flag" +[ + skin(choices) : "Skin" : 1 = + [ + 1 : "Black Mesa" + 2 : "Opposing Force" + ] + model(studio) : "Model" : "models/flag.mdl" +] +@PointClass base(CTFAttributes) size(-16 -16 0, 16 16 72) = item_ctfbase : "CTF Goal" +[ + skin(choices) : "Skin" : 0 = + [ + 0 : "Default" + ] + model(studio) : "Model" : "models/civ_stand.mdl" +] +@PointClass base(PlayerClass) = info_ctfspawn : "Player CTF Start" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + +@PointClass = info_ctfdetect : "CTF Detect" +[ + flagreturntime(string) : "Flag Return Time" : "30.0" + basedefenddist(string) : "Base Defend Distance" : "192.0" + defendcarriertime(string) : "Defend Carrier Time" : "10.0" + captureassisttime(string) : "Capture Assist Time" : "10.0" + poweruprespawntime(string) : "Powerup Respawn Time" : "30.0" + score_icon_namebm(string) : "Non-Flag Black Mesa icon" : "item_ctfscorebm" + score_icon_nameof(string) : "Non-Flag Opposing Force icon" : "item_ctfscoreof" + map_score_max(string) : "Maximum Map Team Score" : "0" +] + +@PointClass base(CTFItem) size(-16 -16 0, 16 16 36) = item_ctflongjump : "Longjump Module for CTF" [] +@PointClass base(CTFItem) size(-16 -16 0, 16 16 36) = item_ctfportablehev : "Portable HEV charger for CTF" [] +@PointClass base(CTFItem) size(-16 -16 0, 16 16 36) = item_ctfregeneration : "Health regeneration for CTF" [] +@PointClass base(CTFItem) size(-16 -16 0, 16 16 36) = item_ctfaccelerator : "Double Weapon Damage for CTF" [] +@PointClass base(CTFItem) size(-16 -16 0, 16 16 36) = item_ctfbackpack : "Backpack Powerup for CTF" [] +@PointClass size(-16 -16 0, 16 16 36) = info_ctfspawn_powerup : "CTF Powerup Spawn Spot" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + +@SolidClass base(Target, Targetname) = trigger_ctfgeneric : "Trigger CTF Generic" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Both Teams" + 1 : "Black Mesa Only" + 2 : "Opposing Force Only" + ] + trigger_delay(string) : "Re-activate delay" : "5" + score(string) : "Player Score" : "0" + team_score(string) : "Team Score" : "0" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/resident-evil-valiant.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/resident-evil-valiant.fgd new file mode 100644 index 0000000..c2afee6 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/resident-evil-valiant.fgd @@ -0,0 +1,6160 @@ +// Spirit of Half-Life v1.8 FGD File - EXTENDED FOR USE FOR RESIDENT EVIL: VALIANT +// For WorldCraft 3.5+ and Half-Life 1.1.0.8+ +// (Also works with alternative editors such as J.A.C.K) +// Created by Laurie Cheers +// Additions by Shambler Team +// Additions by Killar +// Additions by Confused +// Additions by Mike +// Additions by ytiAdmin +// Additions by DeathWish +// Additions by Shepard62700FR - REV +// Additions by Heffernan - REV + +// In textpad use regular expression ^[\t ]*//.*\n to remove ALL comments + +//INFO +// +// For any "target" type value, you can use a "+" or "-" prefix to +// specify that the target should be turned on or off, respectively. +// (e.g. suppose you have an entity which targets "mylight". If you tell it +// to target "+mylight" instead, then it will only turn the light on, never +// off.) +// Similarly, for any Master, you can invert the master relationship (that +// is, you can disable the entity whenever the master is on) by +// adding a tilde (~) at the start of the master's name. +// +// When testing your level, it's sometimes helpful to be able to trigger +// entities manually. To trigger an entity named "mydoor", you can simply +// type "fire mydoor" at the console. +// Similarly, if you just type "fire", you will trigger whatever entity the +// player is aiming at. +// NB: this command will only work if sv_cheats is set to 1. +// +//ENDS + +// +// Worldspawn +// + +//* Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."] +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : "0.0" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display 'Half-Life' title?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "Flush global entities?" : 0 = + [ + 0 : "No, keep global ents" + 1 : "Yes, flush global ents" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + //NEW 0.3 + //* Yes means the player will start this level wearing an HEV suit. + startsuit(choices) : "HEV from start" = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 0.4 + //* Yes means that monsters will appear in multiplayer games. This has no effect in a single player level. + allowmonsters(choices) : "Allow Monsters (MP only)" = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 1.5 + // Yes means the player continues to take damage from rad/tox/poison even after leaving the area + timed_damage(choices) : "Enable timed damage rad/tox/poison" : 1 = + [ + 0 : "No" + 1 : "Yes (Default)" + ] + + //NEW 1.5 + // The maximum number of cameras a player is allowed in his inventory at any one time. + max_cameras(integer) : "Max cameras in players inventory" : 2 + + //NEW 1.5 + // The maximum medical kit charge a player can have at one time. Excess is not wasted on picking up a medkit + max_medkit(integer) : "Max TOTAL medkit charge" : 200 +] + +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" +] + +//* "ZHLTReference.html" (included with the ZHLT Distribution) contains information on using these keys. +@BaseClass = ZHLTLightKeys +[ + zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 = + [ + 0: "Normal (0)" + 1: "Embedded Fix (1)" + 2: "Opaque (Blocks light) (2)" + 3: "Opaque + Embedded Fix (3)" + 6: "ConcaveFix (6)" + ] + light_origin(string) : "Light Origin (ZHLT 2.5.1+)" +] + +@BaseClass = ZhltLights +[ + _fade(integer) : "Fade (ZHLT 2.5.1+)" + _falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 = + [ + 1: "Inverse Square (1)" + 2: "Inverse Linear (2)" + ] +] + +@BaseClass = TexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = SwitchTexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + -1: "Switchable (starts on)" + -2: "Switchable (starts off)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = Appearflags +[ + //NEW 0.6 + skill(choices) : "Skill setting" : 0 = + [ + 0 : "All skills" + 1 : "Not in easy" + 2 : "Not in medium" + 4 : "Not in hard" + 6 : "Only in easy" + 5 : "Only in medium" + 3 : "Only in hard" + ] + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = MoveWith +[ + //NEW 0.3 + movewith(target_destination) : "Moves with" +] + +@BaseClass = Master +[ + master(string) : "Master" +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon +[ + master(string) : "Item Lock Master" +] + +@BaseClass base(Weapon) color(80 0 200) = Ammo [] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass = Delay +[ + delay(string) : "Delay before trigger" : "0" +] + +@BaseClass = Killtarget +[ + killtarget(target_destination) : "KillTarget" +] + +@BaseClass base(Target, Delay, Killtarget) = Targetx [] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + //* Additive or Texture mode only. + 1: "Slow Pulse" + //* Additive or Texture mode only. + 2: "Fast Pulse" + //* Additive or Texture mode only. + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" +//These don't seem to do anything. Correct me if I'm wrong... +// 5: "Slow Fade Away" +// 6: "Fast Fade Away" +// 7: "Slow Become Solid" +// 8: "Fast Become Solid" + +//* This setting only affects the Glow rendermode. With this setting, Glow mode behaves +//* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't +//* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this +//* useful?) + 14: "Constant Glow (Sprites)" + 15: "Distort (Models)" + 16: "Hologram (Distort + fade)" +//* Strange effect. As seen, briefly, when a Gargantua dies. + 18: "Bulge Sideways (Models)" +//* Quite pretty. As seen in Valve's mod Deathmatch Classic. + 19: "Glowing Aura (Models)" +//NEW 1.0 +//* Draw a reflection under this model's feet. + 21: "Reflection (Models)" +//NEW 1.4 + 22: "Entity in PVS" + ] +] + +@BaseClass = RenderMode +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + //* For BSP objects, the object will be rendered as a pure area of whatever + //* color is specified in FX Color. + //* For models and sprites, this is the same as Normal mode. + 1: "Pure Color" + //* For BSP objects, the object will be rendered without shadows. + //* For models and sprites, this is the same as Normal mode, except that the Pulse + //* renderfx settings work. + 2: "Texture" + //* Like additive, but as the player gets further from the sprite, it gets + //* progressively larger and more transparent. The sprite is also not obscured by + //* intervening models, which can sometimes look bad. + //* Alphatest sprites won't use their masks in this mode. + 3: "Glow (sprites only)" + //* For BSP objects, this only affects textures beginning with {. Blue pixels + //* will be transparent; non-blue pixels will be solid. + //* For models, this mode is the same as Normal mode. + //* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e. + //* the palette positions are used as opacity settings; 0 for fully transparent, + //* and 255 for fully opaque, regardless of what the palette colors actually are. + //* The only palette colour that will be used is the last one, which sets the + //* colour for the whole sprite. (Needless to say, this will look odd unless the + //* sprite is designed to be displayed this way!) + //* Oddly, Alphatest sprites won't use their masks in this mode. + 4: "Solid" + //* Only bright parts of the object are visible; darker parts are just more + //* transparent, and black is not drawn. Useful for making lighting or hologram + //* effects. + 5: "Additive" + ] +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFields +[ + renderamt(integer) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax +[ + renderamt(integer) : "FX Amount (1 - 255)" : 255 + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" +] + +@BaseClass = LockSounds +[ + //* The locked sound & sentence will be played if: + //* 1) The player walks into a door which has a name. (and Force Touchable isn't selected.) + //* 2) A door/button with a master gets activated, but the master is disabled. + //* + //* The number against each sound corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0 : "None" + 2 : "Access Denied (2)" + 8 : "Small zap (8)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + 12: "Latch Locked (12)" + ] + //* The unlocked sound & sentence will be played whenever a door starts to open and whenever + //* a button starts to push in. (They will never be played when a door starts to close, even if + //* "Toggle" is selected.) + //* + //* The number against each sound (except lightswitch) corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0 : "None" + 1 : "Big zap & Warmup (1)" + 3 : "Access Granted (3)" + 4 : "Quick Combolock (4)" + 5 : "Power Deadbolt 1 (5)" + 6 : "Power Deadbolt 2 (6)" + 7 : "Plunger (7)" + 8 : "Small zap (8)" + 9 : "Keycard Sound (9)" + 10: "Buzz (10)" + 13: "Latch Unlocked (13)" + 14: "Lightswitch" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3. + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied (NA)" + 2: "Security Lockout (ND)" + 3: "Blast Door (NF)" + 4: "Fire Door (NFIRE)" + 5: "Chemical Door (NCHEM)" + 6: "Radiation Door (NRAD)" + 7: "Gen. Containment (NCON)" + 8: "Maintenance Door (NH)" + 9: "Broken Shut Door (NG)" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3. + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted (EA)" + 2: "Security Disengaged (ED)" + 3: "Blast Door (EF)" + 4: "Fire Door (EFIRE)" + 5: "Chemical Door (ECHEM)" + 6: "Radiation Door (ERAD)" + 7: "Gen. Containment (ECON)" + 8: "Maintenance area (EH)" + ] +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster +[ + //NEW 0.7.1 + health(integer) : "Initial health (0 = normal)" + //NEW 0.7.1 + //* Be careful when changing this - a monster's actions are tied closely to its model. + model(studio) : "Model (e.g. models/can.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + target(string) : "Patrol Path" + //NEW 0.4 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + //* Don't attack the player until s/he can see us. + 1 : "WaitTillSeen" : 0 + //* Don't speak except when in combat. Don't make "idle" noises. + 2 : "Gag" : 0 + //* If ticked, the monster can't enter a func_monsterclip area. + 4 : "Monster Clip" : 0 + //* If ticked, the monster will ignore all other monsters and vice versa. + 16: "Prisoner" : 0 + //NEW 0.4 + //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck + //* in a wall and unable to move. Only tick this if you're happy for it to be stuck. + 128: "No yellow blobs" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow. + UseSentence(String) : "Use Sentence" + //* The sentence to speak when the player tells us to stop following. + UnUseSentence(String) : "Un-Use Sentence" + //NEW 0.4 + //* The sentence to speak when refusing to follow the player. + RefusalSentence(String) : "Refusal Sentence" + //NEW 0.4 + //* While locked by the master, this monster will refuse to follow the player. + master(String) : "Master (prevents following)" + //NEW 0.4 + //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for + //* this are BA (speak as a Barney) and SC (speak as a Scientist). To define a + //* speech group "XX", you need to define sentences XX_ANSWER, XX_QUESTION, XX_IDLE, + //* XX_STARE, XX_OK, XX_WAIT, XX_STOP, XX_NOSHOOT, XX_HELLO, XX_SMELL, XX_WOUND and + //* XX_MORTAL. (as well as some others, if the monsters are going to be Pre-Disaster.) + SpeakAs(string) : "Speech Group" + spawnflags(Flags) = + [ + //* Unless given a Master, a pre-disaster monster will refuse to follow the player. + 256: "Pre-Disaster" : 0 + ] +] + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + //* The number of pieces to create. + m_iGibs(integer) : "Number of shots" : 1 + //* Delay (in seconds) between shots. If 0, all the shots are fired at once. + delay(string) : "Delay between shots" : "0" + m_iszPosition(string) : "At position (blank = here) [LP]" + m_iszVelocity(string) : "At velocity (blank = angle) [LV]" + //* How fast the gibs are fired + m_flVelocity(string) : "Gib Speed Factor [LN]" : "200" + //* Course variance + m_flVariance(string) : "Course Variance" : "0.15" + //* Time in seconds for gibs to live, +/- 5% + m_flGibLife(string) : "Shot lifetime (secs)" : "4" + m_iszTargetName(string) : "Shot's name" + //NEW 0.7.1 + //* If you want to change the behaviour of the shot, this is the field to use - + //* for example, you could target a motion_manager here, to change the shot's movement. + m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + 4 : "Debug" : 0 + ] +] + +@BaseClass = Light +[ + //* Don't create a light whose name begins with "light" - a bug/feature in RAD means + //* that such a light won't be able to switch on and off. + targetname(target_source) : "Name" + _light(color255) : "Brightness" : "255 255 128 200" + //* This field will have no effect on a dynamic (i.e. named) light. + style(Choices) : "Appearance (static)" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //* This field will have no effect on a static (i.e. nameless) light. + //* 'a' is dark, 'm' is normal brightness, 'z' is full brightness. + //* There's no support for a light to have a custom appearances when it's in a + //* state other than 'on'. See @trigger_lightstyle if you need this effect. + pattern(string) : "Custom Appearance (on)" + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOnStyle(Choices) : "Appearance (on)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOffStyle(Choices) : "Appearance (off)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass base(Targetname, Global) = Breakable +[ + target(target_destination) : "Target on break" + //NEW 0.7.1 + //* Whenever the breakable takes damage, this entity will be triggered, and passed + //* the position and direction of the bullet (or whatever). + whenhit(string) : "Trigger when hit (locus = position)" + health(integer) : "Strength" : 100 + material(choices) : "Material type" : 0 = + [ + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + 0: "Glass" + //* Gibs: models/woodgibs.mdl + //* Break noise: debris/bustcrateX.wav + //* Bounce noise: debris/woodX.wav + 1: "Wood" + //* Gibs: models/metalplategibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/metalX.wav + 2: "Metal" + //* Gibs: models/fleshgibs.mdl + //* Break noise: debris/bustfleshX.wav + //* Bounce noise: debris/fleshX.wav + 3: "Flesh" + //* Gibs: models/cindergibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 4: "Cinder Block" + //* Gibs: models/ceilinggibs.mdl + //* Break noise: debris/bustceilingX.wav + //* Bounce noise: none + 5: "Ceiling Tile" + //* Gibs: models/computergibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/woodX.wav + //* Note: Generates sparks when damaged. + 6: "Computer" + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + //* Note: Makes ricochet noises when damaged. + 7: "Unbreakable Glass" + //* Gibs: models/rockgibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + //* Can be used to override the default "gibs" value for the material you've specified. + gibmodel(studio) : "Gib Model" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "NULL" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "NULL" + 17: "Hand grenade" + 18: "NULL" + 19: "NULL" + 20: "Snark" + 21: "NULL" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + //NEW 0.4 + respawn(choices) : "Respawn time (secs)" : 0 = + [ + 0: "No respawn" + -1: "Respawn when triggered" + ] + //NEW 0.4 + netname(string) : "Target on respawn" + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Fade Respawn" : 0 + 16 : "Invert Hit Vector" : 0 + 256: "Instant Crowbar" : 0 + ] +] + +@BaseClass base(Appearflags) = Door +[ + target(target_destination) : "Target (Always)" + //NEW 0.4 + message(string) : "Target on Open" + netname(string) : "Target on Close" + killtarget(target_destination) : "KillTarget" + //NEW 0.5 + //* Together with "On/Off Aware", this field replaces the old + //* "synchronised" flag. + //* When set, the door will fire its Target as soon as it + //* starts to move, instead of firing when it reaches the end + //* of its move. + //* (NB: the "Target on Open" and "Target on Close" fields are not + //* affected; they will still fire at the end of movement.) + immediatemode(choices) : "Fire before moving" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 0.5 + //* Together with "Fire before moving", this field replaces the old + //* "synchronised" flag. + //* When this is set, instead of always firing its target with + //* USE_TOGGLE, the door will send USE_ON when opening and USE_OFF + //* when closing. (NB: the "fire on open" and "fire on close" fields + //* will still send USE_TOGGLE.) + //* Additionally, instead of simply toggling whenever it's + //* triggered, the door will open when sent USE_ON, and close when + //* sent USE_OFF. + onoffmode(choices) : "On/Off Aware" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + speed(integer) : "Speed" : 100 + + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Chunk (4) plays "doors/doorstop4.wav". + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake (1)" + 2: "Clang reverb (2)" + 3: "Ratchet Stop (3)" + 4: "Chunk (4)" + 5: "Light airbrake (5)" + 6: "Metal Slide Stop (6)" + 7: "Metal Lock Stop (7)" + 8: "Snappy Metal Stop (8)" + ] + //* Setting wait to -1 also prevents the door from reversing when it comes into + //* contact with the player, as seen on the bunker door in Crossfire. + //* This setting isn't recommended if the door is using MoveWith. + wait(choices) : "Delay before close" : 3 = + [ + -1 : "Stays Open (-1)" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + //* This delay only applies to the Target, not the Fire on Open/Close fields. + delay(integer) : "Delay before fire" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + //NEW 0.3 + //* Normally a named door, or a door with "use only" selected, won't open when touched. + //* Tick here to override that. + 1024: "Force Touchable" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + //* For computer-controlled guns. The gun is 'On'- i.e. ready to fire at the player- at the start of the level. + 1 : "Active" : 0 + //* For computer-controlled guns. If the gun can't see the player, it won't fire. + //* (usually, for a while, the tank will keep firing at the last place it saw the player.) + 2 : "Not Solid" : 0 + 16: "Line of Sight" : 0 + //* To make a tank which the player can use, you'll also need a @func_tankcontrols entity. + 32: "Controllable" : 0 + //NEW 0.2 + //* Makes the gun project a laser spot, similar to the player's rocket launcher. + //* This is helpful for players who are trying to aim with it. + 64: "Laser Spot" : 0 + //NEW 0.2 + //* For player-controlled guns. + //* Makes the gun point at whatever is at the centre of the player's view, instead of simply facing the same way as the player. + 128: "Match Target" : 0 + ] + + //* Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + //NEW 0.6 + //* While this master is locked, the gun cannot fire, but the player can still control it. + //* (Intended to enable reloading effects.) + firemaster(string) : "Fire Master" + //NEW 0.7.1 + //* Whenever the tank fires, this entity is triggered. (the locus for this is + //* the coordinates and direction at the end of the gun.) + m_iszLocusFire(string) : "Trigger on firing (locus = barrel)" + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + //* Bug fixed: rotate sound now stops when a player releases control of the gun. + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + //NEW 0.4 + m_iClass(choices) : "Behaviour" : 0 = + [ + 0: "Attack only players" + 11: "Barney" + 4: "Human Military" + 5: "Alien Military" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + ] + custommovesnd(sound) : "Custom Move Sound" + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + ] + customstopsnd(sound) : "Custom Stop Sound" + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Targetname, Master, Targetx) = Trigger [] + +@BaseClass = TriggerCond +[ + //NEW 0.5 + //* Only trigger when touched by an entity with this name. + //* If this is set, the flags "Monsters", "Pushables", etc will be ignored. + //* (Alternatively you can specify a classname, e.g. monster_barney.) + netname(string) : "Triggered only by entity" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables" : 0 + //NEW 0.6 + 8: "Everything else": 0 + ] +] + + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = Script +[ + target(target_destination) : "Target (fire when done)" + delay(string) : "Delay before firing target" : "0" + killtarget(target_destination) : "KillTarget when done" + //NEW 0.4 + //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) + //* This is useful to let you have special effects etc triggered during the animation. + m_iszFireOnBegin(string): "Fire after moving" + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + m_iszEntity(string) : "Target Monster [LE]" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + m_flRadius(integer) : "Search Radius" : 512 + //NEW 1.0 + m_iPriority(choices) : "Priority" : 0 = + [ + 0 : "Normal" + 4 : "Override other sequences" + ] + //NEW 1.0 + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + //NEW 0.7.1 + m_iRepeats(integer) : "Repeat action X more times" : 0 + //NEW 0.7.1 + m_fRepeatFrame(string) : "Repeat from frame" : "0" + spawnflags(Flags) = + [ + //* Default behaviour for a sequence is to delete itself after finishing. + 4 : "Repeatable" : 0 + //* If the player shoots a monster or tells a scientist/barney to follow him, any + //* scripts the monster is playing will usually be interrupted. + 32: "No Interruptions" : 0 + ] +] + +@BaseClass base(Script) size(-16 -16 0, 16 16 72) color(255 0 255) = ScriptSequence +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Turn target (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 0 = + [ + //* Turn to the same angle the turn target is facing. + 0 : "Match Angle" + //* Turn to look at the turn target. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + //* Animation to play after moving. Note that a @monster_generic won't add any sounds or + //* special effects to its animations. If you need those to appear, you'll have to use the + //* specific monster_<whatever> entities, instead. + m_iszPlay(string) : "Action Animation" : "" + //* If you specify an idle animation, then when the level begins the monster will be frozen and made + //* to play that animation (this is the main use for the idle animation in Valve's levels). After that + //* the monster will play the action animation when you trigger the sequence, and will then revert to its + //* normal AI. + //* If there are any other scripted_sequences with the same name as this one, then the monster will also play the "idle" animation + //* while it's waiting for the other sequences to be ready to start. + //* And finally, if the action animation is the same as the idle animation, then any time the monster would be playing the idle + //* animation, instead it will be frozen. + //* Obvious, eh? ;) + m_iszIdle(string) : "Idle Animation" : "" + spawnflags(Flags) = + [ + //* If the animation includes the monster dying, don't fade the corpse afterwards. + 8 : "Leave Corpse" : 0 + //* Even if the animation makes the monster look like it's walking around, DON'T shift + //* the monster to its apparent new location when the animation ends. + 128: "No Script Movement" : 0 + //NEW 0.4 + //* Some death sequences kill the monster automatically (e.g. "herodie" in loader.mdl) + //* but for most you'll have to tick this box. This is affected by Leave Corpse in the + //* obvious way. + 256: "Monster Dies" : 0 + ] +] + +// +// Entities +// + +//* Obsolete. Use scripted_sequence. (The only difference between them is that aiscripted_sequence +//* effectively has its "Override AI" flag ticked all the time. +@PointClass base(ScriptSequence) = aiscripted_sequence : "AI Scripted Sequence" [] + +@PointClass iconsprite("sprites/ambient_generic.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name (e.g. vox/c.wav)" + health(integer) : "Volume (10 = loudest)" : 10 + //NEW 0.5 + //* The entity you name here will play the sound, instead of the ambient_generic doing so itself. + //* Be aware that if the entity is playing another sound on the same channel, they will interfere + //* with each other. + target(target_destination) : "Entity to play from" + //NEW 0.5 + channel(choices) : "Channel to use for that entity" : 6 = + [ + 1: "Weapon" + //* If a monster's model has a mouth, and you play a sound on its "voice" channel, + //* the mouth will automatically move. + 2: "Voice" + 3: "Item" + 4: "Body" + 5: "Stream" + 6: "Static" + ] + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + noise(string) : "Volume calculation [LN] (overrides)" : "" + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(choices) : "LFO type (0 - 3)" : 0 = + [ + 0: "Off" + 1: "Square" + 2: "Triangle" + 3: "Round" + ] + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + //NEW 1.8 + //* This scales the radius up (if you put more than 1) or down (if you put less than 1). + //* It works in addition to the small/medium/large flags. + radiusscale(string) : "Radius scale factor" + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + //* Medium is the default radius, so ticking this does nothing. + //* (These should really be chosen from a pull-down menu.) + 4: "Medium Radius" : 0 + 8: "Large Radius" : 0 + 16:"Start Silent" : 0 + 32:"Is NOT Looped" : 0 + ] +] + +// +// ammo +// + + +@PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_shotbox.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Grenadelauncher Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_flameammo.mdl") = ammo_flameammo : "Grenadelauncher Ammo" [] + + +//* This entity is probably obsolete, now that @func_button has a "Can't Use" flag. +@SolidClass base(Target, Master, RenderFields, ZHLTLightKeys, MoveWith) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates": 0 + 2: "Start On" : 0 + 4: "Non Solid" : 0 + 8: "Can't shoot" : 0 + ] +] + + +// +// locus calculation entities +// + +//NEW 1.8 +@PointClass color(200 128 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_angles : "Calculate Angles" +[ + netname(string) : "Base angle" : "*locus" + impulse(choices) : "Meaning of base angle" : 0 = + [ + 0 : "Angles [PYR]" + 1 : "View Angle from player [LE]" + ] + message(string) : "Rotate by angle [PYR]" + noise(string) : "Set Pitch [LN] (blank = don't)" + noise1(string) : "Set Yaw [LN] (blank = don't)" + noise2(string) : "Set Roll [LN] (blank = don't)" +] + +//NEW 1.8 +@PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_numfromcvar : "Calculate a value from a console variable" +[ + target(string) : "Cvar name" + spawnflags(flags) = + [ + 1 : "Parse as [LN]" : 0 + ] +] + +//NEW 1.8 +//* If a locus calculation fails (for example, because its target is missing or whatever), it usually returns 0 (or 0 0 0 for vector calculations). If you want something else to happen when your calculation fails, use this to catch failed calculations and return the value you actually want, and/or trigger something. +@PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_fallback : "Handle calculation failures" +[ + target(string) : "Calculation [LV/P/N]" : "*locus" + netname(string) : "Fallback calculation [LV/P/N]" + message(string) : "Fire if fallback used" +] + +//NEW 1.8 +//* To use this, simply refer to it in any field that's designated [LN]. +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_subratio : "Calculate number based on entity properties" +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfroment : "Calculate number based on entity properties" +[ + target(string) : "Entity to use [LE]" : "*locus" + skin(choices) : "Number to get" : 0 = + [ + 2: "Number of entities" + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LN]. +//OLD @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_ratio : "Number adjustment" +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromnum : "Number adjustment" +[ + target(string) : "Based on number [LN]" : "*locus" + impulse(choices) : "Calculation" : 0 = + [ + 0 : "None" + 1 : "Reversed (1-X)" + 2 : "Negative (-X)" + 3 : "Reciprocal (1/X)" + 4 : "Square (X*X)" + 5 : "Inverse Square (1/X*X)" + 6 : "Square root" + 7 : "Cosine" + 8 : "Sine" + 9 : "Tangent" + 10 : "Inverse Cosine" + 11 : "Inverse Sine" + 12 : "Inverse Tangent" + ] + netname(string) : "Offset by [LN]" : "0" + + message(string) : "Scale factor [LN]" : "1" + + noise(string) : "Min (blank = none) [LN]" + noise1(string) : "Max (blank = none) [LN]" + frags(choices) : "If outside range" : 0 = + [ + //* e.g. if the range were 0%-100%, and the value were 120%, the result would be 100%. + 0 : "Pick nearest value" + //* In the case above, the result would be 20%. + 1 : "Wrap around" + //* In the case above, the result would be 80%. + 2 : "Bounce back" + //* Treated as 0. Or you can catch this failure with calc_fallback. + 3 : "Fail" + ] +] + +//NEW 1.8 +//* To use this, simply refer to it in any field that's designated [LN]. +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromvec : "Calculate number based on vector" +[ + target(string) : "Vector to use [LV]" : "*locus" + noise(string) : "Swizzle/replace elements": "X Y Z" + netname(string) : "Vector B [LV]" : "0 1 0" + noise1(string) : "Swizzle/replace elements B": "X Y Z" + impulse(choices) : "Number to get" : 0 = + [ + 0: "X" + 1 : "Y" + 2 : "Z" + 3 : "Length" + 4 : "Pitch" + 5 : "Yaw" + 6 : "Min X (of A/B)" + 7 : "Max X (of A/B)" + 8 : "Min Y (of A/B)" + 9 : "Max Y (of A/B)" + 10 : "Min Z (of A/B)" + 11 : "Max Z (of A/B)" + 20 : "Angle from B" + //* i.e. the cosine of the angle between them. + 21 : "Component in B" + 22 : "Length/B's Length" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LP]. +//OLD @PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_position : "Calculate position" +@PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_posfroment : "Calculate position" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Position to calculate" : 1 = + [ + 0 : "Origin" + 1 : "Eyes" + 2 : "Top" + 3 : "Centre" + 4 : "Bottom" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + //* Return a random point from within the entity's bounding box. + 9 : "Random" + ] + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + 1 : "Debug" : 0 + ] +] + + + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_subvelocity : "Calculate velocity based on entity properties" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfroment : "Calculate velocity based on entity properties" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Value to calculate from" : 0 = + [ + 0 : "Movement Velocity" + 1 : "Angle" + 2 : "View Angle" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + ] + noise(string) : "Scale factor [LN]" : "1.0" + message(string) : "Add offset [LV]" : "0 0 0" + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + 1 : "Normalize" : 0 +// 2 : "Flip Vertical" : 0 +// 4 : "Discard X" : 0 +// 8 : "Discard Y" : 0 +// 16 : "Discard Z" :0 + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//* This calculates the velocity that would be needed to travel from one point to another. +//* By default, things will take 0.1 seconds to travel this distance. (Use the "length +//* factor" setting to change this.) +//* This can also be used to calculate (for example) where a beam's endpoint should +//* be, in order for it to point towards a given location. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_path : "Calculate velocity for travelling" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfrompos : "Calculate velocity for travelling" +[ + target(string) : "Start position [LP]" : "*locus" + netname(string) : "Destination" + armorvalue(choices) : "Destination is" : 0 = + [ + //* The destination is the end position. + 0 : "Position [LP]" + //* To find the end position, add this offset to the start position. + 1 : "Offset [LV]" + ] + health(choices) : "Length Calculation" : 0 = + [ + 4 : "Square (X = X*X)" + 0 : "None (X = X)" + //* With this choice, the actual distance between the points is ignored. + //* So instead of taking a fixed time to travel, the object will move at + //* a fixed speed, or the beam will extend a fixed distance. + 1 : "Normalise (X = 1)" + 2 : "Reciprocal (X = 1/X)" + 3 : "Inverse Square (X = 1/X*X)" + ] + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + //* A negative number here will make the line go in the opposite direction. + noise(string) : "Length factor [LN]" : "1.0" + //* If this is set, a line will be drawn from the start position to the end + //* position. The first obstacle it hits will then be used as the new end + //* position. + frags(choices) : "Line is blocked by" : 0 = + [ + 0 : "Nothing" + 1 : "Walls" + 2 : "Walls & Glass" + 3 : "Walls & Monsters" + 4 : "Walls, Monsters & Glass" + ] + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + 1 : "Debug mode" : 0 + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_polar : "Calculate velocity" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfromvec : "Modify velocity" +[ + netname(string) : "Based on velocity [LV]" : "0 1 0" + //* Rotate the velocity by this amount. + noise1(string) : "Rotated by angle [PYR]" : "0 0 0" + //* Scale the velocity by this factor. + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + noise(string) : "Length factor [LN]" : "1.0" + //* After rotation and scaling, add this offset to the velocity. + message(string) : "Add offset [LV]" : "0 0 0" + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + //* The "length factor" field will set the exact length of the velocity, + //* instead of scaling it by a factor. + 1 : "Normalize" : 0 + ] +] + +// +// cyclers +// + +// This entity is probably obsolete, now that env_model exists. +@PointClass base(Targetname, RenderFields, MoveWith) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" +] + +@PointClass base(Targetname, RenderFields, MoveWith) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 +] + +@PointClass base(Monster, MoveWith) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" [] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) iconsprite("sprites/envbeam.spr") size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + //* If you only give the beam one endpoint, then radius will specify how + //* far away the other endpoint should be (randomly) placed. + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "0" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Distortion (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (-1 = never)" : "0" + //NEW 0.6 + //* If you use a negative number for the damage, it'll now heal the target. + damage(string) : "Damage / second" : "0" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 128 : "Crowbar" + 256 : "Electric shock" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire on trip" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + spawnflags(flags) = + [ + //* This is the default unless you specify a name. + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + //* Makes the beam form a circle, with a diameter that stretches between the two endpoints. + //* For some unknown reason, both endpoints must have a model. + //* NB: because the beam will stretch between the origins of the two entities, you'll + //* need to give each endpoint an origin brush. + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //NEW 0.4 + //* For making a rope, etc. + //* NB: this flag will be ignored unless the beam's Life is 0. + //* This also won't work on a Ring beam. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* If you specify an "entity to trail", a trail will be attached or removed from the entity you +//* specify. The trail will turn off automatically if the +//* entity remains stationary for a few seconds, or alternatively you can turn it on and off by +//* triggering the env_beamtrail. +//* If you don't specify an "entity to trail", the env_beamtrail itself will have a trail; in that case +//* you probably want to tell it what entity it should MoveWith. +//* Neither version will do anything if the trailed entity isn't moving when you activate the trail. +//* The trail effect doesn't correspond exactly to with the movement of the entity, so don't expect too +//* much from it. We're not mapping for UT2003 here. +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_beamtrail : "Beam trail effect" +[ + target(string) : "Entity to trail (blank = this) [LE]" + netname(sprite) : "Sprite Name" : "sprites/smoke.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + armorvalue(integer) : "Width" : 5 + health(string) : "Fade time (secs)" : "4.0" + spawnflags(flags) = + [ + 1: "Start off" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_beverage : "Beverage Dispenser" +[ + target(string) : "Initial position (blank = here) [LP]" + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/env.spr") = env_blood : "Blood Effects" +[ + target(string) : "Initial position (blank = here) [LP]" + netname(string) : "Direction (blank = angles) [LV]" + color(choices) : "Blood Color" : 0 = + [ + 0: "Red (Human)" + 1: "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +//* Bubbles cannot drift sideways with this entity; use an @env_model and +//* "models/pipe_bubbles.mdl" instead. +@SolidClass base(Targetname, ZHLTLightKeys, MoveWith) iconsprite("sprites/env.spr") = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +//NEW 0.4 +//* Works like an @env_render: you trigger it to change the properties of the target. +@PointClass iconsprite("sprites/env.spr") = env_customize : "Change entity properties" +[ + //* Leave this blank to have it take effect as soon as the level starts. + targetname(target_source) : "Name" + //* You can also specify a classname here, e.g. monster_barney. + target(string) : "Target to affect [LE]" + //* If the target is a classname, the game picks a random monster of that type from within this + //* search radius. This has no effect if the target is anything except a classname. + m_flRadius(integer) : "Search Radius" : 512 + //* Player: 0 = gordon's head, 1 = helmeted. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + //* Note that this entity can only change their appearance- for example, grunts who had shotguns will still fire shotgun rounds. + body(choices) : "Set body" : -1 = + [ + -1 : "No change" + ] + //* Scientists and Human Grunts: 1 = black skin. + //* Bullsquids, Houndeyes, Slaves: 1 = eyes shut. + //* Ichthyosaur: 0-4 = different eye positions. + skin(choices) : "Set skin" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Skin 0 (normal)" + 1 : "Skin 1" + 2 : "Skin 2" + 3 : "Skin 3" + ] + //* If the target is a brush entity with a switchable texture (one with both a +0 version and + //* a +A version), then this switches between the two versions. + //* If the entity has switchable texlights on it, this will also turn those lights on and off. + frame(choices) : "Set brush texture" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Texture 0 (normal)" + 1 : "Texture 1 (alternate)" + //* With this set, triggering the env_customize On makes the target + //* use its normal texture, and Off makes it use the alternate one. + 4: "On/Off based on usetype" + //* The opposite of the previous setting; On sets the alternate texture, + //* Off sets the normal one. + 5: "Off/On based on usetype" + ] + //* Use this setting with caution - a lot of a monster's behaviour is + //* determined by its model. (You should be safe if the new model is just + //* a set of different textures.) + m_iszModel(string) : "Set model (e.g. models/can.mdl)" + m_bloodColor(choices) : "Blood Color" : 0 = + [ + 0 : "No change" + -1 : "Don't Bleed" + 247 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* Change the pitch of the monster's voice (100 = normal pitch, higher numbers = higher pitch) + m_voicePitch(choices) : "Voice Pitch (100 = normal)" : -1 = + [ + -1 : "No change" + ] + //* >1 = fast + //* 1 = normal speed + //* 0..1 = slow + //* 0 = stop + //* -1 = no change + m_fFramerate(string) : "Frame rate (-1 = no change)" : "-1" + //* Sets: + //* agrunt.mdl: head position (45..-45) + //* hgrunt.mdl: head position (70..-70) + //* barney.mdl, gman.mdl, islave.mdl, scientist.mdl: head position (60..-60) + //* apache.mdl: gun yaw (90..-90) + //* barnacle.mdl: tongue length (0..-1024) + //* garg.mdl: body yaw (60..-60) + //* osprey.mdl: rotor angle (0..-90) + //* icky.mdl: tail position (45..-45) + //* miniturret.mdl, sentry.mdl, turret.mdl: gun yaw (0..360) + m_fController0(choices) : "Bone controller 0" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* Sets: + //* apache.mdl: gun pitch (45..-10) + //* (mini)turret.mdl: gun pitch (15..-90) + //* sentry.mdl: gun pitch (60..-60) + //* garg.mdl: body pitch (35..-35) + m_fController1(choices) : "Bone controller 1" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController2(choices) : "Bone controller 2" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController3(choices) : "Bone controller 3" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_iClass(choices) : "Set behaviour" : 0 = + [ + 0 : "No change" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : -1 = + [ + -1 : "No Change" + //* That is, normal for the monster's current behaviour. + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. The monster will + //* stop being friendly when hurt by the player, regardless of + //* how. (e.g. even if they stupidly ran into the middle of a firefight.) + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. The monster will + //* stop being friendly when shot deliberately by the player, + //* but not when (for instance) caught in grenade explosions, or in the + //* middle of combat. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist, + // following the player on request. + //5 : "Follower" + ] + //* If you want the entity to be partly transparent, use @env_render instead. + m_iVisible(choices) : "Visibility" : 0 = + [ + 0: "No change" + 1: "Visible" + 2: "Invisible" + 3: "Toggle" + //* Trigger the env_customize On for visible, and Off for invisible. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for visible, and On for invisible. + 5: "Off/On based on usetype" + ] + //* Currently, this will cause problems if used to solidify a non-monster, + //* non-brush entity. + //* Note that a @func_ladder will still act as a ladder if you make it + //* non-solid. + m_iSolid(choices) : "Solidity" : 0 = + [ + 0: "No change" + 1: "Solid" + 2: "Not Solid" + 3: "Toggle" + //* Trigger the env_customize On for solid, and Off for non-solid. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for solid, and On for non-solid. + 5: "Off/On based on usetype" + ] + m_iPrisoner(choices) : "Prisoner" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On for a prisoner, and Off for a non-prisoner. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for a prisoner, and On for a non-prisoner. + 5: "Off/On based on usetype" + ] + m_iMonsterClip(choices) : "MonsterClip flag" : 0 = + [ + 0: "No change" + 1: "On" + 2: "Off" + 3: "Toggle" + //* Trigger the env_customize On to use Monsterclip, and Off to not use it. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to use Monsterclip, and On to not use it. + 5: "Off/On based on usetype" + ] + //* Applies to barneys, scientists, "Friendly until hurt" and "Friendly + //* until provoked" monsters, and overrides these monsters' usual liking + //* for the player- e.g. as if the player had shot them. + m_iProvoked(choices) : "Angry At Player" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On to be angry, and Off to calm down. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to be angry, and On to calm down. + 5: "Off/On based on usetype" + ] + spawnflags(flags) = + [ + 1: "Affect corpses" : 0 + 2: "Once Only" : 0 + 4: "Debug" : 0 + ] +] + +//NEW 0.7.1 +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_decal : "Decal sprayer" +[ + target(string) : "Position (blank = here) [LP]" + netname(string) : "Spray direction (blank = angle) [LV]" + message(string) : "Max distance (blank = none) [LN]" + impulse(choices) : "Decal group" : 0 = + [ + 1 : "Gunshot" + 5 : "Big gunshot" + 2 : "Blood" + 3 : "Alien blood" + 4 : "Glass cracks" + 6 : "Scorch marks" + 7 : "Bullsquid splat" + 0 : "Custom (see below)" + ] + noise(sprite) : "Custom decal texture" +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. +//* Note that this primarily lights the world (i.e. brushes); studio models will +//* pick up the lighting if they're standing in it, but they'll just be a solid colour. +//* To just light studio models, see @env_elight. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_dlight : "Dynamic light effect" +[ + message(string) : "Position (blank = here) [LP]" + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + renderamt(integer) : "Radius" : 12 + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. Only lights studio models +//* (e.g. monsters), but does light them properly. Quite pretty. +//* See @env_dlight if you want to light the walls, etc. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_elight : "Entity light effect" +[ + netname(string) : "At position (blank = here) [LP]" + target(string) : "Entity to follow (blank = this) [LE]" + impulse(choices) : "Attachment point on that entity" : 0 = + [ + 0 : "None" + 1 : "1" + 2 : "2" + 3 : "3" + 4 : "4" + ] + renderamt(integer) : "Radius" : 12 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.4 +//* Essentially, this produces a shifting group of parallel beams. I've called it +//* env_rain because that's the most-requested use for it. +//* For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, +//* Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr. +//* For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, +//* Drip Sprite = sprites/rain.spr. +@SolidClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_rain : "Rain Effect" +[ + //* Set this to (for example) "70 0 0" to make slanted rain. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + //* Negative numbers will make the rain fall upwards. + //* This is an average; each drip will move at between 75%-125% of this speed. + m_dripSpeed(integer) : "Drip Speed" : 40 + m_dripSize(integer) : "Drip Width" : 5 + m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 + rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" + m_iNoise(integer) : "Beam noise (distortion)" : 0 + m_burstSize(integer) : "Number of drips per update" : 2 + //* If 0, no updates; all the beams will appear as soon as it's activated. + m_flUpdateTime(string) : "Time between updates" : "0.5" + m_flMaxUpdateTime(string) : "Max time between updates (random)" + target(string) : "Fire on updating" + m_fLifeTime(string) : "Beam Lifetime (0 = three updates)" + texture(sprite) : "Drip Sprite" : "sprites/rain.spr" + m_axis(choices) : "Beam Direction" : 0 = + [ + 0 : "Z axis (vertical)" + 1 : "X axis" + 2 : "Y axis" + ] + m_iExtent(choices) : "Extent type" : 1 = + [ + 0 : "Fill brush" + 1 : "Obstructable" + 3 : "Reverse obstructable" + 2 : "Arcing" + 4 : "Reverse arcing" + 5 : "Arcing Through" + ] + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@SolidClass base(Targetname, MoveWith) = env_mirror : "Mirror" +[ + radius(integer) : "Radius" : 330 + frags(string) : "Frags ([SF]blank for auto)" + spawnflag(flags) = + [ + 1 : "Draw Player" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_explosion : "Explosion" +[ + target(string) : "Initial position (blank = here) [LP]" + iMagnitude(integer) : "Magnitude/Radius" : 100 + spawnflags(flags) = + [ + 1 : "No Damage" : 0 + 2 : "Repeatable" : 0 + 4 : "No Fireball" : 0 + 8 : "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + //* If activated by a player, that player's screen will fade, + //* but other players will be unaffected. + 4: "Activator Only" : 0 + //NEW 0.7.1 + //* Ignore the hold time; just fade out permanently. + //* (To fade back in, you'll need to use another env_fade.) + 8: "Permanent" : 0 + 16: "Fire at Camera" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fog : "Fog effect, DMC stylee" +[ + fadein(integer) : "Fade in time" : 0 + holdtime(string) : "Hold time (0 = permanent)" : "0" + fadeout(integer) : "Fade out time" : 0 + startdist(integer) : "Fog start position" : 0 + enddist(integer) : "Fog end position" : 1000 + rendercolor(color255) : "Fog Color (R G B)" : "255 255 255" + spawnflags(flags) = + [ + 1 : "Start active" : 0 + ] +] + +//NEW 0.6 +//* To set the player's footstep sounds, trigger this entity 'on'. To revert to normal, +//* trigger it 'off' in the same way. +//* Alternatively, you can just toggle it, to alternately set and unset the sounds. +//* If one of the sound fields is left blank, it will have no effect... so if you +//* actually want it to become silent, choose common/null.wav. +//* This entity is probably most useful as the "fire on/off" target of a trigger_inout, +//* to specify the area over which the footsteps are to be changed. +@PointClass base(Targetname, Master) iconsprite("sprites/env.spr") = env_footsteps : "Change Movement Sounds" +[ + frags(choices) : "Preset Footstep type" : 0 = + [ + 0 : "Custom (see below)" + -1 : "Concrete" + 1 : "Metal" + 2 : "Dirt" + 3 : "Vent" + 4 : "Grate" + 5 : "Tile" + 6 : "Paddling" + 7 : "Wading" + 8 : "Ladder" + ] + //* Here, you can either specify a single sound file as normal, or else specify + //* a group of 4 sounds by inserting '?' instead of the number 1-4. + //* (for example, to play a random sound in the range player/pl_step1.wav to + //* player/pl_step4.wav, you would write 'player/pl_step?.wav'.) + //* (This works on the other sound fields, too.) + noise(sound) : "Custom Footstep sound" + noise1(sound) : "Ladder sound" + noise2(sound) : "Wading sound" + noise3(sound) : "Paddling sound" + spawnflags(flags) = + [ + 1: "Set only" : 0 + 2: "Once only" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_funnel : "Large Portal Funnel" +[ + //NEW 0.7.1 + message(string) : "Position (blank = here) [LP]" + //NEW 0.7.1 + //* Default: sprites/flare6.spr + netname(sprite) : "Particle sprite" + spawnflags(flags) = + [ + 1: "Reverse" : 0 + //NEW 0.5 + 2: "Repeatable" : 0 + ] +] + +//* See also @env_state +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger to send" : 3 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) color(30 100 0) iconsprite("sprites/env.spr") = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_laser : "Laser Beam Effect" +[ + //NEW 1.0 + LaserStart(target_destination) : "Start At (blank = here) [LP]" + LaserTarget(target_destination) : "Fire Towards" + m_iTowardsMode(choices) : "Meaning of Fire Towards" : 0 = + [ + 0 : "Position [LP]" + 1 : "Direction [LV]" + ] + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + //NEW 1.0 + //* If you want, you can name an env_sprite here, and the laser will use that as its start sprite. + StartSprite(sprite) : "Start Sprite" : "" + //* If you want, you can name an env_sprite here, and the laser will use that as its end sprite. + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + //NEW 0.6 + //* If you specify a negative number here, the target will be healed instead. + damage(string) : "Damage / second" : "100" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (continuous)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire when tripped" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + //NEW 0.6 + m_iProjection(choices) : "Projection mode" : 0 = + [ + 0: "Normal" + //* With this enabled, the laser's Target position only specifies + //* the direction. The beam can actually extend beyond it. + 1: "Extend past endpoint" + ] + //NEW 0.6 + m_iStoppedBy(choices) : "Stopped by" : 0 = + [ + 0: "Glass & Monsters" + 1: "Monsters only" + //* Monster hulls are a little bigger than monster hitboxes, + //* so with this option the beam will be more likely to hit them. + 2: "Glass & Monster hulls" + 3: "Monster hulls only" + 4: "Glass only" + 5: "Neither" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + //NEW 0.6 + 1024: "Interpolate" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio() = env_model : "New alternative to cyclers" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + ] +] + +//NEW 0.7.1 +//* Creates various particle effects when triggered. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_quakefx : "Quake 1 particle effects" +[ + message(string) : "Position (blank = here) [LP]" + impulse(choices) : "Effect type" : 4 = + [ + //* A burst of twinkly orangey particles, with explosion sound effect. + //* Quite pretty. + //* (As seen in Quake when the blob monsters are killed.) + 4 : "Tar Explosion" + //* A strange field of red particles. + 10 : "Lava Splash" + //* A smallish mass of white particles. + //* (As seen in Quake when a player spawns or teleports.) + 11 : "Teleport Splash" + //* A burst of yellowy-white particles, with explosion sound effect. + //* (As seen in Quake when a grenade or rocket goes off.) + 12 : "Explosion" + //* An expanding cube of particles. Quite pretty. + 122 : "Particle Burst" + ] + //* Used only by Particle Burst. This is an index into the + //* standard engine palette; e.g. 247 is human blood, 195 is alien blood. + frags(integer) : "Particle Burst: color number" : 70 + armortype(integer) : "Particle Burst: radius" : 300 + health(string) : "Particle Burst: duration" : "1.0" + spawnflags(flags) = + [ + 1: "Repeatable" : 0 + ] +] + +@PointClass base(Targetname, Angles) = env_paper : "Paper entity" +[ + message(string) : "TXT file to read" : "" + noise(string) : "Title" : "" +] + +//NEW 1.2 +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFields) size (-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_particle : "Particle Effect" +[ + message(string) : "Particle file" : "aurora/smoke.aur" + netname(string) : "Child Particles name" + spawnflags(flags) = + [ + 1: "Start On" : 0 + 2: "Spawn Use" : 0 + ] +] + + +@PointClass base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + //NEW 0.7.1 + //* The Renderamt number will be multiplied by this factor. + message(string) : "FX Amount factor [LN]" + //NEW 0.7.1 + //* Set the scale of the affected model or sprite. + //* (If Fade Time is set, the scale will change slowly over time.) + m_fScale(string) : "Scale (0 = no change) [LN]" + target(target_destination) : "Target to affect [LE]" + //NEW 0.5 + //* If you set this, the affected entity (or entities) will fade + //* progressively to the new settings you specify. Only Renderamt + //* and rendercolor will fade; the other values will change + //* instantly, as usual. + frags(string) : "Fade Time (secs)" : "0" + //NEW 0.5 + //* The frequency at which the fade gets updated. If left blank (or + //* set to 0), it updates as fast as possible. + //* You probably won't need to set this unless you actually want + //* it to look coarse. + //* If a lot of entities are fading at the same time, and + //* you find the game is slowing down, you may want to try setting + //* this to 0.2 or so. + armorvalue(string) : "Fade Coarseness (secs)" + //NEW 0.5 + netname(string) : "Trigger after fading" + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + //NEW 0.7.1 + //* Useful if you want something to fade out and then be removed. + 32: "Remove target" : 0 + //NEW 0.7.1 + //* The env_render will killtarget itself after use. + 64: "Remove self" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +//NEW 0.5 +//* Creates a shockwave effect (like @monster_houndeye) when triggered. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shockwave : "Shockwave Effect" +[ + spawnflags(flags) = + [ + //* Normally, the env_shockwave entity marks the bottom of the shockwave. + //* Tick here to mark its centre instead. + 1: "Centered" : 0 + 2: "Repeatable" : 0 + ] + m_iszPosition(string) : "Position (blank = here) [LP]" + netname(string) : "Spritename" : "sprites/shockwave.spr" + rendercolor(string): "Color": "188 220 255" + renderamt(integer) : "Opacity (0-255)": 255 + m_iTime(integer) : "Duration" : 2 + m_iRadius(integer) : "Final radius" : 1000 + m_iHeight(integer) : "Wave height" : 32 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_iNoise(integer) : "Distortion ('noise')" : 0 + m_iFrameRate(integer) : "Frame Rate" : 0 + m_iStartFrame(integer) : "Starting Frame" : 0 +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) studio()= env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "sprites/ballsmoke.spr" + noise(string) : "Scale [LN]" : "" + skin(integer) : "Skin" : 0 + body(integer) : "Body (models only)" + //NEW 0.7.1 + frame(integer) : "Start frame" : 0 + //NEW 0.7.1 + framerate(string) : "Framerate" : "10.0" + //NEW 0.7.1 + m_iPhysics(choices) : "Behaviour of children" : 0 = + [ + 0: "Bouncy gib (normal)" + //* When it hits a wall, it sticks. + 1: "Sticky gib" + //* Not affected by walls or gravity + 2: "Noclip" + //* Stopped by walls, ignore gravity + 3: "Fly (ignore gravity)" + //* Bounce off walls, ignore gravity + 4: "Fly & bounce" + //* Blocked by walls, affected by gravity + 5: "Arc (obey gravity)" + //* Bounce off walls, affected by gravity + 6: "Arc & bounce" + ] + //NEW 0.7.1 + //* Used by the "bouncy gib" and "sticky gib" behaviours. + m_iBloodColor(choices) : "Blood color" : 0 = + [ + 0 : "Don't bleed" + 247 : "Red (human)" + 195 : "Yellow (alien)" + ] + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + //* debris/glass1-4.wav + 0: "Glass" + //* debris/wood1-4.wav + 1: "Wood" + //* debris/metal1-6.wav + 2: "Metal" + //* debris/flesh1-7.wav + 3: "Flesh" + //* debris/concrete1-3.wav + 4: "Concrete" + ] + //NEW 0.7.1 + m_fFriction(string) : "Bounce height" : "0.55" + //NEW 0.7.1 + //* If you need access to both the entities involved in a collision, try targetting + //* a locus_alias with this field. Then, target the effect you actually want with the + //* "locus = wall" field, and you'll be able to refer to the shot via the alias. + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouch(string) : "Fire on collision (locus = shot)" + //NEW 0.7.1 + //* This won't be fired when the shot hits a wall that's not tied to an entity. + //* (But a func_wall works fine.) + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouchOther(string) : "Fire on collision (locus = wall)" + //NEW 0.7.1 + m_vecSize(string) : "Shot size (X Y Z)" : "0 0 0" +] + +//NEW 1.1 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_sky : "Unreal-Tournament style sky view" +[ +] + +@PointClass base(Master, MoveWith) iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + //NEW 0.5 + //* If set, the env_sound won't use its Radius- it will simply take effect when triggered. + targetname(target_source) : "Name" + target(target_destination) : "Fire when activated" + radius(integer) : "Radius" : 128 + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_spark : "Spark" +[ + target(string) : "Initial position (blank = here) [LP]" + MaxDelay(string) : "Max Time between sparks" : "0" + spawnflags(flags) = + [ + 16: "Cyclic" : 0 + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + message(string) : "Attached to entity..." + frags(choices) : "...at attachment point" : 0 = + [ + 0 : "0" + 1 : "1" + 2 : "2" + 3 : "3" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +//NEW 0.3 +//* Simply keeps track of a state. Useful as a master or a conditional "branch". +@PointClass base(Targetname, Master) color(128 128 255) iconsprite("sprites/env.spr") = env_state : "Local State" +[ + target(target_destination) : "Target (on & off)" + noise1(target_destination) : "Fire when turned on" + noise2(target_destination) : "Fire when turned off" + //* If the env_state gets turned off before it finishes turning on, + //* the "fire on turning on" target will never get triggered. This is very + //* useful for setting up "if you stay in this area for 5 seconds" type triggers. + turnontime(string) : "Time taken to turn on" : "0" + turnofftime(string) : "Time taken to turn off" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + //* If you're trying to work out what's actually happening in your level, + //* try ticking here and the env_state will tell you when it triggers, etc. + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.4 +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_warpball : "Teleport-in effect" +[ + target(string) : "Initial position (blank = here) [LP]" + health(string) : "Max lightning-arc length" : "90" + frags(integer) : "Number of lightning bolts" : 12 +] + +@SolidClass base(Breakable, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight) = func_breakable : "Breakable Object" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global, LockSounds) = func_button : "Button" +[ + speed(integer) : "Speed" : 25 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" : 0 + //* The number against each sound (except Lightswitch) corresponds to the wav file + //* played. e.g. Buzz (10) plays "buttons/button10.wav". + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup (1)" + 2: "Access Denied (2)" + 3: "Access Granted (3)" + 4: "Quick Combolock (4)" + 5: "Power Deadbolt 1 (5)" + 6: "Power Deadbolt 2 (6)" + 7: "Plunger (7)" + 8: "Small zap (8)" + 9: "Keycard Sound (9)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + //* buttons/lightswitch2.wav + 14: "Lightswitch" + ] + wait(choices) : "Delay before Reset" : 0 = + [ + -1 : "Stays pressed (-1)" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + //NEW 0.7.1 + //* Normally, the player can use buttons through walls etc. Tick here to + //* prevent that. + //* (With this set, it's also impossible to use the button unless it's in + //* the centre of the player's crosshairs. So at last, control panels can + //* have their buttons close together!) + //* Don't combine this with Not Solid - the button will become unusable. + 16: "Direct use only": 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 128: "Not Solid" : 0 + 256:"Touch Activates": 0 + //NEW 0.4 + //* Normally, a button can be activated with the Use key. Tick here to disable that behaviour. + //* If "Touch activates" is also selected, this flag will instead enable the use key. + 512:"Can't Use" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door : "Basic door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + acceleration(integer) : "Acceleration '0' for infinite" : 0 + deceleration(integer) : "Deceleration '0' for infinite" : 0 +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door_rotating : "Rotating door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, MoveWith, RenderFields, ZHLTLightKeys) = func_friction : "Surface with a change in friction" +[ + //* 0% = No friction, 100% = Normal Friction + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire when damaged" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_healthcharger: "Wall health recharger" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_illusionary : "Fake Wall/Light" +[ + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + -17:"Zero-G" + -18:"Hover-Field" + -19:"Fog effect" + -20:"Special 1 (Particles)" + -21:"Special 2 (Particles)" + -22:"Special 3 (Particles)" + + + ] + _minlight(string) : "Minimum light level" +] + +//* Creates an invisible, climbable field. +//* To show the actual ladder image, either add a @func_illusionary covered with a {ladder texture, or tick the Visible flag. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_ladder : "Ladder" +[ + spawnflags(flags) = + [ + //NEW 0.5 + 1 : "Visible" : 0 + ] +] + +//* Also prevents hlcsg.exe from making a path between two @info_node entities on opposite sides of the brush. +@SolidClass base(Targetname, MoveWith) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname, MoveWith) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +//* Only partially implemented, some keys don't work properly. +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Appearflags) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 8 : "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +//* With any luck, I've fixed the bug which caused players to sometimes be frozen. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLTLightKeys) = func_pushable : "Pushable object" +[ + spawnflags(flags) = + [ + 128: "Breakable" : 0 + //NEW 0.3 + //* Tick here if the crate can only ever be pushed. + 512: "Can't Pull" : 0 + //NEW 1.8 + //* Don't let the pushable go faster than the person pushing it. + //* This also fixes a bug with HL pushables - if you hold "use" + //* while pushing them, they get pushed really hard. + 1024: "Smooth push" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_recharge: "Battery recharger" +[ + _minlight(string) : "Minimum light level" +] + +//* Like @func_button, except it rotates. +@SolidClass base(Targetname, Target, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Master, LockSounds) = func_rot_button : "RotatingButton" +[ + //* if set, then when the button is pressed, the "target" field of the entity targetted by the button will be set to this value. + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + health(integer) : "Health (shootable if > 0)" + //* The number against each sound corresponds to the wav file + //* played. e.g. Squeaky (1) plays "buttons/lever1.wav". + sounds(choices) : "Sounds" : -1 = + [ + -1: "None" + 21: "Squeaky (1)" + 22: "Squeaky Pneumatic (2)" + 23: "Ratchet Groan (3)" + 24: "Clean Ratchet (4)" + 25: "Gas Clunk (5)" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + //NEW 0.7.1 + //* See the notes about this on @func_button. + 16: "Direct use only" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128:"Y Axis" : 0 + 256:"Touch Activates" : 0 + 512:"Invert '+Use'able" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_rotating : "Rotating Object" +[ + //* This sets the initial orientation of the entity, but that could + //* be achieved by simply rotating the brushes, in Worldcraft. + //* More importantly, it will change the position of the axes + //* the entity pivots around. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + speed(integer) : "Rotation Speed" : 30 + //NEW 0.5 + //* This field overrides the "X Axis" and "Y Axis" flags. It's + //* mostly useful to make a complex orbit for an object. (If you + //* just want to have a tilted axis for an otherwise normal rotating + //* object, you'll want to change the "angle" field instead.) + //* For example, set this field to "0 12 1" and the Z axis will + //* rotate 12 times in the time it takes the X axis to complete one + //* turn. (the entity will also turn 12 times faster than the + //* Rotation Speed you specify.) + //* NB: The way the quake engine handles rotation is not exactly + //* intuitive. The Z axis (Yaw) is the primary axis, so rotation around + //* the Y and X axes will be affected by the current Z position. + //* Similarly, the Y axis (Pitch) is the secondary axis, so rotation + //* around the X axis (Roll) will be affected by the current Y + //* position. + //* To get a feel for how this works, try making a func_rotating + //* cube whose origin is at one corner, set its "axes" value to + //* "1 1 0", and watch how it moves. One edge will simply go around + //* in a horizontal circle, while the rest of the cube rotates + //* around that edge. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + //* The number against each sound corresponds to the wav file + //* played. e.g. Slow Rush (2) plays "fans/fan2.wav". + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine (1)" + 2 : "Slow Rush (2)" + 3 : "Medium Rickety (3)" + 4 : "Fast Beating (4)" + 5 : "Slow Smooth (5)" + ] + //* The sound to play while active. This will only be used if "Fan Sounds" is set to "No Sound". + message(sound) : "WAV Name" :"" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + //* This, and the other "radius" settings, only affect the + //* way the Fan Sounds are played; if you set a small radius, + //* the sounds will only be audible near to the fan. + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +//NEW 1.1 +@SolidClass base(Targetname) = func_shine : "Shiny Surface" +[ + message(sprite) : "Shine sprite" : "sprites/bgspr.spr" + scale(integer) : "Shine scale" : 10 + renderamt(integer) : "Shine brightness (0-255)" : 50 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(Targetname, MoveWith) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" + //NEW 0.5 + //* This specifies how far the player has to move before the controls will dump him off. + //* If you set -1, the player never gets dumped off. (In which case, the + //* func_tankcontrols can only be deactivated by triggering it with another entity.) + frags(integer) : "Tolerance (-1 = total)" : 30 + //NEW 0.5 + //* More crosshair choices will be available in future. + crosshair(choices) : "Crosshair to use" : 0 = + [ + 0: "None" + 4: "MP5" + ] + spawnflags(flags) = + [ + //NEW 0.5 + //* If you tick here, the controls can only be activated by triggering it with + //* another entity. + 1 : "Ignore +Use" : 0 + //NEW 1.0 + 2 : "Visible" : 0 + ] +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankrocket : "Brush Rocket Turret" [] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 4 : "No Reverse" : 0 + 8 : "Passable" : 0 + 16: "No Yaw (Z-rot)" : 0 + ] + target(target_destination) : "First stop target" + //* The number against each sound corresponds to the wav file + //* played. e.g. Rail 1 plays "plats/ttrain1.wav". + sounds(choices) : "Move Sound" : 0 = + [ + 0: "None (or custom)" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + //NEW 0.6 + custommovesound(sound) : "Custom Move Sound" + //NEW 0.6 + //* Default is "plats/ttrain_start1.wav". For silence, use "common/null.wav". + customstartsound(sound) : "Start Sound" + //NEW 0.6 + //* Default is "plats/ttrain_brake1.wav". For silence, use "common/null.wav". + custombrakesound(sound) : "Stop Sound" + //* This setting controls how smoothly the train turns corners - if the wheels are + //* close together, it will turn sharply, and if far apart, it will turn more gradually. + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" + avelocity(string) : "Initial avelocity (Y Z X)" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + avelocity(string) : "Initial avelocity (Y Z X)" + dmg(choices) : "Damage on crush" : 2 = + [ + //NEW 0.3 + -1: "No damage" + ] + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + //NEW 0.5 + //* Usually, the center of the train (in fact, the center of its bounding box) + //* will be the point used when positioning the train at a path_corner. Tick + //* here to use its origin for this instead. + 2 : "Origin on paths" : 0 + //NEW 0.4 + //* This is the default if you don't specify a name. + 4 : "Initially On" : 0 + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//* Note that unlike func_tankcontrols, this defines what area the player must be standing in in order to use the tank. +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +//NEW 1.5, func_walls can now be rotated ingame when they spawn +//This allows you to get around Hammer stuffing up rotating complex brushes +@SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + vuser1(string) : "Rotate by Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target, Master) iconsprite("sprites/game.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_end : "End this multiplayer game" [] + +@PointClass base(Targetname) iconsprite("sprites/game.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 2: "Only once" : 0 + ] + + //NEW 0.6 + target(string) : "Fire when done" + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] + +@SolidClass base(Targetname) iconsprite("sprites/game.spr") = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" +[ + m_iBloodColor(choices) : "Blood color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (human)" + 195 : "Yellow (alien)" + ] +] + + +// +// hud entities +// + +//NEW 1.0 +//* At the moment, this can only display sprites that are defined in sprites/hud.txt, and +//* will always display them in the status icon area on the left of the screen. +//* Bear in mind, the hud isn't displayed unless you have an HEV suit. +@PointClass base(Targetname) = hud_sprite : "Hud Sprite Display" +[ + message(sprite): "Sprite name" : "dmg_poison" + rendercolor(color255) : "Color" : "255 255 255" + spawnflags(flags) = + [ + 1: "Start on" : 0 + ] +] + +// +// info entities +// + +//* If you give a decal a targetname, then it won't appear until fired. +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +//NEW 0.3 +//* An alias makes itself an "alternative name" for an entity. To refer to +//* an entity through the alternative name, use the alias name preceeded by a *. +//* For example, suppose you set up an info_alias entity called 'myalias'. +//* 'Myalias' targets a light called 'redlight'. suppose a you set up a +//* @trigger_once field targetting "*myalias", so that when you walk through the +//* trigger field, redlight gets turned on and off. So far, info_alias seems to +//* be like a @trigger_relay. However, you can also set up a switch which targets +//* "myalias", to turn it off... +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_alias : "Alias" +[ + target(target_destination) : "Reference while On" + netname(string) : "Reference while Off" + mode(string) : "Use Mode, 0= On/Off 1= list mode" : "0" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) iconsprite("sprites/info.spr") = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +//NEW 1.0 +//* Which compile options to use. +@PointClass size(-8 -8 0, 8 8 32) iconsprite("sprites/info.spr") = info_compile_parameters : "Compile Options" +[ + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 1 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 2 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + spawnflags(flags) = + [ + 1 : "Run CSG" : 1 + 2 : " No Clip" : 0 + 4 : " Only Ents" : 0 + 8 : " No Sky Clip" : 0 + 32 : "Run BSP" : 1 + 64 : " Leak Only" : 0 + 128 : " No Clip" : 0 + 256 : "Run VIS" : 1 + 512 : " Fast " : 0 + 2048 : "Run RAD" : 1 + 4096 : " Sparse " : 0 + 8192 : " Circus Mode" : 0 + 16384 : " Extra Mode " : 0 + ] +] + +//NEW 0.4 +//* An info_group acts similarly to an @info_alias, except that it has several +//* "members" which are are accessed by writing 'mygroup.membername'. +//* These members are set up just like the targets of a @multi_manager- except +//* that they'll contain an entity reference instead of a delay time. +//* If you set up its "target" field to refer to an info_alias entity, then when +//* an info_group is triggered, it will change that info_alias entity to target the +//* group. +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_group : "Entity Group" +[ + target(string) : "Alias to change when fired [LE]" + //* If you refer to a group member which hasn't been defined explicitly, + //* but you do define a default prefix here, then the member name will be + //* added to the prefix to generate an appropriate reference. + //* e.g: Suppose an info_group named "bob" defines a default prefix + //* "bobs_". Now; if you refer to, for example, "bob.house" or + //* "bob.gun", you'll actually affect entities named "bobs_house" + //* and "bobs_gun", respectively. + defaultmember(string) : "Default member prefix" + spawnflags(flags) = + [ + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Target, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/info.spr") = info_landmark : "Transition Landmark" [] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_movewith : "Movewith relay" +[ + target(string) : "MoveWith when active" + netname(string) : "MoveWith when inactive" + spawnflags(flags) = + [ + 1 : "Start inactive" : 0 + //* Usually, info_movewith will happily pass straight through a wall. + //* Tick here if you want it to stop when it hits walls. + //* Incidentally, ticking this will also allow it to set off trigger + //* fields, such as @trigger_multiple. + 2 : "Blockable" : 0 + ] +] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) iconsprite("sprites/infonode.spr") = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) iconsprite("sprites/infonode.spr")= info_node_air : "ai air node" [] + +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass, Master, MoveWith) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" +] +@PointClass base(PlayerClass, MoveWith, Sequence) = info_player_start : "Player 1 start" +[ + spawnflags(Flags) = + [ + 1 : "Start with HEV" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/info.spr") = info_target : "Beam Target" +[ + spawnflags(Flags) = + [ + //NEW 0.4 + //* Essentially, this flag forces the game engine to treat an info_target as visible + //* (even though it isn't). This has two effects: + //* 1) Normally if an env_beam is attached to an info_target which can move (via MoveWith), + //* the env_beam won't follow the info_target properly. Ticking here fixes that problem. + //* 2) If an env_beam's "ring" mode is selected, you must make both ends of the beam + //* into 'visible' entities, otherwise the beam won't be displayed. + //* (Note that if you're making a mod and you tell an info_target to use null.spr, you will + //* of course have to distribute null.spr with the mod.) + 1 : "Use null.spr" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass, MoveWith) iconsprite("sprites/info.spr") = info_teleport_destination : "Teleport destination" [] + +//NEW 1.0 +@PointClass color(255 128 0) iconsprite("sprites/info.spr") = info_texlights : "Texture Light Config" [] + + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl")= item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl")= item_antidote : "Poison antidote" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl")= item_battery : "HEV battery" +[ + //NEW 0.7.1 + model(string) : "Model (models/w_battery.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 0.7.1 + body(integer) : "Body" + //NEW 0.7.1 + noise(string) : "Sound (items/gunpickup2.wav)" + //NEW 0.7.1 + armorvalue(integer) : "Charge by (0 = normal)" +] +//NEW 1.4 +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_flashlight.mdl")= item_flashlight : "FlashLight" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl")= item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl")= item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl")= item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Light, ZhltLights) = light : "Invisible lightsource" +[ + target(string) : "Target to shine at" + firetarget(string) : "Target to trigger" + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +//NEW 0.5 +//* See also @env_dlight. +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Targetname, MoveWith) = light_glow : "Dynamic Glow" +[ + frags(choices) : "Glow Type" : 1 = + [ + 2: "Brightest" + 1: "Flashlight" + 0: "None" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + 2 : "Flare" : 0 + ] +] + +@PointClass base(Angles, ZhltLights) color(255 255 128) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Target, Light, ZhltLights) = light_spot : "Spotlight" +[ + firetarget(string) : "Target to trigger" + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 +// _light(color255) : "Brightness" : "255 255 128 200" + _sky(choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = momentary_door : "Momentary/Continuous door" +[ + //NEW 0.4 + //* Maximum speed the door is allowed to move at. + speed(choices) : "Speed" : 100 = + [ + 0: "No limit" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + stopsnd(choices) : "Stop sound" : 0 = + [ + 0 : "No Sound" + 1 : "Clang with brake" + 2 : "Clang Reverb" + 3 : "Ratchet stop" + 4 : "Chunk" + 5 : "Light Airbrake" + 6 : "Metal Slide Stop" + 7 : "Metal Lock Stop" + 8 : "Snappy Metal Stop" + ] + lip(integer) : "Lip" + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//NEW 0.7.1 +//* Stores a reference to an entity. Whenever the alias is triggered, +//* it changes to record what triggered it. +//* Thereafter, you can refer to that entity by *aliasname (where aliasname is the name +//* of the locus_alias). +//* Note that this records a specific entity - unlike @info_alias which +//* records the name of an entity. So info_alias always refers to all entities with a particular +//* name, whereas locus_alias always refers to one specific entity. +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = locus_alias : "Locus System - Entity variable" +[ + netname(string) : "Initial value" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_beam : "Locus System - Beam effect" +[ + m_iszStart(string) : "Start at (blank = here)" : "" + m_iszEnd(string) : "End at (blank = here)" : "*locus" + impulse(choices) : "Start & End are" : 0 = + [ + 0: "Entity & Entity [LE LE]" + 1: "Entity & Position [LE LP]" + 2: "Position & Position [LP LP]" + 3: "Position & Direction [LP LV]" + ] + m_iszSprite(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + m_iWidth(integer) : "Width" : 10 + m_iDistortion(integer) : "Distortion ('noise')" : 0 + m_fFrame(integer) : "Start frame" : 0 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_fDuration(string) : "Duration (0 = unlimited)" : 0 + m_fDamage(string) : "Damage amount" : 0 + m_iDamageType(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Blood Loss" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Internal bleeding" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + m_iszTargetName(target_source) : "Name of children" + target(target_destination) : "Fire on spawn (locus = child)" + spawnflags(flags) = + [ + //* This will only work if "Start & End" is set to "Entity & Entity". + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* As the name suggests, this acts like a variable in a programming language. It +//* stores three values - a position, a velocity, and a number. (if you want a variable +//* that records entities, see @locus_alias). To set values, trigger the entity; and to +//* access them, just refer to it like the appropriate calc_x entity. +//* locus_variable can also be used another way; if you give a "Child's Name" +//* value, triggering it will create a reference point with that name. So for example, +//* suppose you want to create streams of water wherever an object gets shot. You +//* trigger a locus_variable to record where the shot hits, and then have its "fire +//* on spawn" value triggering the water stream. But if you don't have it make seperate +//* reference points, then all the water will come out of the last shot position. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_variable : "Locus System - Variable for storing data" +[ + m_iszPosition(string) : "Position to record [LP]" : "*locus" + m_iszVelocity(string) : "Velocity to record [LV]" : "*locus" + m_iszRatio(string) : "Number to record [LN]" : "*locus" + m_iszTargetname(string) : "Child's name (blank = no child)" + m_iszFireOnSpawn(string) : "Fire on spawn (locus = child)" + m_fDuration(string) : "Removed after time (secs)" +] + +@SolidClass base(Targetname, Target, Angles, Master, MoveWith, RenderFields, ZHLTLightKeys) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// Monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //NEW 1.0 + 1024: "Drop gun" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //* This monster won't attack unless provoked. + 64 : "Start Peaceful" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "No Wreckage" : 0 + 64: "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] +@PointClass base(Targetname, RenderFields) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" +[ + frags(choices) : "Weapon" : 0 = + [ + 0 : "Glock (normal)" + 1 : "Python 357" + ] + spawnflags(Flags) = + [ + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "Idle1" + 1 : "Idle2" + 2 : "Idle3" + 3 : "Idle4" + 4 : "walk" + 5 : "run" + 6 : "shootgun" + 7 : "shootgun2" + 8 : "draw" + 9 : "disarm" + 10 : "reload" + 11 : "turnleft" + 12 : "turnright" + 13 : "laflinch" + 14 : "raflinch" + 15 : "llflinch" + 16 : "rlflinch" + 17 : "smlflinch" + 18 : "cower stand" + 19 : "locked door" + 20 : "fall loop" + 21 : "barn wave" + 22 : "beat grunt" + 23 : "beat grunt idle" + 24 : "flashlight" + 25 : "diesimple" + 26 : "dieviolent" + 27 : "diegutshot" + 28 : "die forward" + 29 : "die back" + 30 : "die crump" + 31 : "barnaclehit" + 32 : "barnaclepull" + 33 : "barnaclecrunch" + 34 : "barnaclechew" + 35 : "lie back" + 36 : "lie side" + 37 : "lie stomach" + 38 : "stuffed in vent" + 39 : "standing idle" + 40 : "cpr barney" + 41 : "cpr revive" + 42 : "barney drag vent" + 43 : "dying" + 44 : "dying idle" + 45 : "dying friend" + 46 : "dying friend idle" + 47 : "c1a3idle" + 48 : "c1a3ventb" + 49 : "c1a3 emergeidle" + 50 : "c1a3emerge" + 51 : "haul barney" + 52 : "push buttons" + 53 : "fence die" + 54 : "sit1" + 55 : "almostidle" + 56 : "almost" + 57 : "laseridle" + 58 : "laser top" + 59 : "laser bottom" + 60 : "fallidle" + 61 : "fall" + 62 : "c3a2 draw" + 63 : "corner2" + 64 : "unlatch" + 65 : "retina" + 66 : "relax stand" + 67 : "assasinated" + 68 : "plunger" + 69 : "pepsiswing" + 70 : "pepsi push" + 71 : "push button" + ] + +] +@PointClass base(RenderFields,Appearflags, Angles, Sequence) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") sequence(35) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] + sequence(Choices) : "Animation Sequence (editor)" : 35 = + [ + 35 : "lying_on_back" + 36 : "lying_on_side" + 37 : "lying_on_stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" +] +//* Not fully implemented: rudimentary AI. Will run away if attacked, +//* otherwise will stand still. +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullSquid" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] +//@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer : "Single Flyer" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(integer) : "Flock Size" : 8 + flFlockRadius(integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] +@PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + //NEW 0.4 + //* Tick here if you're using a model from the models/player/ directories. + //* This option sets it up so that the model's bounding box is centered on its origin (the X in + //* the middle of the entity, in WorldCraft), instead of being the middle of its bottom face. + 8 : "Head Controller" : 0 + 16 : "Player model" : 0 + //NEW 0.4 + 32: "Invulnerable" : 0 + ] + model(studio) : "model" + //NEW 0.4 + //* Headcrab: 24 24 24 + //* Houndeye: 32 32 36 + //* Human: 32 32 72 + //* Most Aliens: 64 64 64 + size(string) : "Size (X Y Z)" + //NEW 0.4 + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //NEW 0.4 + //* If not set, health is 8. + health(Integer) : "Initial Health" : 0 + //NEW 0.4 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //NEW 0.5 + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_generic_dead : "Generic Dead Body" +[ + spawnflags(Flags) = + [ + 8 : "Player model" : 0 + ] + //* The corpse's pose will be the last frame of this sequence. + //* This overrides the 'death type' value. + netname(string) : "Sequence name" + //* If you don't specify a 'Sequence name', the monster will select a random death + //* animation of the type you specify here. Not all models have all these death types. + frags(choices): "Death Type" : 36 = + [ + 36 : "Just dead" + 37 : "Fell backwards" + 38 : "Fell forwards" + 39 : "Died violently" + 66 : "Head shot" + 67 : "Chest shot" + 68 : "Gut shot" + 69 : "Shot in the back" + ] + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Targetname, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + //NEW 0.5 + weapons(Choices) : "Weapon" : 0 = + [ + 0 : "MP5" + 1 : "Shotgun" + 2 : "No gun" + ] + +sequence(Choices) : "Animation Sequence (editor)" : 11 = + [ + 0 : "walk1" + 1 : "run" + 2 : "victorydance" + 3 : "cower" + 4 : "smflinch" + 5 : "leftlegsmflinch" + 6 : "rightlegsmflinch" + 7 : "rightarmflinch" + 8 : "leftarmflinch" + 9 : "launchgrenade" + 10 : "throwgrenade" + 11 : "idle1" + 12 : "idle2" + 13 : "combatidle" + 14 : "frontkick" + 15 : "crouching_idle" + 16 : "crouching_wait" + 17 : "crouching_mp5" + 18 : "standing_mp5" + 19 : "reload_mp5" + 20 : "crouching_shotgun" + 21 : "standing_shotgun" + 22 : "reload_shotgun" + 23 : "advance_signal" + 24 : "flank_signal" + 25 : "retreat_signal" + 26 : "drop_grenade" + 27 : "limpingwalk" + 28 : "limpingrun" + 29 : "180L" + 30 : "180R" + 31 : "strafeleft" + 32 : "straferight" + 33 : "dieback1" + 34 : "dieforward" + 35 : "diesimple" + 36 : "diebackwards" + 37 : "dieheadshot" + 38 : "diegutshot" + 39 : "barnacled1" + 40 : "barnacled2" + 41 : "barnacled3" + 42 : "barnacled4" + 43 : "dead_on_stomach" + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + 47 : "repel_jump" + 48 : "repel_repel" + 49 : "repel_shoot" + 50 : "repel_land" + 51 : "repel_die" + 52 : "dragholeidle" + 53 : "draghole" + 54 : "bustwall" + 55 : "hoprail" + 56 : "converse1" + 57 : "converse2" + 58 : "startleleft" + 59 : "startleright" + 60 : "divecover" + 61 : "defuse" + 62 : "corner1" + 63 : "corner2" + 64 : "stonetoss" + 65 : "cliffdie" + 66 : "diveaside_idle" + 67 : "diveaside" + 68 : "kneeldive_idle" + 69 : "kneeldive" + 70 : "WM_button" + 71 : "WM_moatjump" + 72 : "bustwindow" + 73 : "dragleft" + 74 : "dragright" + 75 : "trackwave" + 76 : "trackdive" + 77 : "flyback" + 78 : "impaled" + 79 : "jumptracks" + 80 : "pipetoss" + 81 : "plunger" + ] + //NEW 0.5 + //* The "no gun" settings are only included here for backwards compatibility. + body(Choices) : "Head" : 0 = + [ + 0 : "Gasmask" + 6 : "Gasmask (black skin)" + 1 : "Beret" + 4 : "Skimask" + 7 : "Skimask (black skin)" + 5 : "Cigar (black skin)" + 2 : "(Gasmask, no gun)" + 3 : "(Beret, no gun)" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10: "Shotgun + HG" + ] + sequence(Choices) : "Animation Sequence (editor)" : 11 = + [ + 0 : "walk1" + 1 : "run" + 2 : "victorydance" + 3 : "cower" + 4 : "smflinch" + 5 : "leftlegsmflinch" + 6 : "rightlegsmflinch" + 7 : "rightarmflinch" + 8 : "leftarmflinch" + 9 : "launchgrenade" + 10 : "throwgrenade" + 11 : "idle1" + 12 : "idle2" + 13 : "combatidle" + 14 : "frontkick" + 15 : "crouching_idle" + 16 : "crouching_wait" + 17 : "crouching_mp5" + 18 : "standing_mp5" + 19 : "reload_mp5" + 20 : "crouching_shotgun" + 21 : "standing_shotgun" + 22 : "reload_shotgun" + 23 : "advance_signal" + 24 : "flank_signal" + 25 : "retreat_signal" + 26 : "drop_grenade" + 27 : "limpingwalk" + 28 : "limpingrun" + 29 : "180L" + 30 : "180R" + 31 : "strafeleft" + 32 : "straferight" + 33 : "dieback1" + 34 : "dieforward" + 35 : "diesimple" + 36 : "diebackwards" + 37 : "dieheadshot" + 38 : "diegutshot" + 39 : "barnacled1" + 40 : "barnacled2" + 41 : "barnacled3" + 42 : "barnacled4" + 43 : "dead_on_stomach" + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + 47 : "repel_jump" + 48 : "repel_repel" + 49 : "repel_shoot" + 50 : "repel_land" + 51 : "repel_die" + 52 : "dragholeidle" + 53 : "draghole" + 54 : "bustwall" + 55 : "hoprail" + 56 : "converse1" + 57 : "converse2" + 58 : "startleleft" + 59 : "startleright" + 60 : "divecover" + 61 : "defuse" + 62 : "corner1" + 63 : "corner2" + 64 : "stonetoss" + 65 : "cliffdie" + 66 : "diveaside_idle" + 67 : "diveaside" + 68 : "kneeldive_idle" + 69 : "kneeldive" + 70 : "WM_button" + 71 : "WM_moatjump" + 72 : "bustwindow" + 73 : "dragleft" + 74 : "dragright" + 75 : "trackwave" + 76 : "trackdive" + 77 : "flyback" + 78 : "impaled" + 79 : "jumptracks" + 80 : "pipetoss" + 81 : "plunger" + ] + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] + +//* The helicopter which flies around and drops grunts. Basically, whenever a grunt +//* dies, a replacement will be dropped so that the level contains the same number as +//* before. +//* With Spirit, it's no longer necessary to place grunts in your level: +//* in that situation the Osprey pretends, arbitrarily, that 4 have already died. +//* NB: An osprey must have a patrol path; if you don't give one, it will fail to +//* work. Spirit also fixes the Half-Life bug which meant a path_corner had to give +//* a Speed value... though the Speed values will still function if you choose to use them. +//* FYI: an Osprey will only drop grunts at path_corners whose Speed is set +//* to 0. After dropping grunts, it will head for the nearest path_corner whose Speed +//* is greater than 400, if one exists. Spirit also fixes the Half-Life bug which +//* crashed the game if no such corner was available. +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + //* Until triggered, the osprey won't move or drop grunts. + 64 : "Start Inactive" : 0 + ] +] +//* Like @monster_bloater: no AI, no death animation. +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" [] +@PointClass base(Weapon,Targetx,RenderFields) studio("models/w_satchel.mdl") = monster_satchel : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 0 : "walk" + 1 : "walk_scared" + 2 : "run" + 3 : "run1" + 4 : "run2" + 5 : "180_Left" + 6 : "180_Right" + 7 : "flinch" + 8 : "flinch1" + 9 : "laflinch" + 10 : "raflinch" + 11 : "llflinch" + 12 : "rlflinch" + 13 : "idle1" + 14 : "idle3" + 15 : "idle4" + 16 : "idle5" + 17 : "idle6" + 18 : "idle7" + 19 : "crouchstand" + 20 : "crouch_idle" + 21 : "crouch_idle2" + 22 : "crouch_idle3" + 23 : "crouch_idle3" + 24 : "panic" + 25 : "fear1" + 26 : "fear2" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 31 : "diesimple" + 32 : "dieforward" + 33 : "dieforward1" + 34 : "diebackward" + 35 : "headshot" + 36 : "gutshot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 43 : "barnacled1" + 44 : "barnacled2" + 45 : "barnacled3" + 46 : "barnacled4" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 58 : "pause" + 59 : "yes" + 60 : "no" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 70 : "startle" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 92 : "panic1" + 93 : "lookwindow" + 94 : "wave" + 95 : "pulldoor" + 96 : "beatdoor" + 97 : "fallingloop" + 98 : "crawlwindow" + 99 : "divewindow" + 100 : "locked_door" + 101 : "push_button2" + 102 : "unlock_door" + 103 : "quicklook" + 104 : "handrailidle" + 105 : "handrail" + 106 : "hanging_idle" + 107 : "fall" + 108 : "scientist_get_pulled" + 109 : "hanging_idle2" + 110 : "fall_elevator" + 111 : "scientist_idlewall" + 112 : "ickyjump_sci" + 113 : "haulscientist" + 114 : "c1a4_wounded_idle" + 115 : "c1a4_dying_speech" + 116 : "tentacle_grab" + 117 : "helicack" + 118 : "windive" + 119 : "scicrashidle" + 120 : "scicrash" + 121 : "onguard" + 122 : "seeya" + 123 : "rocketcrawl" + 124 : "portal" + 125 : "gluonshow" + 126 : "crouch" + 127 : "kneel" + ] +] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] + sequence(Choices) : "Animation Sequence (editor)" : 37 = + [ + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + spawnflags(Flags) = + [ + //NEW 0.4 + //* Sitting scientists are pre-disaster by default. + 1024: "Post-Disaster" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 74 = + [ + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] + +//NEW 0.7 +//* While a monster_target is active, monsters will attack it as though it were another monster. +//* An easy way to make monsters shoot out lights, attack func_tanks, etc. +@PointClass color(0 200 200) base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monster_target : "Target for monsters to attack" +[ + frags(choices) : "When active, count as:" : 11 = + [ + 0 : "Ignored" + //* Disliked by human military and most aliens. + 3 : "Scientist" + //* Hated by human military, disliked by most aliens. + 11: "Barney" + //* Hated by alien military, disliked by barneys and most aliens. + 4 : "Human Military" + //* Hated by human military, disliked by barneys. + 5 : "Alien Military" + //* Disliked by human miliary and barneys. + 7 : "Other Alien" + //* Disliked by all humans. Hated by Bullsquids. + 8 : "Headcrab" + //* Disliked by all humans and by other Bullsquids. Feared by Headcrabs. + 9 : "Bullsquid" + //* Disliked by everyone, except other Faction A members. + 14 : "Faction A" + //* Disliked by everyone, except other Faction B members. + 15 : "Faction B" + //* Disliked by everyone, except other Faction C members. + 16 : "Faction C" + ] + spawnflags(Flags) = + [ + 1: "Start inactive" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(choices) : "Tap Sound" : -1 = + [ + -1: "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [ + +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + noise(String) : "Position to place monster at [LP]" + noise1(String) : "Offset from position of monster [LV]" + noise2(String) : "Angles of monster [LV]" + noise3(String) : "Velocity of monster [LV]" + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(target_source) : "Name of Spawned Monsters" + spawnflags(Flags) = + [ + //* If you don't give the monstermaker a Name, this is the default. + 1 : "Start ON" : 0 + //* In Cyclic mode, the maker will spawn a monster each time it's triggered. + //* (Otherwise, triggering the maker will turn it on, and it will then make monsters as + //* often as its 'delay' permits.) + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + //NEW 0.5 + //* By default, unless "number of monsters" is 1, the corpses of the monsters will fade out. + //* Tick here to override this. In order to prevent infinite numbers of corpses from appearing, + //* this flag is ignored if Number of Monsters is set to unlimited, + 16 : "Leave corpses" : 0 + //NEW AJH + //* Tick to force monsters to spawn regardless of other monsters being present. + 32 : "Force Spawn" : 0 + //NEW 0.6 + //* If this is ticked, the created monsters won't drop their weapons when they die. + 1024: "Don't Drop Gun" : 0 + ] + //* The total number of monsters the monstermaker can create (-1 = unlimited) + monstercount(choices) : "Number of Monsters" : -1 = + [ + -1 : "Unlimited" + ] + //* If -1, a new monster will only be made when the last monster dies. + //* Otherwise, this is is the time to wait (seconds) between producing new monsters. + delay(string) : "Time between spawns" : "5" + //NEW 0.4 + //* Mainly for use with @env_warpball. This makes a delay between the monstermaker triggering + //* its "target on release" entity and the monster appearing. For best results, set the + //* "target on release" value to the env_warpball, and set the "delay before release" to about 0.5. + spawndelay(string) : "Delay before release" : "0" + //* The maximum number of live children allowed at one time; if this is set, new children will + //* not be made until one dies. (-1 = no limit) + m_imaxlivechildren(integer) : "Max live children" : 5 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Monsters behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Monsters reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] +] + +//NEW 0.7.1 +//* For controlling the movement of other entities. There are two main ways to use this entity: +//* a) Don't give it a targetname, just tell it what entity to affect. In this case, the +//* motion of the affected entity will be managed however you want. This is mostly useful to +//* make things MoveWith a @func_pushable or a monster. (Just name the func_pushable in the +//* manager's "Position" field.) +//* b) Give it a targetname, but leave the "target to affect" set to *locus. Then, type the +//* motion_manager's name into the "trigger on spawn" field of, for example, an env_shooter. +//* In this case, every shot the shooter makes will be managed throughout its lifetime. +//* If you just want to change an entity's position or velocity instantly, once, then see +//* @trigger_motion. +@PointClass base(Targetname) = motion_manager : "Control the movement and direction of an entity" +[ + target(target_destination) : "Target to affect [LE]" : "*locus" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set position [LP]" + 1 : "Offset position [LV]" + 2 : "Set velocity [LV]" + 3 : "Accelerate by [LV]" + 4 : "Follow position [LP]" + ] + m_iPosAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "X axis only" + 2 : "Y axis only" + 4 : "Z axis only" + 6 : "Not X (YZ only)" + 5 : "Not Y (XZ only)" + 3 : "Not Z (XY only)" + ] + m_iszFacing(string) : "Facing (blank = no change)" + m_iFaceMode(choices) : "Meaning of Facing" : 0 = + [ + 0 : "Face direction [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by [PYR]" + 3 : "Set avelocity [PYR]" + ]m_iFaceAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "Pitch only" + 2 : "Yaw only" + 4 : "Roll only" + 6 : "Not Pitch" + 5 : "Not Yaw" + 3 : "Not Roll" + ] + + spawnflags(flags) = + [ + 1: "Debug" : 0 + 2: "swap pitch/yaw" : 0 + 4: "swapyaw/roll" : 0 + 8: "swap roll/pitch" : 0 + 16: "stepped" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + //NEW 0.3 + netname(string) : "Target on turning off" + globalstate(string) : "Global State Master" +] + +//NEW 0.4 +//* A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities +//* together, while still allowing them to have individual names. +//* For example, suppose you have a set of lights in your level. Each one has its own lightswitch, +//* which allows it to be switched on and off on its own. But later in the level, you want the power +//* (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which +//* targets all the lights, and simply trigger what that alias refers to. +@PointClass base(Targetname) = multi_alias : "Multi-target alias" +[ + //NEW 0.5 + m_iMode(choices) : "Mode" : 0 = + [ + 0: "Normal" + //* Each time the alias is used, one of the targets will be chosen + //* at random. Targets with higher values are proportionally more + //* likely to be chosen. + 1: "Choose one (weighted)" + //* Each time the alias is used, zero or more of the targets will + //* be valid. The 'value' for each target gives the percentage + //* chance that it will be valid each time. + 2: "% chance for each" + ] +] + +//* Triggers a sequence of up to 16 entities, at various time offsets. +//* To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode +//* and add fields manually. The name of the field is the targetname of the entity to trigger, +//* and the contents of the field are the time (in seconds) to wait before triggering it. +//* If a master is given, then while the master is locked, the manager will ignore +//* all signals. This won't prevent it from continuing a sequence that started while the master +//* was unlocked, but it will prevent new sequences from starting. +//* If you refer to a multi_manager via [LN], it returns the number of seconds since the sequence started. +@PointClass base(Targetname, Master) color(255 128 0) iconsprite("sprites/multimanager.spr") = multi_manager : "MultiTarget Manager" +[ + //NEW 0.3 + //* How long to wait before starting the sequence. This delay is in addition to the offsets given for each individual target. + wait(string) : "Time offset" + //NEW 0.3 + //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset" + //* value is used as a minimum offset. + maxwait(string) : "Max Time offset (Random)" + //NEW 0.3 + //* Message to send to the targets. + triggerstate(choices) : "Trigger to send" = + [ + 0: "Toggle" + 1: "On" + 2: "Off" + 3: "Kill" + //* If you select this, the manager will send on whatever triggers (e.g. USE_ON) that it received + //* itself. So this is a way to "fork" the signal sent by another entity. + 4: "Same as input" + ] + //NEW 0.3 + mode(choices) : "Mode" = + [ + //* The 'value' for each target is the time offset at which to fire it. + 0: "Normal (time offset)" + //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance + //* that each target will be chosen. + 1: "Choose one (weighted)" + //* Go through the list of targets, and for each one either fire it, or don't fire it. + //* The 'value' gives the percentage chance that a value will get fired. + 2: "% chance for each" + //* In this mode, the number for each target specifies its position in the sequence + //* (relative to the other numbers), but all the targets will actually be fired at the same time. + //* So setting the targets to A 1, B 2 and C 3 would be equivalent to + //* setting A 0, B 0, and C 0 in normal mode - except that you can guarantee A will be + //* fired just before B, which will be just before C. + 3: "No delay (ordered)" + ] + //NEW 0.7.1 + //* Gives threads a name of their own. This lets you kill/trigger the threads + //* without affecting the manager, and vice versa. (If this is left blank, the + //* threads have the same name as the manager.) + //* This is mostly useful on a multithreaded looped manager, where you can stop all the loops + //* simultaneously by triggering the threads off. + m_iszThreadName(target_source) : "Name of threads" + //NEW 0.7.1 + //* Whenever a thread is created, the entity named here will be triggered, + //* with the new thread as the locus. + m_iszLocusThread(string) : "Trigger on spawn (locus = thread)" + spawnflags(Flags) = + [ + //* By default, a manager will ignore all inputs while it's performing a sequence. + //* Tick this to allow more than one sequence to run at a time. + 1 : "Multi-threaded" : 0 + //NEW 0.6 + //* NB: This flag has been moved. Apologies. + //* When the sequence ends, it will start again from the beginning. To stop the + //* loop, toggle the manager a second time. + 4 : "Loop" : 0 + //NEW 0.6 + //* The manager will USE_KILL itself when the sequence is complete. + //* If Loop is also ticked, the manager will only USE_KILL itself when told to stop the loop. + 8 : "Once only" : 0 + //NEW 0.7.1 + //* The manager will activate itself when the level starts, so that you don't + //* have to use a trigger_auto. (particularly useful for looping multi_managers.) + 16 : "Start on" : 0 + //NEW 0.7.1 + //* The manager will report to the console when it fires, etc. + 32 : "Debug mode" : 0 + ] +] + +//NEW 0.3 +//* A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once. +//* The entity is probably most useful when used as a master for another entity- a versatile replacement +//* for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a +//* multi_watcher which watches other multi_watchers. +//* The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the +//* 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.) +//* This is a very powerful entity, but is probably only useful for experienced mappers. +@PointClass base(Targetname) = multi_watcher : "State Watcher" +[ + m_fLogic(choices) : "Logical test" : 0 = + [ + 0: "All (AND)" + 2: "Not all (NAND)" + 1: "At least one (OR)" + 3: "None (NOR)" + 4: "Exactly one (XOR)" + 5: "Any number but one (XNOR)" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Entity to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) color(247 181 82) iconsprite("sprites/pathcorner.spr") = path_corner : "Path Corner" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire on Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + 0 : "Set new speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + 2 : "Time to next corner" + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + altpath(target_destination) : "Branch Path" + message(target_destination) : "Fire on Pass" + netname(target_destination) : "Fire on dead end" + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + //* In normal Half-Life, this was the only setting available. + //* NB: This will have no effect unless the train has the "No Control" flag set. + 0 : "Set current speed" + //* This sets the train's 'master speed', which means that the train's speed in + //* all gears (half speed, quarter speed, etc) will also change in proportion to + //* the number you set. + 3 : "Set master speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + //* (This changes the 'master speed'). + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + //* (This changes the 'master speed'). + 2 : "Time to next corner" + + // 3: "Change gear"? + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + frags(choices) : "Meaning of 'Turn Speed'" : 0 = + [ + 0 : "Set current turn speed" + //* The value specified will be scaled to fit the speed (e.g. half + //* speed, quarter speed) the train is currently moving at. + 1 : "Set master turn speed" + //* When you set Turn Speed to make a tracktrain turn around, its normal turning + //* (face along the track, turn at corners) gets suppressed. Select this when you + //* want to reenable it. (The 'Turn Speed' value isn't used when this option is + //* selected.) + 2 : "Back to normal" + ] + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_freeze : "Stop player from moving" +[ + delay(string) : "Duration (0 = until retriggered)" : "5" + netname(string): "Clamp view dir [LV]" : "0 1 0" + noise(string): "Yaw range [LN]" : "360" + noise1(string): "Look up range [LN]" : "90" + noise2(string): "Look down range [LN] (= up if blank)" + noise3(string): "Turn speed [LN] (blank = instant)" + spawnflags(Flags) = + [ + //* If you set this, then the entity expects to freeze the locus you tell it. + //* If there's no locus, or it isn't a player, nothing will happen. + //* (If you don't tick this, then player_freeze will just affect player 1.) + 1: "Affect locus" : 0 + //* Don't stop the player moving, only clamp his view. + 2: "View Only " : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +// this may be the most irritating, repetitive, time-consuming entity I've ever implemented... +// HL's ammo system is _not_ set up to make this easy. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strip player's weapons" +[ + //NEW 0.6 + //* In each of these fields, either choose a preset value from the menu, or else specify + //* a number of bullets to remove (e.g. 8). + bullets(choices) : "Take 9mm bullets" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + magnum(choices) : "Take 357 bullets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + shotgun(choices) : "Take shotgun ammo" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + crossbow(choices) : "Take crossbow bolts" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + mp5(choices) : "Take MP5 bullets" : 0 = + [ + 0: "All" + -1: "None" + ] + rockets(choices) : "Take rockets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + snarks(choices) : "Take snarks" : 0 = + [ + 0: "All" + -1: "None" + ] + handgrenades(choices) : "Take handgrenades" : 0 = + [ + 0: "All" + -1: "None" + ] + spawnflags(Flags) = + [ + 1: "Remove suit" : 0 + 2: "Leave crowbar" : 0 + 4: "Leave glock" : 0 + 8: "Leave 357" : 0 + 16: "Leave mp5" : 0 + // chaingun was never used + 64: "Leave crossbow" : 0 + 128: "Leave shotgun" : 0 + 256: "Leave rpg" : 0 + ] +] + +//NEW 0.3 +//* Note that a @monster_generic won't usually do these actions correctly. +//* If you're using this to make a @monster_barney shoot, it'll look odd (as if he's shooting bullets from his +//* knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize +//* (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level. +@PointClass base(Script) = scripted_action : "Scripted Action" +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 5 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Entity to attack (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 1 = + [ + //* Turn to the same angle as the attack entity is facing. + 0 : "Match Angle" + //* Turn to look (and aim) at the entity to attack. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + m_fAction(choices) : "Action to perform" : 0 = + [ + //* Headcrabs: leap. Houndeye: sonic attack. Barney: fire pistol... and so on. Most monsters have a ranged attack of some kind. + 0 : "Ranged Attack" + //* Grunts and assassins: throw or launch a grenade at the "attack" entity. + //* Alien Controller: big homing fireball. + 1 : "Ranged Attack 2" + //* Scientist: Heal. Everyone else: Kick, punch, bite, slash with claws, etc. + 2 : "Melee Attack" + //* Assassins: kick. Bullsquids:bite. Headcrab: rear up on hind legs. + //* Big Momma: lay a baby headcrab. Gargantua: Flame Thrower. + 3 : "Melee Attack 2" + //* Grunts: place a grenade on the ground. + 4 : "Special Attack" + //* Don't know of any monsters which use this, but feel free to try... + 5 : "Special Attack 2" + //* Grunts and barneys: Reload. The same thing can be done with a @scripted_sequence, but it's available here for convenience. + 6 : "Reload" + //* Assassins: jump to the "attack" entity. Houndeyes, Bullsquids and Big Momma: just jump. + 7 : "Jump" + //* Just turn and/or move. + 8 : "No action" + ] + spawnflags(Flags) = + [ + //* If this isn't ticked, the script will be ignored while the monster is in combat. + 64: "Override AI" : 0 + ] +] + +//* If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits. +@PointClass base(Targetname, Targetx, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + //NEW 0.4 + entity(string) : "Target Monster (blank for HEV) [LE]" + duration(string) : "Sentence Time" : "3" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Name/Class" : "player" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//* If a scripted_sequence has no targetname, it will start playing as soon as the level begins. +//* If two or more scripted_sequences have the same targetname, they will be synchronised so that +//* no matter how long it takes the monsters to walk to the sequence entities, their action animations +//* will start at the same time. Also, if one of the monsters cancels its sequence (e.g. if it gets +//* hurt), the other one will too. +@PointClass base(ScriptSequence) size(-16 -16 0, 16 16 72) iconsprite("sprites/scriptedsequence.spr") = scripted_sequence : "Scripted Sequence" +[ + spawnflags(Flags) = + [ + //* Unless you tick this, the monster won't play the script when it's in combat. + 64: "Override AI" : 0 + ] +] + +//NEW 0.6 +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_tanksequence : "Scripted Tank Sequence" +[ + m_iszEntity(string) : "Tank to affect" + m_iTurn(choices) : "Turn to" : 2 = + [ + 0: "Don't turn" + 1: "Match angle" + 2: "Face sequence" + 3: "Face enemy" + ] + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + //* If you leave this blank, the tank will just pick its nearest enemy. + m_iszEnemy(string) : "Enemy to face" + m_iShoot(choices) : "Fire gun" : 1 = + [ + 0: "Don't fire" + 1: "Once (at end)" + 2: "Constantly" + 3: "While facing target" + ] + m_iUntil(choices) : "Halt condition" : 1 = + [ + 0: "None" + 1: "Tank faces target" + 2: "Enemy dies" + ] + target(string) : "Trigger on halt" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Trigger on timeout" + m_iActive(choices) : "Tank state afterwards" : 0 = + [ + 0: "No change" + 1: "Active" + 2: "Inactive" + 3: "Toggle" + ] + m_iControllable(choices) : "Control afterwards" : 0 = + [ + 0: "No change" + 1: "Controllable" + 2: "Not Controllable" + 3: "Toggle" + ] + m_iLaserSpot(choices) : "Laser Spot afterwards" : 0 = + [ + 0: "No change" + 1: "Turn on" + 2: "Turn off" + 3: "Toggle" + ] + spawnflags(flags) = + [ + //* Usually, if a player is using the tank when the sequence is activated, + //* the sequence won't work. Tick here to override that, by dumping the + //* player when the sequence starts. + 1: "Dump player" : 0 + 2: "Repeatable" : 0 + ] +] + +//NEW 0.6 +//* This entity is by no means complete, but is still somewhat usable. +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_trainsequence : "Scripted Train Sequence" +[ + m_iszEntity(string) : "Func_train to affect [LE]" + m_iszDestination(string) : "Destination to head for [LE]" + m_iDirection(choices) : "Train direction" : 4 = + [ + 4: "Towards destination" + 1: "Forwards" + 2: "Backwards" + 0: "No change" + ] + target(string) : "Fire on arrival" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Fire on timeout" + //* This entity will be triggered regardless of how the sequence ends: + //* by reaching the destination, by timing out, or by the sequence being + //* triggered 'off' (which causes it to abort). + m_iszTerminate(string) : "Fire at end, regardless" + m_iPostDirection(choices) : "Direction afterwards" : 3 = + [ + 1: "Forwards" + 3: "Stop" + ] + spawnflags(flags) = + [ + 2: "Once only" : 0 + //* The train will just move straight to the destination + //* you specify, without trying to follow an existing path. + 4: "Skip path" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +//* Be careful when using this entity; it will trigger not only when the level starts, +//* but also when a saved game is loaded. +@PointClass base(Target, Killtarget) iconsprite("sprites/trigger.spr") = trigger_auto : "AutoTrigger" +[ + delay(string) : "Delay before trigger" : "0.1" + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + //NEW 0.5 + //* Tick here to have the trigger_auto's "activator" be the player. + //* (Not for use in multiplayer levels.) + 2 : "From Player" : 0 + ] + globalstate(string) : "Global State to Read" + //NEW 0.3 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + 3 : "Kill" + ] +] + +@SolidClass base(Targetname, Master, MoveWith) = trigger_autosave : "AutoSave Trigger" [] + +//NEW 0.6 +//* An entity that things bounce off. Set its Angle to specify the angle to reflect them in; +//* objects already moving in this direction will be unaffected. (E.g. to make a trampoline, +//* you would specify "up". Objects which are already moving upwards will be unaffected.) +//* Try Factor = 2 and Minimum Speed = 150 to make a corridor which players can't run through, +//* only walk slowly. (Something like the force-fields in Dune.) +@SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_bounce : "Bouncey area" +[ + //* Acts like friction - each bounce will be scaled up or down by this amount. + //* (for instance, if the factor is 0.5, and you hit the trigger_bounce at 100 + //* units/sec, you'll bounce off at 50 units/sec.) + frags(string) : "Factor (0=stop, 1=perfect bounce)" : "0.9" + //* If an object hits the trigger_bounce entity slower than this, then it'll + //* go straight through. + armorvalue(string) : "Minimum Speed" : "100" + spawnflags(flags) = + [ + //* Tells the entity to reduce bounce speeds by the 'minimum speed' value. + //* (for instance, if you hit the trigger_bounce at 100 units/sec, the Factor is + //* 0.5 and the min.speed is 20, then you'll bounce off at 40 units/sec. + 16: "Truncate Speed" : 0 + ] +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/trigger.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + m_iszViewEntity(string) : "Entity to view from (blank = this)" +] + +//NEW 1.4 +//1.5 the default folder of /sounds/fmod/ was removed from the code +@PointClass base(Targetname) = ambient_fmodstream: "FMOD Audio player (MP3/OGG/WMA)" +[ + message(string) : "File Name (relative to \spirit\)" + spawnflags(flags) = + [ + 1: "Remove on fire" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +//NEW 0.3 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changealias : "Trigger Change Alias" +[ + target(string) : "Alias to affect" + netname(string) : "String to Set" + spawnflags(flags) = + [ + //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are + //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1 + //* to target "*myalias". + //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is, + //* in future any changes to "myalias" will also change what "alias1" refers to. + //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias" + //* is referring to at the time the trigger_changealias takes effect. Future changes to "myalias" will + //* therefore not affect "alias1". + 1 : "Resolve references" : 0 + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changecvar : "Change Console Variable" +[ + netname(string) : "CVar to change" + message(string) : "Value to set" + armorvalue(string) : "Duration (-1 = until triggered)" +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changetarget : "Trigger Change Target" +[ + target(string) : "Entity to affect [LE]" + m_iszNewTarget(string) : "New Target [LE]" +] + +//NEW 1.0 +//* A really bad idea, IMHO, but created by popular demand. +//* Use at your own risk, and/or the risk of everyone else in the room. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changevalue : "Change any entity's values" +[ + target(string) : "Entity to affect [LE]" + netname(string) : "Keyname to change" + m_iszNewValue(string) : "New value to set" +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_command : "Console Command" +[ + //* The mapping tools can't handle double-quote marks. If you need a double-quote in your + //* command string, put `` (that's two backticks - top left of your keyboard) instead. + netname(string) : "Command String (use `` for a quote)" +] + +//* While locked by its master, the trigger_counter _will_ keep counting when fired, +//* but it won't fire anything itself. +@SolidClass base(Trigger, MoveWith) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname, MoveWith) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +//NEW 0.5 +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hevcharge : "Trigger charge hev" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + //* Usually, the HEV suit will comment on the new power level. + 4: "Don't Speak" : 0 + ] + frags(integer) : "Charge Amount" : 10 + delay(string) : "Delay before trigger" : "0" +] + +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Fire once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"Only when fired" : 0 + 32:"Only on touch" : 0 + ] + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + //NEW 0.7.1 + cangib(choices) : "To gib or not to gib" : 0 = + [ + 0 : "Normal" + 1 : "Always gib" + 2 : "Never gib" + ] +] + +//NEW 0.5 +//* If you refer to this like an alias (*targetname), you refer to all the relevant entities inside +//* the trigger area. +//* So, for example, you could use env_render to set the render style of them all. +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_inout : "Trigger: Activate on entering or leaving" +[ + target(string) : "Fire on entering (locus=enterer)" + m_iszAltTarget(string) : "Fire on leaving (locus=leaver)" + m_iszBothTarget(string) : "Fire on/off (entering/leaving)" +] + +@SolidClass base(Master, MoveWith) = trigger_monsterjump : "Trigger monster jump" +[ + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +//NEW 0.7.1 +//* This replaces the trigger_setposition and trigger_setvelocity entities, which have +//* been removed. Apologies for any inconvenience. +//* If you want to control motion for a period of time, see @motion_manager. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_motion : "Set the position and movement of an entity" +[ + target(target_destination) : "Target to affect [LE]" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set new position [LP]" + 1 : "Add offset [LV]" + ] + m_iszAngles(string) : "Angles (blank = no change)" + m_iAngMode(choices) : "Meaning of Angles" : 0 = + [ + 0 : "Set new angle [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by [PYR]" + ] + m_iszVelocity(string) : "Velocity (blank = no change)" + m_iVelMode(choices) : "Meaning of Velocity" : 0 = + [ + 0 : "Set new velocity [LV]" + 1 : "Add to velocity [LV]" + 2 : "Rotate velocity by [LV]" + 3 : "Rotate velocity [PYR]" + ] + m_iszAVelocity(string) : "AVelocity (blank = no change)" + m_iAVelMode(choices) : "Meaning of AVelocity" : 0 = + [ + 0 : "Set new avelocity [PYR]" + 1 : "Add to avelocity [PYR]" + ] + spawnflags(flags) = + [ + 1: "Debug" : 0 + ] +] + +@SolidClass base(Targetname, Master, Delay, Killtarget, TriggerCond, MoveWith) = trigger_once : "Trigger: Activate once" +[ + target(target_destination) : "Target when touched (locus=toucher)" + message(string) : "Text when triggered" + noise(string) : "Sound when triggered" +] + +@SolidClass base(trigger_once) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +//NEW 0.6 +//* In fact, this should probably be called watcher_onsight. +@PointClass base(Targetname, Master, MoveWith) iconsprite("sprites/trigger.spr") = trigger_onsight : "Trigger when A sees B" +[ + //* Put the targetname of the entity(ies) whose eyes the trigger_onsight should look through. + //* (if you want to trigger when the trigger_onsight itself sees something, i.e. + //* simulating a security camera, put the name of the trigger_onsight.) + netname(string) : "Looking entity (blank=player)" + //* Leave this blank to have it trigger when something sees the trigger_onsight. + //* You can also put a classname here, to trigger when the Looking Entity sees + //* any entity of that class. + message(string) : "Entity/classname to look at" + target(string) : "Fire when seen" + noise(string) : "Fire when no longer seen" + noise1(string) : "Fire on/off (seen/not seen)" + frags(string) : "View range (0=unlimited)" : "512" + //* Currently, only the horizontal view will be checked. + max_health(choices) : "Field of view (degrees)" : 90 = + [ + -1 : "(-1): Use monster's view" + ] + spawnflags(flags) = + [ + //* Don't check line of sight: i.e. it doesn't matter if there's something + //* in the way. + 1: "No LOS check" : 0 + 2: "Seethru glass" : 0 + 4: "Check State of 'looker'" : 0 + ] +] + +@SolidClass base(Trigger, MoveWith) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +//NEW 0.3 +//* Only affects dynamic (i.e. named) lights. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_lightstyle : "Trigger Change Lightstyle" +[ + target(target_destination) : "Target to affect [LE]" + style(choices) : "New Appearance" : 0 = + [ + 0 : "On" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + 14: "Slow Fade In" + 15: "Medium Fade In" + 16: "Fast Fade In" + ] + pattern(string) : "Custom Appearance" + m_iFade(string) : "Fade time" : 0 + m_iWait(string) : "Hold time (-1 = permanent)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/trigger.spr") = trigger_relay : "Trigger Relay" +[ + //NEW 0.5 + //* This field allows you to use the trigger_relay as a kind of conditional jump: it + //* looks at its master, and does different actions based on the master's state. + m_iszAltTarget(string) : "Target if locked by master" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + //NEW 0.4 + //* If you're trying to work out what's going wrong with your level, + //* try ticking here and the relay will tell you when it triggers, etc. + //* Here's a useful trick: make a trigger_relay with this field ticked, + //* and give it the same name as an entity that you're interested in. + //* The relay will then notify you whenever that entity gets triggered. + //2: "Debug Mode" : 0 + 2 : "Fire at Camera" : 0 + ] + //NEW 0.4 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + 4: "Kill" + 5: "Same as input" + //* I.e. when triggered ON, send OFF. And vice versa. + 6: "Opposite of input" + //* Setting this will cause the target momentary door to move to a particular position. + 7: "Number (momentary doors)" + ] + //* Use this in combination with usetype Number, to trigger momentary doors. + //* For example, sending 1.0 tells them to go fully + //* open, 0.0 fully closed, and 0.5 half-way. + message(string) : "Set number (blank = no change) [LN]" +] + +//* don't use. This is just a test entity. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_rottest : "Trigger RotTest" +[ + target(target_destination) : "Marker ent" + netname(target_destination) : "Reference ent" + message(target_destination) : "Hinge ent" + health(integer) : "Distance" : 5 + armortype(integer) : "Angle Step" : 30 +] + +//NEW 0.6 +@SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" +[ + target(target_destination) : "Fire when activated" + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +//NEW 0.2 +//* Suggest to the specified monster that it should follow the given path. This is a low priority +//* activity, superceded when it spots a player (for instance). +//* (The same thing happens if you give the monster a "target".) +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_startpatrol : "Trigger Start Patrol" +[ + target(string) : "Target monster" + m_iszPath(string) : "Patrol path start" +] + +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_teleport : "Trigger teleport" +[ + target(target_destination) : "Destination entity" + //NEW 0.6 + message(target_destination) : "Landmark entity" + //NEW 0.6 + noise(target_destination) : "Fire on teleporting" +] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +//NEW 0.3 +//* A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for +//* the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times. +//* The main use for a watcher is to fire another entity (the "entity to notify"), each time the +//* watcher's state changes. +@PointClass base(Targetname) = watcher : "State Watcher" +[ + m_iszWatch(string) : "Entity to watch [LE]" + //* The watcher will revert to this state if the watched entity is killtargetted, or if it's a func_breakable which breaks. + m_fLogic(choices) : "State if entity isn't found" : 0 = + [ + 0: "On" + 1: "Off" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Target to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns on. + 2: "Don't Send On" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns off. + 4: "Don't Send Off" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +// NEW 1.0 +// * Compare two entity references, and see if they're the same. +// * For example, you could type "*myalias" as your first reference, +// * and "bob" as the second. As long as the alias "myalias" refers to +// * the entity "bob", the watcher will be active. The rest of the time +// * it will be inactive. +// * (If "bob" doesn't exist, it will also be inactive.) +//@PointClass base(Targetname) = watcher_alias : "Watcher" +//[ +// m_iszEntityA(string) : "Entity A [LE]" +// m_iszEntityB(string) : "Entity B [LE]" +// m_iMode(choices) : "Type of comparison" : 0 = +// [ +// 0 : "On when A = B" +// //* != means "not equal" +// 1 : "On when A != B" +// ] +// target(string): "Fire on changing state" +// netname(string): "Fire on turning on" +// message(string): "Fire on turning off" +// spawnflags(flags) = +// [ +// //* If this is set, one set of targets (on or off) will be fired, +// //* as appropriate, when the level starts. +// 1: "Fire at startup" : 0 +// ] +//] + +@PointClass base(Targetname) = watcher_count : "Watcher, entity count" +[ + noise(string) : "Count entities named..." + impulse(integer) : "Comparison number" + m_iMode(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when count = number" + //* != means "not equal" + 3 : "'On' when count != number" + 1 : "'On' when count > number" + 5 : "'On' when count >= number" + 2 : "'On' when count < number" + 4 : "'On' when count <= number" + ] + target(string): "Fire on changing state" + netname(string): "Fire on turning on" + message(string): "Fire on turning off" + noise1(string): "Fire when count increases" + noise2(string): "Fire when count decreases" + spawnflags(flags) = + [ + //* If this is set, one set of targets (on or off) will be fired, + //* as appropriate, when the level starts. + 1: "Fire at startup" : 0 + ] +] + +// NEW 1.8 +//* Compare two numbers. +//* If you refer to a watcher_number via [LN], it returns the last-seen value of A. +@PointClass base(Targetname) = watcher_number : "Watcher, compare numbers" +[ + netname(string) : "Number A [LN]" + //* If left blank, this will compare the current A with the value previously seen for A. + //* This is useful for checking whether the number has changed, + //* especially in combination with "tolerance" and/or the "manual update" flag. + noise(string) : "Number B [LN] (blank = old A)" + noise1(string) : "Tolerance for equals [LN]" : "0.0" + impulse(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when A = B" + //* != means "not equal" + 1 : "'On' when A != B" + 2 : "'On' when A > B" + 3 : "'On' when A >= B" + 4 : "'On' when A < B" + 5 : "'On' when A <= B" + ] + noise2(string): "Fire on turning on" + noise3(string): "Fire on turning off" + spawnflags(flags) = + [ + //* Don't watch continuously - only update (and fire targets if appropriate) when triggered. + 1: "Manual update" : 0 + //* If this is set, one set of targets (on or off) will be fired, + //* as appropriate, when the level starts. + 2: "Fire at startup" : 0 + 4: "Debug mode" : 0 + ] +] + +// +// Weapons +// +//NEW 1.4 +@PointClass base(Weapon) = weapon_debug : "Debugger" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weapon_eagle : "Desert Eagle" [] + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_weaponbox.mdl")= weaponbox : "Weapon/Ammo Container" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357.mdl")= weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl")= weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl")= weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_glauncher.mdl")= weapon_grenadelauncher : "Grenade Launcher" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_flamethrower.mdl")= weapon_flamethrower : "Flamethrower" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_herb_green.mdl")= weapon_herb_green : "greenherb" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_herb_red.mdl")= weapon_herb_red : "redherb" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_spray.mdl")= weapon_spray : "medspray" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_mp5navy.mdl")= weapon_mp5navy : "mp5navy" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_sti.mdl")= weapon_sti : "STI" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl") = weapon_glock : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl") = weapon_mp5 : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] + +@PointClass base(Weapon, Targetx, RenderFields) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +//NEW 1.5 +//A portable flare the player can use once (at any time) +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_flare : "Inventory Flare" +[ + ltime(integer): "Override flares lifetime" + noise(string): "Override default pickup sound" + rendercolor(color255): "Override flares colour (R G B)" +] + +//NEW 1.5 +//A portable camera that can be set up at any location the player can get to. +// Currently on explosive damage can effect cameras +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_camera : "Inventory Camera" +[ + targetname(string): "UNIQUE!! name for this camera" + // EVERY camera in your map (unit) must have a unique name. Call them something like 'mapname_camera_1' + noise(string): "Override default pickup sound" + health(integer): "Health of the camera" : 20 +] + +//NEW 1.5 +//Limit the total 'health' a player can have in his medkit with cvar 'max_medkit'. Defaults to 200. +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_medicalkit : "Inventory Medkit" +[ + health(integer): "Healing charge" : 50 +] + + +// +// Xen +// + +@PointClass base(Targetname, Angles, RenderFields) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Target, Targetname, Angles, RenderFields) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl")= xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, Angles, RenderFields) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl")= xen_spore_large : "Xen Spore (large)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl")= xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl")= xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl")= xen_tree : "Xen Tree" [] + +//NEW 1.5 +//G-Conts Rain System (rain_settings & rain_modify) +@PointClass iconsprite("sprites/env.spr") = rain_settings : "Constant map settings" +[ +m_flDistance(integer) : "Rain distance" : 1000 +m_iMode(choices) : "Weather type" : 0 = +[ +0: "Rain" +1: "Snow" +] +] +@PointClass iconsprite("sprites/env.spr") = rain_modify : "Modify rain settings" +[ +m_flTime(integer) : "Fading time" : 0 +m_iDripsPerSecond(integer) : "Drips per second" : 800 +m_flWindX(integer) : "Wind X" : 0 +m_flWindY(integer) : "Wind Y" : 0 +m_flRandX(integer) : "Rand X" : 0 +m_flRandY(integer) : "Rand Y" : 0 +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/ricochet.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/ricochet.fgd new file mode 100644 index 0000000..acdd3d6 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/ricochet.fgd @@ -0,0 +1,2013 @@ +// +// Half-Life: Ricochet game definition file (.fgd) +// version 3.0.0.1 +// for Worldcraft 3.3 and above, and the Ricochet mod +// +// updated by Chris Bokitch +// autolycus@valvesoftware.com +// http://www.valve-erc.com/ +// + +// +// aug 28 2001 - 3.0.0.1 +// - changed IS NOT LOOPED to NOT TOGGLED on ambient_generic (royalef) +// - gave light_environment a Name +// - added Angular Velocity to func_train +// - created ZHLT_point baseclass +// - added ZHLT_point base to light, light_environment, and light_spot +// - created ZHLT baseclass +// - added ZHLT base to all applicable brush entities +// - above list compiled by Unquenque +// ------------------------------------------------------------------------ + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + + // ricochet + playersperteam(integer) : "Players Per Team" + no_arena(choices) : "Game Type" : 0 = + [ + 0 : "Arena" + 1 : "Deathmatch/Free-for-all" + ] +] + +// +// BaseClasses +// + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) = Item +[ + targetname(target_source) : "Name" + target(target_destination) : "Target" + killtarget(target_destination) : "KillTarget" + delay(string) : "Delay before trigger" : "0" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Not Toggled":0 + ] +] + +@SolidClass base(Target, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname, ZHLT) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname, ZHLT) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, ZHLT) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular Veocity (y z x)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" + team(choices) : "Team" : 1 = + [ + 1 : "Team 1" + 2 : "Team 2" + ] +] + +// ricochet +@PointClass size(-16 -16 -16, 16 16 16) color(0 255 0) = info_player_spectator : "Spectator Location" +[ + pitch(integer) : "Pitch (90: up, -90: down)" + angles(string) : "Pitch Yaw Roll" +] + +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(255 0 0) = info_ricochet : "Ricochet" [] +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// +// + +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_longjump : "Longjump Module" [] + +// ricochet +@PointClass size(-16 -16 0, 16 16 32) base(Item) = item_powerup : "Ricochet Powerup" [] + + +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Item) = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light, ZHLT_point) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles, ZHLT_point) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// ricochet - monsters removed + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +// this does work in ricochet... restore disc's using a weapon_disc +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +// ricochet +@SolidClass base(Targetname) = trigger_discreturn : "Ricochet Disc Return" [] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +// ricochet +@SolidClass base(Targetname) = trigger_fall : "Trigger Fall Camera" [] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +// ricochet +@SolidClass base(Targetname) = trigger_jump : "Trigger player jump" +[ + target(string) : "Target (info_target)" + height(integer) : "Jump height" + angles(string) : "Pitch Yaw Roll" + +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@PointClass base(Item) = weapon_disc : "Ricochet Disc" [] + +@PointClass base(Item) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/science-and-industry.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/science-and-industry.fgd new file mode 100644 index 0000000..9b0a250 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/science-and-industry.fgd @@ -0,0 +1,2678 @@ +// +// Science & Industry game definition file (.fgd) +// version 0.97 beta +// for Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above +// last update: 5/1/2001 +// by PapasNewBag (PapasNewBag@planethalflife.com) +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [ + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] + + spawnflags(flags) = + [ + 32: "Ignore Research" : 0 + ] +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = WeaponGroup [ + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] + + spawnflags(flags) = + [ + 32: "Ignore Research" : 0 + ] + + model(studio) : "Model" + + body(choices) : "Body" : -1 = + [ + -1: "Random" + 0: "Normal" + 1: "Open" + 2: "Open" + 3: "Small" + 4: "Group" + ] +] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "weapon_colt" + 4: "weapon_357" + 5: "weapon_9mmAR" + 6: "weapon_shotgun" + 7: "weapon_rpg" + 8: "weapon_gauss" + 9: "weapon_crossbow" + 10: "weapon_tripmine" + 11: "weapon_satchel" + 12: "weapon_handgrenade" + 13: "weapon_transistor" + 14: "weapon_vomit" + 15: "weapon_mindray" + 16: "weapon_tommygun" + 17: "weapon_snUZI" + 18: "weapon_rocketpistol" + 19: "weapon_fleshgrenade" + 20: "weapon_grapple" + 21: "weapon_cloak" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Targetname,Global) = TechBreakable +[ + target(target_destination) : "Target on break" + health(choices) : "Strength" : 100 = + [ + 100: "Very Weak (100)" + 250: "Weak (250)" + 500: "Medium (500)" + 750: "Strong (750)" + 900: "Very Strong (900)" + ] + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" + + team(choices) : "Team" : -1 = + [ + -1: "No team" + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] + + team (choices) : "Team" : -1 = + [ + -1: "Unaligned (No Team)" + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx) = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx) = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx) = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_crossbow : "Crossbow Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_snUZI : "snUZI Ammo" [] +@PointClass base(Weapon, Targetx) = ammo_rocketpistol : "Rocket Pistol Ammo" [] + + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(TechBreakable, RenderFields) = func_tech_breakable : "Breakable Technology Object" +[ + netname(string) : "Description" : "TechBreak" + + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Don't Respawn" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" + + message(string) : "Destroy Message" : "Some of your company's valuable research equipment has been destroyed, affecting the efficiency of your company's operations." + + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] + + cost(choices) : "Replacement Cost" : 5000 = + [ + 0: "No replacement cost" + 1000: "Cheap ($1,000)" + 5000: "Medium ($5,000)" + 10000: "Costly ($10,000)" + 25000: "Expensive ($25,000)" + 100000: "Critical ($100,000)" + ] + + replacetime(choices) : "Replacement Time" : 120 = + [ + 30 : "Very Quick (30 seconds)" + 60 : "Short (1 minute)" + 120 : "Medium (2 minutes)" + 300 : "Long (5 minutes)" + ] + + addcash(choices) : "Contributed Cash Production" : 0 = + [ + 0 : "No cash production" + 5 : "$5/second" + 10 : "$10/second" + 15 : "$15/second" + 30 : "$30/second" + 60 : "$60/second" + ] + + addresearch(choices) : "Contributed Research" : 0 = + [ + 0 : "No research" + 25 : "Fourth of a scientist" + 50 : "Half a scientist" + 100 : "One scientist" + 200 : "Two scientists" + ] + + lostresearch(choices) : "Research Stored" : 0 = + [ + 0 : "No research stored" + 10 : "10%" + 25 : "25%" + 50 : "50%" + 75 : "75%" + 100 : "100%" + ] + + importance(choices) : "Importance" : 2 = + [ + 0 : "Insignificant" + 1 : "Minor" + 2 : "Medium" + 3 : "Major" + 4 : "Critical" + ] + + techtype(choices) : "Technology Type" : 0 = + [ + 0 : "Generic" + 1 : "Computer" + 2 : "Cloning" + 3 : "Replicators" + 4 : "Implant Machinery" + 5 : "Communications" + 6 : "Coffee/Candy Machine" + ] +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles) = func_button : "Button" +[ + team (choices) : "Team" : -1 = + [ + -1: "Unaligned (No Team)" + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] + + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door : "Basic door" [] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] +] + +@SolidClass base(Targetname, RenderFields) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, Angles) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +// iconsprite("sprites/admin.spr") +@PointClass size(-16 -16 0, 16 16 72) = info_administrator : "Info Administrator" +[ + team (choices) : "Team" : 0 = + [ + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] +] + +@PointClass size(-32 -32 0, 32 32 64) = info_zone : "Dropoff Zone" +[ + team (choices) : "Team" : 0 = + [ + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] + + spawnflags(flags) = + [ + 1 : "Scientists" : 1 + 2 : "Salvaged Tech" : 1 + 4 : "Resources" : 1 + 8 : "Implants" : 1 + ] +] + + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" +[ + activity(choices) : "Activity" : 1 = + [ + 1 : "Idle" + 2 : "Ponder" + 20 : "Press Buttons" + 45 : "Inspect Floor" + 46 : "Write on Wall" + ] +] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" + + team(choices) : "Team" : 0 = + [ + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_resource : "Resource Entity" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Don't respawn" : 0 + 16 : "Drop Resource" : 0 + 32 : "Stolen Resource" : 0 + 64 : "Random Body" : 0 + 128: "Scaled Body" : 0 + 256: "Random Skins" : 0 + 512: "Radius Damage" : 0 + 1024: "Shell Glow Effect" : 0 + ] + + netname(string) : "Description" : "Resource" + + message(string) : "Pickup Message" : "Deliver this to your administrator" + + icon(choices) : "Carry Icon" : 2 = + [ + 1: "Scientist" + 2: "Generic" + 3: "Cash" + 4: "Crystal" + 5: "Top Secret" + 6: "CD" + 7: "Wrench" + 8: "Briefcase" + 9: "Binary" + 10: "Wine Bottle" + 11: "Painting" + ] + + model(studio) : "World Model" : "models/resource_crystal.mdl" + noise(studio) : "Carry Model" : "models/carryresource.mdl" + noise1(studio) : "View Model" : "" + body (integer) : "Body/MaxBodies" : 0 + skin (integer) : "Skin/MaxSkins" : 0 + + team (choices) : "Team" : -1 = + [ + -1: "Unaligned (No Team)" + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] + + cash(choices): "Cash Stored" : 0 = + [ + 0: "No cash" + 1000: "Minor ($1,000)" + 5000: "Medium ($5,000)" + 10000: "Good ($10,000)" + 25000: "Major ($25,000)" + ] + + research(choices) : "Research Stored" : 0 = + [ + 0 : "No research" + 50 : "Small (30 sec of research)" + 100 : "Medium (1 min of research)" + 200 : "Large (2 min of research)" + 300 : "Major (3 min of research)" + ] + + spawndelay(choices) : "Delay Spawn Time" : 0 = + [ + 0 : "Don't delay" + 60 : "Short (1 minute)" + 120 : "Medium (2 minutes)" + 300 : "Long (5 minutes)" + ] + + replacetime(choices) : "Replacement Time" : 30 = + [ + 0 : "Instant" + 15 : "Very Quick (15 seconds)" + 30 : "Short (30 seconds)" + 60 : "Medium (1 minutes)" + 120 : "Long (2 minutes)" + 300 : "Very Long (5 minutes)" + ] + + timelimit(choices) : "Delivery Time Limit" : 0 = + [ + 0 : "No time limit" + 15 : "Very Quick (15 seconds)" + 30 : "Short (30 seconds)" + 60 : "Medium (1 minutes)" + 120 : "Long (2 minutes)" + ] + + timeeffect(choices) : "Effect of missed Time limit" : 0 = + [ + 0 : "Cancels effect" + 25 : "25% effect" + 50 : "50% effect" + 75 : "75% effect" + 100 : "100% effect (no change)" + ] + + importance(choices) : "Importance" : 2 = + [ + 0 : "Insignificant" + 1 : "Minor" + 2 : "Medium" + 3 : "Major" + 4 : "Critical" + ] + + dmg(integer) : "End-Timer Damage" : 0 + + dmgperiodic(integer) : "Periodic Carry Damage" : 0 + + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + + carryspeed(choices) : "Carry Speed": 100 = + [ + 100: "100% (normal)" + 90: "90%" + 80: "80%" + 70: "70% (scientist carrying speed)" + 60: "60%" + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Angles) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] + +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + + team(choices) : "Team" : -1 = + [ + -1: "None" + 0: "MCL (Blue)" + 1: "AFD (Green)" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx) = weapon_briefcase : "Briefcase" [] +@PointClass base(Weapon, Targetx) = weapon_colt : "Colt Defender" [] +@PointClass base(Weapon, Targetx) = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx) = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx) = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx) = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx) = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx) = weapon_transistor : "Radio Transistor" [] +@PointClass base(Weapon, Targetx) = weapon_vomit : "GI Destabilizer" [] +@PointClass base(Weapon, Targetx) = weapon_mindray : "Mindray" [] +@PointClass base(Weapon, Targetx) = weapon_tommygun : "Thompson Submachine Gun" [] +@PointClass base(Weapon, Targetx) = weapon_snUZI : "Akimbo snUZIs" [] +@PointClass base(Weapon, Targetx) = weapon_rocketpistol : "Rocket Pistol" [] +@PointClass base(Weapon, Targetx) = weapon_fleshgrenade : "Flesh Eating Virus" [] +@PointClass base(Weapon, Targetx) = weapon_grapple : "Grappling Hook" [] +@PointClass base(Weapon, Targetx) = weapon_cloak : "Cloaking Device" [] + +@PointClass base(Weapon ) = weapon_generic : "Weapon Generic" +[ + model(studio) : "Model" : "models/w_woodbox.mdl" + + body(choices) : "Body" : -1 = + [ + -1: "Random" + 0: "Normal" + 1: "Open" + 2: "Open" + 3: "Small" + 4: "Group" + ] +] +@PointClass base(Weapon ) = weapon_experimental : "Weapon Experimental" +[ + priority(choices) : "Priority" : 1 = + [ + 1: "Primary" + 2: "Secondary" + 3: "Tertiary" + ] +] + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] + +// +// S&I entities +// + +@PointClass = info_administrator : "Info Administrator" +[ + team (choices) : "Team" : 0 = + [ + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] +] + +// iconsprite("sprites/scientist.spr") +@PointClass size(-16 -16 0, 16 16 72) = info_scientist_start : "Info Scientist Start" +[ + model(studio) : "Model" : "models/scientist.mdl" + + team (choices) : "Team" : 0 = + [ + 0 : "MCL (Blue)" + 1 : "AFD (Green)" + ] +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_sidetect : "SI Detect" +[ + mclscis(integer) : "Number MCL Scientists" : 3 + afdscis(integer) : "Number AFD Scientists" : 3 +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/scientist-hunt.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/scientist-hunt.fgd new file mode 100644 index 0000000..4fce2e7 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/scientist-hunt.fgd @@ -0,0 +1,6 @@ +@PointClass base(PlayerClass) = info_player_team1 : "Team 1 player start" [ + targetname(target_source) : "Name" +] +@PointClass base(PlayerClass) = info_player_team2 : "Team 2 player start" [ + targetname(target_source) : "Name" +] \ No newline at end of file diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/spirit.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/spirit.fgd new file mode 100644 index 0000000..daf3506 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/spirit.fgd @@ -0,0 +1,6092 @@ +// Spirit of Half-Life v1.8 FGD +// For WorldCraft 3.5+ and Half-Life 1.1.0.8+ +// Last update: 9th March 2008 +// Created by Laurie Cheers - http://www.bearkey.com/?laurie +// Additions by Shambler Team - http://shamteam.cbi.ru/ +// Additions by Killar - http://www.bearkey.com/?killar +// Additions by Confused - http://www.bearkey.com/?confused +// Additions by Mike - http://www.bearkey.com/?mike2k +// Additions by ytiAdmin - http://www.bearkey.com/?ytiadmin +// Additions by DeathWish - http://www.bearkey.com/?deathwish + +// In textpad use regular expression ^[\t ]*//.*\n to remove ALL comments + +//INFO +// +// For any "target" type value, you can use a "+" or "-" prefix to +// specify that the target should be turned on or off, respectively. +// (e.g. suppose you have an entity which targets "mylight". If you tell it +// to target "+mylight" instead, then it will only turn the light on, never +// off.) +// Similarly, for any Master, you can invert the master relationship (that +// is, you can disable the entity whenever the master is on) by +// adding a tilde (~) at the start of the master's name. +// +// When testing your level, it's sometimes helpful to be able to trigger +// entities manually. To trigger an entity named "mydoor", you can simply +// type "fire mydoor" at the console. +// Similarly, if you just type "fire", you will trigger whatever entity the +// player is aiming at. +// NB: this command will only work if sv_cheats is set to 1. +// +//ENDS + +// +// Worldspawn +// + +//* Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."] +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : "0.0" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display 'Half-Life' title?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "Flush global entities?" : 0 = + [ + 0 : "No, keep global ents" + 1 : "Yes, flush global ents" + ] + mapteams(string) : "Map Team List" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + //NEW 0.3 + //* Yes means the player will start this level wearing an HEV suit. + startsuit(choices) : "HEV from start" = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 0.4 + //* Yes means that monsters will appear in multiplayer games. This has no effect in a single player level. + allowmonsters(choices) : "Allow Monsters (MP only)" = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 1.4 + // Yes means the player may Gauss Jump in singleplayer. This has no effect in a multi player level. + allow_sp_gjump(choices) : "Allow SP Gauss Jump" = + [ + 0 : "No (Default)" + 1 : "Yes" + ] + + //NEW 1.5 + // Yes means the player continues to take damage from rad/tox/poison even after leaving the area + timed_damage(choices) : "Enable timed damage rad/tox/poison" : 1 = + [ + 0 : "No" + 1 : "Yes (Default)" + ] + + //NEW 1.5 + // The maximum number of cameras a player is allowed in his inventory at any one time. + max_cameras(integer) : "Max cameras in players inventory" : 2 + + //NEW 1.5 + // The maximum medical kit charge a player can have at one time. Excess is not wasted on picking up a medkit + max_medkit(integer) : "Max TOTAL medkit charge" : 200 +] + +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" +] + +//* "ZHLTReference.html" (included with the ZHLT Distribution) contains information on using these keys. +@BaseClass = ZHLTLightKeys +[ + zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 = + [ + 0: "Normal (0)" + 1: "Embedded Fix (1)" + 2: "Opaque (Blocks light) (2)" + 3: "Opaque + Embedded Fix (3)" + 6: "ConcaveFix (6)" + ] + light_origin(string) : "Light Origin (ZHLT 2.5.1+)" +] + +@BaseClass = ZhltLights +[ + _fade(integer) : "Fade (ZHLT 2.5.1+)" + _falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 = + [ + 1: "Inverse Square (1)" + 2: "Inverse Linear (2)" + ] +] + +@BaseClass = TexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = SwitchTexLight +[ + //NEW 1.0 + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal (on)" + -1: "Switchable (starts on)" + -2: "Switchable (starts off)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass = Appearflags +[ + //NEW 0.6 + skill(choices) : "Skill setting" : 0 = + [ + 0 : "All skills" + 1 : "Not in easy" + 2 : "Not in medium" + 4 : "Not in hard" + 6 : "Only in easy" + 5 : "Only in medium" + 3 : "Only in hard" + ] + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = MoveWith +[ + //NEW 0.3 + movewith(target_destination) : "Moves with" +] + +@BaseClass = Master +[ + master(string) : "Master" +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon +[ + master(string) : "Item Lock Master" +] + +@BaseClass base(Weapon) color(80 0 200) = Ammo [] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass = Delay +[ + delay(string) : "Delay before trigger" : "0" +] + +@BaseClass = Killtarget +[ + killtarget(target_destination) : "KillTarget" +] + +@BaseClass base(Target, Delay, Killtarget) = Targetx [] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + //* Additive or Texture mode only. + 1: "Slow Pulse" + //* Additive or Texture mode only. + 2: "Fast Pulse" + //* Additive or Texture mode only. + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" +//These don't seem to do anything. Correct me if I'm wrong... +// 5: "Slow Fade Away" +// 6: "Fast Fade Away" +// 7: "Slow Become Solid" +// 8: "Fast Become Solid" + +//* This setting only affects the Glow rendermode. With this setting, Glow mode behaves +//* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't +//* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this +//* useful?) + 14: "Constant Glow (Sprites)" + 15: "Distort (Models)" + 16: "Hologram (Distort + fade)" +//* Strange effect. As seen, briefly, when a Gargantua dies. + 18: "Bulge Sideways (Models)" +//* Quite pretty. As seen in Valve's mod Deathmatch Classic. + 19: "Glowing Aura (Models)" +//NEW 1.0 +//* Draw a reflection under this model's feet. + 21: "Reflection (Models)" +//NEW 1.4 + 22: "Entity in PVS" + ] +] + +@BaseClass = RenderMode +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + //* For BSP objects, the object will be rendered as a pure area of whatever + //* color is specified in FX Color. + //* For models and sprites, this is the same as Normal mode. + 1: "Pure Color" + //* For BSP objects, the object will be rendered without shadows. + //* For models and sprites, this is the same as Normal mode, except that the Pulse + //* renderfx settings work. + 2: "Texture" + //* Like additive, but as the player gets further from the sprite, it gets + //* progressively larger and more transparent. The sprite is also not obscured by + //* intervening models, which can sometimes look bad. + //* Alphatest sprites won't use their masks in this mode. + 3: "Glow (sprites only)" + //* For BSP objects, this only affects textures beginning with {. Blue pixels + //* will be transparent; non-blue pixels will be solid. + //* For models, this mode is the same as Normal mode. + //* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e. + //* the palette positions are used as opacity settings; 0 for fully transparent, + //* and 255 for fully opaque, regardless of what the palette colors actually are. + //* The only palette colour that will be used is the last one, which sets the + //* colour for the whole sprite. (Needless to say, this will look odd unless the + //* sprite is designed to be displayed this way!) + //* Oddly, Alphatest sprites won't use their masks in this mode. + 4: "Solid" + //* Only bright parts of the object are visible; darker parts are just more + //* transparent, and black is not drawn. Useful for making lighting or hologram + //* effects. + 5: "Additive" + ] +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFields +[ + renderamt(integer) : "FX Amount (1 - 255)" : 0 + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax +[ + renderamt(integer) : "FX Amount (1 - 255)" : 255 + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" +] + +@BaseClass = LockSounds +[ + //* The locked sound & sentence will be played if: + //* 1) The player walks into a door which has a name. (and Force Touchable isn't selected.) + //* 2) A door/button with a master gets activated, but the master is disabled. + //* + //* The number against each sound corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0 : "None" + 2 : "Access Denied (2)" + 8 : "Small zap (8)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + 12: "Latch Locked (12)" + ] + //* The unlocked sound & sentence will be played whenever a door starts to open and whenever + //* a button starts to push in. (They will never be played when a door starts to close, even if + //* "Toggle" is selected.) + //* + //* The number against each sound (except lightswitch) corresponds to the wav file played. + //* e.g. Buzz (10) plays "buttons/button10.wav". + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0 : "None" + 1 : "Big zap & Warmup (1)" + 3 : "Access Granted (3)" + 4 : "Quick Combolock (4)" + 5 : "Power Deadbolt 1 (5)" + 6 : "Power Deadbolt 2 (6)" + 7 : "Plunger (7)" + 8 : "Small zap (8)" + 9 : "Keycard Sound (9)" + 10: "Buzz (10)" + 13: "Latch Unlocked (13)" + 14: "Lightswitch" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3. + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied (NA)" + 2: "Security Lockout (ND)" + 3: "Blast Door (NF)" + 4: "Fire Door (NFIRE)" + 5: "Chemical Door (NCHEM)" + 6: "Radiation Door (NRAD)" + 7: "Gen. Containment (NCON)" + 8: "Maintenance Door (NH)" + 9: "Broken Shut Door (NG)" + ] + //* The letters correspond to the sentence group played (see sound/sentences.txt); + //* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3. + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted (EA)" + 2: "Security Disengaged (ED)" + 3: "Blast Door (EF)" + 4: "Fire Door (EFIRE)" + 5: "Chemical Door (ECHEM)" + 6: "Radiation Door (ERAD)" + 7: "Gen. Containment (ECON)" + 8: "Maintenance area (EH)" + ] +] + +@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster +[ + //NEW 0.7.1 + health(integer) : "Initial health (0 = normal)" + //NEW 0.7.1 + //* Be careful when changing this - a monster's actions are tied closely to its model. + model(studio) : "Model (e.g. models/can.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + target(string) : "Patrol Path" + //NEW 0.4 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + //* Don't attack the player until s/he can see us. + 1 : "WaitTillSeen" : 0 + //* Don't speak except when in combat. Don't make "idle" noises. + 2 : "Gag" : 0 + //* If ticked, the monster can't enter a func_monsterclip area. + 4 : "Monster Clip" : 0 + //* If ticked, the monster will ignore all other monsters and vice versa. + 16: "Prisoner" : 0 + //NEW 0.4 + //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck + //* in a wall and unable to move. Only tick this if you're happy for it to be stuck. + 128: "No yellow blobs" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow. + UseSentence(String) : "Use Sentence" + //* The sentence to speak when the player tells us to stop following. + UnUseSentence(String) : "Un-Use Sentence" + //NEW 0.4 + //* The sentence to speak when refusing to follow the player. + RefusalSentence(String) : "Refusal Sentence" + //NEW 0.4 + //* While locked by the master, this monster will refuse to follow the player. + master(String) : "Master (prevents following)" + //NEW 0.4 + //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for + //* this are BA (speak as a Barney) and SC (speak as a Scientist). To define a + //* speech group "XX", you need to define sentences XX_ANSWER, XX_QUESTION, XX_IDLE, + //* XX_STARE, XX_OK, XX_WAIT, XX_STOP, XX_NOSHOOT, XX_HELLO, XX_SMELL, XX_WOUND and + //* XX_MORTAL. (as well as some others, if the monsters are going to be Pre-Disaster.) + SpeakAs(string) : "Speech Group" + spawnflags(Flags) = + [ + //* Unless given a Master, a pre-disaster monster will refuse to follow the player. + 256: "Pre-Disaster" : 0 + ] +] + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + //* The number of pieces to create. + m_iGibs(integer) : "Number of shots" : 1 + //* Delay (in seconds) between shots. If 0, all the shots are fired at once. + delay(string) : "Delay between shots" : "0" + m_iszPosition(string) : "At position (blank = here) [LP]" + m_iszVelocity(string) : "At velocity (blank = angle) [LV]" + //* How fast the gibs are fired + m_flVelocity(string) : "Gib Speed Factor [LN]" : "200" + //* Course variance + m_flVariance(string) : "Course Variance" : "0.15" + //* Time in seconds for gibs to live, +/- 5% + m_flGibLife(string) : "Shot lifetime (secs)" : "4" + m_iszTargetName(string) : "Shot's name" + //NEW 0.7.1 + //* If you want to change the behaviour of the shot, this is the field to use - + //* for example, you could target a motion_manager here, to change the shot's movement. + m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)" + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + 4 : "Debug" : 0 + ] +] + +@BaseClass = Light +[ + //* Don't create a light whose name begins with "light" - a bug/feature in RAD means + //* that such a light won't be able to switch on and off. + targetname(target_source) : "Name" + _light(color255) : "Brightness" : "255 255 128 200" + //* This field will have no effect on a dynamic (i.e. named) light. + style(Choices) : "Appearance (static)" : 0 = + [ + 0 : "Normal (on)" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //* This field will have no effect on a static (i.e. nameless) light. + //* 'a' is dark, 'm' is normal brightness, 'z' is full brightness. + //* There's no support for a light to have a custom appearances when it's in a + //* state other than 'on'. See @trigger_lightstyle if you need this effect. + pattern(string) : "Custom Appearance (on)" + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOnStyle(Choices) : "Appearance (on)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iOffStyle(Choices) : "Appearance (off)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = + [ + 0: "Normal (off)" + 20: "On" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + //NEW 0.3 + m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 + //NEW 0.3 + //* This field will have no effect on a static (i.e. nameless) light. + m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = + [ + 0 : "Normal (on)" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] +] + +@BaseClass base(Targetname, Global) = Breakable +[ + target(target_destination) : "Target on break" + //NEW 0.7.1 + //* Whenever the breakable takes damage, this entity will be triggered, and passed + //* the position and direction of the bullet (or whatever). + whenhit(string) : "Trigger when hit (locus = position)" + health(integer) : "Strength" : 100 + material(choices) : "Material type" : 0 = + [ + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + 0: "Glass" + //* Gibs: models/woodgibs.mdl + //* Break noise: debris/bustcrateX.wav + //* Bounce noise: debris/woodX.wav + 1: "Wood" + //* Gibs: models/metalplategibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/metalX.wav + 2: "Metal" + //* Gibs: models/fleshgibs.mdl + //* Break noise: debris/bustfleshX.wav + //* Bounce noise: debris/fleshX.wav + 3: "Flesh" + //* Gibs: models/cindergibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 4: "Cinder Block" + //* Gibs: models/ceilinggibs.mdl + //* Break noise: debris/bustceilingX.wav + //* Bounce noise: none + 5: "Ceiling Tile" + //* Gibs: models/computergibs.mdl + //* Break noise: debris/bustmetalX.wav + //* Bounce noise: debris/woodX.wav + //* Note: Generates sparks when damaged. + 6: "Computer" + //* Gibs: models/glassgibs.mdl + //* Break noise: debris/bustglassX.wav + //* Bounce noise: debris/glassX.wav + //* Note: Makes ricochet noises when damaged. + 7: "Unbreakable Glass" + //* Gibs: models/rockgibs.mdl + //* Break noise: debris/bustconcreteX.wav + //* Bounce noise: debris/concreteX.wav + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + //* Can be used to override the default "gibs" value for the material you've specified. + gibmodel(studio) : "Gib Model" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + //NEW 0.4 + respawn(choices) : "Respawn time (secs)" : 0 = + [ + 0: "No respawn" + -1: "Respawn when triggered" + ] + //NEW 0.4 + netname(string) : "Target on respawn" + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Fade Respawn" : 0 + 16 : "Invert Hit Vector" : 0 + 256: "Instant Crowbar" : 0 + ] +] + +@BaseClass base(Appearflags) = Door +[ + target(target_destination) : "Target (Always)" + //NEW 0.4 + message(string) : "Target on Open" + netname(string) : "Target on Close" + killtarget(target_destination) : "KillTarget" + //NEW 0.5 + //* Together with "On/Off Aware", this field replaces the old + //* "synchronised" flag. + //* When set, the door will fire its Target as soon as it + //* starts to move, instead of firing when it reaches the end + //* of its move. + //* (NB: the "Target on Open" and "Target on Close" fields are not + //* affected; they will still fire at the end of movement.) + immediatemode(choices) : "Fire before moving" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + //NEW 0.5 + //* Together with "Fire before moving", this field replaces the old + //* "synchronised" flag. + //* When this is set, instead of always firing its target with + //* USE_TOGGLE, the door will send USE_ON when opening and USE_OFF + //* when closing. (NB: the "fire on open" and "fire on close" fields + //* will still send USE_TOGGLE.) + //* Additionally, instead of simply toggling whenever it's + //* triggered, the door will open when sent USE_ON, and close when + //* sent USE_OFF. + onoffmode(choices) : "On/Off Aware" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + speed(integer) : "Speed" : 100 + + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Chunk (4) plays "doors/doorstop4.wav". + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake (1)" + 2: "Clang reverb (2)" + 3: "Ratchet Stop (3)" + 4: "Chunk (4)" + 5: "Light airbrake (5)" + 6: "Metal Slide Stop (6)" + 7: "Metal Lock Stop (7)" + 8: "Snappy Metal Stop (8)" + ] + //* Setting wait to -1 also prevents the door from reversing when it comes into + //* contact with the player, as seen on the bunker door in Crossfire. + //* This setting isn't recommended if the door is using MoveWith. + wait(choices) : "Delay before close" : 3 = + [ + -1 : "Stays Open (-1)" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + //* This delay only applies to the Target, not the Fire on Open/Close fields. + delay(integer) : "Delay before fire" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + //NEW 0.3 + //* Normally a named door, or a door with "use only" selected, won't open when touched. + //* Tick here to override that. + 1024: "Force Touchable" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank +[ + spawnflags(flags) = + [ + //* For computer-controlled guns. The gun is 'On'- i.e. ready to fire at the player- at the start of the level. + 1 : "Active" : 0 + //* For computer-controlled guns. If the gun can't see the player, it won't fire. + //* (usually, for a while, the tank will keep firing at the last place it saw the player.) + 2 : "Not Solid" : 0 + 16: "Line of Sight" : 0 + //* To make a tank which the player can use, you'll also need a @func_tankcontrols entity. + 32: "Controllable" : 0 + //NEW 0.2 + //* Makes the gun project a laser spot, similar to the player's rocket launcher. + //* This is helpful for players who are trying to aim with it. + 64: "Laser Spot" : 0 + //NEW 0.2 + //* For player-controlled guns. + //* Makes the gun point at whatever is at the centre of the player's view, instead of simply facing the same way as the player. + 128: "Match Target" : 0 + ] + + //* Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + //NEW 0.6 + //* While this master is locked, the gun cannot fire, but the player can still control it. + //* (Intended to enable reloading effects.) + firemaster(string) : "Fire Master" + //NEW 0.7.1 + //* Whenever the tank fires, this entity is triggered. (the locus for this is + //* the coordinates and direction at the end of the gun.) + m_iszLocusFire(string) : "Trigger on firing (locus = barrel)" + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + //* Bug fixed: rotate sound now stops when a player releases control of the gun. + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + //NEW 0.4 + m_iClass(choices) : "Behaviour" : 0 = + [ + 0: "Attack only players" + 11: "Barney" + 4: "Human Military" + 5: "Alien Military" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigmove1.wav + 1: "big elev 1" + //* plats/bigmove2.wav + 2: "big elev 2" + //* plats/elevmove1.wav + 3: "tech elev 1" + //* plats/elevmove2.wav + 4: "tech elev 2" + //* plats/elevmove3.wav + 5: "tech elev 3" + //* plats/freightmove1.wav + 6: "freight elev 1" + //* plats/freightmove2.wav + 7: "freight elev 2" + //* plats/heavymove1.wav + 8: "heavy elev" + //* plats/rackmove1.wav + 9: "rack elev" + //* plats/railmove1.wav + 10: "rail elev" + //* plats/squeekmove1.wav + 11: "squeek elev" + //* plats/talkmove1.wav + 12: "odd elev 1" + //* plats/talkmove2.wav + 13: "odd elev 2" + ] + custommovesnd(sound) : "Custom Move Sound" + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + //* plats/bigstop1.wav + 1: "big elev stop1" + //* plats/bigstop2.wav + 2: "big elev stop2" + //* plats/freightstop1.wav + 3: "freight elev stop" + //* plats/heavystop2.wav + 4: "heavy elev stop" + //* plats/rackstop1.wav + 5: "rack stop" + //* plats/railstop1.wav + 6: "rail stop" + //* plats/squeekstop1.wav + 7: "squeek stop" + //* plats/talkstop1.wav + 8: "quick stop" + ] + customstopsnd(sound) : "Custom Stop Sound" + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Targetname, Master, Targetx) = Trigger [] + +@BaseClass = TriggerCond +[ + //NEW 0.5 + //* Only trigger when touched by an entity with this name. + //* If this is set, the flags "Monsters", "Pushables", etc will be ignored. + //* (Alternatively you can specify a classname, e.g. monster_barney.) + netname(string) : "Triggered only by entity" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables" : 0 + //NEW 0.6 + 8: "Everything else": 0 + ] +] + + +@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = Script +[ + target(target_destination) : "Target (fire when done)" + delay(string) : "Delay before firing target" : "0" + killtarget(target_destination) : "KillTarget when done" + //NEW 0.4 + //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) + //* This is useful to let you have special effects etc triggered during the animation. + m_iszFireOnBegin(string): "Fire after moving" + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + m_iszEntity(string) : "Target Monster [LE]" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + m_flRadius(integer) : "Search Radius" : 512 + //NEW 1.0 + m_iPriority(choices) : "Priority" : 0 = + [ + 0 : "Normal" + 4 : "Override other sequences" + ] + //NEW 1.0 + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + //NEW 0.7.1 + m_iRepeats(integer) : "Repeat action X more times" : 0 + //NEW 0.7.1 + m_fRepeatFrame(string) : "Repeat from frame" : "0" + spawnflags(Flags) = + [ + //* Default behaviour for a sequence is to delete itself after finishing. + 4 : "Repeatable" : 0 + //* If the player shoots a monster or tells a scientist/barney to follow him, any + //* scripts the monster is playing will usually be interrupted. + 32: "No Interruptions" : 0 + ] +] + +@BaseClass base(Script) size(-16 -16 0, 16 16 72) color(255 0 255) = ScriptSequence +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Turn target (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 0 = + [ + //* Turn to the same angle the turn target is facing. + 0 : "Match Angle" + //* Turn to look at the turn target. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + //* Animation to play after moving. Note that a @monster_generic won't add any sounds or + //* special effects to its animations. If you need those to appear, you'll have to use the + //* specific monster_<whatever> entities, instead. + m_iszPlay(string) : "Action Animation" : "" + //* If you specify an idle animation, then when the level begins the monster will be frozen and made + //* to play that animation (this is the main use for the idle animation in Valve's levels). After that + //* the monster will play the action animation when you trigger the sequence, and will then revert to its + //* normal AI. + //* If there are any other scripted_sequences with the same name as this one, then the monster will also play the "idle" animation + //* while it's waiting for the other sequences to be ready to start. + //* And finally, if the action animation is the same as the idle animation, then any time the monster would be playing the idle + //* animation, instead it will be frozen. + //* Obvious, eh? ;) + m_iszIdle(string) : "Idle Animation" : "" + spawnflags(Flags) = + [ + //* If the animation includes the monster dying, don't fade the corpse afterwards. + 8 : "Leave Corpse" : 0 + //* Even if the animation makes the monster look like it's walking around, DON'T shift + //* the monster to its apparent new location when the animation ends. + 128: "No Script Movement" : 0 + //NEW 0.4 + //* Some death sequences kill the monster automatically (e.g. "herodie" in loader.mdl) + //* but for most you'll have to tick this box. This is affected by Leave Corpse in the + //* obvious way. + 256: "Monster Dies" : 0 + ] +] + +// +// Entities +// + +//* Obsolete. Use scripted_sequence. (The only difference between them is that aiscripted_sequence +//* effectively has its "Override AI" flag ticked all the time. +@PointClass base(ScriptSequence) = aiscripted_sequence : "AI Scripted Sequence" [] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name (e.g. vox/c.wav)" + health(integer) : "Volume (10 = loudest)" : 10 + //NEW 0.5 + //* The entity you name here will play the sound, instead of the ambient_generic doing so itself. + //* Be aware that if the entity is playing another sound on the same channel, they will interfere + //* with each other. + target(target_destination) : "Entity to play from" + //NEW 0.5 + channel(choices) : "Channel to use for that entity" : 6 = + [ + 1: "Weapon" + //* If a monster's model has a mouth, and you play a sound on its "voice" channel, + //* the mouth will automatically move. + 2: "Voice" + 3: "Item" + 4: "Body" + 5: "Stream" + 6: "Static" + ] + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + noise(string) : "Volume calculation [LN] (overrides)" : "" + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(choices) : "LFO type (0 - 3)" : 0 = + [ + 0: "Off" + 1: "Square" + 2: "Triangle" + 3: "Round" + ] + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + //NEW 1.8 + //* This scales the radius up (if you put more than 1) or down (if you put less than 1). + //* It works in addition to the small/medium/large flags. + radiusscale(string) : "Radius scale factor" + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + //* Medium is the default radius, so ticking this does nothing. + //* (These should really be chosen from a pull-down menu.) + 4: "Medium Radius" : 0 + 8: "Large Radius" : 0 + 16:"Start Silent" : 0 + 32:"Is NOT Looped" : 0 + ] +] + +// +// ammo +// + + +@PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Ammo, Targetx) studio("models/w_shotshell.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "RPG Ammo" [] + +//* This entity is probably obsolete, now that @func_button has a "Can't Use" flag. +@SolidClass base(Target, Master, RenderFields, ZHLTLightKeys, MoveWith) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates": 0 + 2: "Start On" : 0 + 4: "Non Solid" : 0 + 8: "Can't shoot" : 0 + ] +] + + +// +// locus calculation entities +// + +//NEW 1.8 +@PointClass color(200 128 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_angles : "Calculate Angles" +[ + netname(string) : "Base angle" : "*locus" + impulse(choices) : "Meaning of base angle" : 0 = + [ + 0 : "Angles [PYR]" + 1 : "View Angle from player [LE]" + ] + message(string) : "Rotate by angle [PYR]" + noise(string) : "Set Pitch [LN] (blank = don't)" + noise1(string) : "Set Yaw [LN] (blank = don't)" + noise2(string) : "Set Roll [LN] (blank = don't)" +] + +//NEW 1.8 +@PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_numfromcvar : "Calculate a value from a console variable" +[ + target(string) : "Cvar name" + spawnflags(flags) = + [ + 1 : "Parse as [LN]" : 0 + ] +] + +//NEW 1.8 +//* If a locus calculation fails (for example, because its target is missing or whatever), it usually returns 0 (or 0 0 0 for vector calculations). If you want something else to happen when your calculation fails, use this to catch failed calculations and return the value you actually want, and/or trigger something. +@PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_fallback : "Handle calculation failures" +[ + target(string) : "Calculation [LV/P/N]" : "*locus" + netname(string) : "Fallback calculation [LV/P/N]" + message(string) : "Fire if fallback used" +] + +//NEW 1.8 +//* To use this, simply refer to it in any field that's designated [LN]. +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_subratio : "Calculate number based on entity properties" +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfroment : "Calculate number based on entity properties" +[ + target(string) : "Entity to use [LE]" : "*locus" + skin(choices) : "Number to get" : 0 = + [ + 2: "Number of entities" + 0: "health/maxhealth(Monsters/Players/Breakables)" + 1 : "HasWeapons(Players)" + 0 : "current count(Watcher_Count)" + 1 : "current count/Comparison number (Watcher_Count)" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LN]. +//OLD @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_ratio : "Number adjustment" +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromnum : "Number adjustment" +[ + target(string) : "Based on number [LN]" : "*locus" + impulse(choices) : "Calculation" : 0 = + [ + 0 : "None" + 1 : "Reversed (1-X)" + 2 : "Negative (-X)" + 3 : "Reciprocal (1/X)" + 4 : "Square (X*X)" + 5 : "Inverse Square (1/X*X)" + 6 : "Square root" + 7 : "Cosine" + 8 : "Sine" + 9 : "Tangent" + 10 : "Inverse Cosine" + 11 : "Inverse Sine" + 12 : "Inverse Tangent" + ] + netname(string) : "Offset by [LN]" : "0" + + message(string) : "Scale factor [LN]" : "1" + + noise(string) : "Min (blank = none) [LN]" + noise1(string) : "Max (blank = none) [LN]" + frags(choices) : "If outside range" : 0 = + [ + //* e.g. if the range were 0%-100%, and the value were 120%, the result would be 100%. + 0 : "Pick nearest value" + //* In the case above, the result would be 20%. + 1 : "Wrap around" + //* In the case above, the result would be 80%. + 2 : "Bounce back" + //* Treated as 0. Or you can catch this failure with calc_fallback. + 3 : "Fail" + ] +] + +//NEW 1.8 +//* To use this, simply refer to it in any field that's designated [LN]. +@PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromvec : "Calculate number based on vector" +[ + target(string) : "Vector to use [LV]" : "*locus" + noise(string) : "Swizzle/replace elements": "X Y Z" + netname(string) : "Vector B [LV]" : "0 1 0" + noise1(string) : "Swizzle/replace elements B": "X Y Z" + impulse(choices) : "Number to get" : 0 = + [ + 0: "X" + 1 : "Y" + 2 : "Z" + 3 : "Length" + 4 : "Pitch" + 5 : "Yaw" + 6 : "Min X (of A/B)" + 7 : "Max X (of A/B)" + 8 : "Min Y (of A/B)" + 9 : "Max Y (of A/B)" + 10 : "Min Z (of A/B)" + 11 : "Max Z (of A/B)" + 20 : "Angle from B" + //* i.e. the cosine of the angle between them. + 21 : "Component in B" + 22 : "Length/B's Length" + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LP]. +//OLD @PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_position : "Calculate position" +@PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_posfroment : "Calculate position" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Position to calculate" : 1 = + [ + 0 : "Origin" + 1 : "Eyes" + 2 : "Top" + 3 : "Centre" + 4 : "Bottom" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + //* Return a random point from within the entity's bounding box. + 9 : "Random" + ] + message(string) : "Add offset [LV]" : "0 0 0" + spawnflags(flags) = + [ + 1 : "Debug" : 0 + ] +] + + + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_subvelocity : "Calculate velocity based on entity properties" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfroment : "Calculate velocity based on entity properties" +[ + netname(string) : "Entity to use [LE]" : "*locus" + impulse(choices) : "Value to calculate from" : 0 = + [ + 0 : "Movement Velocity" + 1 : "Angle" + 2 : "View Angle" + 5 : "Attachment point 0" + 6 : "Attachment point 1" + 7 : "Attachment point 2" + 8 : "Attachment point 3" + ] + noise(string) : "Scale factor [LN]" : "1.0" + message(string) : "Add offset [LV]" : "0 0 0" + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + 1 : "Normalize" : 0 +// 2 : "Flip Vertical" : 0 +// 4 : "Discard X" : 0 +// 8 : "Discard Y" : 0 +// 16 : "Discard Z" :0 + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//* This calculates the velocity that would be needed to travel from one point to another. +//* By default, things will take 0.1 seconds to travel this distance. (Use the "length +//* factor" setting to change this.) +//* This can also be used to calculate (for example) where a beam's endpoint should +//* be, in order for it to point towards a given location. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_path : "Calculate velocity for travelling" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfrompos : "Calculate velocity for travelling" +[ + target(string) : "Start position [LP]" : "*locus" + netname(string) : "Destination" + armorvalue(choices) : "Destination is" : 0 = + [ + //* The destination is the end position. + 0 : "Position [LP]" + //* To find the end position, add this offset to the start position. + 1 : "Offset [LV]" + ] + health(choices) : "Length Calculation" : 0 = + [ + 4 : "Square (X = X*X)" + 0 : "None (X = X)" + //* With this choice, the actual distance between the points is ignored. + //* So instead of taking a fixed time to travel, the object will move at + //* a fixed speed, or the beam will extend a fixed distance. + 1 : "Normalise (X = 1)" + 2 : "Reciprocal (X = 1/X)" + 3 : "Inverse Square (X = 1/X*X)" + ] + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + //* A negative number here will make the line go in the opposite direction. + noise(string) : "Length factor [LN]" : "1.0" + //* If this is set, a line will be drawn from the start position to the end + //* position. The first obstacle it hits will then be used as the new end + //* position. + frags(choices) : "Line is blocked by" : 0 = + [ + 0 : "Nothing" + 1 : "Walls" + 2 : "Walls & Glass" + 3 : "Walls & Monsters" + 4 : "Walls, Monsters & Glass" + ] + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + 1 : "Debug mode" : 0 + ] +] + +//NEW 0.7.1 +//* To use this, simply refer to it in any field that's designated [LV]. +//OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_polar : "Calculate velocity" +@PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfromvec : "Modify velocity" +[ + netname(string) : "Based on velocity [LV]" : "0 1 0" + //* Rotate the velocity by this amount. + noise1(string) : "Rotated by angle [PYR]" : "0 0 0" + //* Scale the velocity by this factor. + //* E.g: 2.0 will specify "twice as fast/twice as far", and + //* 0.5 will specify "half as fast/half as far". + noise(string) : "Length factor [LN]" : "1.0" + //* After rotation and scaling, add this offset to the velocity. + message(string) : "Add offset [LV]" : "0 0 0" + noise2(string) : "Swizzle/replace elements": "X Y Z" + spawnflags(flags) = + [ + //* The "length factor" field will set the exact length of the velocity, + //* instead of scaling it by a factor. + 1 : "Normalize" : 0 + ] +] + +// +// cyclers +// + +// This entity is probably obsolete, now that env_model exists. +@PointClass base(Targetname, RenderFields, MoveWith) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" +] + +@PointClass base(Targetname, RenderFields, MoveWith) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 +] + +@PointClass base(Monster, MoveWith) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" [] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) iconsprite("sprites/envbeam.spr") size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + //* If you only give the beam one endpoint, then radius will specify how + //* far away the other endpoint should be (randomly) placed. + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "0" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Distortion (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (-1 = never)" : "0" + //NEW 0.6 + //* If you use a negative number for the damage, it'll now heal the target. + damage(string) : "Damage / second" : "0" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 128 : "Crowbar" + 256 : "Electric shock" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire on trip" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + spawnflags(flags) = + [ + //* This is the default unless you specify a name. + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + //* Makes the beam form a circle, with a diameter that stretches between the two endpoints. + //* For some unknown reason, both endpoints must have a model. + //* NB: because the beam will stretch between the origins of the two entities, you'll + //* need to give each endpoint an origin brush. + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //NEW 0.4 + //* For making a rope, etc. + //* NB: this flag will be ignored unless the beam's Life is 0. + //* This also won't work on a Ring beam. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* If you specify an "entity to trail", a trail will be attached or removed from the entity you +//* specify. The trail will turn off automatically if the +//* entity remains stationary for a few seconds, or alternatively you can turn it on and off by +//* triggering the env_beamtrail. +//* If you don't specify an "entity to trail", the env_beamtrail itself will have a trail; in that case +//* you probably want to tell it what entity it should MoveWith. +//* Neither version will do anything if the trailed entity isn't moving when you activate the trail. +//* The trail effect doesn't correspond exactly to with the movement of the entity, so don't expect too +//* much from it. We're not mapping for UT2003 here. +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_beamtrail : "Beam trail effect" +[ + target(string) : "Entity to trail (blank = this) [LE]" + netname(sprite) : "Sprite Name" : "sprites/smoke.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + armorvalue(integer) : "Width" : 5 + health(string) : "Fade time (secs)" : "4.0" + spawnflags(flags) = + [ + 1: "Start off" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_beverage : "Beverage Dispenser" +[ + target(string) : "Initial position (blank = here) [LP]" + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/env.spr") = env_blood : "Blood Effects" +[ + target(string) : "Initial position (blank = here) [LP]" + netname(string) : "Direction (blank = angles) [LV]" + color(choices) : "Blood Color" : 0 = + [ + 0: "Red (Human)" + 1: "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +//* Bubbles cannot drift sideways with this entity; use an @env_model and +//* "models/pipe_bubbles.mdl" instead. +@SolidClass base(Targetname, ZHLTLightKeys, MoveWith) iconsprite("sprites/env.spr") = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +//NEW 0.4 +//* Works like an @env_render: you trigger it to change the properties of the target. +@PointClass iconsprite("sprites/env.spr") = env_customize : "Change entity properties" +[ + //* Leave this blank to have it take effect as soon as the level starts. + targetname(target_source) : "Name" + //* You can also specify a classname here, e.g. monster_barney. + target(string) : "Target to affect [LE]" + //* If the target is a classname, the game picks a random monster of that type from within this + //* search radius. This has no effect if the target is anything except a classname. + m_flRadius(integer) : "Search Radius" : 512 + //* Player: 0 = gordon's head, 1 = helmeted. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + //* Note that this entity can only change their appearance- for example, grunts who had shotguns will still fire shotgun rounds. + body(choices) : "Set body" : -1 = + [ + -1 : "No change" + ] + //* Scientists and Human Grunts: 1 = black skin. + //* Bullsquids, Houndeyes, Slaves: 1 = eyes shut. + //* Ichthyosaur: 0-4 = different eye positions. + skin(choices) : "Set skin" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Skin 0 (normal)" + 1 : "Skin 1" + 2 : "Skin 2" + 3 : "Skin 3" + ] + //* If the target is a brush entity with a switchable texture (one with both a +0 version and + //* a +A version), then this switches between the two versions. + //* If the entity has switchable texlights on it, this will also turn those lights on and off. + frame(choices) : "Set brush texture" : -1 = + [ + -1 : "No change" + -2 : "Toggle 0/1" + 0 : "Texture 0 (normal)" + 1 : "Texture 1 (alternate)" + //* With this set, triggering the env_customize On makes the target + //* use its normal texture, and Off makes it use the alternate one. + 4: "On/Off based on usetype" + //* The opposite of the previous setting; On sets the alternate texture, + //* Off sets the normal one. + 5: "Off/On based on usetype" + ] + //* Use this setting with caution - a lot of a monster's behaviour is + //* determined by its model. (You should be safe if the new model is just + //* a set of different textures.) + m_iszModel(string) : "Set model (e.g. models/can.mdl)" + m_bloodColor(choices) : "Blood Color" : 0 = + [ + 0 : "No change" + -1 : "Don't Bleed" + 247 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* Change the pitch of the monster's voice (100 = normal pitch, higher numbers = higher pitch) + m_voicePitch(choices) : "Voice Pitch (100 = normal)" : -1 = + [ + -1 : "No change" + ] + //* >1 = fast + //* 1 = normal speed + //* 0..1 = slow + //* 0 = stop + //* -1 = no change + m_fFramerate(string) : "Frame rate (-1 = no change)" : "-1" + //* Sets: + //* agrunt.mdl: head position (45..-45) + //* hgrunt.mdl: head position (70..-70) + //* barney.mdl, gman.mdl, islave.mdl, scientist.mdl: head position (60..-60) + //* apache.mdl: gun yaw (90..-90) + //* barnacle.mdl: tongue length (0..-1024) + //* garg.mdl: body yaw (60..-60) + //* osprey.mdl: rotor angle (0..-90) + //* icky.mdl: tail position (45..-45) + //* miniturret.mdl, sentry.mdl, turret.mdl: gun yaw (0..360) + m_fController0(choices) : "Bone controller 0" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* Sets: + //* apache.mdl: gun pitch (45..-10) + //* (mini)turret.mdl: gun pitch (15..-90) + //* sentry.mdl: gun pitch (60..-60) + //* garg.mdl: body pitch (35..-35) + m_fController1(choices) : "Bone controller 1" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController2(choices) : "Bone controller 2" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + //* In the standard models, this does nothing. Supplied for the benefit of + //* user-produced models. + m_fController3(choices) : "Bone controller 3" : 0 = + [ + 0 : "No change" + 1024 : "Set to 0" + ] + m_iClass(choices) : "Set behaviour" : 0 = + [ + 0 : "No change" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Reaction to player" : -1 = + [ + -1 : "No Change" + //* That is, normal for the monster's current behaviour. + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. The monster will + //* stop being friendly when hurt by the player, regardless of + //* how. (e.g. even if they stupidly ran into the middle of a firefight.) + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. The monster will + //* stop being friendly when shot deliberately by the player, + //* but not when (for instance) caught in grenade explosions, or in the + //* middle of combat. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist, + // following the player on request. + //5 : "Follower" + ] + //* If you want the entity to be partly transparent, use @env_render instead. + m_iVisible(choices) : "Visibility" : 0 = + [ + 0: "No change" + 1: "Visible" + 2: "Invisible" + 3: "Toggle" + //* Trigger the env_customize On for visible, and Off for invisible. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for visible, and On for invisible. + 5: "Off/On based on usetype" + ] + //* Currently, this will cause problems if used to solidify a non-monster, + //* non-brush entity. + //* Note that a @func_ladder will still act as a ladder if you make it + //* non-solid. + m_iSolid(choices) : "Solidity" : 0 = + [ + 0: "No change" + 1: "Solid" + 2: "Not Solid" + 3: "Toggle" + //* Trigger the env_customize On for solid, and Off for non-solid. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for solid, and On for non-solid. + 5: "Off/On based on usetype" + ] + m_iPrisoner(choices) : "Prisoner" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On for a prisoner, and Off for a non-prisoner. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off for a prisoner, and On for a non-prisoner. + 5: "Off/On based on usetype" + ] + m_iMonsterClip(choices) : "MonsterClip flag" : 0 = + [ + 0: "No change" + 1: "On" + 2: "Off" + 3: "Toggle" + //* Trigger the env_customize On to use Monsterclip, and Off to not use it. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to use Monsterclip, and On to not use it. + 5: "Off/On based on usetype" + ] + //* Applies to barneys, scientists, "Friendly until hurt" and "Friendly + //* until provoked" monsters, and overrides these monsters' usual liking + //* for the player- e.g. as if the player had shot them. + m_iProvoked(choices) : "Angry At Player" : 0 = + [ + 0: "No change" + 1: "Yes" + 2: "No" + 3: "Toggle" + //* Trigger the env_customize On to be angry, and Off to calm down. + 4: "On/Off based on usetype" + //* Trigger the env_customize Off to be angry, and On to calm down. + 5: "Off/On based on usetype" + ] + spawnflags(flags) = + [ + 1: "Affect corpses" : 0 + 2: "Once Only" : 0 + 4: "Debug" : 0 + ] +] + +//NEW 0.7.1 +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_decal : "Decal sprayer" +[ + target(string) : "Position (blank = here) [LP]" + netname(string) : "Spray direction (blank = angle) [LV]" + message(string) : "Max distance (blank = none) [LN]" + impulse(choices) : "Decal group" : 0 = + [ + 1 : "Gunshot" + 5 : "Big gunshot" + 2 : "Blood" + 3 : "Alien blood" + 4 : "Glass cracks" + 6 : "Scorch marks" + 7 : "Bullsquid splat" + 0 : "Custom (see below)" + ] + noise(sprite) : "Custom decal texture" +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. +//* Note that this primarily lights the world (i.e. brushes); studio models will +//* pick up the lighting if they're standing in it, but they'll just be a solid colour. +//* To just light studio models, see @env_elight. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_dlight : "Dynamic light effect" +[ + message(string) : "Position (blank = here) [LP]" + rendercolor(color255) : "Light Color (R G B)" : "255 255 255" + renderamt(integer) : "Radius" : 12 + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.7.1 +//* Creates a temporary ball of light when triggered. Only lights studio models +//* (e.g. monsters), but does light them properly. Quite pretty. +//* See @env_dlight if you want to light the walls, etc. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_elight : "Entity light effect" +[ + netname(string) : "At position (blank = here) [LP]" + target(string) : "Entity to follow (blank = this) [LE]" + impulse(choices) : "Attachment point on that entity" : 0 = + [ + 0 : "None" + 1 : "1" + 2 : "2" + 3 : "3" + 4 : "4" + ] + renderamt(integer) : "Radius" : 12 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + health(string) : "Duration (0 = until triggered)" : "0.0" + frags(integer) : "Decay (units/sec)" : 0 + spawnflags(Flags) = + [ + 1 : "Only once" : 0 + 2 : "Start on" : 0 + ] +] + +//NEW 0.4 +//* Essentially, this produces a shifting group of parallel beams. I've called it +//* env_rain because that's the most-requested use for it. +//* For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, +//* Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr. +//* For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, +//* Drip Sprite = sprites/rain.spr. +@SolidClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_rain : "Rain Effect" +[ + //* Set this to (for example) "70 0 0" to make slanted rain. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + //* Negative numbers will make the rain fall upwards. + //* This is an average; each drip will move at between 75%-125% of this speed. + m_dripSpeed(integer) : "Drip Speed" : 40 + m_dripSize(integer) : "Drip Width" : 5 + m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 + rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" + m_iNoise(integer) : "Beam noise (distortion)" : 0 + m_burstSize(integer) : "Number of drips per update" : 2 + //* If 0, no updates; all the beams will appear as soon as it's activated. + m_flUpdateTime(string) : "Time between updates" : "0.5" + m_flMaxUpdateTime(string) : "Max time between updates (random)" + target(string) : "Fire on updating" + m_fLifeTime(string) : "Beam Lifetime (0 = three updates)" + texture(sprite) : "Drip Sprite" : "sprites/rain.spr" + m_axis(choices) : "Beam Direction" : 0 = + [ + 0 : "Z axis (vertical)" + 1 : "X axis" + 2 : "Y axis" + ] + m_iExtent(choices) : "Extent type" : 1 = + [ + 0 : "Fill brush" + 1 : "Obstructable" + 3 : "Reverse obstructable" + 2 : "Arcing" + 4 : "Reverse arcing" + 5 : "Arcing Through" + ] + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@SolidClass base(Targetname, MoveWith) = env_mirror : "Mirror" +[ + radius(integer) : "Radius" : 330 + frags(string) : "Frags ([SF]blank for auto)" + spawnflag(flags) = + [ + 1 : "Draw Player" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_explosion : "Explosion" +[ + target(string) : "Initial position (blank = here) [LP]" + iMagnitude(integer) : "Magnitude/Radius" : 100 + spawnflags(flags) = + [ + 1 : "No Damage" : 0 + 2 : "Repeatable" : 0 + 4 : "No Fireball" : 0 + 8 : "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + //* If activated by a player, that player's screen will fade, + //* but other players will be unaffected. + 4: "Activator Only" : 0 + //NEW 0.7.1 + //* Ignore the hold time; just fade out permanently. + //* (To fade back in, you'll need to use another env_fade.) + 8: "Permanent" : 0 + 16: "Fire at Camera" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fog : "Fog effect, DMC stylee" +[ + fadein(integer) : "Fade in time" : 0 + holdtime(string) : "Hold time (0 = permanent)" : "0" + fadeout(integer) : "Fade out time" : 0 + startdist(integer) : "Fog start position" : 0 + enddist(integer) : "Fog end position" : 1000 + rendercolor(color255) : "Fog Color (R G B)" : "255 255 255" + spawnflags(flags) = + [ + 1 : "Start active" : 0 + ] +] + +//NEW 0.6 +//* To set the player's footstep sounds, trigger this entity 'on'. To revert to normal, +//* trigger it 'off' in the same way. +//* Alternatively, you can just toggle it, to alternately set and unset the sounds. +//* If one of the sound fields is left blank, it will have no effect... so if you +//* actually want it to become silent, choose common/null.wav. +//* This entity is probably most useful as the "fire on/off" target of a trigger_inout, +//* to specify the area over which the footsteps are to be changed. +@PointClass base(Targetname, Master) iconsprite("sprites/env.spr") = env_footsteps : "Change Movement Sounds" +[ + frags(choices) : "Preset Footstep type" : 0 = + [ + 0 : "Custom (see below)" + -1 : "Concrete" + 1 : "Metal" + 2 : "Dirt" + 3 : "Vent" + 4 : "Grate" + 5 : "Tile" + 6 : "Paddling" + 7 : "Wading" + 8 : "Ladder" + ] + //* Here, you can either specify a single sound file as normal, or else specify + //* a group of 4 sounds by inserting '?' instead of the number 1-4. + //* (for example, to play a random sound in the range player/pl_step1.wav to + //* player/pl_step4.wav, you would write 'player/pl_step?.wav'.) + //* (This works on the other sound fields, too.) + noise(sound) : "Custom Footstep sound" + noise1(sound) : "Ladder sound" + noise2(sound) : "Wading sound" + noise3(sound) : "Paddling sound" + spawnflags(flags) = + [ + 1: "Set only" : 0 + 2: "Once only" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_funnel : "Large Portal Funnel" +[ + //NEW 0.7.1 + message(string) : "Position (blank = here) [LP]" + //NEW 0.7.1 + //* Default: sprites/flare6.spr + netname(sprite) : "Particle sprite" + spawnflags(flags) = + [ + 1: "Reverse" : 0 + //NEW 0.5 + 2: "Repeatable" : 0 + ] +] + +//* See also @env_state +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger to send" : 3 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) color(30 100 0) iconsprite("sprites/env.spr") = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_laser : "Laser Beam Effect" +[ + //NEW 1.0 + LaserStart(target_destination) : "Start At (blank = here) [LP]" + LaserTarget(target_destination) : "Fire Towards" + m_iTowardsMode(choices) : "Meaning of Fire Towards" : 0 = + [ + 0 : "Position [LP]" + 1 : "Direction [LV]" + ] + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + //NEW 1.0 + //* If you want, you can name an env_sprite here, and the laser will use that as its start sprite. + StartSprite(sprite) : "Start Sprite" : "" + //* If you want, you can name an env_sprite here, and the laser will use that as its end sprite. + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + //NEW 0.6 + //* If you specify a negative number here, the target will be healed instead. + damage(string) : "Damage / second" : "100" + //NEW 0.6 + frags(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Bullet ('blood loss')" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Sonic ('internal bleeding')" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (continuous)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + //NEW 0.6 + target(target_destination) : "Fire when tripped" + //NEW 0.6 + netname(target_destination) : "Tripped only by entity" + //NEW 0.6 + m_iProjection(choices) : "Projection mode" : 0 = + [ + 0: "Normal" + //* With this enabled, the laser's Target position only specifies + //* the direction. The beam can actually extend beyond it. + 1: "Extend past endpoint" + ] + //NEW 0.6 + m_iStoppedBy(choices) : "Stopped by" : 0 = + [ + 0: "Glass & Monsters" + 1: "Monsters only" + //* Monster hulls are a little bigger than monster hitboxes, + //* so with this option the beam will be more likely to hit them. + 2: "Glass & Monster hulls" + 3: "Monster hulls only" + 4: "Glass only" + 5: "Neither" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + //NEW 0.6 + 1024: "Interpolate" : 0 + ] +] + +@PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, MoveWith, RenderFields) studio() = env_model : "New alternative to cyclers" +[ + model(studio) : "Model name" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + //NEW 1.0 + scale(string) : "Scale (1.0 = normal size)" + + m_iszSequence_On(string) : "Sequence when on" + m_iAction_On(choices) : "Behaviour when on" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + m_iszSequence_Off(string) : "Sequence when off" + m_iAction_Off(choices) : "Behaviour when off" : 0 = + [ + 0: "Freeze when sequence ends" + 1: "Loop" + 2: "Change state when sequence ends" + ] + + spawnflags(flags) = + [ + 1: "Initially Off" : 0 + 2: "Drop to Floor" : 0 + 4: "Solid" : 0 + ] +] + +//NEW 0.7.1 +//* Creates various particle effects when triggered. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_quakefx : "Quake 1 particle effects" +[ + message(string) : "Position (blank = here) [LP]" + impulse(choices) : "Effect type" : 4 = + [ + //* A burst of twinkly orangey particles, with explosion sound effect. + //* Quite pretty. + //* (As seen in Quake when the blob monsters are killed.) + 4 : "Tar Explosion" + //* A strange field of red particles. + 10 : "Lava Splash" + //* A smallish mass of white particles. + //* (As seen in Quake when a player spawns or teleports.) + 11 : "Teleport Splash" + //* A burst of yellowy-white particles, with explosion sound effect. + //* (As seen in Quake when a grenade or rocket goes off.) + 12 : "Explosion" + //* An expanding cube of particles. Quite pretty. + 122 : "Particle Burst" + ] + //* Used only by Particle Burst. This is an index into the + //* standard engine palette; e.g. 247 is human blood, 195 is alien blood. + frags(integer) : "Particle Burst: color number" : 70 + armortype(integer) : "Particle Burst: radius" : 300 + health(string) : "Particle Burst: duration" : "1.0" + spawnflags(flags) = + [ + 1: "Repeatable" : 0 + ] +] + +//NEW 1.2 +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFields) size (-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_particle : "Particle Effect" +[ + message(string) : "Particle file" : "aurora/smoke.aur" + netname(string) : "Child Particles name" + spawnflags(flags) = + [ + 1: "Start On" : 0 + 2: "Spawn Use" : 0 + ] +] + + +@PointClass base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + //NEW 0.7.1 + //* The Renderamt number will be multiplied by this factor. + message(string) : "FX Amount factor [LN]" + //NEW 0.7.1 + //* Set the scale of the affected model or sprite. + //* (If Fade Time is set, the scale will change slowly over time.) + m_fScale(string) : "Scale (0 = no change) [LN]" + target(target_destination) : "Target to affect [LE]" + //NEW 0.5 + //* If you set this, the affected entity (or entities) will fade + //* progressively to the new settings you specify. Only Renderamt + //* and rendercolor will fade; the other values will change + //* instantly, as usual. + frags(string) : "Fade Time (secs)" : "0" + //NEW 0.5 + //* The frequency at which the fade gets updated. If left blank (or + //* set to 0), it updates as fast as possible. + //* You probably won't need to set this unless you actually want + //* it to look coarse. + //* If a lot of entities are fading at the same time, and + //* you find the game is slowing down, you may want to try setting + //* this to 0.2 or so. + armorvalue(string) : "Fade Coarseness (secs)" + //NEW 0.5 + netname(string) : "Trigger after fading" + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + //NEW 0.7.1 + //* Useful if you want something to fade out and then be removed. + 32: "Remove target" : 0 + //NEW 0.7.1 + //* The env_render will killtarget itself after use. + 64: "Remove self" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +//NEW 0.5 +//* Creates a shockwave effect (like @monster_houndeye) when triggered. +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shockwave : "Shockwave Effect" +[ + spawnflags(flags) = + [ + //* Normally, the env_shockwave entity marks the bottom of the shockwave. + //* Tick here to mark its centre instead. + 1: "Centered" : 0 + 2: "Repeatable" : 0 + ] + m_iszPosition(string) : "Position (blank = here) [LP]" + netname(string) : "Spritename" : "sprites/shockwave.spr" + rendercolor(string): "Color": "188 220 255" + renderamt(integer) : "Opacity (0-255)": 255 + m_iTime(integer) : "Duration" : 2 + m_iRadius(integer) : "Final radius" : 1000 + m_iHeight(integer) : "Wave height" : 32 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_iNoise(integer) : "Distortion ('noise')" : 0 + m_iFrameRate(integer) : "Frame Rate" : 0 + m_iStartFrame(integer) : "Starting Frame" : 0 +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) studio()= env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "sprites/ballsmoke.spr" + noise(string) : "Scale [LN]" : "" + skin(integer) : "Skin" : 0 + body(integer) : "Body (models only)" + //NEW 0.7.1 + frame(integer) : "Start frame" : 0 + //NEW 0.7.1 + framerate(string) : "Framerate" : "10.0" + //NEW 0.7.1 + m_iPhysics(choices) : "Behaviour of children" : 0 = + [ + 0: "Bouncy gib (normal)" + //* When it hits a wall, it sticks. + 1: "Sticky gib" + //* Not affected by walls or gravity + 2: "Noclip" + //* Stopped by walls, ignore gravity + 3: "Fly (ignore gravity)" + //* Bounce off walls, ignore gravity + 4: "Fly & bounce" + //* Blocked by walls, affected by gravity + 5: "Arc (obey gravity)" + //* Bounce off walls, affected by gravity + 6: "Arc & bounce" + ] + //NEW 0.7.1 + //* Used by the "bouncy gib" and "sticky gib" behaviours. + m_iBloodColor(choices) : "Blood color" : 0 = + [ + 0 : "Don't bleed" + 247 : "Red (human)" + 195 : "Yellow (alien)" + ] + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + //* debris/glass1-4.wav + 0: "Glass" + //* debris/wood1-4.wav + 1: "Wood" + //* debris/metal1-6.wav + 2: "Metal" + //* debris/flesh1-7.wav + 3: "Flesh" + //* debris/concrete1-3.wav + 4: "Concrete" + ] + //NEW 0.7.1 + m_fFriction(string) : "Bounce height" : "0.55" + //NEW 0.7.1 + //* If you need access to both the entities involved in a collision, try targetting + //* a locus_alias with this field. Then, target the effect you actually want with the + //* "locus = wall" field, and you'll be able to refer to the shot via the alias. + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouch(string) : "Fire on collision (locus = shot)" + //NEW 0.7.1 + //* This won't be fired when the shot hits a wall that's not tied to an entity. + //* (But a func_wall works fine.) + //* NB: This field does not work with the "gib" behaviours - use "noclip" or below. + m_iszTouchOther(string) : "Fire on collision (locus = wall)" + //NEW 0.7.1 + m_vecSize(string) : "Shot size (X Y Z)" : "0 0 0" +] + +//NEW 1.1 +@PointClass base(Targetname) iconsprite("sprites/env.spr") = env_sky : "Unreal-Tournament style sky view" +[ +] + +@PointClass base(Master, MoveWith) iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + //NEW 0.5 + //* If set, the env_sound won't use its Radius- it will simply take effect when triggered. + targetname(target_source) : "Name" + target(target_destination) : "Fire when activated" + radius(integer) : "Radius" : 128 + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_spark : "Spark" +[ + target(string) : "Initial position (blank = here) [LP]" + MaxDelay(string) : "Max Time between sparks" : "0" + spawnflags(flags) = + [ + 16: "Cyclic" : 0 + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, Angles, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + message(string) : "Attached to entity..." + frags(choices) : "...at attachment point" : 0 = + [ + 0 : "0" + 1 : "1" + 2 : "2" + 3 : "3" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +//NEW 0.3 +//* Simply keeps track of a state. Useful as a master or a conditional "branch". +@PointClass base(Targetname, Master) color(128 128 255) iconsprite("sprites/env.spr") = env_state : "Local State" +[ + target(target_destination) : "Target (on & off)" + noise1(target_destination) : "Fire when turned on" + noise2(target_destination) : "Fire when turned off" + //* If the env_state gets turned off before it finishes turning on, + //* the "fire on turning on" target will never get triggered. This is very + //* useful for setting up "if you stay in this area for 5 seconds" type triggers. + turnontime(string) : "Time taken to turn on" : "0" + turnofftime(string) : "Time taken to turn off" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + //* If you're trying to work out what's actually happening in your level, + //* try ticking here and the env_state will tell you when it triggers, etc. + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.4 +@PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_warpball : "Teleport-in effect" +[ + target(string) : "Initial position (blank = here) [LP]" + health(string) : "Max lightning-arc length" : "90" + frags(integer) : "Number of lightning bolts" : 12 +] + +@SolidClass base(Breakable, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight) = func_breakable : "Breakable Object" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global, LockSounds) = func_button : "Button" +[ + speed(integer) : "Speed" : 25 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" : 0 + //* The number against each sound (except Lightswitch) corresponds to the wav file + //* played. e.g. Buzz (10) plays "buttons/button10.wav". + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup (1)" + 2: "Access Denied (2)" + 3: "Access Granted (3)" + 4: "Quick Combolock (4)" + 5: "Power Deadbolt 1 (5)" + 6: "Power Deadbolt 2 (6)" + 7: "Plunger (7)" + 8: "Small zap (8)" + 9: "Keycard Sound (9)" + 10: "Buzz (10)" + 11: "Buzz Off (11)" + //* buttons/lightswitch2.wav + 14: "Lightswitch" + ] + wait(choices) : "Delay before Reset" : 0 = + [ + -1 : "Stays pressed (-1)" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + //NEW 0.7.1 + //* Normally, the player can use buttons through walls etc. Tick here to + //* prevent that. + //* (With this set, it's also impossible to use the button unless it's in + //* the centre of the player's crosshairs. So at last, control panels can + //* have their buttons close together!) + //* Don't combine this with Not Solid - the button will become unusable. + 16: "Direct use only": 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 128: "Not Solid" : 0 + 256:"Touch Activates": 0 + //NEW 0.4 + //* Normally, a button can be activated with the Use key. Tick here to disable that behaviour. + //* If "Touch activates" is also selected, this flag will instead enable the use key. + 512:"Can't Use" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door : "Basic door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + acceleration(integer) : "Acceleration '0' for infinite" : 0 + deceleration(integer) : "Deceleration '0' for infinite" : 0 +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door_rotating : "Rotating door" +[ + //NEW 0.7.1 + //* Normally, the player can open doors when he can't actually see them + //* (e.g. from the other side of a wall). Select "yes" here to prevent that. + //* Don't combine this with Passable - the door will become unusable. + directuse(choices) : "Direct use only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, MoveWith, RenderFields, ZHLTLightKeys) = func_friction : "Surface with a change in friction" +[ + //* 0% = No friction, 100% = Normal Friction + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire when damaged" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_healthcharger: "Wall health recharger" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_illusionary : "Fake Wall/Light" +[ + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + -17:"Zero-G" + -18:"Hover-Field" + -19:"Fog effect" + -20:"Special 1 (Particles)" + -21:"Special 2 (Particles)" + -22:"Special 3 (Particles)" + + + ] + _minlight(string) : "Minimum light level" +] + +//* Creates an invisible, climbable field. +//* To show the actual ladder image, either add a @func_illusionary covered with a {ladder texture, or tick the Visible flag. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_ladder : "Ladder" +[ + spawnflags(flags) = + [ + //NEW 0.5 + 1 : "Visible" : 0 + ] +] + +//* Also prevents hlcsg.exe from making a path between two @info_node entities on opposite sides of the brush. +@SolidClass base(Targetname, MoveWith) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname, MoveWith) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +//* Only partially implemented, some keys don't work properly. +@SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Appearflags) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 8 : "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +//* With any luck, I've fixed the bug which caused players to sometimes be frozen. +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Angles, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLTLightKeys) = func_pushable : "Pushable object" +[ + spawnflags(flags) = + [ + 128: "Breakable" : 0 + //NEW 0.3 + //* Tick here if the crate can only ever be pushed. + 512: "Can't Pull" : 0 + //NEW 1.8 + //* Don't let the pushable go faster than the person pushing it. + //* This also fixes a bug with HL pushables - if you hold "use" + //* while pushing them, they get pushed really hard. + 1024: "Smooth push" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_recharge: "Battery recharger" +[ + _minlight(string) : "Minimum light level" +] + +//* Like @func_button, except it rotates. +@SolidClass base(Targetname, Target, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Master, LockSounds) = func_rot_button : "RotatingButton" +[ + //* if set, then when the button is pressed, the "target" field of the entity targetted by the button will be set to this value. + changetarget(target_destination) : "ChangeTarget Name" + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + health(integer) : "Health (shootable if > 0)" + //* The number against each sound corresponds to the wav file + //* played. e.g. Squeaky (1) plays "buttons/lever1.wav". + sounds(choices) : "Sounds" : -1 = + [ + -1: "None" + 21: "Squeaky (1)" + 22: "Squeaky Pneumatic (2)" + 23: "Ratchet Groan (3)" + 24: "Clean Ratchet (4)" + 25: "Gas Clunk (5)" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + //NEW 0.7.1 + //* See the notes about this on @func_button. + 16: "Direct use only" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128:"Y Axis" : 0 + 256:"Touch Activates" : 0 + 512:"Invert '+Use'able" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_rotating : "Rotating Object" +[ + //* This sets the initial orientation of the entity, but that could + //* be achieved by simply rotating the brushes, in Worldcraft. + //* More importantly, it will change the position of the axes + //* the entity pivots around. + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + speed(integer) : "Rotation Speed" : 30 + //NEW 0.5 + //* This field overrides the "X Axis" and "Y Axis" flags. It's + //* mostly useful to make a complex orbit for an object. (If you + //* just want to have a tilted axis for an otherwise normal rotating + //* object, you'll want to change the "angle" field instead.) + //* For example, set this field to "0 12 1" and the Z axis will + //* rotate 12 times in the time it takes the X axis to complete one + //* turn. (the entity will also turn 12 times faster than the + //* Rotation Speed you specify.) + //* NB: The way the quake engine handles rotation is not exactly + //* intuitive. The Z axis (Yaw) is the primary axis, so rotation around + //* the Y and X axes will be affected by the current Z position. + //* Similarly, the Y axis (Pitch) is the secondary axis, so rotation + //* around the X axis (Roll) will be affected by the current Y + //* position. + //* To get a feel for how this works, try making a func_rotating + //* cube whose origin is at one corner, set its "axes" value to + //* "1 1 0", and watch how it moves. One edge will simply go around + //* in a horizontal circle, while the rest of the cube rotates + //* around that edge. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + //* The number against each sound corresponds to the wav file + //* played. e.g. Slow Rush (2) plays "fans/fan2.wav". + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine (1)" + 2 : "Slow Rush (2)" + 3 : "Medium Rickety (3)" + 4 : "Fast Beating (4)" + 5 : "Slow Smooth (5)" + ] + //* The sound to play while active. This will only be used if "Fan Sounds" is set to "No Sound". + message(sound) : "WAV Name" :"" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + //* This, and the other "radius" settings, only affect the + //* way the Fan Sounds are played; if you set a small radius, + //* the sounds will only be audible near to the fan. + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +//NEW 1.1 +@SolidClass base(Targetname) = func_shine : "Shiny Surface" +[ + message(sprite) : "Shine sprite" : "sprites/bgspr.spr" + scale(integer) : "Shine scale" : 10 + renderamt(integer) : "Shine brightness (0-255)" : 50 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(Targetname, MoveWith) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" + //NEW 0.5 + //* This specifies how far the player has to move before the controls will dump him off. + //* If you set -1, the player never gets dumped off. (In which case, the + //* func_tankcontrols can only be deactivated by triggering it with another entity.) + frags(integer) : "Tolerance (-1 = total)" : 30 + //NEW 0.5 + //* More crosshair choices will be available in future. + crosshair(choices) : "Crosshair to use" : 0 = + [ + 0: "None" + 4: "MP5" + ] + spawnflags(flags) = + [ + //NEW 0.5 + //* If you tick here, the controls can only be activated by triggering it with + //* another entity. + 1 : "Ignore +Use" : 0 + //NEW 1.0 + 2 : "Visible" : 0 + ] +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(BaseTank, ZHLTLightKeys) = func_tankrocket : "Brush Rocket Turret" [] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLTLightKeys) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 4 : "No Reverse" : 0 + 8 : "Passable" : 0 + 16: "No Yaw (Z-rot)" : 0 + ] + target(target_destination) : "First stop target" + //* The number against each sound corresponds to the wav file + //* played. e.g. Rail 1 plays "plats/ttrain1.wav". + sounds(choices) : "Move Sound" : 0 = + [ + 0: "None (or custom)" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + //NEW 0.6 + custommovesound(sound) : "Custom Move Sound" + //NEW 0.6 + //* Default is "plats/ttrain_start1.wav". For silence, use "common/null.wav". + customstartsound(sound) : "Start Sound" + //NEW 0.6 + //* Default is "plats/ttrain_brake1.wav". For silence, use "common/null.wav". + custombrakesound(sound) : "Stop Sound" + //* This setting controls how smoothly the train turns corners - if the wheels are + //* close together, it will turn sharply, and if far apart, it will turn more gradually. + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" + avelocity(string) : "Initial avelocity (Y Z X)" +] + +@SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 100 + avelocity(string) : "Initial avelocity (Y Z X)" + dmg(choices) : "Damage on crush" : 2 = + [ + //NEW 0.3 + -1: "No damage" + ] + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + //NEW 0.5 + //* Usually, the center of the train (in fact, the center of its bounding box) + //* will be the point used when positioning the train at a path_corner. Tick + //* here to use its origin for this instead. + 2 : "Origin on paths" : 0 + //NEW 0.4 + //* This is the default if you don't specify a name. + 4 : "Initially On" : 0 + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//* Note that unlike func_tankcontrols, this defines what area the player must be standing in in order to use the tank. +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +//NEW 1.5, func_walls can now be rotated ingame when they spawn +//This allows you to get around Hammer stuffing up rotating complex brushes +@SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + vuser1(string) : "Rotate by Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target, Master) iconsprite("sprites/game.spr") = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_end : "End this multiplayer game" [] + +@PointClass base(Targetname) iconsprite("sprites/game.spr") = game_player_equip : "Initial player equipment" +[ + master(string) : "Team Master" + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] +] + +@PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 2: "Only once" : 0 + ] + + //NEW 0.6 + target(string) : "Fire when done" + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] +] + +@SolidClass base(Targetname) iconsprite("sprites/game.spr") = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" +[ + m_iBloodColor(choices) : "Blood color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (human)" + 195 : "Yellow (alien)" + ] +] + + +// +// hud entities +// + +//NEW 1.0 +//* At the moment, this can only display sprites that are defined in sprites/hud.txt, and +//* will always display them in the status icon area on the left of the screen. +//* Bear in mind, the hud isn't displayed unless you have an HEV suit. +@PointClass base(Targetname) = hud_sprite : "Hud Sprite Display" +[ + message(sprite): "Sprite name" : "dmg_poison" + rendercolor(color255) : "Color" : "255 255 255" + spawnflags(flags) = + [ + 1: "Start on" : 0 + ] +] + +// +// info entities +// + +//* If you give a decal a targetname, then it won't appear until fired. +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +//NEW 0.3 +//* An alias makes itself an "alternative name" for an entity. To refer to +//* an entity through the alternative name, use the alias name preceeded by a *. +//* For example, suppose you set up an info_alias entity called 'myalias'. +//* 'Myalias' targets a light called 'redlight'. suppose a you set up a +//* @trigger_once field targetting "*myalias", so that when you walk through the +//* trigger field, redlight gets turned on and off. So far, info_alias seems to +//* be like a @trigger_relay. However, you can also set up a switch which targets +//* "myalias", to turn it off... +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_alias : "Alias" +[ + target(target_destination) : "Reference while On" + netname(string) : "Reference while Off" + mode(string) : "Use Mode, 0= On/Off 1= list mode" : "0" + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) iconsprite("sprites/info.spr") = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +//NEW 1.0 +//* Which compile options to use. +@PointClass size(-8 -8 0, 8 8 32) iconsprite("sprites/info.spr") = info_compile_parameters : "Compile Options" +[ + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 1 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 2 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + spawnflags(flags) = + [ + 1 : "Run CSG" : 1 + 2 : " No Clip" : 0 + 4 : " Only Ents" : 0 + 8 : " No Sky Clip" : 0 + 32 : "Run BSP" : 1 + 64 : " Leak Only" : 0 + 128 : " No Clip" : 0 + 256 : "Run VIS" : 1 + 512 : " Fast " : 0 + 2048 : "Run RAD" : 1 + 4096 : " Sparse " : 0 + 8192 : " Circus Mode" : 0 + 16384 : " Extra Mode " : 0 + ] +] + +//NEW 0.4 +//* An info_group acts similarly to an @info_alias, except that it has several +//* "members" which are are accessed by writing 'mygroup.membername'. +//* These members are set up just like the targets of a @multi_manager- except +//* that they'll contain an entity reference instead of a delay time. +//* If you set up its "target" field to refer to an info_alias entity, then when +//* an info_group is triggered, it will change that info_alias entity to target the +//* group. +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_group : "Entity Group" +[ + target(string) : "Alias to change when fired [LE]" + //* If you refer to a group member which hasn't been defined explicitly, + //* but you do define a default prefix here, then the member name will be + //* added to the prefix to generate an appropriate reference. + //* e.g: Suppose an info_group named "bob" defines a default prefix + //* "bobs_". Now; if you refer to, for example, "bob.house" or + //* "bob.gun", you'll actually affect entities named "bobs_house" + //* and "bobs_gun", respectively. + defaultmember(string) : "Default member prefix" + spawnflags(flags) = + [ + 2 : "Debug Mode" : 0 + ] +] + +@PointClass base(Target, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname, MoveWith) iconsprite("sprites/info.spr") = info_landmark : "Transition Landmark" [] + +//NEW 0.6 +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_movewith : "Movewith relay" +[ + target(string) : "MoveWith when active" + netname(string) : "MoveWith when inactive" + spawnflags(flags) = + [ + 1 : "Start inactive" : 0 + //* Usually, info_movewith will happily pass straight through a wall. + //* Tick here if you want it to stop when it hits walls. + //* Incidentally, ticking this will also allow it to set off trigger + //* fields, such as @trigger_multiple. + 2 : "Blockable" : 0 + ] +] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) iconsprite("sprites/infonode.spr") = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) iconsprite("sprites/infonode.spr")= info_node_air : "ai air node" [] + +@PointClass base(Targetname) iconsprite("sprites/info.spr") = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass, Master, MoveWith) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" +] +@PointClass base(PlayerClass, MoveWith, Sequence) = info_player_start : "Player 1 start" +[ + spawnflags(Flags) = + [ + 1 : "Start with HEV" : 0 + ] +] + +@PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/info.spr") = info_target : "Beam Target" +[ + spawnflags(Flags) = + [ + //NEW 0.4 + //* Essentially, this flag forces the game engine to treat an info_target as visible + //* (even though it isn't). This has two effects: + //* 1) Normally if an env_beam is attached to an info_target which can move (via MoveWith), + //* the env_beam won't follow the info_target properly. Ticking here fixes that problem. + //* 2) If an env_beam's "ring" mode is selected, you must make both ends of the beam + //* into 'visible' entities, otherwise the beam won't be displayed. + //* (Note that if you're making a mod and you tell an info_target to use null.spr, you will + //* of course have to distribute null.spr with the mod.) + 1 : "Use null.spr" : 0 + ] +] + +@PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass, MoveWith) iconsprite("sprites/info.spr") = info_teleport_destination : "Teleport destination" [] + +//NEW 1.0 +@PointClass color(255 128 0) iconsprite("sprites/info.spr") = info_texlights : "Texture Light Config" [] + + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl")= item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl")= item_antidote : "Poison antidote" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl")= item_battery : "HEV battery" +[ + //NEW 0.7.1 + model(string) : "Model (models/w_battery.mdl)" + //NEW 0.7.1 + skin(integer) : "Skin" + //NEW 0.7.1 + body(integer) : "Body" + //NEW 0.7.1 + noise(string) : "Sound (items/gunpickup2.wav)" + //NEW 0.7.1 + armorvalue(integer) : "Charge by (0 = normal)" +] +//NEW 1.4 +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_flashlight.mdl")= item_flashlight : "FlashLight" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl")= item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl")= item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl")= item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Light, ZhltLights) = light : "Invisible lightsource" +[ + target(string) : "Target to shine at" + firetarget(string) : "Target to trigger" + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +//NEW 0.5 +//* See also @env_dlight. +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Targetname, MoveWith) = light_glow : "Dynamic Glow" +[ + frags(choices) : "Glow Type" : 1 = + [ + 2: "Brightest" + 1: "Flashlight" + 0: "None" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + 2 : "Flare" : 0 + ] +] + +@PointClass base(Angles, ZhltLights) color(255 255 128) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Target, Light, ZhltLights) = light_spot : "Spotlight" +[ + firetarget(string) : "Target to trigger" + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 +// _light(color255) : "Brightness" : "255 255 128 200" + _sky(choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + ] +] + +@SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = momentary_door : "Momentary/Continuous door" +[ + //NEW 0.4 + //* Maximum speed the door is allowed to move at. + speed(choices) : "Speed" : 100 = + [ + 0: "No limit" + ] + //* The number against each sound corresponds to the wav file played. + //* e.g. Vacuum (4) plays "doors/doormove4.wav". + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding) (1)" + 2: "Pneumatic (Sliding) (2)" + 3: "Pneumatic (Rolling) (3)" + 4: "Vacuum (4)" + 5: "Power Hydraulic (5)" + 6: "Large Rollers (6)" + 7: "Track Door (7)" + 8: "Snappy Metal Door (8)" + 9: "Squeaky 1 (9)" + 10: "Squeaky 2 (10)" + ] + stopsnd(choices) : "Stop sound" : 0 = + [ + 0 : "No Sound" + 1 : "Clang with brake" + 2 : "Clang Reverb" + 3 : "Ratchet stop" + 4 : "Chunk" + 5 : "Light Airbrake" + 6 : "Metal Slide Stop" + 7 : "Metal Lock Stop" + 8 : "Snappy Metal Stop" + ] + lip(integer) : "Lip" + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] + _minlight(string) : "Minimum light level" +] + +//NEW 0.7.1 +//* Stores a reference to an entity. Whenever the alias is triggered, +//* it changes to record what triggered it. +//* Thereafter, you can refer to that entity by *aliasname (where aliasname is the name +//* of the locus_alias). +//* Note that this records a specific entity - unlike @info_alias which +//* records the name of an entity. So info_alias always refers to all entities with a particular +//* name, whereas locus_alias always refers to one specific entity. +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = locus_alias : "Locus System - Entity variable" +[ + netname(string) : "Initial value" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_beam : "Locus System - Beam effect" +[ + m_iszStart(string) : "Start at (blank = here)" : "" + m_iszEnd(string) : "End at (blank = here)" : "*locus" + impulse(choices) : "Start & End are" : 0 = + [ + 0: "Entity & Entity [LE LE]" + 1: "Entity & Position [LE LP]" + 2: "Position & Position [LP LP]" + 3: "Position & Direction [LP LV]" + ] + m_iszSprite(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + renderamt(integer) : "Brightness (1 - 255)" : 255 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + m_iWidth(integer) : "Width" : 10 + m_iDistortion(integer) : "Distortion ('noise')" : 0 + m_fFrame(integer) : "Start frame" : 0 + m_iScrollRate(integer) : "Scroll rate" : 0 + m_fDuration(string) : "Duration (0 = unlimited)" : 0 + m_fDamage(string) : "Damage amount" : 0 + m_iDamageType(choices) : "Damage type" : 0 = + [ + 0 : "Energy Beam" + 1 : "Fracture" + 2 : "Blood Loss" + 4 : "Lacerations" + 8 : "Burning" + 16 : "Freezing" + 512 : "Internal bleeding" + 16384 : "Drowning" + 65536 : "Biohazard" + 131072 : "Poison (duration)" + 262144 : "Radiation" + 1048576: "Hazardous chemical" + ] + m_iszTargetName(target_source) : "Name of children" + target(target_destination) : "Fire on spawn (locus = child)" + spawnflags(flags) = + [ + //* This will only work if "Start & End" is set to "Entity & Entity". + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + //* The beam fades in from nothing, like a tracer bullet. + 128: "Fade Start" : 0 + 256: "Fade End" : 0 + //* For making a rope, etc. + 512: "Draw Solid" : 0 + 1024: "Draw Sine" : 0 + ] +] + +//NEW 0.7.1 +//* As the name suggests, this acts like a variable in a programming language. It +//* stores three values - a position, a velocity, and a number. (if you want a variable +//* that records entities, see @locus_alias). To set values, trigger the entity; and to +//* access them, just refer to it like the appropriate calc_x entity. +//* locus_variable can also be used another way; if you give a "Child's Name" +//* value, triggering it will create a reference point with that name. So for example, +//* suppose you want to create streams of water wherever an object gets shot. You +//* trigger a locus_variable to record where the shot hits, and then have its "fire +//* on spawn" value triggering the water stream. But if you don't have it make seperate +//* reference points, then all the water will come out of the last shot position. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_variable : "Locus System - Variable for storing data" +[ + m_iszPosition(string) : "Position to record [LP]" : "*locus" + m_iszVelocity(string) : "Velocity to record [LV]" : "*locus" + m_iszRatio(string) : "Number to record [LN]" : "*locus" + m_iszTargetname(string) : "Child's name (blank = no child)" + m_iszFireOnSpawn(string) : "Fire on spawn (locus = child)" + m_fDuration(string) : "Removed after time (secs)" +] + +@SolidClass base(Targetname, Target, Angles, Master, MoveWith, RenderFields, ZHLTLightKeys) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + //NEW 0.5 + //* See the notes about this field in @func_rotating. + axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// Monsters +// + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //NEW 1.0 + 1024: "Drop gun" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the + //* Squad Name value, but none of them are flagged as a Squad Leader, then the + //* squad won't get linked together properly. + 32 : "Squad Leader" : 0 + //* This monster won't attack unless provoked. + 64 : "Start Peaceful" : 0 + ] +] +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "No Wreckage" : 0 + 64: "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] +@PointClass base(Targetname, RenderFields) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" +[ + frags(choices) : "Weapon" : 0 = + [ + 0 : "Glock (normal)" + 1 : "Python 357" + ] + spawnflags(Flags) = + [ + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "Idle1" + 1 : "Idle2" + 2 : "Idle3" + 3 : "Idle4" + 4 : "walk" + 5 : "run" + 6 : "shootgun" + 7 : "shootgun2" + 8 : "draw" + 9 : "disarm" + 10 : "reload" + 11 : "turnleft" + 12 : "turnright" + 13 : "laflinch" + 14 : "raflinch" + 15 : "llflinch" + 16 : "rlflinch" + 17 : "smlflinch" + 18 : "cower stand" + 19 : "locked door" + 20 : "fall loop" + 21 : "barn wave" + 22 : "beat grunt" + 23 : "beat grunt idle" + 24 : "flashlight" + 25 : "diesimple" + 26 : "dieviolent" + 27 : "diegutshot" + 28 : "die forward" + 29 : "die back" + 30 : "die crump" + 31 : "barnaclehit" + 32 : "barnaclepull" + 33 : "barnaclecrunch" + 34 : "barnaclechew" + 35 : "lie back" + 36 : "lie side" + 37 : "lie stomach" + 38 : "stuffed in vent" + 39 : "standing idle" + 40 : "cpr barney" + 41 : "cpr revive" + 42 : "barney drag vent" + 43 : "dying" + 44 : "dying idle" + 45 : "dying friend" + 46 : "dying friend idle" + 47 : "c1a3idle" + 48 : "c1a3ventb" + 49 : "c1a3 emergeidle" + 50 : "c1a3emerge" + 51 : "haul barney" + 52 : "push buttons" + 53 : "fence die" + 54 : "sit1" + 55 : "almostidle" + 56 : "almost" + 57 : "laseridle" + 58 : "laser top" + 59 : "laser bottom" + 60 : "fallidle" + 61 : "fall" + 62 : "c3a2 draw" + 63 : "corner2" + 64 : "unlatch" + 65 : "retina" + 66 : "relax stand" + 67 : "assasinated" + 68 : "plunger" + 69 : "pepsiswing" + 70 : "pepsi push" + 71 : "push button" + ] + +] +@PointClass base(Targetname, Angles, RenderFields, Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" +] +//* Not fully implemented: rudimentary AI. Will run away if attacked, +//* otherwise will stand still. +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullSquid" [] +@PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] +//@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer : "Single Flyer" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(integer) : "Flock Size" : 8 + flFlockRadius(integer) : "Flock Radius" : 128 +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" [] +@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] +@PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + //NEW 0.4 + //* Tick here if you're using a model from the models/player/ directories. + //* This option sets it up so that the model's bounding box is centered on its origin (the X in + //* the middle of the entity, in WorldCraft), instead of being the middle of its bottom face. + 8 : "Head Controller" : 0 + 16 : "Player model" : 0 + //NEW 0.4 + 32: "Invulnerable" : 0 + ] + model(studio) : "model" + //NEW 0.4 + //* Headcrab: 24 24 24 + //* Houndeye: 32 32 36 + //* Human: 32 32 72 + //* Most Aliens: 64 64 64 + size(string) : "Size (X Y Z)" + //NEW 0.4 + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //NEW 0.4 + //* If not set, health is 8. + health(Integer) : "Initial Health" : 0 + //NEW 0.4 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //NEW 0.5 + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +//NEW 0.5 +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_generic_dead : "Generic Dead Body" +[ + spawnflags(Flags) = + [ + 8 : "Player model" : 0 + ] + //* The corpse's pose will be the last frame of this sequence. + //* This overrides the 'death type' value. + netname(string) : "Sequence name" + //* If you don't specify a 'Sequence name', the monster will select a random death + //* animation of the type you specify here. Not all models have all these death types. + frags(choices): "Death Type" : 36 = + [ + 36 : "Just dead" + 37 : "Fell backwards" + 38 : "Fell forwards" + 39 : "Died violently" + 66 : "Head shot" + 67 : "Chest shot" + 68 : "Gut shot" + 69 : "Shot in the back" + ] + //* Player: 0 = gordon's head, 1 = hooded. + //* Gina, Gordon, Helmet and Scientist player models: 0 = original design, 1 = updated (better looking) version. + //* Barneys: 0 = holstered gun, 1 = holding gun, 2 = missing gun. + //* Scientists: 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick) + //* Human Grunts: 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar) + body(Integer) : "Body" : 0 + //* Experiment with other values (1-255) for different blood colors. + m_bloodColor(choices) : "Blood Color" : 0 = + [ + -1 : "Don't Bleed" + 0 : "Red (Human)" + 195 : "Yellow (Alien)" + ] + //* If you don't specify a gib model, one will be chosen based on + //* the Blood Colour you set. + m_iszGibModel(string) : "Gib Model" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Targetname, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + //NEW 0.5 + weapons(Choices) : "Weapon" : 0 = + [ + 0 : "MP5" + 1 : "Shotgun" + 2 : "No gun" + ] + //NEW 0.5 + //* The "no gun" settings are only included here for backwards compatibility. + body(Choices) : "Head" : 0 = + [ + 0 : "Gasmask" + 6 : "Gasmask (black skin)" + 1 : "Beret" + 4 : "Skimask" + 7 : "Skimask (black skin)" + 5 : "Cigar (black skin)" + 2 : "(Gasmask, no gun)" + 3 : "(Beret, no gun)" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name + //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked + //* together properly. + 32 : "SquadLeader" : 0 + //NEW 0.3 + //* Ensure the player can't take this monster's ammo or weapons. + 1024: "Don't Drop Gun" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10: "Shotgun + HG" + ] + sequence(Choices) : "Animation Sequence (editor)" : 11 = + [ + 0 : "walk1" + 1 : "run" + 2 : "victorydance" + 3 : "cower" + 4 : "smflinch" + 5 : "leftlegsmflinch" + 6 : "rightlegsmflinch" + 7 : "rightarmflinch" + 8 : "leftarmflinch" + 9 : "launchgrenade" + 10 : "throwgrenade" + 11 : "idle1" + 12 : "idle2" + 13 : "combatidle" + 14 : "frontkick" + 15 : "crouching_idle" + 16 : "crouching_wait" + 17 : "crouching_mp5" + 18 : "standing_mp5" + 19 : "reload_mp5" + 20 : "crouching_shotgun" + 21 : "standing_shotgun" + 22 : "reload_shotgun" + 23 : "advance_signal" + 24 : "flank_signal" + 25 : "retreat_signal" + 26 : "drop_grenade" + 27 : "limpingwalk" + 28 : "limpingrun" + 29 : "180L" + 30 : "180R" + 31 : "strafeleft" + 32 : "straferight" + 33 : "dieback1" + 34 : "dieforward" + 35 : "diesimple" + 36 : "diebackwards" + 37 : "dieheadshot" + 38 : "diegutshot" + 39 : "barnacled1" + 40 : "barnacled2" + 41 : "barnacled3" + 42 : "barnacled4" + 43 : "dead_on_stomach" + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + 47 : "repel_jump" + 48 : "repel_repel" + 49 : "repel_shoot" + 50 : "repel_land" + 51 : "repel_die" + 52 : "dragholeidle" + 53 : "draghole" + 54 : "bustwall" + 55 : "hoprail" + 56 : "converse1" + 57 : "converse2" + 58 : "startleleft" + 59 : "startleright" + 60 : "divecover" + 61 : "defuse" + 62 : "corner1" + 63 : "corner2" + 64 : "stonetoss" + 65 : "cliffdie" + 66 : "diveaside_idle" + 67 : "diveaside" + 68 : "kneeldive_idle" + 69 : "kneeldive" + 70 : "WM_button" + 71 : "WM_moatjump" + 72 : "bustwindow" + 73 : "dragleft" + 74 : "dragright" + 75 : "trackwave" + 76 : "trackdive" + 77 : "flyback" + 78 : "impaled" + 79 : "jumptracks" + 80 : "pipetoss" + 81 : "plunger" + ] + +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] + +//* The helicopter which flies around and drops grunts. Basically, whenever a grunt +//* dies, a replacement will be dropped so that the level contains the same number as +//* before. +//* With Spirit, it's no longer necessary to place grunts in your level: +//* in that situation the Osprey pretends, arbitrarily, that 4 have already died. +//* NB: An osprey must have a patrol path; if you don't give one, it will fail to +//* work. Spirit also fixes the Half-Life bug which meant a path_corner had to give +//* a Speed value... though the Speed values will still function if you choose to use them. +//* FYI: an Osprey will only drop grunts at path_corners whose Speed is set +//* to 0. After dropping grunts, it will head for the nearest path_corner whose Speed +//* is greater than 400, if one exists. Spirit also fixes the Half-Life bug which +//* crashed the game if no such corner was available. +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + //* Until triggered, the osprey won't move or drop grunts. + 64 : "Start Inactive" : 0 + ] +] +//* Like @monster_bloater: no AI, no death animation. +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" [] +@PointClass base(Weapon,Targetx,RenderFields) studio("models/w_satchel.mdl") = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 0 : "walk" + 1 : "walk_scared" + 2 : "run" + 3 : "run1" + 4 : "run2" + 5 : "180_Left" + 6 : "180_Right" + 7 : "flinch" + 8 : "flinch1" + 9 : "laflinch" + 10 : "raflinch" + 11 : "llflinch" + 12 : "rlflinch" + 13 : "idle1" + 14 : "idle3" + 15 : "idle4" + 16 : "idle5" + 17 : "idle6" + 18 : "idle7" + 19 : "crouchstand" + 20 : "crouch_idle" + 21 : "crouch_idle2" + 22 : "crouch_idle3" + 23 : "crouch_idle3" + 24 : "panic" + 25 : "fear1" + 26 : "fear2" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 31 : "diesimple" + 32 : "dieforward" + 33 : "dieforward1" + 34 : "diebackward" + 35 : "headshot" + 36 : "gutshot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 43 : "barnacled1" + 44 : "barnacled2" + 45 : "barnacled3" + 46 : "barnacled4" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 58 : "pause" + 59 : "yes" + 60 : "no" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 70 : "startle" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 92 : "panic1" + 93 : "lookwindow" + 94 : "wave" + 95 : "pulldoor" + 96 : "beatdoor" + 97 : "fallingloop" + 98 : "crawlwindow" + 99 : "divewindow" + 100 : "locked_door" + 101 : "push_button2" + 102 : "unlock_door" + 103 : "quicklook" + 104 : "handrailidle" + 105 : "handrail" + 106 : "hanging_idle" + 107 : "fall" + 108 : "scientist_get_pulled" + 109 : "hanging_idle2" + 110 : "fall_elevator" + 111 : "scientist_idlewall" + 112 : "ickyjump_sci" + 113 : "haulscientist" + 114 : "c1a4_wounded_idle" + 115 : "c1a4_dying_speech" + 116 : "tentacle_grab" + 117 : "helicack" + 118 : "windive" + 119 : "scicrashidle" + 120 : "scicrash" + 121 : "onguard" + 122 : "seeya" + 123 : "rocketcrawl" + 124 : "portal" + 125 : "gluonshow" + 126 : "crouch" + 127 : "kneel" + ] +] +@PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] + sequence(Choices) : "Animation Sequence (editor)" : 37 = + [ + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1: "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther (black skin)" + 3 : "Slick" + ] + spawnflags(Flags) = + [ + //NEW 0.4 + //* Sitting scientists are pre-disaster by default. + 1024: "Post-Disaster" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 74 = + [ + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + ] + +] +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] + +//NEW 0.7 +//* While a monster_target is active, monsters will attack it as though it were another monster. +//* An easy way to make monsters shoot out lights, attack func_tanks, etc. +@PointClass color(0 200 200) base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monster_target : "Target for monsters to attack" +[ + frags(choices) : "When active, count as:" : 11 = + [ + 0 : "Ignored" + //* Disliked by human military and most aliens. + 3 : "Scientist" + //* Hated by human military, disliked by most aliens. + 11: "Barney" + //* Hated by alien military, disliked by barneys and most aliens. + 4 : "Human Military" + //* Hated by human military, disliked by barneys. + 5 : "Alien Military" + //* Disliked by human miliary and barneys. + 7 : "Other Alien" + //* Disliked by all humans. Hated by Bullsquids. + 8 : "Headcrab" + //* Disliked by all humans and by other Bullsquids. Feared by Headcrabs. + 9 : "Bullsquid" + //* Disliked by everyone, except other Faction A members. + 14 : "Faction A" + //* Disliked by everyone, except other Faction B members. + 15 : "Faction B" + //* Disliked by everyone, except other Faction C members. + 16 : "Faction C" + ] + spawnflags(Flags) = + [ + 1: "Start inactive" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(choices) : "Tap Sound" : -1 = + [ + -1: "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [ + +sequence(Choices) : "Animation Sequence (editor)" : 10 = + [ + 0 : "idle1" + 1 : "turn left" + 2 : "turn right" + 3 : "flinch small" + 4 : "flinch" + 5 : "big flinch" + 6 : "getup" + 7 : "falling" + 8 : "attack1" + 9 : "attack2" + 10 : "walk" + 11 : "laflinch" + 12 : "raflinch" + 13 : "llflinch" + 14 : "rlflinch" + 15 : "dieheadshot" + 16 : "dieheadshot2" + 17 : "diesimple" + 18 : "dieback" + 19 : "dieforward" + 20 : "pause" + 21 : "bust through wall" + 22 : "kick punnch wall" + 23 : "bust window" + 24 : "soda" + 25 : "slide idle" + 26 : "slide wall" + 27 : "ventclimbidle" + 28 : "vent climb" + 29 : "deadidle" + 30 : "dead wall" + 31 : "freaksitdie" + 32 : "freaksit" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "pull Scientist" + 38 : "eating" + 39 : "eat to stand" + 40 : "vent z idle" + 41 : "vent c1a3" + 42 : "haul zombie" + 43 : "c2a3 snack getup" + ] +] +@PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + noise(String) : "Position to place monster at [LP]" + noise1(String) : "Offset from position of monster [LV]" + noise2(String) : "Angles of monster [LV]" + noise3(String) : "Velocity of monster [LV]" + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(target_source) : "Name of Spawned Monsters" + spawnflags(Flags) = + [ + //* If you don't give the monstermaker a Name, this is the default. + 1 : "Start ON" : 0 + //* In Cyclic mode, the maker will spawn a monster each time it's triggered. + //* (Otherwise, triggering the maker will turn it on, and it will then make monsters as + //* often as its 'delay' permits.) + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + //NEW 0.5 + //* By default, unless "number of monsters" is 1, the corpses of the monsters will fade out. + //* Tick here to override this. In order to prevent infinite numbers of corpses from appearing, + //* this flag is ignored if Number of Monsters is set to unlimited, + 16 : "Leave corpses" : 0 + //NEW AJH + //* Tick to force monsters to spawn regardless of other monsters being present. + 32 : "Force Spawn" : 0 + //NEW 0.6 + //* If this is ticked, the created monsters won't drop their weapons when they die. + 1024: "Don't Drop Gun" : 0 + ] + //* The total number of monsters the monstermaker can create (-1 = unlimited) + monstercount(choices) : "Number of Monsters" : -1 = + [ + -1 : "Unlimited" + ] + //* If -1, a new monster will only be made when the last monster dies. + //* Otherwise, this is is the time to wait (seconds) between producing new monsters. + delay(string) : "Time between spawns" : "5" + //NEW 0.4 + //* Mainly for use with @env_warpball. This makes a delay between the monstermaker triggering + //* its "target on release" entity and the monster appearing. For best results, set the + //* "target on release" value to the env_warpball, and set the "delay before release" to about 0.5. + spawndelay(string) : "Delay before release" : "0" + //* The maximum number of live children allowed at one time; if this is set, new children will + //* not be made until one dies. (-1 = no limit) + m_imaxlivechildren(integer) : "Max live children" : 5 + //* If you just want a monster to be ignored, use the "Prisoner" flag instead. + m_iClass(choices) : "Monsters behave as" : 0 = + [ + 0 : "Normal" + //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. + 3 : "Scientist" + //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. + 11: "Barney" + //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. + 4 : "Human Military" + //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. + //* Otherwise, they're pretty much like Human Military. + 1 : "Machine (Human Military)" + //* Hates players and Human Military. Dislikes Machines, scientists and barneys. + 5 : "Alien Military" + //* Dislikes Machines and all humans. + 7 : "Other Alien" + //* Dislikes all humans. Scared of Bullsquids. + 8 : "Headcrab" + //* Hates Headcrabs. Dislikes humans and other Bullsquids. + 9 : "Bullsquid" + //* Dislikes everyone, except other Faction A members. + 14 : "Faction A" + //* Dislikes everyone, except other Faction B members. + 15 : "Faction B" + //* Dislikes everyone, except other Faction C members. + 16 : "Faction C" + ] + //NEW 0.5 + //* Replaces the old "Player Ally" flag. + m_iPlayerReact(choices) : "Monsters reaction to player" : 0 = + [ + 0 : "Normal" + 1 : "Ignore" + //* Scientists usually use this behaviour. + 2 : "Friendly until hurt" + //* Barneys usually use this behaviour. + 3 : "Friendly unless provoked" + 4 : "Enemy" + // Not yet implemented, but will allow any monster to act like a barney/scientist. + //5 : "Follower" + ] +] + +//NEW 0.7.1 +//* For controlling the movement of other entities. There are two main ways to use this entity: +//* a) Don't give it a targetname, just tell it what entity to affect. In this case, the +//* motion of the affected entity will be managed however you want. This is mostly useful to +//* make things MoveWith a @func_pushable or a monster. (Just name the func_pushable in the +//* manager's "Position" field.) +//* b) Give it a targetname, but leave the "target to affect" set to *locus. Then, type the +//* motion_manager's name into the "trigger on spawn" field of, for example, an env_shooter. +//* In this case, every shot the shooter makes will be managed throughout its lifetime. +//* If you just want to change an entity's position or velocity instantly, once, then see +//* @trigger_motion. +@PointClass base(Targetname) = motion_manager : "Control the movement and direction of an entity" +[ + target(target_destination) : "Target to affect [LE]" : "*locus" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set position [LP]" + 1 : "Offset position [LV]" + 2 : "Set velocity [LV]" + 3 : "Accelerate by [LV]" + 4 : "Follow position [LP]" + ] + m_iPosAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "X axis only" + 2 : "Y axis only" + 4 : "Z axis only" + 6 : "Not X (YZ only)" + 5 : "Not Y (XZ only)" + 3 : "Not Z (XY only)" + ] + m_iszFacing(string) : "Facing (blank = no change)" + m_iFaceMode(choices) : "Meaning of Facing" : 0 = + [ + 0 : "Face direction [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by [PYR]" + 3 : "Set avelocity [PYR]" + ]m_iFaceAxis(choices) :"Axes to Modify" : 0 = + [ + 0 : "All Axes (Default)" + 1 : "Pitch only" + 2 : "Yaw only" + 4 : "Roll only" + 6 : "Not Pitch" + 5 : "Not Yaw" + 3 : "Not Roll" + ] + + spawnflags(flags) = + [ + 1: "Debug" : 0 + 2: "swap pitch/yaw" : 0 + 4: "swapyaw/roll" : 0 + 8: "swap roll/pitch" : 0 + 16: "stepped" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + //NEW 0.3 + netname(string) : "Target on turning off" + globalstate(string) : "Global State Master" +] + +//NEW 0.4 +//* A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities +//* together, while still allowing them to have individual names. +//* For example, suppose you have a set of lights in your level. Each one has its own lightswitch, +//* which allows it to be switched on and off on its own. But later in the level, you want the power +//* (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which +//* targets all the lights, and simply trigger what that alias refers to. +@PointClass base(Targetname) = multi_alias : "Multi-target alias" +[ + //NEW 0.5 + m_iMode(choices) : "Mode" : 0 = + [ + 0: "Normal" + //* Each time the alias is used, one of the targets will be chosen + //* at random. Targets with higher values are proportionally more + //* likely to be chosen. + 1: "Choose one (weighted)" + //* Each time the alias is used, zero or more of the targets will + //* be valid. The 'value' for each target gives the percentage + //* chance that it will be valid each time. + 2: "% chance for each" + ] +] + +//* Triggers a sequence of up to 16 entities, at various time offsets. +//* To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode +//* and add fields manually. The name of the field is the targetname of the entity to trigger, +//* and the contents of the field are the time (in seconds) to wait before triggering it. +//* If a master is given, then while the master is locked, the manager will ignore +//* all signals. This won't prevent it from continuing a sequence that started while the master +//* was unlocked, but it will prevent new sequences from starting. +//* If you refer to a multi_manager via [LN], it returns the number of seconds since the sequence started. +@PointClass base(Targetname, Master) color(255 128 0) iconsprite("sprites/multimanager.spr") = multi_manager : "MultiTarget Manager" +[ + //NEW 0.3 + //* How long to wait before starting the sequence. This delay is in addition to the offsets given for each individual target. + wait(string) : "Time offset" + //NEW 0.3 + //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset" + //* value is used as a minimum offset. + maxwait(string) : "Max Time offset (Random)" + //NEW 0.3 + //* Message to send to the targets. + triggerstate(choices) : "Trigger to send" = + [ + 0: "Toggle" + 1: "On" + 2: "Off" + 3: "Kill" + //* If you select this, the manager will send on whatever triggers (e.g. USE_ON) that it received + //* itself. So this is a way to "fork" the signal sent by another entity. + 4: "Same as input" + ] + //NEW 0.3 + mode(choices) : "Mode" = + [ + //* The 'value' for each target is the time offset at which to fire it. + 0: "Normal (time offset)" + //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance + //* that each target will be chosen. + 1: "Choose one (weighted)" + //* Go through the list of targets, and for each one either fire it, or don't fire it. + //* The 'value' gives the percentage chance that a value will get fired. + 2: "% chance for each" + //* In this mode, the number for each target specifies its position in the sequence + //* (relative to the other numbers), but all the targets will actually be fired at the same time. + //* So setting the targets to A 1, B 2 and C 3 would be equivalent to + //* setting A 0, B 0, and C 0 in normal mode - except that you can guarantee A will be + //* fired just before B, which will be just before C. + 3: "No delay (ordered)" + ] + //NEW 0.7.1 + //* Gives threads a name of their own. This lets you kill/trigger the threads + //* without affecting the manager, and vice versa. (If this is left blank, the + //* threads have the same name as the manager.) + //* This is mostly useful on a multithreaded looped manager, where you can stop all the loops + //* simultaneously by triggering the threads off. + m_iszThreadName(target_source) : "Name of threads" + //NEW 0.7.1 + //* Whenever a thread is created, the entity named here will be triggered, + //* with the new thread as the locus. + m_iszLocusThread(string) : "Trigger on spawn (locus = thread)" + spawnflags(Flags) = + [ + //* By default, a manager will ignore all inputs while it's performing a sequence. + //* Tick this to allow more than one sequence to run at a time. + 1 : "Multi-threaded" : 0 + //NEW 0.6 + //* NB: This flag has been moved. Apologies. + //* When the sequence ends, it will start again from the beginning. To stop the + //* loop, toggle the manager a second time. + 4 : "Loop" : 0 + //NEW 0.6 + //* The manager will USE_KILL itself when the sequence is complete. + //* If Loop is also ticked, the manager will only USE_KILL itself when told to stop the loop. + 8 : "Once only" : 0 + //NEW 0.7.1 + //* The manager will activate itself when the level starts, so that you don't + //* have to use a trigger_auto. (particularly useful for looping multi_managers.) + 16 : "Start on" : 0 + //NEW 0.7.1 + //* The manager will report to the console when it fires, etc. + 32 : "Debug mode" : 0 + ] +] + +//NEW 0.3 +//* A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once. +//* The entity is probably most useful when used as a master for another entity- a versatile replacement +//* for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a +//* multi_watcher which watches other multi_watchers. +//* The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the +//* 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.) +//* This is a very powerful entity, but is probably only useful for experienced mappers. +@PointClass base(Targetname) = multi_watcher : "State Watcher" +[ + m_fLogic(choices) : "Logical test" : 0 = + [ + 0: "All (AND)" + 2: "Not all (NAND)" + 1: "At least one (OR)" + 3: "None (NOR)" + 4: "Exactly one (XOR)" + 5: "Any number but one (XNOR)" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Entity to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) color(247 181 82) iconsprite("sprites/pathcorner.spr") = path_corner : "Path Corner" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire on Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + 0 : "Set new speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + 2 : "Time to next corner" + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname, Angles, MoveWith) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + altpath(target_destination) : "Branch Path" + message(target_destination) : "Fire on Pass" + netname(target_destination) : "Fire on dead end" + speed(integer) : "Speed (0 = no change)" : 0 + //NEW 0.5 + armortype(choices) : "Meaning of 'Speed'" : 0 = + [ + //* In normal Half-Life, this was the only setting available. + //* NB: This will have no effect unless the train has the "No Control" flag set. + 0 : "Set current speed" + //* This sets the train's 'master speed', which means that the train's speed in + //* all gears (half speed, quarter speed, etc) will also change in proportion to + //* the number you set. + 3 : "Set master speed" + //* It's very easy to get the train going 'infinitely' fast with this setting. + //* Excessively high speeds tend to cause problems, so use with caution. + //* (This changes the 'master speed'). + 1 : "Increase speed by" + //* This permanently changes the train's speed, the same way as the other + //* settings. In other words: when it reaches the next corner, the train's + //* speed won't change back. + //* (This changes the 'master speed'). + 2 : "Time to next corner" + + // 3: "Change gear"? + ] + //NEW 0.5 + //* When the train passes this corner, its rate of turning will be set to this value - + //* just like the "speed" for a corner sets the train's linear speed. + //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the + //* field blank, on the other hand, will leave the train turning at the same rate. + turnspeed(string) : "Turn speed (Y Z X)" + //NEW 0.5 + frags(choices) : "Meaning of 'Turn Speed'" : 0 = + [ + 0 : "Set current turn speed" + //* The value specified will be scaled to fit the speed (e.g. half + //* speed, quarter speed) the train is currently moving at. + 1 : "Set master turn speed" + //* When you set Turn Speed to make a tracktrain turn around, its normal turning + //* (face along the track, turn at corners) gets suppressed. Select this when you + //* want to reenable it. (The 'Turn Speed' value isn't used when this option is + //* selected.) + 2 : "Back to normal" + ] + //NEW 0.5 + //* If set to "Yes", then as trains approach this corner, they will turn to face its + //* 'angle' value. + //* By default, the train will keep turning after passing the corner. To + //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0". + armorvalue(choices) : "Match Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_freeze : "Stop player from moving" +[ + delay(string) : "Duration (0 = until retriggered)" : "5" + netname(string): "Clamp view dir [LV]" : "0 1 0" + noise(string): "Yaw range [LN]" : "360" + noise1(string): "Look up range [LN]" : "90" + noise2(string): "Look down range [LN] (= up if blank)" + noise3(string): "Turn speed [LN] (blank = instant)" + spawnflags(Flags) = + [ + //* If you set this, then the entity expects to freeze the locus you tell it. + //* If there's no locus, or it isn't a player, nothing will happen. + //* (If you don't tick this, then player_freeze will just affect player 1.) + 1: "Affect locus" : 0 + //* Don't stop the player moving, only clamp his view. + 2: "View Only " : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +// this may be the most irritating, repetitive, time-consuming entity I've ever implemented... +// HL's ammo system is _not_ set up to make this easy. +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strip player's weapons" +[ + //NEW 0.6 + //* In each of these fields, either choose a preset value from the menu, or else specify + //* a number of bullets to remove (e.g. 8). + bullets(choices) : "Take 9mm bullets" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + magnum(choices) : "Take 357 bullets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + shotgun(choices) : "Take shotgun ammo" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + crossbow(choices) : "Take crossbow bolts" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + argrenades(choices) : "Take AR grenades" : 0 = + [ + 0: "All" + -1: "None" + ] + rockets(choices) : "Take rockets" : 0 = + [ + 0: "All" + -2: "All except clip" + -1: "Empty clip only" + -3: "None" + ] + uranium(choices) : "Take uranium ammo" : 0 = + [ + 0: "All" + -2: "All except clips" + -1: "Empty clips only" + -3: "None" + ] + satchels(choices) : "Take satchel charges" : 0 = + [ + 0: "All" + -1: "None" + ] + snarks(choices) : "Take snarks" : 0 = + [ + 0: "All" + -1: "None" + ] + tripmines(choices) : "Take tripmines" : 0 = + [ + 0: "All" + -1: "None" + ] + handgrenades(choices) : "Take handgrenades" : 0 = + [ + 0: "All" + -1: "None" + ] + hornetgun(choices) : "Take Hornet Gun" : 0 = + [ + 0: "Gun & ammo" + -3: "Ammo" + -1: "None" + ] + spawnflags(Flags) = + [ + 1: "Remove suit" : 0 + 2: "Leave crowbar" : 0 + 4: "Leave glock" : 0 + 8: "Leave 357" : 0 + 16: "Leave mp5" : 0 + // chaingun was never used + 64: "Leave crossbow" : 0 + 128: "Leave shotgun" : 0 + 256: "Leave rpg" : 0 + 512: "Leave gauss" : 0 + 1024: "Leave egon" : 0 + ] +] + +//NEW 0.3 +//* Note that a @monster_generic won't usually do these actions correctly. +//* If you're using this to make a @monster_barney shoot, it'll look odd (as if he's shooting bullets from his +//* knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize +//* (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level. +@PointClass base(Script) = scripted_action : "Scripted Action" +[ + //NEW 1.0 + m_iszMoveTarget(string) : "Move target (blank = this) [LE]" + m_fMoveTo(choices) : "Move to Position" : 5 = + [ + //* Don't move at all. (Turn Type will be ignored.) + 0 : "No (don't turn)" + //* Walk to the move target, then turn. + 1 : "Walk" + //* Run to the move target, then turn. + 2 : "Run" + //* Don't move - just turn to face to whatever the turn mode. + 5 : "No - Only turn" + //* Teleport to the move target. Also, the monster's angle will instantly change to + //* whatever is specified in the turn target's "turn type". + //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting. + 4 : "Instant move + turn" + //NEW 1.0 + //* Don't move - just change angle to whatever the turn type specifies, instantly. + 6 : "No - Instant turn" + ] + //NEW 0.6 + //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that + //* type. + m_iszAttack(string) : "Entity to attack (blank = this) [LE]" + //NEW 0.3 + m_fTurnType(choices) : "Turn mode" : 1 = + [ + //* Turn to the same angle as the attack entity is facing. + 0 : "Match Angle" + //* Turn to look (and aim) at the entity to attack. + 1 : "Turn to face" + 2 : "Don't Turn" + ] + m_fAction(choices) : "Action to perform" : 0 = + [ + //* Headcrabs: leap. Houndeye: sonic attack. Barney: fire pistol... and so on. Most monsters have a ranged attack of some kind. + 0 : "Ranged Attack" + //* Grunts and assassins: throw or launch a grenade at the "attack" entity. + //* Alien Controller: big homing fireball. + 1 : "Ranged Attack 2" + //* Scientist: Heal. Everyone else: Kick, punch, bite, slash with claws, etc. + 2 : "Melee Attack" + //* Assassins: kick. Bullsquids:bite. Headcrab: rear up on hind legs. + //* Big Momma: lay a baby headcrab. Gargantua: Flame Thrower. + 3 : "Melee Attack 2" + //* Grunts: place a grenade on the ground. + 4 : "Special Attack" + //* Don't know of any monsters which use this, but feel free to try... + 5 : "Special Attack 2" + //* Grunts and barneys: Reload. The same thing can be done with a @scripted_sequence, but it's available here for convenience. + 6 : "Reload" + //* Assassins: jump to the "attack" entity. Houndeyes, Bullsquids and Big Momma: just jump. + 7 : "Jump" + //* Just turn and/or move. + 8 : "No action" + ] + spawnflags(Flags) = + [ + //* If this isn't ticked, the script will be ignored while the monster is in combat. + 64: "Override AI" : 0 + ] +] + +//* If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits. +@PointClass base(Targetname, Targetx, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + //NEW 0.4 + entity(string) : "Target Monster (blank for HEV) [LE]" + duration(string) : "Sentence Time" : "3" + //* If "Target Monster" is a classname, the game picks a random monster of that type from within this + //* search radius. + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Name/Class" : "player" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +//* If a scripted_sequence has no targetname, it will start playing as soon as the level begins. +//* If two or more scripted_sequences have the same targetname, they will be synchronised so that +//* no matter how long it takes the monsters to walk to the sequence entities, their action animations +//* will start at the same time. Also, if one of the monsters cancels its sequence (e.g. if it gets +//* hurt), the other one will too. +@PointClass base(ScriptSequence) size(-16 -16 0, 16 16 72) iconsprite("sprites/scriptedsequence.spr") = scripted_sequence : "Scripted Sequence" +[ + spawnflags(Flags) = + [ + //* Unless you tick this, the monster won't play the script when it's in combat. + 64: "Override AI" : 0 + ] +] + +//NEW 0.6 +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_tanksequence : "Scripted Tank Sequence" +[ + m_iszEntity(string) : "Tank to affect" + m_iTurn(choices) : "Turn to" : 2 = + [ + 0: "Don't turn" + 1: "Match angle" + 2: "Face sequence" + 3: "Face enemy" + ] + //* Specify either a classname (e.g. monster_barney) or a targetname to look for. + //* If you leave this blank, the tank will just pick its nearest enemy. + m_iszEnemy(string) : "Enemy to face" + m_iShoot(choices) : "Fire gun" : 1 = + [ + 0: "Don't fire" + 1: "Once (at end)" + 2: "Constantly" + 3: "While facing target" + ] + m_iUntil(choices) : "Halt condition" : 1 = + [ + 0: "None" + 1: "Tank faces target" + 2: "Enemy dies" + ] + target(string) : "Trigger on halt" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Trigger on timeout" + m_iActive(choices) : "Tank state afterwards" : 0 = + [ + 0: "No change" + 1: "Active" + 2: "Inactive" + 3: "Toggle" + ] + m_iControllable(choices) : "Control afterwards" : 0 = + [ + 0: "No change" + 1: "Controllable" + 2: "Not Controllable" + 3: "Toggle" + ] + m_iLaserSpot(choices) : "Laser Spot afterwards" : 0 = + [ + 0: "No change" + 1: "Turn on" + 2: "Turn off" + 3: "Toggle" + ] + spawnflags(flags) = + [ + //* Usually, if a player is using the tank when the sequence is activated, + //* the sequence won't work. Tick here to override that, by dumping the + //* player when the sequence starts. + 1: "Dump player" : 0 + 2: "Repeatable" : 0 + ] +] + +//NEW 0.6 +//* This entity is by no means complete, but is still somewhat usable. +@PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_trainsequence : "Scripted Train Sequence" +[ + m_iszEntity(string) : "Func_train to affect [LE]" + m_iszDestination(string) : "Destination to head for [LE]" + m_iDirection(choices) : "Train direction" : 4 = + [ + 4: "Towards destination" + 1: "Forwards" + 2: "Backwards" + 0: "No change" + ] + target(string) : "Fire on arrival" + m_fDuration(string) : "Time limit (0 = no limit)" : "0" + netname(string) : "Fire on timeout" + //* This entity will be triggered regardless of how the sequence ends: + //* by reaching the destination, by timing out, or by the sequence being + //* triggered 'off' (which causes it to abort). + m_iszTerminate(string) : "Fire at end, regardless" + m_iPostDirection(choices) : "Direction afterwards" : 3 = + [ + 1: "Forwards" + 3: "Stop" + ] + spawnflags(flags) = + [ + 2: "Once only" : 0 + //* The train will just move straight to the destination + //* you specify, without trying to follow an existing path. + 4: "Skip path" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +//* Be careful when using this entity; it will trigger not only when the level starts, +//* but also when a saved game is loaded. +@PointClass base(Target, Killtarget) iconsprite("sprites/trigger.spr") = trigger_auto : "AutoTrigger" +[ + delay(string) : "Delay before trigger" : "0.1" + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + //NEW 0.5 + //* Tick here to have the trigger_auto's "activator" be the player. + //* (Not for use in multiplayer levels.) + 2 : "From Player" : 0 + ] + globalstate(string) : "Global State to Read" + //NEW 0.3 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + 3 : "Kill" + ] +] + +@SolidClass base(Targetname, Master, MoveWith) = trigger_autosave : "AutoSave Trigger" [] + +//NEW 0.6 +//* An entity that things bounce off. Set its Angle to specify the angle to reflect them in; +//* objects already moving in this direction will be unaffected. (E.g. to make a trampoline, +//* you would specify "up". Objects which are already moving upwards will be unaffected.) +//* Try Factor = 2 and Minimum Speed = 150 to make a corridor which players can't run through, +//* only walk slowly. (Something like the force-fields in Dune.) +@SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_bounce : "Bouncey area" +[ + //* Acts like friction - each bounce will be scaled up or down by this amount. + //* (for instance, if the factor is 0.5, and you hit the trigger_bounce at 100 + //* units/sec, you'll bounce off at 50 units/sec.) + frags(string) : "Factor (0=stop, 1=perfect bounce)" : "0.9" + //* If an object hits the trigger_bounce entity slower than this, then it'll + //* go straight through. + armorvalue(string) : "Minimum Speed" : "100" + spawnflags(flags) = + [ + //* Tells the entity to reduce bounce speeds by the 'minimum speed' value. + //* (for instance, if you hit the trigger_bounce at 100 units/sec, the Factor is + //* 0.5 and the min.speed is 20, then you'll bounce off at 40 units/sec. + 16: "Truncate Speed" : 0 + ] +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/trigger.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + m_iszViewEntity(string) : "Entity to view from (blank = this)" +] + +//NEW 1.4 +//1.5 the default folder of /sounds/fmod/ was removed from the code +@PointClass base(Targetname) = ambient_fmodstream: "FMOD Audio player (MP3/OGG/WMA)" +[ + message(string) : "File Name (relative to \spirit\)" + spawnflags(flags) = + [ + 1: "Remove on fire" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +//NEW 0.3 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changealias : "Trigger Change Alias" +[ + target(string) : "Alias to affect" + netname(string) : "String to Set" + spawnflags(flags) = + [ + //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are + //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1 + //* to target "*myalias". + //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is, + //* in future any changes to "myalias" will also change what "alias1" refers to. + //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias" + //* is referring to at the time the trigger_changealias takes effect. Future changes to "myalias" will + //* therefore not affect "alias1". + 1 : "Resolve references" : 0 + 2 : "Debug Mode" : 0 + ] +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changecvar : "Change Console Variable" +[ + netname(string) : "CVar to change" + message(string) : "Value to set" + armorvalue(string) : "Duration (-1 = until triggered)" +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changetarget : "Trigger Change Target" +[ + target(string) : "Entity to affect [LE]" + m_iszNewTarget(string) : "New Target [LE]" +] + +//NEW 1.0 +//* A really bad idea, IMHO, but created by popular demand. +//* Use at your own risk, and/or the risk of everyone else in the room. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changevalue : "Change any entity's values" +[ + target(string) : "Entity to affect [LE]" + netname(string) : "Keyname to change" + m_iszNewValue(string) : "New value to set" +] + +//NEW 0.5 +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_command : "Console Command" +[ + //* The mapping tools can't handle double-quote marks. If you need a double-quote in your + //* command string, put `` (that's two backticks - top left of your keyboard) instead. + netname(string) : "Command String (use `` for a quote)" +] + +//* While locked by its master, the trigger_counter _will_ keep counting when fired, +//* but it won't fire anything itself. +@SolidClass base(Trigger, MoveWith) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname, MoveWith) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +//NEW 0.5 +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hevcharge : "Trigger charge hev" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + //* Usually, the HEV suit will comment on the new power level. + 4: "Don't Speak" : 0 + ] + frags(integer) : "Charge Amount" : 10 + delay(string) : "Delay before trigger" : "0" +] + +@SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Fire once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"Only when fired" : 0 + 32:"Only on touch" : 0 + ] + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + //NEW 0.7.1 + cangib(choices) : "To gib or not to gib" : 0 = + [ + 0 : "Normal" + 1 : "Always gib" + 2 : "Never gib" + ] +] + +//NEW 0.5 +//* If you refer to this like an alias (*targetname), you refer to all the relevant entities inside +//* the trigger area. +//* So, for example, you could use env_render to set the render style of them all. +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_inout : "Trigger: Activate on entering or leaving" +[ + target(string) : "Fire on entering (locus=enterer)" + m_iszAltTarget(string) : "Fire on leaving (locus=leaver)" + m_iszBothTarget(string) : "Fire on/off (entering/leaving)" +] + +@SolidClass base(Master, MoveWith) = trigger_monsterjump : "Trigger monster jump" +[ + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +//NEW 0.7.1 +//* This replaces the trigger_setposition and trigger_setvelocity entities, which have +//* been removed. Apologies for any inconvenience. +//* If you want to control motion for a period of time, see @motion_manager. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_motion : "Set the position and movement of an entity" +[ + target(target_destination) : "Target to affect [LE]" + m_iszPosition(string) : "Position (blank = no change)" + m_iPosMode(choices) : "Meaning of Position" : 0 = + [ + 0 : "Set new position [LP]" + 1 : "Add offset [LV]" + ] + m_iszAngles(string) : "Angles (blank = no change)" + m_iAngMode(choices) : "Meaning of Angles" : 0 = + [ + 0 : "Set new angle [LV]" + 1 : "Rotate by [LV]" + 2 : "Rotate by [PYR]" + ] + m_iszVelocity(string) : "Velocity (blank = no change)" + m_iVelMode(choices) : "Meaning of Velocity" : 0 = + [ + 0 : "Set new velocity [LV]" + 1 : "Add to velocity [LV]" + 2 : "Rotate velocity by [LV]" + 3 : "Rotate velocity [PYR]" + ] + m_iszAVelocity(string) : "AVelocity (blank = no change)" + m_iAVelMode(choices) : "Meaning of AVelocity" : 0 = + [ + 0 : "Set new avelocity [PYR]" + 1 : "Add to avelocity [PYR]" + ] + spawnflags(flags) = + [ + 1: "Debug" : 0 + ] +] + +@SolidClass base(Targetname, Master, Delay, Killtarget, TriggerCond, MoveWith) = trigger_once : "Trigger: Activate once" +[ + target(target_destination) : "Target when touched (locus=toucher)" + message(string) : "Text when triggered" + noise(string) : "Sound when triggered" +] + +@SolidClass base(trigger_once) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +//NEW 0.6 +//* In fact, this should probably be called watcher_onsight. +@PointClass base(Targetname, Master, MoveWith) iconsprite("sprites/trigger.spr") = trigger_onsight : "Trigger when A sees B" +[ + //* Put the targetname of the entity(ies) whose eyes the trigger_onsight should look through. + //* (if you want to trigger when the trigger_onsight itself sees something, i.e. + //* simulating a security camera, put the name of the trigger_onsight.) + netname(string) : "Looking entity (blank=player)" + //* Leave this blank to have it trigger when something sees the trigger_onsight. + //* You can also put a classname here, to trigger when the Looking Entity sees + //* any entity of that class. + message(string) : "Entity/classname to look at" + target(string) : "Fire when seen" + noise(string) : "Fire when no longer seen" + noise1(string) : "Fire on/off (seen/not seen)" + frags(string) : "View range (0=unlimited)" : "512" + //* Currently, only the horizontal view will be checked. + max_health(choices) : "Field of view (degrees)" : 90 = + [ + -1 : "(-1): Use monster's view" + ] + spawnflags(flags) = + [ + //* Don't check line of sight: i.e. it doesn't matter if there's something + //* in the way. + 1: "No LOS check" : 0 + 2: "Seethru glass" : 0 + 4: "Check State of 'looker'" : 0 + ] +] + +@SolidClass base(Trigger, MoveWith) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +//NEW 0.3 +//* Only affects dynamic (i.e. named) lights. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_lightstyle : "Trigger Change Lightstyle" +[ + target(target_destination) : "Target to affect [LE]" + style(choices) : "New Appearance" : 0 = + [ + 0 : "On" + 13: "Off" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + 14: "Slow Fade In" + 15: "Medium Fade In" + 16: "Fast Fade In" + ] + pattern(string) : "Custom Appearance" + m_iFade(string) : "Fade time" : 0 + m_iWait(string) : "Hold time (-1 = permanent)" : -1 +] + +@PointClass base(Targetname, Targetx, Master) iconsprite("sprites/trigger.spr") = trigger_relay : "Trigger Relay" +[ + //NEW 0.5 + //* This field allows you to use the trigger_relay as a kind of conditional jump: it + //* looks at its master, and does different actions based on the master's state. + m_iszAltTarget(string) : "Target if locked by master" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + //NEW 0.4 + //* If you're trying to work out what's going wrong with your level, + //* try ticking here and the relay will tell you when it triggers, etc. + //* Here's a useful trick: make a trigger_relay with this field ticked, + //* and give it the same name as an entity that you're interested in. + //* The relay will then notify you whenever that entity gets triggered. + //2: "Debug Mode" : 0 + 2 : "Fire at Camera" : 0 + ] + //NEW 0.4 + triggerstate(choices) : "Trigger to send" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + 4: "Kill" + 5: "Same as input" + //* I.e. when triggered ON, send OFF. And vice versa. + 6: "Opposite of input" + //* Setting this will cause the target momentary door to move to a particular position. + 7: "Number (momentary doors)" + ] + //* Use this in combination with usetype Number, to trigger momentary doors. + //* For example, sending 1.0 tells them to go fully + //* open, 0.0 fully closed, and 0.5 half-way. + message(string) : "Set number (blank = no change) [LN]" +] + +//* don't use. This is just a test entity. +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_rottest : "Trigger RotTest" +[ + target(target_destination) : "Marker ent" + netname(target_destination) : "Reference ent" + message(target_destination) : "Hinge ent" + health(integer) : "Distance" : 5 + armortype(integer) : "Angle Step" : 30 +] + +//NEW 0.6 +@SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" +[ + target(target_destination) : "Fire when activated" + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" + roomtype(choices) : "Room Type" : 0 = + [ + 0 : "(Disable all filters)" + 1 : "Generic (no filters)" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +//NEW 0.2 +//* Suggest to the specified monster that it should follow the given path. This is a low priority +//* activity, superceded when it spots a player (for instance). +//* (The same thing happens if you give the monster a "target".) +@PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_startpatrol : "Trigger Start Patrol" +[ + target(string) : "Target monster" + m_iszPath(string) : "Patrol path start" +] + +@SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_teleport : "Trigger teleport" +[ + target(target_destination) : "Destination entity" + //NEW 0.6 + message(target_destination) : "Landmark entity" + //NEW 0.6 + noise(target_destination) : "Fire on teleporting" +] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +//NEW 0.3 +//* A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for +//* the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times. +//* The main use for a watcher is to fire another entity (the "entity to notify"), each time the +//* watcher's state changes. +@PointClass base(Targetname) = watcher : "State Watcher" +[ + m_iszWatch(string) : "Entity to watch [LE]" + //* The watcher will revert to this state if the watched entity is killtargetted, or if it's a func_breakable which breaks. + m_fLogic(choices) : "State if entity isn't found" : 0 = + [ + 0: "On" + 1: "Off" + ] + //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. + target(target_destination) : "Target to notify" + //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. + spawnflags(flags) = + [ + //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF. + 1: "Send 'Toggle'" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns on. + 2: "Don't Send On" : 0 + //* If this is enabled, the target won't be triggered when the watcher turns off. + 4: "Don't Send Off" : 0 + 8: "NOT 'On'" : 0 + 16: "'Off'" : 0 + 32: "'Turn On'" : 0 + 64: "'Turn Off'" : 0 + 128:"'In Use'" : 0 + ] +] + +// NEW 1.0 +// * Compare two entity references, and see if they're the same. +// * For example, you could type "*myalias" as your first reference, +// * and "bob" as the second. As long as the alias "myalias" refers to +// * the entity "bob", the watcher will be active. The rest of the time +// * it will be inactive. +// * (If "bob" doesn't exist, it will also be inactive.) +//@PointClass base(Targetname) = watcher_alias : "Watcher" +//[ +// m_iszEntityA(string) : "Entity A [LE]" +// m_iszEntityB(string) : "Entity B [LE]" +// m_iMode(choices) : "Type of comparison" : 0 = +// [ +// 0 : "On when A = B" +// //* != means "not equal" +// 1 : "On when A != B" +// ] +// target(string): "Fire on changing state" +// netname(string): "Fire on turning on" +// message(string): "Fire on turning off" +// spawnflags(flags) = +// [ +// //* If this is set, one set of targets (on or off) will be fired, +// //* as appropriate, when the level starts. +// 1: "Fire at startup" : 0 +// ] +//] + +@PointClass base(Targetname) = watcher_count : "Watcher, entity count" +[ + noise(string) : "Count entities named..." + impulse(integer) : "Comparison number" + m_iMode(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when count = number" + //* != means "not equal" + 3 : "'On' when count != number" + 1 : "'On' when count > number" + 5 : "'On' when count >= number" + 2 : "'On' when count < number" + 4 : "'On' when count <= number" + ] + target(string): "Fire on changing state" + netname(string): "Fire on turning on" + message(string): "Fire on turning off" + noise1(string): "Fire when count increases" + noise2(string): "Fire when count decreases" + spawnflags(flags) = + [ + //* If this is set, one set of targets (on or off) will be fired, + //* as appropriate, when the level starts. + 1: "Fire at startup" : 0 + ] +] + +// NEW 1.8 +//* Compare two numbers. +//* If you refer to a watcher_number via [LN], it returns the last-seen value of A. +@PointClass base(Targetname) = watcher_number : "Watcher, compare numbers" +[ + netname(string) : "Number A [LN]" + //* If left blank, this will compare the current A with the value previously seen for A. + //* This is useful for checking whether the number has changed, + //* especially in combination with "tolerance" and/or the "manual update" flag. + noise(string) : "Number B [LN] (blank = old A)" + noise1(string) : "Tolerance for equals [LN]" : "0.0" + impulse(choices) : "Type of comparison" : 0 = + [ + 0 : "'On' when A = B" + //* != means "not equal" + 1 : "'On' when A != B" + 2 : "'On' when A > B" + 3 : "'On' when A >= B" + 4 : "'On' when A < B" + 5 : "'On' when A <= B" + ] + noise2(string): "Fire on turning on" + noise3(string): "Fire on turning off" + spawnflags(flags) = + [ + //* Don't watch continuously - only update (and fire targets if appropriate) when triggered. + 1: "Manual update" : 0 + //* If this is set, one set of targets (on or off) will be fired, + //* as appropriate, when the level starts. + 2: "Fire at startup" : 0 + 4: "Debug mode" : 0 + ] +] + +// +// Weapons +// +//NEW 1.4 +@PointClass base(Weapon) = weapon_debug : "Debugger" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weapon_eagle : "Desert Eagle" [] + +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_weaponbox.mdl")= weaponbox : "Weapon/Ammo Container" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357.mdl")= weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl")= weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl")= weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crossbow.mdl")= weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl") = weapon_glock : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl") = weapon_mp5 : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_sqknest.mdl") = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] + +@PointClass base(Weapon, Targetx, RenderFields) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +//NEW 1.5 +//A portable flare the player can use once (at any time) +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_flare : "Inventory Flare" +[ + ltime(integer): "Override flares lifetime" + noise(string): "Override default pickup sound" + rendercolor(color255): "Override flares colour (R G B)" +] + +//NEW 1.5 +//A portable camera that can be set up at any location the player can get to. +// Currently on explosive damage can effect cameras +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_camera : "Inventory Camera" +[ + targetname(string): "UNIQUE!! name for this camera" + // EVERY camera in your map (unit) must have a unique name. Call them something like 'mapname_camera_1' + noise(string): "Override default pickup sound" + health(integer): "Health of the camera" : 20 +] + +//NEW 1.5 +//Limit the total 'health' a player can have in his medkit with cvar 'max_medkit'. Defaults to 200. +@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_medicalkit : "Inventory Medkit" +[ + health(integer): "Healing charge" : 50 +] + + +// +// Xen +// + +@PointClass base(Targetname, Angles, RenderFields) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Target, Targetname, Angles, RenderFields) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl")= xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, Angles, RenderFields) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl")= xen_spore_large : "Xen Spore (large)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl")= xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl")= xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, Angles, RenderFields) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl")= xen_tree : "Xen Tree" [] + +//NEW 1.5 +//G-Conts Rain System (rain_settings & rain_modify) +@PointClass iconsprite("sprites/env.spr") = rain_settings : "Constant map settings" +[ +m_flDistance(integer) : "Rain distance" : 1000 +m_iMode(choices) : "Weather type" : 0 = +[ +0: "Rain" +1: "Snow" +] +] +@PointClass iconsprite("sprites/env.spr") = rain_modify : "Modify rain settings" +[ +m_flTime(integer) : "Fading time" : 0 +m_iDripsPerSecond(integer) : "Drips per second" : 800 +m_flWindX(integer) : "Wind X" : 0 +m_flWindY(integer) : "Wind Y" : 0 +m_flRandX(integer) : "Rand X" : 0 +m_flRandY(integer) : "Rand Y" : 0 +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/sven-coop.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/sven-coop.fgd new file mode 100644 index 0000000..52efe26 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/sven-coop.fgd @@ -0,0 +1,7040 @@ +// +// Sven Co-op game definition file (*.FGD) +// +// Based on the Half-Life definition file "version 3.0.0.1" by Chris "Autolycus" Bokitch. +// Updated by Sniper and Protector to include the Sven Co-op 4.5 Entities. +// VHE 3.5b-ready by Puchi, JPolito, and AdamR. (Model support) +// Tidied up by AdamR because you all suck hard at white spacing. +// Guidelines below added by Silencer so this file stops becoming a mess. +// Sorted by Puchi and Silencer. Proper filter options added by Puchi. + +// +// - FGD EDITING GUIDELINES - KEEP THIS FILE CLEAN - +// +// +// +// Get unity into it. (Commenting, line breaks, use of BaseClasses) +// +// Cut explanations of entities, keys and values out of the file and store them elsewhere for +// reference. +// +// When adding a necessary comment on some part in the file, isolate that part from everything +// else with a blank line above and below of it, and add the comment in a new line directly +// above the part you are commenting on. If the line is getting too long, (>100 chars) add a new +// line to continue. +// +// One space (' ') directly after every "//". An exception is when you comment actual entity +// keys, predefined values (drop-down list) or spawnflags out. +// +// Indent comments. +// +// Indent with single tabs only. NO SPACES! +// E.g. under Notepad 2: Go to Settings -> Tab Settings -> Uncheck "Insert tabs as spaces". +// +// No unnecessary spaces. Sometimes there are two or more spaces between words or at the end of +// lines to have a comment added, which looks ugly. +// +// Sort ALL entries by name, and KEEP THEM SORTED. +// +// +// Allow for custom models/sprites to be displayed by entities specifically made for doing so. +// (cycler/cycler_sprite/env_sprite/item_generic) +// +// Make sure all entities are properly sized. Some used to have unreasonably sized hulls. E.g. +// info_teleport_destination used to be a (-8 -8 0 8 8 16)-hullsized 16 cube, not really +// revealing any information about the output-height of the teleported player/monster/object. +// +// Give different entities colors! Anything that helps to differentiate between those vast amount +// of purple blocks is welcome! +// +// Make use of the iconsprite(sprite[]) parameter! We could have awesome sprites for many of the +// point entities, which also helps differentiating. Having varying sizes and colors on top of +// that also helps differentiating in the 2D views. +// + +// +// All entities must have this baseclass +// +@BaseClass = Mandatory +[ + ondestroyfn(string) : "OnDestroy Function" +] + +// +// worldspawn +// + +@SolidClass base(Mandatory) = worldspawn : "World entity" +[ + message(string) : "Map description / title" + skyname(string) : "Environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default wave height" + MaxRange(string) : "Max viewable distance" : "32768" + chaptertitle(string) : "Chapter title message" + startdark(choices) : "Level fade in" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New level unit" : 1 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map team List" + defaultteam(choices) : "Default team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + freeroam(choices) : "Roaming monsters (node graph)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + sentence_file(string) : "Custom Sentences File" + materials_file(string) : "Custom Materials File" + globalsoundlist(string) : "Global Sound Replacement File" + globalmodellist(string) : "Global Model Replacement File" + forcepmodels(string) : "Force Player Models a;b;c etc" + + // If enabled, the map will use the player class settings file. "mapname_class.cfg" + //enableclasses(choices) : "Enable Player Classes" : 0 = + //[ + // 0 : "No" + // 1 : "Yes" + //] + + scversion2(choices) : "Minimum game version" : 525 = + [ + 525 : "5.25 Patch" + 524 : "5.24 Patch" + 523 : "5.23 Patch" + 522 : "5.22 Patch" + 521 : "5.21 Patch" + 520 : "5.20 Patch" + 519 : "5.19 Patch" + 518 : "5.18 Patch" + 517 : "5.17 Patch" + 516 : "5.16 Patch" + 515 : "5.15 Patch" + 514 : "5.14 Patch" + 513 : "5.13 Patch" + 512 : "5.12 Patch" + 511 : "5.11 Patch" + 510 : "5.10 Patch" + 509 : "5.09 Patch" + 508 : "5.08 Patch" + 507 : "5.07 Patch" + 506 : "5.06 Patch" + 505 : "5.05 Patch" + 504 : "5.04 Patch" + 503 : "5.03 Patch" + 502 : "5.02 Patch" + 501 : "5.01 Patch" + 500 : "5.0 Milestone" + 480 : "4.8 Update" + 470 : "4.7 Update" + 460 : "4.6 Update" + 450 : "4.5 Update" + 407 : "4.07 Hotfix" + 406 : "4.06 Hotfix" + 405 : "4.05 Hotfix" + 401 : "4.0b1 Milestone" + 400 : "4.0 Internal" + 300 : "3.0 (or earlier)" + ] +] + +@BaseClass = FilterIn +[ + tinfilter(string) : "Name In Filter" + tinfiltertype(choices) : "Name In Filter Type" : 0 = + [ + 0: "Exclude" + 1: "Include" + ] + + cinfilter(string) : "Class In Filter" + cinfiltertype(choices) : "Class In Filter Type" : 0 = + [ + 0: "Exclude" + 1: "Include" + ] +] + +@BaseClass = FilterOut +[ + toutfilter(string) : "Name Out Filter" + toutfiltertype(choices) : "Name Out Filter Type" : 0 = + [ + 0: "Exclude" + 1: "Include" + ] + + coutfilter(string) : "Class Out Filter" + coutfiltertype(choices) : "Class Out Filter Type" : 0 = + [ + 0: "Exclude" + 1: "Include" + ] +] + +@BaseClass = ZHLTbmodel +[ + zhlt_usemodel(string) : "ZHLT Template Model Target" + zhlt_copylight(string) : "ZHLT Copy Lighting From Target" + zhlt_noclip(choices) : "ZHLT Disable Clipping" : 0 = + [ + 0 : "Default" + 1 : "Always non-solid" + ] + zhlt_invisible(choices) : "ZHLT Invisible" : 0 = + [ + 0 : "Visible (default)" + 1 : "Invisible" + ] + zhlt_customshadow(string) : "ZHLT Custom Shadow (when opaque)" + zhlt_embedlightmap(choices) : "ZHLT Embed Light Map (when translucent)" : 0 = + [ + 0 : "No (default)" + 1 : "Yes" + ] + zhlt_embedlightmapresolution(integer) : "ZHLT Embed Light Map Resolution" : 4 +] + +@BaseClass base(ZHLTbmodel) = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Light Flags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "ZHLT Light Origin Target" +] + +@BaseClass = ZHLTpoint +[ + _fade(string) : "ZHLT Light Fade" : "1.0" + _falloff(choices) : "ZHLT Light Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = AttackObject +[ + classify(choices) : "Classification" : 0 = + [ + -1 : "None" + 0 : "Object Default" + 1 : "Machine" + 2 : "Player" + 3 : "Human Passive" + 4 : "Human Military" + 5 : "Alien Military" + 6 : "Alien Passive" + 7 : "Alien Monster" + 8 : "Alien Prey" + 9 : "Alien Predator" + 10 : "Insect" + 11 : "Player Ally" + 12 : "Player Hornet/Snark" + 13 : "Alien Hornet/Snark" + 14 : "X-Race" + 15 : "X-Race: Shocktrooper/Voltigore" + 16 : "Team 1" + 17 : "Team 2" + 18 : "Team 3" + 19 : "Team 4" + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (X Y Z)" : "0 0 0" +] + +@BaseClass base(Mandatory) = Targetname +[ + targetname(target_source) : "Name" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Targetname, Appearflags, Angles) = Pickup +[ + spawnflags(Flags) = + [ + 128 : "TOUCH Only" : 0 + 256 : "USE Only" : 0 + 512 : "Can Use w/o LoS" : 0 + 1024: "Disable Respawn" : 0 + ] + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + 19: "Glow Shell" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + movetype(choices) : "Gravity Setting" : 0 = + [ + -1: "Unmoveable" + 0: "Fall to the ground (default)" + 5: "Hover in the air" + 8: "Hover in the air, ignore brush collision" + ] +] + +@BaseClass = ExclusiveHold +[ + exclusivehold(choices) : "Exclusive Hold" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass = CustomRespawnDelay +[ + m_flCustomRespawnTime(string) : "Custom respawn time" +] + +@BaseClass size(-16 -16 0, 16 16 32) color(2 64 240) base(Pickup, CustomRespawnDelay) = Weapon +[ + dmg(integer) : "Custom Damage" : 0 + + wpn_v_model(studio) : "Custom V_Model" : "" + wpn_w_model(studio) : "Custom W_Model" : "" + wpn_p_model(studio) : "Custom P_Model" : "" + + soundlist(string) : "Sound Replacement File" + + CustomSpriteDir(string) : "Custom sprite directory" + + IsNotAmmoItem(choices) : "Is Ammo Item" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] +] + +@BaseClass size(-8 -8 0, 8 8 16) color(4 128 240) base(Pickup, CustomRespawnDelay) = Ammo +[ + model(studio) : "Custom Model" : "" +] + +@BaseClass size(-8 -8 0, 8 8 16) color(0 0 200) base(Pickup, CustomRespawnDelay) = Item +[ + model(studio) : "Custom Model" : "" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + sequencename(string) : "Sequence Name" : "idle" + sequence(integer) : "Sequence Number (overrides name)" : 0 + scale(string) : "Scale Model" : "1" + + minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0" + maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0" + + soundlist(string) : "Sound Replacement File" +] + +@BaseClass size(-8 -8 0, 8 8 16) color(0 0 200) base(Pickup) = ItemWithDefaultModel +[ + solid(choices) : "Solid Setting" : 0 = + [ + -1: "Hollow" + 0: "Touch on edge, non-blocking (default)" + 2: "Touch on edge, blocking (requires hull sizes!)" + ] + model(studio) : "Custom Model" : "models/egg.mdl" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 + sequencename(string) : "Sequence Name" : "idle" + sequence(integer) : "Sequence Number (overrides name)" : 0 + scale(string) : "Scale Model" : "1" + + minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0" + maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0" + + soundlist(string) : "Sound Replacement File" +] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay Before Trigger" : "0" + killtarget(target_destination) : "Kill Target" +] + +@BaseClass = InventoryRules +[ + item_name_required(string) : "Inventory: Need item(s)" : "" + item_group_required(string) : "Inventory: Need item(s) from group(s)" : "" + item_group_required_num(integer) : "Inventory: Item count in group need have (0 = all)" : 0 + item_name_canthave(string) : "Inventory: CAN'T have item" : "" + item_group_canthave(string) : "Inventory: CAN'T have item from group" : "" + item_group_canthave_num(integer) : "Inventory: Item count in group CAN'T have (0 = all)" : 0 + + pass_ignore_use_triggers(choices) : "On pass: Ignore item's on use triggers?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + pass_drop_item_name(string) : "On pass: Drop item(s)" : "" + pass_drop_item_group(string) : "On pass: Drop item(s) from group(s)" : "" + pass_ignore_drop_triggers(choices) : "On pass: Ignore item's on drop triggers?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + pass_return_item_name(string) : "On pass: Return item(s)" : "" + pass_return_item_group(string) : "On pass: Return item(s) from group(s)" : "" + pass_ignore_return_triggers(choices) : "On pass: Ignore item's on return triggers?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + pass_destroy_item_name(string) : "On pass: Destroy item(s)" : "" + pass_destroy_item_group(string) : "On pass: Destroy item(s) from group(s)" : "" + pass_ignore_destroy_triggers(choices) : "On pass: Ignore item's on destroy triggers?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + target_on_fail(string) : "Target: Inventory rules failed" : "" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + 17: "Dead Player (DONT USE!)" + 18: "Explode (Garg Like)" + 19: "Glow Shell" + 20: "ClampMinScale (Sprites)" + ] +] + +@BaseClass base(RenderFxChoices, Appearflags) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +@BaseClass base(Targetname, Target, Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Targetname, Target, Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerDmClass +[ + spawnflags(Flags) = + [ + // Disable this spawn point when the map starts + 2 : "Start Off" : 0 + + // Player will spawn repeling down a rope (like repeling soldiers) + 4 : "Repel Spawn" : 0 + + // Only spawn player if his targetname equals to message + 8 : "Filter player targetname" : 0 + + // Invert player targetname filter (can use if DOESN'T match) -- needs flag 8! + 16 : "Invert Filter" : 0 + + // Fire target when player spawns here, rather than when the spawn point is toggled on/off + 32 : "Trigger on spawn" : 0 + ] + netname(string) : "New Player Targetname" + // Use a semi-colon ';' to specify multiple targetnames + message(string) : "Filter Player Targetname" + master(string) : "Master" + frags(string) : "Repel Speed" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@BaseClass = NotRevivable +[ + //Whether the monster can be revived or not + is_not_revivable(choices) : "Is not revivable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass base(Targetname, Target, RenderFields, Angles, AttackObject, NotRevivable) color(0 200 200) = Monster +[ + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Don't Fade Corpse" : 0 + 16384: "No Dyn Collision" : 0 + ] + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + TriggerTarget(String) : "Trigger Condition Target" + body(choices) : "Body" : 0 = + [ + 0 : "0" + ] + skin(choices) : "Skin" : 0 = + [ + 0 : "0" + ] + is_player_ally(Choices) : "Is Player Ally?" : 0 = + [ + 0 : "No (Default)" + 1 : "Yes" + ] + displayname(string) : "In-game Name" : "" + bloodcolor(choices) : "Blood Color" : 0 = + [ + 0 : "Monster Default" + -1 : "No Blood" + 1 : "Red" + 2 : "Yellow" + ] + health(integer) : "Custom Health" : 0 + model(studio) : "Custom Model" + minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0" + maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0" + soundlist(string) : "Sound Replacement File" + freeroam(Choices) : "Monster Roaming (nodes)" : 0 = + [ + 0 : "Map Default" + 1 : "Never" + 2 : "Always" + ] + + path_name(string) : "Path Name" //The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to. + + // This will make the monster follow/protect whoever is specified + guard_ent(string): "Entity to Guard" : "" +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" + + is_player_ally(Choices) : "Is Player Ally?" : 0 = + [ + 0 : "Yes (Default)" + 1 : "No" + ] +] + +@BaseClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) = GibShooterBase +[ + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" + spawnflags(Flags) = [ 2 : "Remove on Spawn" : 0 ] +] + +@BaseClass base(Targetname, Targetx, Global, AttackObject, RenderFields, ZHLT) = Breakable +[ + //target(target_destination) : "Target on break" //Duplicate, already defined by Target + health(integer) : "Strength" : 1 + material(choices) : "Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + weapon(choices) : "Instant Break Weapon" : 1 = + [ + 1: "Crowbar" + 19: "Crowbar (Electric Only)" + 20: "Pipe Wrench" + ] + explosion(choices) : "Gibs' direction and velocity" : 1 = + [ + 0: "Random direction; no velocity" + 1: "Relative to attack/dmg./mat." + ] + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 Clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss Clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + 22: "Crowbar" + 23: "Pipewrench" + 24: "Sniperrifle" + 25: "Sniperrifle ammo" + 26: "M16 Rifle" + 27: "M249 Squad Automatic Weapon" + 28: "Minigun" + 29: "556 Ammo Box" + 30: "Sporelauncher" + 31: "Spore Clip" + 32: "9mm Box" + 33: "Uzi" + 34: "Uzi akimbo" + 35: "Desert Eagle" + 36: "Barnacle Grapple" + 37: "Medkit (portable)" + 38: "HEV Suit" + 39: "Antidote" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + soundlist(string) : "Sound Replacement File" +] + +@BaseClass = BaseLockable +[ + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + + locked_sound_override(sound) : "Locked Sound Override" + unlocked_sound_override(sound) : "Unlocked Sound Override" + locked_sentence_override(string) : "Locked Sentence Override" + unlocked_sentence_override(string) : "Unlocked Sentence Override" +] + +@BaseClass = StartStopable +[ + fireonstart(string) : "Fire On Start" + fireonstart_triggerstate(choices) : "Fire On Start Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + + fireonstop(string) : "Fire On Stop" + fireonstop_triggerstate(choices) : "Fire On Stop Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@BaseClass = OpenClosable +[ + fireonopening(string) : "Fire On Open Start" + fireonopening_triggerstate(choices) : "Fire On Open Start Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + + fireonclosing(string) : "Fire On Close Start" + fireonclosing_triggerstate(choices) : "Fire On Close Start Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + + // This can also be done with "fireonopen" (backward compatibility) + fireonopened(string) : "Fire On Open End" + fireonopened_triggerstate(choices) : "Fire On Open End Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + + // This can also be done with "netname" (backward compatibility) + fireonclosed(string) : "Fire On Close End" + fireonclosed_triggerstate(choices) : "Fire On Close End Trigger State" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@BaseClass base(Appearflags, Global, Targetname, Targetx, FilterIn, FilterOut, InventoryRules, AttackObject, RenderFields, Angles, ZHLT, BaseLockable, StartStopable, OpenClosable) = Door +[ + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + movesnd_loop(choices) : "Move Sound Loops?" : 0 = + [ + 0: "No" + 1: "Yes" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + noise1(sound) : "Move Sound Override" + noise2(sound) : "Stop Sound Override" + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + health(integer) : "Strength" : 0 + _minlight(string) : "Minimum light level" + soundlist(string) : "Sound Replacement File" + m_iOpenFlags(choices) : "Who can open this" : 0 = + [ + 0: "Default (0)" + 1: "Pushables (1)" + 2: "No clients (2)" + 3: "1 + 2" + 4: "Everything else (4)" + 5: "1 + 4" + 6: "2 + 4" + 7: "1 + 2 + 4" + ] + m_fIgnoreTargetname(choices) : "Ignore Targetname" : 0 = + [ + 0: "No" + 1: "Yes" + ] + m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 2 = + [ + 0 : "No" + 1 : "Yes" + 2 : "Yes, even when currently moving" + ] + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256: "USE Only" : 0 + 512: "Monsters Can't" : 0 + 1024: "No Link-Checking" : 0 + ] + breakable(choices) : "Breakable" : 0 = + [ + 0: "No" + 1: "Yes" + ] + fireonbreak(target_destination) : "Fire on break" + material(choices) : "Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + instantbreak(choices) : "Instant Break" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + weapon(choices) : "Instant Break Weapon" : 1 = + [ + 1: "Crowbar" + 19: "Crowbar (Electric Only)" + 20: "Pipe Wrench" + ] + explosion(choices) : "Gibs' direction and velocity" : 1 = + [ + 0: "Random direction; no velocity" + 1: "Relative to attack/dmg./mat." + ] + gibmodel(studio) : "Gib Model" : "" + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 + displayname(string) : "HUD Info name" + onlytrigger(choices) : "Only Trigger" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + breakontrigger(choices) : "Break On Trigger" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + repairable(choices) : "Repairable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + showhudinfo(choices) : "Show HUD Info" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + immunetoclients(choices) : "Immune To Clients" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + explosivesonly(choices) : "Explosives Only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + 512: "Use Relations" : 0 + 1024: "Player can't fire" : 0 + ] + + // Mainly for use with v.1.0.0.9's team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw Rate" : "30" + yawrange(string) : "Yaw Range" : "180" + yawtolerance(string) : "Yaw Tolerance" : "15" + pitchrate(string) : "Pitch Rate" : "0" + pitchrange(string) : "Pitch Range" : "0" + pitchtolerance(string) : "Pitch Tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite Scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing Persistence" : "1" + firespread(choices) : "Bullet Accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" + relation_player(choices) : "R Player" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_none(choices) : "R Unknown" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_machine(choices) : "R Machine" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_human_passive(choices) : "R Human Passive" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_human_militar(choices) : "R Human Military" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_alien_militar(choices) : "R Alien Military" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_alien_passive(choices) : "R Alien Passive" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_alien_monster(choices) : "R Alien Monster" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_alien_prey(choices) : "R Alien Prey" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_alien_predator(choices) : "R Alien Predator" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_insect(choices) : "R Insect" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_player_ally(choices) : "R Player Ally" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_player_bioweapon(choices) : "R Player BioWeapon" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_monster_bioweapon(choices) : "R Monster BioWeapon" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] + relation_machine(choices) : "R Machine" : 0 = + [ + -2: "Ally" + -1: "Friend" + 0: "No Relation" + 1: "Dislike" + 2: "Hate" + 3: "Nemesis" + ] +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + movesnd_loop(choices) : "Move Sound Loops?" : 0 = + [ + 0: "No" + 1: "Yes" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + noise(sound) : "Move Sound Override" + noise1(sound) : "Stop Sound Override" + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + soundlist(string) : "Sound Replacement File" +] + +@BaseClass base(Appearflags, StartStopable, OpenClosable) = BasePlat +[ + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds, BasePlat) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 + noise2(sound) : "Blocked Sound" +] + +@BaseClass base(Targetx, Targetname, FilterIn, FilterOut, InventoryRules, ZHLTbmodel, Appearflags) = Trigger +[ + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + message(string) : "Message (set sound too!)" + tiny_monsters(Choices) : "Allow tiny monsters (insects/hornets)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + 8: "Everything else": 0 + 16: "Fire On Enter": 0 + 32: "Fire On Exit": 0 + ] +] + +@BaseClass base(Targetname, Target, Angles) = PortalBase +[ + spawnflags(flags) = + [ + 1: "Solid" : 1 + 2: "Start Disabled" : 0 + 16: "Render only every 2nd frame": 0 + ] + zoom(integer) : "Zoom" : 1 + fps(integer) : "Max FPS" : 0 + mindist(integer) : "Min Render Distance" : 0 + maxdist(integer) : "Max Render Distance" : 0 + textureMode(choices) : "Texture Mode" : 1 = + [ + 0 : "{ Textures" + 1 : "All Textures" + 2 : "Named Texture" + ] + textureName(string) : "Texture Name" +] + +// +// Entities start here. Sorted by Name just like Hammer displays them. +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(164 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + moveto_radius(integer) : "Move to Radius" : 0 + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/vhe-iconsprites/ambient_generic.spr") base(Targetname) color(220 220 220) = ambient_generic : "Universal Ambient" +[ + message(sound) : "Sound File" + health(integer) : "Volume (10 = loudest)" : 10 + playmode(choices) : "Play Mode" : 0 = + [ + 0: "Default" + 1: "Play Once" + 2: "Loop" + 5: "Linear / Play Once" + 6: "Linear / Loop" + ] + preset(choices) : "Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(choices) : "LFO type" : 0 = + [ + 0: "Off" + 1: "Square Wave" + 2: "Triangle Wave" + 3: "Random" + 4: "Saw Tooth Wave" + 5: "Sine Wave" + ] + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + linearmin(choices) : "Linear Min Radius" : 2 = + [ + 0: "0 - 0 units" + 1: "1 - 256 units" + 2: "2 - 512 units" + 3: "3 - 768 units" + 4: "4 - 1,024 units" + 5: "5 - 1,280 units" + 6: "6 - 1,536 units" + 7: "7 - 1,792 units" + 8: "8 - 2,048 units" + 9: "9 - 2,304 units" + 10: "10 - 2,560 units" + 11: "11 - 2,816 units" + 12: "12 - 3,072 units" + 13: "13 - 3,328 units" + 14: "14 - 3,584 units" + 15: "15 - 3,840 units" + 16: "16 - 4,096 units" + ] + linearmax(choices) : "Linear End Radius" : 5 = + [ + 1: "1 - 256 units" + 2: "2 - 512 units" + 3: "3 - 768 units" + 4: "4 - 1,024 units" + 5: "5 - 1,280 units" + 6: "6 - 1,536 units" + 7: "7 - 1,792 units" + 8: "8 - 2,048 units" + 9: "9 - 2,304 units" + 10: "10 - 2,560 units" + 11: "11 - 2,816 units" + 12: "12 - 3,072 units" + 13: "13 - 3,328 units" + 14: "14 - 3,584 units" + 15: "15 - 3,840 units" + 16: "16 - 4,096 units" + ] + spawnflags(flags) = + [ + 1 : "Play Everywhere" : 0 + 2 : "Small Radius (~384)" : 0 + 4 : "Medium Radius (~768)" : 1 + 8 : "Large Radius (~1536)" : 0 + 16 : "Start Silent": 0 + 32 : "Un-looped|Cyclic": 0 + 64 : "User Only (+origin)" : 0 + ] +] + +@PointClass iconsprite("sprites/vhe-iconsprites/ambient_generic.spr") base(Targetname) color(220 220 220) = ambient_music : "Ambient Music" +[ + message(sound) : "Sound File" + volume(integer) : "Volume (10 = loudest)" : 10 + spawnflags(flags) = + [ + 1 : "Start Silent" : 1 + 2 : "Loop" : 0 + 4 : "Activator Only" : 0 + ] +] + +@PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 / desert eagle round box" [] + +@PointClass base(Ammo, Targetx) studio("models/w_saw_clip.mdl") = ammo_556 : "5.56mm round box" [] + +@PointClass base(Ammo, Targetx) studio("models/w_9mmARclip.mdl") = ammo_556clip : "5.56mm M16 rifle magazine" [] + +@PointClass base(Ammo, Targetx) studio("models/w_m40a1clip.mdl") = ammo_762 : "7.62mm sniper rifle magazine" [] + +@PointClass base(Ammo, Targetx) studio("models/w_mp5_clip.mdl") = ammo_9mmAR : "9mm assault rifle magazine" [] + +@PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "9mm round box (big)" [] + +@PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm pistol magazine" [] + +@PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "M16's M203 grenades (x2)" [] + +@PointClass base(Ammo, Targetx) studio("models/w_shotbox.mdl") = ammo_buckshot : "Shotgun shell box" [] + +@PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow bolt magazine" [] + +@PointClass base(Ammo, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss/Gluon gun battery" [] + +@PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "Rockets (x2)" [] + +@PointClass base(Ammo, Targetx) size(-16 -16 -16, 16 16 16) studio("models/vhe-models/spore_ammo_hammer.mdl") = ammo_spore : "Spore plant" +[ + movetype(choices) : "Gravity Setting" : 8 = + [ + -1: "Unmoveable" + 0: "Fall to the ground (OP4 maps only)" + 5: "Hover in the air" + 8: "Hover in the air, ignore brush collision" + ] +] + +@PointClass base(Ammo, Targetx) studio("models/spore.mdl") = ammo_sporeclip : "Spore" [] + +@PointClass base(Ammo, Targetx) studio("models/w_uzi_clip.mdl") = ammo_uziclip : "9mm Uzi magazine" [] + +@SolidClass base(Target, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + use_type(choices) : "Use Type" : 3 = + [ + 0: "Off" + 1: "On" + 2: "Set" + 3: "Toggle" + ] +] + +@PointClass color(165 185 160) = custom_precache : "Custom Precache" +[ + model_1(studio): "Model 1" + model_2(studio): "Model 2" + model_3(studio): "Model 3" + model_4(studio): "Model 4" + model_5(studio): "Model 5" + model_6(studio): "Model 6" + model_7(studio): "Model 7" + model_8(studio): "Model 8" + model_9(studio): "Model 9" + + sound_1(sound): "Sound 1" + sound_2(sound): "Sound 2" + sound_3(sound): "Sound 3" + sound_4(sound): "Sound 4" + sound_5(sound): "Sound 5" + sound_6(sound): "Sound 6" + sound_7(sound): "Sound 7" + sound_8(sound): "Sound 8" + sound_9(sound): "Sound 9" + + sky_1(string): "Sky map 1" + sky_2(string): "Sky map 2" + sky_3(string): "Sky map 3" + sky_4(string): "Sky map 4" + sky_5(string): "Sky map 5" + sky_6(string): "Sky map 6" + sky_7(string): "Sky map 7" + sky_8(string): "Sky map 8" + sky_9(string): "Sky map 9" +] + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) studio() color(128 128 128) = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) sprite() color(128 128 128) = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) : "Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) studio() color(140 120 120) = cycler_weapon : "Weapon Cycler"[] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) sprite() color(70 70 70) = cycler_wreckage : "Wreckage" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(string) : "Scale" : "1" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@BaseClass = BaseCustomEntity : "Custom entity base" // Use this baseclass for custom entities, since they all allow for script files to be defined +[ + m_iszScriptFile(string) : "Script file" +] + +@BaseClass base(Global, RenderFields, ZHLT) = BaseCharger : "Base Charger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + soundlist(string) : "Sound Replacement File" + + CustomJuice(integer) : "Custom Juice Amount" : 0 + CustomRechargeTime(integer) : "Custom Recharge Time" : 0 + + TriggerOnEmpty(target_destination) : "Trigger On Empty" + TriggerOnRecharged(target_destination) : "Trigger on Recharged" + + CustomDeniedSound(sound) : "Custom Denied Sound" + CustomStartSound(sound) : "Custom Start Sound" + CustomLoopSound(sound) : "Custom Loop Sound" +] + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-12 -12 -12, 12 12 12) color(255 250 230) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) studio("models/can.mdl") color(128 64 2) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] + model(string) : "Custom Model" : "" + weapons(integer) : "Health for Pickup" : 1 +] + +@PointClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) color(210 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname, ZHLTbmodel) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-12 -12 -12, 12 12 12) color(255 220 15) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(100 150 100) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) color(196 195 192) = env_fog : "Fog Field" +[ + spawnflags(flags) = + [ + 1: "Start Off" : 0 + ] + rendercolor(color255) : "Fog Color (RGB)" : "0 0 0" +// iuser1(integer) : "Fog Field Radius" : 8192 + iuser2(integer) : "Start Distance" : 128 + iuser3(integer) : "End Distance" : 1024 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(128 255 32) = env_funnel : "Large Portal Funnel" +[ + sprite(sprite) : "Custom sprite" + spawnflags(flags) = + [ + 1 : "Reverse" : 0 + 2 : "Reusable" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) color(4 32 250) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(60 200 5) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-8 -8 -8, 8 8 8) color(255 64 2) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) color(255 0 255) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) color(110 120 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + + // Automatically change rendermode, do it by searching + 16: "Auto Apply" : 0 + + ] + armorvalue(string): "radius (0 disables)" : "0" +] + +@PointClass base(Targetname, RenderFields) = env_render_individual : "Per-player render settings for entities" +[ + spawnflags(Flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + + 16: "Auto Apply" : 0 + 32: "Start On" : 0 + + 64 : "Affect Activator (ignore netname)" : 0 + 128 : "Use Entity to copy from" : 0 + ] + target(string) : "Entity to affect" + netname(string) : "Player to affect" + message(string) : "Entity to copy from" +] + +@PointClass base(Target, Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/vhe-iconsprites/env_sentence.spr") color(164 128 164) = env_sentence : "Announcement Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Activator Only" : 0 + ] + _text(string) : "Sentence" +] + +@PointClass base(Targetname) color(188 180 172) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "Global Shake" : 0 + ] + amplitude(string) : "Amplitude (degrees; 0-16)" : "4.0" + radius(string) : "Effect radius (if not global)" : "500" + duration(string) : "Duration (seconds; fades out)" : "1.0" + frequency(string) : "Frequency (Hz; 0-255)" : "2.5" +] + +@PointClass base(GibShooterBase, RenderFields) color(184 90 164) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) : "Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass base(Targetname) iconsprite("sprites/vhe-iconsprites/env_sound.spr") color(150 150 150) = env_sound : "DSP Sound" +[ + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water Small" + 15: "Water Medium" + 16: "Water Large" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big Room" + 21: "Bigger Room" + 22: "Biggest Room" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo - Drugged" + 27: "Weirdo - Dizzy" + 28: "Weirdo - Psychotic" + ] +] + +@PointClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) color(255 220 15) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) color(190 200 180) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "1" + vp_type(choices) : "Draw Type / Orientation" : 0 = + [ + 0: "Default" + // These reflect the VP_ types in the sprite but are +1'd, so 0 can mean default + 3: "Parallel" + 1: "Parallel Upright" + 5: "Parallel Orientated" + 2: "Facing Upright" + 4: "Orientated" + ] + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + 4: "Once + Remove" : 0 + ] +] + +@BaseClass base(Targetname, Global, RenderFields, PlatSounds) = BaseTrain +[ + target(target_source) : "First stop target" + speed(integer) : "Speed (units per second)" : 64 + m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(BaseTrain) color(190 200 180) = env_spritetrain : "Sprite Train" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Sprite Scale" +] + +@SolidClass base(Targetname, RenderFields, Angles, ZHLTbmodel) = env_weather : "Weather Effect" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 1 + ] + + drop_model(string) : "Sprite (or Model) name" + drop_scale(string) : "Sprite Scale" : "1" + drop_vp_type(choices) : "Sprite Draw Type / Orientation" : 0 = + [ + 0: "Default" + // These reflect the VP_ types in the sprite but are +1'd, so 0 can mean default + 3: "Parallel" + 1: "Parallel Upright" + 5: "Parallel Orientated" + 2: "Facing Upright" + 4: "Orientated" + ] + + splash_model(string) : "Splash Sprite (or Model) name" + splash_scale(string) : "Splash Sprite Scale" : "1" + splash_vp_type(choices) : "Splash Sprite Draw Type / Orientation" : 0 = + [ + 0: "Default" + // These reflect the VP_ types in the sprite but are +1'd, so 0 can mean default + 3: "Parallel" + 1: "Parallel Upright" + 5: "Parallel Orientated" + 2: "Facing Upright" + 4: "Orientated" + ] + + speed(integer) : "Speed" : 50 + density(integer) : "Density" : 30 + angle_variance(integer) : "Angle Variance" : 10 + speed_variance(integer) : "Speed Variance" : 10 +] + +@PointClass base(Targetname, Target, Angles) size(-16 -16 -16, 16 16 56) color(80 220 110) = env_xenmaker : "Xen Portal" +[ + spawnflags(flags) = + [ + 1: "Try Once" : 0 + 2: "No Spawn" : 0 + ] + + monstertype(string) : "Monster Type" : "monster_headcrab" + + m_flBeamRadius(integer) : "Beam Radius (max)" : 255 + m_iBeamAlpha(integer) : "Beam Alpha" : 128 + m_iBeamCount(integer) : "Beam Count" : 8 + m_vBeamColor(color255) : "Beam Color" : "217 226 146" + + m_flLightRadius(integer) : "Light Radius" : 160 + m_vLightColor(color255) : "Light Color" : "39 209 137" + + m_flStartSpriteFramerate(integer) : "Sprite1 Framerate" : 12 + m_flStartSpriteScale(string) : "Sprite1 Scale" : "1.0" + m_iStartSpriteAlpha(integer) : "Sprite1 Alpha" : 255 + m_vStartSpriteColor(color255) : "Sprite1 Color" : "65 209 61" + + m_flEndSpriteFramerate(integer) : "Sprite2 Framerate" : 12 + m_flEndSpriteScale(string) : "Sprite2 Scale" : "1.0" + m_iEndSpriteAlpha(integer) : "Sprite2 Alpha" : 255 + m_vEndSpriteColor(color255) : "Sprite2 Color" : "159 240 214" +] + +@SolidClass base(Breakable) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8: "Repairable" : 0 + 32: "Show HUD Info" : 0 + 64: "Immune To Clients" : 0 + 256: "Instant Break" : 0 + 512: "Explosives Only" : 0 + ] + displayname(string) : "HUD Info name" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, Targetname, Targetx, InventoryRules, AttackObject, RenderFields, Angles, ZHLT, BaseLockable) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" : 0 + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + noise(sound) : "Sound Override" + wait(integer) : "delay before reset (-1 stay)" : 3 + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256: "Touch Activates": 0 + ] + _minlight(string) : "Minimum light level" + use_type(choices) : "Use Type" : 3 = + [ + 0: "Off" + 1: "On" + 2: "Set" + 3: "Toggle" + ] +] + +@SolidClass base(Targetname, Angles, ZHLTbmodel) = func_clip : "Clip" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 1 + 2 : "Directional (Angles)" : 0 + 4 : "No Clients" : 0 + 8 : "Monsters" : 0 + 16 : "Pushables" : 0 + 32 : "Everything else" : 0 + 64 : "item_inv (thrown)" : 0 + ] + frags(String) : "Direction Tolerance" : "90" +] + +@SolidClass base(Global, RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_detail : "Detail Brushes" +[ + zhlt_detaillevel(integer) : "Detail level" : 1 + zhlt_chopdown(integer) : "Lower its level to chop others" : 0 + zhlt_chopup(integer) : "Raise its level to get chopped" : 0 + zhlt_coplanarpriority(integer) : "Priority when faces overlap" : 0 + zhlt_clipnodedetaillevel(integer) : "Detail level of clip hulls" : 1 + zhlt_noclip(choices) : "Disable clipping" : 0 = + [ + 0 : "Default" + 1 : "Always non-solid" + ] +] + +@SolidClass base(Door) = func_door : "Basic door" [] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass = func_group : "Non-entity solid brush group" +[ + zhlt_coplanarpriority(integer) : "Priority when faces overlap" : 0 + zhlt_noclip(choices) : "Disable clipping" : 0 = + [ + 0 : "Default" + 1 : "Always non-solid" + ] +] + +@SolidClass base(Targetname, RenderFields, AttackObject, Global, ZHLT) = func_guntarget : "Moving platform" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + ] + + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(BaseCharger) = func_healthcharger: "Wall health recharger" +[ +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal" + -3: "Grouped" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + spawnflags(flags) = + [ + 2 : "Use Angles" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, ZHLTbmodel) = func_ladder : "Ladder" +[ + spawnflags(flags) = + [ + 1: "Start Off" : 0 + ] +] + +@SolidClass base(PortalBase) = func_mirror : "Mirror" +[ +] + +@SolidClass base(PortalBase) = func_monitor : "Monitor" +[ + width(integer) : "Width (Resolution)" : 512 + height(integer) : "Height (Resolution)" : 512 +] + +@SolidClass base(Targetname, ZHLTbmodel) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname, ZHLTbmodel) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Target, ZHLTbmodel) = func_op4mortarcontroller : "Op4 Mortar Controller" +[ + mortar_axis(Choices) : "Axis" : 0 = + [ + 0 : "Vertical" + 1 : "Horizontal" + ] +] + +@SolidClass base(Global, Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, BasePlat, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, BasePlat, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(PortalBase) = func_portal : "Portal" +[ + spawnflags(flags) = + [ + 4: "Teleport" : 0 + 8: "No GL ClipPlanes": 0 + 32: "Shoot through": 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + spawnflags(flags) = + [ + 8: "Repairable" : 0 + 16: "Monsters Ignore?" : 0 + 32: "Show HUD Info" : 0 + 128: "Breakable" : 0 + 256: "1-Hit Break" : 0 + 512: "Explosives Only" : 0 + 1024: "Liftable" : 1 + ] + minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0" + maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0" + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + displayname(string) : "HUD Info name" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(BaseCharger) = func_recharge: "Battery recharger" +[ +] + +@SolidClass base(Targetname, Target, Global, InventoryRules, RenderFields, Angles, ZHLT, BaseLockable) = func_rot_button : "RotatingButton" +[ + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + noise(sound) : "Sound Override" + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256: "Touch Activates": 0 + ] + _minlight(integer) : "_minlight" + use_type(choices) : "Use Type" : 3 = + [ + 0: "Off" + 1: "On" + 2: "Set" + 3: "Toggle" + ] +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(ZHLTbmodel, InventoryRules) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +//"Forward Only" flag added - prevents the train from moving backwards. +//This is an original half-life feature; it existed in the code base but apparently was left out of the FGD by mistake. +// +//"No YAW (Y-rot)" flag added - Similar to the "No Pitch (X-rot)" flag, enabling this will force the train to skip updates of its facing angle as it moves. +@SolidClass base(Targetname, Angles, Global, RenderFields, AttackObject, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 4 : "Forward Only" : 0 + 8 : "Passable" : 0 + 16 : "No YAW (Y-rot)" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + noise(sound) : "Move Sound Override" + noise1(sound) : "Brake Sound Override" + noise2(sound) : "Start Sound Override" + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" + soundlist(string) : "Sound Replacement File" +] + +@SolidClass base(ZHLTbmodel, InventoryRules) = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(BaseTrain, AttackObject, ZHLT, StartStopable) = func_train : "Moving platform" +[ + avelocity(string) : "Angular Velocity (X Y Z)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + _minlight(string) : "Minimum light level" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + style(choices) : "Texlight style" : 0 = + [ + 0 : "Normal" + -3: "Grouped" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12: "Underwater" + ] + spawnflags(flags) = + [ + 2 : "Use Angles" : 0 + ] +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256: "USE Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + + -9: "CURRENT_0" + -10: "CURRENT_90" + -11: "CURRENT_180" + -12: "CURRENT_270" + -13: "CURRENT_UP" + -14: "CURRENT_DOWN" + -15: "TRANSLUCENT" + + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +@PointClass base(Targetname, Targetx) color(238 240 238) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + 4: "Fire if over limit": 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Targetx) color(238 240 200) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) color(80 80 0) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +// Counts number of clients on the server and triggers if it matches min or max value +@PointClass color(0 255 96) = game_player_counter : "Game Player Counter" +[ + frags(integer) : "Min Value" : 1 + health(integer) : "Max Value" : 32 + target(target_destination) : "Min Target" + netname(target_destination) : "Max Target" + message(String) : "Filter Player Targetname" +] + +@PointClass base(Targetname, Targetx) color(200 100 0) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "USE Only" : 0 + 2: "Filter Playername" : 0 + 4: "Re-Equip on Use" : 0 + 8: "Append Map CFG" : 0 + ] + master(string) : "Team Master" + + equipmode(choices) : "Equip mode" : 0 = + [ + 0: "Give items" + 1: "Modify inventory" + ] + + inventorymode(choices) : "Inventory mode" : 0 = + [ + 0: "Set items" + 1: "Add items" + 2: "Subtract items" + 3: "Remove items" + 4: "Restock items" + 5: "Limit items" + ] +] + +@PointClass base(Targetname, Targetx) color(255 2 0) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "65535" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) color(100 100 145) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) color(255 205 0) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +// Counts number of slots on the server and triggers if it matches value +@PointClass base(Targetx) color(0 255 148) = game_slot_counter : "Game Slot Counter" +[ + frags(integer) : "Value" : 12 +] + +@PointClass base(Targetname, Targetx) color(100 100 170) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) color(100 100 110) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) color(192 255 0) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + 2: "No console echo" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "0.67" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color 1 (Add 4th number >0 for opaque)" : "100 100 100" + color2(color255) : "Color 2 (Add 4th number >0 for opaque)" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname, ZHLTbmodel) = game_zone_player : "Player Zone brush" +[ + spawnflags(Flags) = + [ + 1 : "Ignore Dead Players" : 0 + ] + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + + +@PointClass base(GibShooterBase) color(180 2 0) = gibshooter : "Gib Shooter" [] + +@PointClass iconsprite("sprites/vhe-iconsprites/global_light_control.spr") base(Target, Targetname) size(-24 -24 -24, 24 24 24) color(96 96 32) = global_light_control : "Global Light Pattern" +[ + pattern(string) : "Custom Appearance" +] + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass color(255 0 0) = info_angularfade : "Texture name : the speed at which light fade as its direction becomes parallel to the texture (default 1.0)" [] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass color(255 231 127) = info_compile_parameters : "Map Compile Parameters" +[ + spawnflags(Flags) = + [ + 1 : "Ignore shared settings" : 0 + 2 : "Ignore CSG settings" : 0 + 4 : "Ignore BSP settings" : 0 + 8 : "Ignore VIS settings" : 0 + 16 : "Ignore RAD settings" : 0 + ] + + // --- Shared options --- + verbose(choices) : "Verbose messages?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + noinfo(choices) : "Don't show tool configuration information?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + nolog(choices) : "Don't generate compile log file?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + dev(choices) : "Developer message level" : 0 = + [ + 0 : "[ Unset ]" + -1 : "None" + 1 : "Error" + 2 : "Warning" + 3 : "Info" + 4 : "Fluff" + 5 : "Spam" + 6 : "Mega spam" + ] + estimate(choices) : "Estimate compile times?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 0 : "Yes" + ] + chart(choices) : "Display statistics charts?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + threads(integer) : "CPU thread count (0 for auto/max)" : 0 + priority(choices) : "CPU process priority" : 0 = + [ + 0 : "[ Unset ]" + 1 : "Low" + 2 : "Normal" + 3 : "High" + ] + texdata(integer) : "Texture data memory (KiB)" : 0 + lightdata(integer) : "Lighting data memory (KiB)" : 0 + + // --- CSG options --- + csg(choices) : "--- Perform CSG stage? ---" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + 2 : "Yes, entity updates only mode" + ] + csg_nowadtextures(choices) : "No WAD textures? (Embed textures into BSP.)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_noclip(choices) : "Disable clipping hull generation?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_clipeconomy(choices) : "Strip redundant clip nodes? (Economy mode.)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_cliptype(choices) : "Clipping hull type" : 0 = + [ + 0 : "[ Unset ]" + -1 : "Smallest" + 1 : "Normalized" + 2 : "Simple (most compact)" + 3 : "Precise (recommended)" + 4 : "Legacy" + ] + csg_hullfile(string) : "Custom hull file" : "" + csg_noskyclip(choices) : "Disable sky clipping?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_tiny(string) : "Minimum brush face surface area before it is discarded" : "" + csg_brushunion(string) : "Threshold to warn about overlapping brushes" : "" + csg_nullfile(string) : "NULL texture substitutions file" : "" + csg_wadcfgfile(string) : "WAD configuration file" : "" + csg_wadcfgname(string) : "WAD configuration name" : "" + csg_wadautodetect(choices) : "WAD auto detect?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_nonulltex(choices) : "Don't strip null texture faces?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_nullifytrigger(choices) : "Strip trigger texture faces?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_nolightopt(choices) : "Don't optimize engine light entities?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_notextconvert(choices) : "Don't convert game_text from ANSI to UTF-8 format?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + csg_scale(string) : "Scale the world (USE AT OWN RISK!)" : "" + + // --- BSP options --- + bsp(choices) : "--- Perform BSP stage? ---" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + 2 : "Yes, leak only mode" + ] + bsp_subdivide(integer) : "Face subdivide size (64-528)" : 0 + bsp_maxnodesize(integer) : "Maximum portal node size (64-1024)" : 0 + bsp_notjunc(choices) : "Don't break edges on t-junctions?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_nobrink(choices) : "Don't smooth brinks?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_noclip(choices) : "Don't process the clipping hull?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_nofill(choices) : "Don't fill outside? (Leaks will be masked.)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_noinsidefill(choices) : "Don't fill empty spaces?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + bsp_noopt(choices) : "Don't optimize planes?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_noclipnodemerge(choices) : "Don't optimize clip nodes?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_nonulltex(choices) : "Don't strip NULL textures?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes (not recommended)" + ] + bsp_nohull2(choices) : "Don't generate hull 2? (Big monsters & pushable fall out map!)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + bsp_viewportal(choices) : "Show portal boundaries in PTS file?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + + // --- VIS options --- + vis(choices) : "--- Perform VIS stage? ---" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + 2 : "Yes, fast mode" + 3 : "Yes, full mode" + ] + + // --- RAD options --- + rad(choices) : "--- Perform RAD stage? ---" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + 2 : "Yes, fast mode" + 3 : "Yes, extra mode" + ] + rad_waddir(string) : "WAD search directory" : "" + rad_vismatrix(choices) : "Use visibility matrix?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "Normal (65,536 patch limit)" + 1 : "Sparse" + 2 : "None (slowest but most accurate lighting)" + ] + rad_bounce(integer) : "Bounces" : 0 + rad_ambient(string) : "Ambient world light (R G B)" : "" + rad_limiter(string) : "Light clipping threshold (-1 for none)" : "" + rad_circus(choices) : "Circus mode?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_nospread(choices) : "Disable sunlight spread angles?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_nopaque(choices) : "Disable opaque light flags?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_smooth(string) : "Smoothing threshold for blending (In degrees)" : "" + rad_smooth2(string) : "Smoothing threshold between different textures" : "" + rad_chop(string) : "Patch size for normal textures" : "" + rad_texchop(string) : "Patch size for texture light faces" : "" + rad_notexscale(choices) : "Scale patches with texture scale?" : 0 = + [ + 0 : "[ Unset ]" + 1 : "No" + -1 : "Yes" + ] + rad_subdivide(choices) : "Patch subdivide?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_coring(string) : "Lighting threshold before blackness" : "" + rad_dlight(string) : "Direct lighting threshold" : "" + rad_dscale(string) : "Direct lighting scale" : "" + rad_nolerp(choices) : "Disable interpolation? (Nearest point instead.)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_fade(string) : "Global fade (Larger values = shorter lights)" : "" + rad_texlightgap(string) : "Global gap distance for texture lights" : "" + rad_scale(string) : "Global light scaling" : "" + rad_colourscale(string) : "Per-colour light scaling (R G B)" : "" + rad_gamma(string) : "Global gamma" : "" + rad_colourgamma(string) : "Per-colour gamma (R G B)" : "" + rad_sky(string) : "Ambient sunlight shade contribution" : "" + rad_lights(string) : "Light textures file" : "" + rad_noskyfix(choices) : "Disable sky light being global?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_incremental(choices) : "Use/create an incremental transfer list file?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_dump(choices) : "Dump light patches to a file for debugging?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_colourjitter(string) : "Adds noise, independent colours, for dithering (R G B)" : "" + rad_jitter(string) : "Adds noise, monochromatic, for dithering (R G B)" : "" + rad_customshadowwithbounce(choices) : "Enables custom shadows with bounce light?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_rgbtransfers(choices) : "Enable RGB transfers? (For custom shadows.)" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_minlight(integer) : "Minimum final light (0-255)" : 0 + rad_compresstransfers(choices) : "Compress transfers?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "32-bit" + 1 : "16-bit" + 2 : "8-bit" + ] + rad_compressrgbtransfers(choices) : "Compress RGB transfers?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "96-bit" + 1 : "48-bit" + 2 : "32-bit" + 3 : "24-bit" + ] + rad_softsky(choices) : "Smooth skylight?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_depth(string) : "Thickness of translucent faces" : "" + rad_blockopaque(choices) : "Remove the black areas around opaque entities?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_notextures(choices) : "Don't load textures?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_texreflectgamma(string) : "Reflection gamma" : "" + rad_texreflectscale(string) : "Reflection scale" : "" + rad_blur(string) : "Enlarge light map sample to blur the light map" : "" + rad_noemitterrange(choices) : "Don't fix pointy texture lights?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] + rad_nobleedfix(choices) : "Don't fix wall bleeding problem for large blur value?" : 0 = + [ + 0 : "[ Unset ]" + -1 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(128 255 64) = info_intermission : "Intermission Spot" [] + +@SolidClass = info_hullshape : "Hull shape definition" +[ + targetname(target_source) : "Name" + defaulthulls(choices) : "Set as default shape" : 0 = + [ + 0: "No" + 2: "Hull 1" + 4: "Hull 2" + 8: "Hull 3" + ] + disabled(choices) : "Disable" : 0 = + [ + 0: "No" + 1: "Yes" + ] +] + +// Goal pathing entity +@PointClass base(Targetname, Target) color(230 230 232) = info_monster_goal : "Monster goal entity" +[ + spawnflags(Flags) = + [ + 8 : "Start Off" : 0 + + // If any monster reaches a goal, any other monsters with that goal will not need to get there. (If this isn't checked) + 16 : "Multithreaded" : 0 + + // Turns off this entity for all or a specific monster when reached + 32 : "Toggle On Reach" : 0 + + ] + priority(Choices) : "Priority" : 0 = + [ + // Will run to goal if not in combat with an enemy. + 0 : "No enemy" + + // Will run to goal if not in combat, or in combat and enemy is hidden. + 1 : "No enemy/Enemy occluded" + + + // 2, 3 and 4 will still work if the monster does not have an enemy. + // Ignores enemies and just tries to make it to the goal point. + 2 : "Ignore enemy" + + // If this goal is closer than the enemy, just run to the goal. + 3 : "Goal closer than enemy" + + // Same as 3, OR if the enemy isn't visible. + 4 : "G.C.T.E./Enemy occluded" + + // Ignore all enemies unless you're able to attack something. + 5 : "Stop only if can attack" + ] + + // How the monster will move to this goal. + movementtype(Choices) : "Movement Type" : 0 = + [ + 0 : "Walk" + 1 : "Run" + ] + + // The monster must wait this long (and live) before the goal becomes inactive / targets are fired. + delay(integer) : "Wait before trigger" : 0 + + // When in radius, finished moving to the goal + radius(integer) : "Move-Complete Radius" : 0 + + // If (in triggerradius & in radius of specific entity) do not attempt to go to other goal entities. + // In other words, trigger radius ensures a monster goes to a specific entity if outside of it; + // if inside, it does not count against the entity for going in favor of another. + // If closer to the goal than this, this goal is ignored. + triggerradius(integer) : "Distance For Inactivity" : 0 + + // If we're farther than this amount, this goal is ignored. + requiredradius(integer) : "Maximum Required Distance" : 0 + + // Amount of health the monster is given when completing a goal (limited to maximum health). + healthbonus(integer) : "Health Bonus" : 0 + + // Play an animation before triggering stuff. + sequence(string) : "Action Animation" : "0" + + // Becomes monster's enemy when completing the path. + enemy(string) : "Target Enemy" +] + +@BaseClass = NodeBase +[ + hinttype(Choices) : "Hint type" : 0 = + [ + 0 : "None" + 4 : "World machinery" + 8 : "World blinking light" + 10 : "World human blood" + 11 : "World alien blood" + ] + + activity(Choices) : "Hint activity" : 0 = + [ + -1 : "None" + 0 : "Reset" + 1 : "Idle" + 2 : "Guard" + 3 : "Walk" + 4 : "Run" + 5 : "Fly" + 6 : "Swim" + 7 : "Hop" + 8 : "Leap" + 9 : "Fall" + 10 : "Land" + 11 : "Strafe left" + 12 : "Strafe right" + 13 : "Roll left" + 14 : "Roll right" + 15 : "Turn left" + 16 : "Turn Right" + 17 : "Crouch" + 18 : "Crouch idle" + 19 : "Stand up from crouch" + 20 : "Use" + 21 : "Signal 1" + 22 : "Signal 2" + 23 : "Signal 3" + 24 : "Twitch" + 25 : "Cower" + 26 : "Small flinch" + 27 : "Big flinch" + 28 : "Range attack 1" + 29 : "Range attack 2" + 30 : "Melee attack 1" + 31 : "Melee attack 2" + 32 : "Reload" + 33 : "Arm" + 34 : "Disarm" + 35 : "Eat" + 36 : "Die simple" + 37 : "Die backward" + 38 : "Die forward" + 39 : "Die violent" + 40 : "Barnacle hit" + 41 : "Barnacle pull" + 42 : "Barnacle chomp" + 43 : "Barnacle chew" + 44 : "Sleep" + 45 : "Inspect floor" + 46 : "Inspect wall" + 47 : "Idle angry" + 48 : "Walk hurt" + 49 : "Run hurt" + 50 : "Hover" + 51 : "Glide" + 52 : "Fly left" + 53 : "Fly right" + 54 : "Detect scent" + 55 : "Sniff" + 56 : "Bite" + 57 : "Threat display" + 58 : "Fear display" + 59 : "Excited" + 60 : "Special attack 1" + 61 : "Special attack 2" + 62 : "Combat idle" + 63 : "Walk scared" + 64 : "Run scared" + 65 : "Victory dance" + 66 : "Die head shot" + 67 : "Die chest shot" + 68 : "Die gut shot" + 69 : "Die back shot" + 70 : "Flinch head" + 71 : "Flinch chest" + 72 : "Flinch stomach" + 73 : "Flinch left arm" + 74 : "Flinch right arm" + 75 : "Flinch left leg" + 76 : "Flinch right leg" + ] +] + +@PointClass base(NodeBase) size(-24 -24 -4, 24 24 4) color(225 227 0) = info_node : "ai node" [] + +@PointClass base(NodeBase) size(-32 -32 0, 32 32 64) color(225 227 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(128 255 146) = info_null : "info_null (spotlight target)" [] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 0 0) = info_overview_point : "Disable VIS here for overview" +[ + reverse(choices) : "Reversed" : 0 = + [ + 0: "No" + 1: "Yes" + ] +] + +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player co-operative start" [] + +@PointClass base(PlayerDmClass) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" [] + +@PointClass base(PlayerDmClass) studio("models/player.mdl") = info_player_dm2 : "Hidden deathmatch start (not visible in map list)" [] + +@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_start : "Single player start (and multi-player initial viewpoint)" [] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 0 0) = info_smoothvalue : "Texture name : Threshold of smooth angle" [] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 255 0) = info_sunlight : "light_environment information that affects model brightness" +[ + target(target_destination) : "Target" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "0 0 0 100" +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Generic target" [] + +@PointClass size(-16 -16 0, 16 16 72) base(PlayerClass) color(255 128 240) = info_teleport_destination : "Teleport destination" +[ + spawnflags(Flags) = + [ + 32 : "Trigger on arrival" : 0 + ] + teleport_cooldown(string) : "Teleport Cooldown Delay" : "1" +] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 231 127) = info_texlights : "Texture Light Definitions" [] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 0 0) = info_translucent : "Texture name : translucent amount (0.0-1.0)" [] + +@PointClass size(-16 -16 0, 16 16 24) base(Targetx, Item) studio("models/w_oxygen.mdl") = item_airtank : "Oxygen tank" [] + +@PointClass size(-4 -4 0, 4 4 16) base(Targetx, Item) studio("models/w_antidote.mdl") = item_antidote : "Poison antidote" [] + +@PointClass size(-11 -11 0, 11 11 36) base(Targetx, Item) studio("models/barney_vest.mdl") = item_armorvest : "Armor vest" [] + +@PointClass size(-4 -4 0, 4 4 16) base(Targetx, Item) studio("models/w_battery.mdl") = item_battery : "HEV battery" +[ + health(integer) : "Charge Supplied" : 0 + healthcap(integer) : "Charge Cap" : 0 +] + +@PointClass base(ItemWithDefaultModel, Targetx) studio() = item_generic : "Generic scenery item" [] + +@PointClass size(-8 -8 0, 8 8 48) base(Item) studio("models/DY/health_charger_body.mdl") = item_healthcharger : "Health charger (wall)" +[ + capacity(integer) : "Charger Capacity" : 0 + model_juice(string) : "Model for Capacity Indicator" : "" +] + +@PointClass size(-12 -12 0, 12 12 8) base(Targetx, Item) studio("models/w_medkit.mdl") = item_healthkit : "Health kit" +[ + health(integer) : "Health Supplied" : 0 + healthcap(integer) : "Health Cap" : 0 +] + +@PointClass size(-8 -8 0, 8 8 20) base(Targetx, Item) studio("models/barney_helmet.mdl") = item_helmet : "Helmet" [] + +@PointClass base(ItemWithDefaultModel, Targetx) studio() = item_inventory : "Inventory item" +[ + item_name(string) : "Item name" : "" + item_group(string) : "Item group name" : "" + display_name(string) : "Display name (HUD)" : "" + description(string) : "Description (HUD)" : "" + item_icon(string) : "Item icon (HUD)" : "" + activate_limit(integer) : "Self-activation limit (0 = infinite)" : 0 + collect_limit(integer) : "Collection limit (0 = infinite)" : 0 + weight(string) : "Item weight (0-100)" : "1.0" + + filter_targetnames(string) : "Collect: Entity target names" : "" + filter_classnames(string) : "Collect: Entity class names" : "" + filter_teams(string) : "Collect: Teams" : "" + filter_npc_classifications(choices) : "Collect: NPC classifications" : 0 = + [ + 0 : "No filter" + -1 : "None" + 1 : "Machine" + 2 : "Player" + 3 : "Human Passive" + 4 : "Human Military" + 5 : "Alien Military" + 6 : "Alien Passive" + 7 : "Alien Monster" + 8 : "Alien Prey" + 9 : "Alien Predator" + 10 : "Insect" + 11 : "Player Ally" + 12 : "Player Hornet/Snark" + 13 : "Alien Hornet/Snark" + 14 : "X-Race" + 15 : "X-Race: Shocktrooper/Voltigore" + 16 : "Team 1" + 17 : "Team 2" + 18 : "Team 3" + 19 : "Team 4" + ] + item_name_required(string) : "Collect: Need item(s)" : "" + item_group_required(string) : "Collect: Need item(s) from group(s)" : "" + item_group_required_num(integer) : "Collect: Item count in group need have (0 = all)" : 0 + item_name_moved(string) : "Collect: Item(s) moved" : "" + item_name_canthave(string) : "Collect: CAN'T have item" : "" + item_group_canthave(string) : "Collect: CAN'T have item from group" : "" + item_group_canthave_num(integer) : "Collect: Item count in group CAN'T have (0 = all)" : 0 + item_name_not_moved(string) : "Collect: Item(s) NOT moved" : "" + + carried_hidden(choices) : "Carried: Hide item (3rd person)" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + carried_skin(integer) : "Carried: Skin" : 0 + carried_body(integer) : "Carried: Body" : 0 + carried_sequencename(string) : "Carried: Sequence Name" : "carried" + carried_sequence(integer) : "Carried: Sequence Number (overrides name)" : 1 + + return_timelimit(string) : "Return: Wait (-1 = never)" : "60.0" + return_delay_respawn(choices) : "Return: Delay respawn (materialisation)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + holder_timelimit(string) : "Holder: Hold time limit (0 = never)" : "0" + holder_time_activate_wait(string) : "Holder: Delay between self-activations (0 = none)" : "0" + holder_time_wearout(string) : "Holder: Wearing out trigger time (0 = none)" : "0" + holder_can_activate(choices) : "Holder: Allowed to self-activate" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + holder_timelimit_wait_until_activated(choices) : "Holder: Hold time limit doesn't start until item activated" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + holder_can_drop(choices) : "Holder: Allowed to drop" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + holder_keep_on_death(choices) : "Holder: Keep item on death" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + holder_keep_on_respawn(choices) : "Holder: Keep item on respawn" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + target_on_collect(string) : "Target: On collect (self)" : "" + target_on_collect_team(string) : "Target: On collect (team)" : "" + target_on_collect_other(string) : "Target: On collect (others)" : "" + target_cant_collect(string) : "Target: On can't collect (self)" : "" + target_cant_collect_team(string) : "Target: On can't collect (team)" : "" + target_cant_collect_other(string) : "Target: On can't collect (others)" : "" + target_on_drop(string) : "Target: On drop (self)" : "" + target_on_drop_team(string) : "Target: On drop (team)" : "" + target_on_drop_other(string) : "Target: On drop (others)" : "" + target_cant_drop(string) : "Target: On can't drop (self)" : "" + target_cant_drop_team(string) : "Target: On can't drop (team)" : "" + target_cant_drop_other(string) : "Target: On can't drop (others)" : "" + target_on_activate(string) : "Target: On self-activate (self)" : "" + target_on_activate_team(string) : "Target: On self-activate (team)" : "" + target_on_activate_other(string) : "Target: On self-activate (others)" : "" + target_cant_activate(string) : "Target: On can't self-activate (self)" : "" + target_cant_activate_team(string) : "Target: On can't self-activate (team)" : "" + target_cant_activate_other(string) : "Target: On can't self-activate (others)" : "" + target_on_use(string) : "Target: On use by trigger (self)" : "" + target_on_use_team(string) : "Target: On use by trigger (team)" : "" + target_on_use_other(string) : "Target: On use by trigger (others)" : "" + target_on_wearing_out(string) : "Target: On wearing out (self)" : "" + target_on_wearing_out_team(string) : "Target: On wearing out (team)" : "" + target_on_wearing_out_other(string) : "Target: On wearing out (others)" : "" + target_on_return(string) : "Target: On return (self)" : "" + target_on_return_team(string) : "Target: On return (team)" : "" + target_on_return_other(string) : "Target: On return (other)" : "" + target_on_materialise(string) : "Target: On materialise after return" : "" + target_on_destroy(string) : "Target: On destroy" : "" + + effects_wait_until_activated(choices) : "Effects: Wait until item is self-activated?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effects_permanent(choices) : "Effects: Permanent? (Until respawn)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effect_glow(color255) : "Effects: Glow shell color (R G B)" : "0 0 0" + effect_block_weapons(choices) : "Effects: Block weapons" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effect_invulnerable(choices) : "Effects: Invulnerable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effect_invisible(choices) : "Effects: Invisible" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effect_nonsolid(choices) : "Effects: Non-solid" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + effect_respiration(string) : "Effects: Time before drown (seconds)" : "0.0" + effect_friction(string) : "Effects: Friction modifier (%)" : "100.0" + effect_gravity(string) : "Effects: Gravity modifier (%)" : "100.0" + effect_speed(string) : "Effects: Speed modifier (%)" : "100.0" + effect_damage(string) : "Effects: Damage modifier (%)" : "100.0" +] + +@PointClass size(-14 -14 0, 14 14 36) base(Targetx, Item) studio("models/w_longjump.mdl") = item_longjump : "Longjump module" [] + +@PointClass size(-8 -8 0, 8 8 48) base(Item) studio("models/DY/hev.mdl") = item_recharge : "HEV charger (wall)" +[ + capacity(integer) : "Charger Capacity" : 0 + model_juice(string) : "Model for Capacity Indicator" : "" +] + +@PointClass size(-12 -12 0, 12 12 1) base(Targetx, Item) studio("models/w_security.mdl") = item_security : "Security card" [] + +@PointClass size(-15 -15 0, 15 15 64) base(Targetx, Item) studio("models/w_suit.mdl") = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +@PointClass iconsprite("sprites/vhe-iconsprites/light.spr") base(Target, Targetname, Light, ZHLTpoint) = light : "Invisible lightsource" +[ + spawnflags(Flags) = + [ + 1 : "Initially dark" : 0 + 2 : "Remove Entity" : 0 + ] +] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 255 0) = light_bounce : "Bounce light control" +[ + target(target_destination) : "Target solid entity" + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, no black" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@PointClass base(Targetname, Angles, ZHLTpoint) iconsprite("sprites/vhe-iconsprites/light_environment.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" + _diffuse_light(color255) : "Ambient Color" : "" + _spread(string) : "Sun Spread" : "" +] + +@PointClass color(255 255 0) = light_shadow : "Dynamic shadow control" +[ + target(target_destination) : "Target solid entity" + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, no black" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@PointClass iconsprite("sprites/vhe-iconsprites/light_spot.spr") base(Targetname, Target, Angles, ZHLTpoint) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass size(-4 -4 -4, 4 4 4) color(255 255 0) = light_surface : "Advanced texture light" +[ + _tex(string) : "Texture name" : "" + _frange(string) : "Filter max distance" : "" + _fdist(string) : "Filter max dist to plane" : "" + _fclass(string) : "Filter entity classname" : "" + _fname(string) : "Filter entity name" : "" + _light(color255) : "Texture brightness" : "255 255 255 80" + _texcolor(color255) : "Color(replace texture color)" : "" + _cone(string) : "Inner(bright) angle(90default)" : "" + _cone2(string) : "Outer(fading) angle(90default)" : "" + _scale(string) : "Adjust emit scale(1.0default)" : "" + _chop(string) : "Grid size of sampling" : "" + _texlightgap(choices) : "Dark gap in front of texlight" : "" = + [ + "": "Default (no gap)" + "0.0": "0.0 - no gap" + "3.0": "3.0 - small gap" + "12.0": "12.0 - large gap" + ] + _fast(choices) : "Fast" : "" = + [ + "": "Auto" + 1: "Yes" + 2: "No" + ] + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + targetname(target_source) : "Name" : "" + style(choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, no black" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" : "" + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + noise(sound) : "Sound Override" + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + use_type(choices) : "Use Type" : 2 = + [ + 0: "Off" + 1: "On" + 2: "Set" + 3: "Toggle" + ] +] + +@PointClass base(Monster) size(-40 -40 0, 40 40 64) studio("models/baby_voltigore.mdl") = monster_alien_babyvoltigore : "Baby Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] + +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + weapons(Choices) : "Weapons" : 0 = + [ + 1 : "Hivehand Only" + 3 : "Hivehand + Snarks" + 8 : "Melee-Only" + 10 : "Melee-Only + Snarks" + ] + + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] + +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/Tor.mdl") = monster_alien_tor : "Alien Tor" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster) size(-80 -80 0, 80 80 90) studio("models/voltigore.mdl") = monster_alien_voltigore : "Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/massn.mdl") = monster_assassin_repel : "Male Assassin (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Sniper Rifle" + 10 : "Sniper Rifle + HG" + 32 : "No Weapons" + 256 : "Sniper - No drop" + ] + sequence(Choices) : "Animation Sequence (editor)" : 47 = + [ + 47 : "repel_repel" + ] + +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] + +@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/babygarg.mdl") = monster_babygarg : "Baby Gargantua" [] + + + +@PointClass base(Monster) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" +[ + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "idle1" + 19 : "locked_door" + 21 : "barn_Wave" + 22 : "beat_grunt" + 23 : "beat_gruntidle" + 24 : "flashlight" + 38 : "stuffed_in_vent" + 40 : "cprbarney" + 41 : "cprbarneyrevive" + 42 : "barney_dragvent" + 43 : "dying_barney" + 44 : "dying_barneyidle" + 45 : "dying_friend" + 46 : "dying_friendidle" + 47 : "c1a3_bidle" + 48 : "c1a3_ventb" + 49 : "c1a3_emergeidle" + 50 : "c1a3_emerge" + 51 : "haulbarney" + 52 : "intropush" + 53 : "fence" + 54 : "sit1" + 55 : "almostidle" + 56 : "almost" + 57 : "laseridle" + 58 : "laser_top" + 59 : "laser_bottom" + 60 : "barneyfallidle" + 61 : "barneyfall" + 62 : "c3a2_draw" + 63 : "unlatch" + 64 : "retina" + 65 : "relaxstand" + 66 : "assassinated" + 67 : "trackswitch" + 68 : "pepsiswing" + 69 : "pepsipush" + 70 : "buttonpush" + ] +] + +@PointClass base(RenderFields, Appearflags, Angles) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] + sequence(Choices) : "Animation Sequence (editor)" : 35 = + [ + 35 : "lying_on_back" + 36 : "lying_on_side" + 37 : "lying_on_stomach" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" + + spawnflags(Flags) = + [ + 1024: "No Babycrabs" : 0 + ] +] + +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/blkop_osprey.mdl") = monster_blkop_osprey : "Black Ops Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/blkop_apache.mdl") = monster_blkop_apache : "Black Ops Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/bgman.mdl") = monster_bodyguard : "Body Guard" +[ + weapons(Choices) : "Weapons" : 0 = + [ + 0 : "Random" + 1 : "Pistol" + 2 : "Desert Eagle" + 3 : "Shotgun" + 4 : "Akimbo Uzis" + 5 : "MP5" + 6 : "Sniper Rifle" + 7 : "Minigun" + ] +] + +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullChicken" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/chubby.mdl") = monster_chumtoad : "Chumtoad" [] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/cleansuit_scientist.mdl") = monster_cleansuit_scientist : "Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 13 : "idle1" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 41 : "germandeath" + 48 : "console" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 71 : "scientist_throwna" + 72 : "scientist_thrownb" + 73 : "scientist_beatwindow" + 75 : "scientist_zombiefear" + 77 : "teleport_fidget" + 79 : "sitlookleft" + 80 : "sitlookright" + 81 : "sitscared" + 82 : "sitting2" + 83 : "sitting3" + 84 : "cprscientist" + 85 : "cprscientistrevive" + 86 : "cowering_in_corner" + 87 : "sstruggleidle" + 88 : "sstruggle" + 89 : "headcrabbed" + 90 : "c1a0_catwalkidle" + 91 : "c1a0_catwalk" + 92 : "ceiling_dangle" + 93 : "ventpull1" + 94 : "ventpull2" + 95 : "ventpullidle1" + 96 : "ventpullidle2" + 97 : "sitidle" + 98 : "sitstand" + 99 : "keypad" + 101 : "lookwindow" + 102 : "wave" + 103 : "pulldoor" + 104 : "beatdoor" + 105 : "fallingloop" + 106 : "crawlwindow" + 107 : "divewindow" + 108 : "locked_door" + 109 : "push_button2" + 110 : "unlock_door" + 112 : "handrailidle" + 113 : "handrail" + 114 : "hanging_idle" + 115 : "fall" + 116 : "scientist_get_pulled" + 117 : "hanging_idle2" + 118 : "fall_elevator" + 119 : "scientist_idlewall" + 120 : "ickyjump_sci" + 121 : "haulscientist" + 122 : "c1a4_wounded_idle" + 123 : "c1a4_dying_speech" + 124 : "tentacle_grab" + 125 : "helicack" + 126 : "windive" + 127 : "scicrashidle" + 128 : "scicrash" + 129 : "onguard" + 130 : "seeya" + 131 : "rocketcrawl" + 132 : "portal" + 133 : "gluonshow" + 135 : "kneel" + ] +] + +@PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" [ + sequence(string) : "Animation Sequence (Number)" : "0" +] + +@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] + +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + sequence(string) : "Animation Sequence (Number)" : "0" + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 8 : "Head Controller" : 0 + ] + + disableai(choices) : "Disable AI" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gonome.mdl") = monster_gonome : "Gonome" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_opfor.mdl") = monster_grunt_ally_repel : "Human Grunt Ally (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + ] + sequence(Choices) : "Animation Sequence (editor)" : 51 = + [ + 51 : "repel_repel" + ] +] + + + + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 64 : "Rocket Launcher" + 66 : "Rocket Launcher + HG" + 128 : "Sniper Rifle" + 130 : "Sniper Rifle + HG" + ] + + sequence(Choices) : "Animation Sequence (editor)" : 50 = + [ + 50 : "repel_repel" + ] +] + +@PointClass base(RenderFields, Appearflags, Angles) = monster_handgrenade : "Live Handgrenade" +[ + health(integer) : "Delay before explosion" : 0 + new_model(studio) : "Custom Model" : "" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] + +@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/player.mdl") = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] + sequence(Choices) : "Animation Sequence (editor)" : 177 = + [ + 177 : "deadback" + 178 : "deadsitting" + 179 : "deadstomach" + 180 : "deadtable" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + sequence(Choices) : "Animation Sequence (editor)" : 46 = + [ + 46 : "On stomach" + 47 : "On side" + 48 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 64 : "Rocket Launcher" + 66 : "Rocket Launcher + HG" + 128 : "Sniper Rifle" + 130 : "Sniper Rifle + HG" + ] +] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgruntf.mdl") = monster_human_grunt_ally : "Human Grunt Ally (camo)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 3 = + [ + 0 : "Default" + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + 32 : "None" + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + 6 : "Major" + 7 : "Beret (Black)" + ] +] + +@PointClass base(Targetname, Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/hgruntf.mdl") = monster_human_grunt_ally_dead : "Dead Human Grunt Ally" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + 3 : "Dead On Back" + 4 : "Dead On Stomach" + 5 : "Head Crabbed" + ] + sequence(Choices) : "Animation Sequence (editor)" : 44 = + [ + 44 : "On stomach" + 45 : "On side" + 46 : "Seated" + ] + weapons(Choices) : "Weapons" : 1 = + [ + 0 : "None" + 1 : "M16" + 8 : "Shotgun" + 16 : "Saw" + ] + head(Choices) : "Heads" : 0 = + [ + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_medicf.mdl") = monster_human_medic_ally : "Medic" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Random" + 0 : "White" + 1 : "Black" + ] + weapons(Choices) : "Weapons" : 2 = + [ + 0 : "None" + 1 : "Desert Eagle" + 2 : "9mm Handgun" + 4 : "Hypodermic Needle" + ] +] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_torchf.mdl") = monster_human_torch_ally : "Torch" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "Desert Eagle" + 2 : "Blow Torch" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hwgrunt.mdl") = monster_hwgrunt : "Heavy Weapons Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + weapons(Choices) : "Secondary Weapon" : 1 = + [ + 0 : "Random Pistol" + 1 : "Glock" + 2 : "Desert Eagle" + 3 : "357 Python" + ] + + disable_minigun_drop(Choices) : "Disable Minigun Drop" : 1 = + [ + 0 : "No (default)" + 1 : "Yes" + ] + +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hwgrunt.mdl") = monster_hwgrunt_repel : "Heavy Weapons Grunt (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + sequence(Choices) : "Animation Sequence (editor)" : 14 = + [ + 14 : "repel_repel" + ] + weapons(Choices) : "Drop Minigun" : 0 = + [ + 0 : "Yes (on death)" + 256 : "No" + ] +] + +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] + +@PointClass base(Monster) size(-24 -24 0, 24 24 112) studio("models/kingpin.mdl") = monster_kingpin : "Kingpin" [] + +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/massn.mdl") = monster_male_assassin : "Male Assassin" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + head(Choices) : "Heads" : 0 = + [ + -1 : "Random" + 0 : "Ski Mask White" + 1 : "Ski Mask Black" + 2 : "Night Goggles" + ] + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Sniper Rifle" + 10 : "Sniper Rifle + HG" + 32 : "No Weapons" + 256 : "Sniper - No drop" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_medicf.mdl") = monster_medic_ally_repel : "Human Medic Ally (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Random" + 0 : "White" + 1 : "Black" + ] + weapons(Choices) : "Weapons" : 2 = + [ + 0 : "None" + 1 : "Desert Eagle" + 2 : "9mm Handgun" + 4 : "Hypodermic Needle" + ] + sequence(Choices) : "Animation Sequence (editor)" : 41 = + [ + 41 : "repel_repel" + ] +] + +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] + maxsleep(string) : "Search Time (before deactivate)" : "15" + turnrate(integer) : "Turn Rate" : 30 + attackrange(integer) : "Max Attack Range" : 1200 +] + +@PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] + +@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] + + // If Random grunttype is set, osprey will look for NORMAL grunts. + // Mapper can override number of grunts if desired, instead. + + grunttype(Choices) : "Grunt Type" : 0 = + [ + 0 : "Human Grunts (default)" + 1 : "Opposing Force Grunts" + + // Human Grunts and Opposing Force grunts will drop + 2 : "Random" + + // HWGrunt will have a small chance of appearing if set + 3 : "Random + HWGrunt" + + // HWGrunt and Sniper will have a small chance of appearing if set + 4 : "Random + HWGrunt/Sniper" + ] + + num(integer) : "(Override) Number of Grunts" : 0 +] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/otis.mdl") = monster_otis : "Otis" +[ + bodystate(Choices) : "bodystate" : -1 = + [ + -1 : "Random" + 0 : "Gun Holstered" + 1 : "Gun Drawn" + 3 : "Donut" + ] + head(Choices) : "head" : -1 = + [ + -1 : "Random" + 0 : "Bald Head" + 1 : "Head with hair" + ] + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "idle1" + 19 : "locked_door" + 21 : "barn_Wave" + 22 : "beat_grunt" + 23 : "beat_gruntidle" + 24 : "flashlight" + 41 : "cprbarney" + 42 : "cprbarneyrevive" + 43 : "barney_dragvent" + 44 : "dying_barney" + 45 : "dying_barneyidle" + 46 : "dying_friend" + 47 : "dying_friendidle" + 48 : "c1a3_bidle" + 49 : "intropush" + 50 : "fence" + 51 : "wave" + 52 : "unlatch" + 53 : "retina" + 54 : "relaxstand" + 55 : "trackswitch" + 56 : "pepsiswing" + 57 : "pepsipush" + 58 : "buttonpush" + 59 : "cowering" + 60 : "candygrab" + ] +] + +@PointClass base(RenderFields, Appearflags, Angles) size(-16 -16 0, 16 16 72) studio("models/otis.mdl") = monster_otis_dead : "Dead Otis" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + 3 : "Stuffed in Vent" + 4 : "Dead Sitting" + ] + sequence(Choices) : "Animation Sequence (editor)" : 35 = + [ + 35 : "lying_on_back" + 36 : "lying_on_side" + 37 : "lying_on_stomach" + 38 : "stuffed_in_vent" + 39 : "dead_sitting" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Monster) size(-24 -24 0, 24 24 32) studio("models/pit_drone.mdl") = monster_pitdrone : "Pit Drone" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + initammo(string) : "Initial Ammo" : "6" +] + +@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/rgrunt.mdl") = monster_robogrunt : "Robot Grunt" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/rgrunt.mdl") = monster_robogrunt_repel : "Robot Grunt" +[ + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] + sequence(Choices) : "Animation Sequence (editor)" : 48 = + [ + 48 : "repel_repel" + ] +] + +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_satchel.mdl") = monster_satchel : "Live Satchel Charge" [] + +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 13 : "idle1" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 93 : "lookwindow" + 94 : "wave" + 95 : "pulldoor" + 96 : "beatdoor" + 97 : "fallingloop" + 98 : "crawlwindow" + 99 : "divewindow" + 100 : "locked_door" + 101 : "push_button2" + 102 : "unlock_door" + 104 : "handrailidle" + 105 : "handrail" + 106 : "hanging_idle" + 107 : "fall" + 108 : "scientist_get_pulled" + 109 : "hanging_idle2" + 110 : "fall_elevator" + 111 : "scientist_idlewall" + 112 : "ickyjump_sci" + 113 : "haulscientist" + 114 : "c1a4_wounded_idle" + 115 : "c1a4_dying_speech" + 116 : "tentacle_grab" + 117 : "helicack" + 118 : "windive" + 119 : "scicrashidle" + 120 : "scicrash" + 121 : "onguard" + 122 : "seeya" + 123 : "rocketcrawl" + 124 : "portal" + 125 : "gluonshow" + 127 : "kneel" + ] +] + +@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] + sequence(Choices) : "Animation Sequence (editor)" : 37 = + [ + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + ] + model(studio) : "Custom Model" +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] + attackrange(integer) : "Max Attack Range" : 1200 +] + + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_shock.mdl") = monster_shockroach : "Shock Roach" [] + +@PointClass base(Monster) size(-24 -24 0, 24 24 32) studio("models/strooper.mdl") = monster_shocktrooper : "Shock Trooper" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 1024: "No Shockroach" : 0 + ] +] + +@PointClass base(Monster, TalkMonster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 73 = + [ + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_sqknest.mdl") = monster_sqknest : "Snark Nest" [] + +@PointClass base(Monster) size(-24 -24 0, 24 24 24) studio("models/stukabat.mdl") = monster_stukabat : "Stukabat" [] + +@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_torchf.mdl") = monster_torch_ally_repel : "Human Torch Ally (Repel)" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "Desert Eagle" + 2 : "Blow Torch" + ] + sequence(Choices) : "Animation Sequence (editor)" : 39 = + [ + 39 : "repel_repel" + ] +] + +@PointClass base(Monster) studio("models/vhe-models/w_tripmine_hammer.mdl") = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 1 + ] +] + +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] + maxsleep(string) : "Search Time (before deactivate)" : "15" + turnrate(integer) : "Turn Rate" : 30 + attackrange(integer) : "Max Attack Range" : 1200 +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" +[ + sequence(Choices) : "Animation Sequence (editor)" : 0 = + [ + 0 : "idle1" + 19 : "getup" + 20 : "pause" + 21 : "busting_through_wall" + 22 : "kick_punch_wall" + 23 : "bust_window" + 24 : "soda" + 25 : "slideidle" + 26 : "slidewall" + 27 : "ventclimbidle" + 28 : "ventclimb" + 29 : "deadidle" + 30 : "deadwall" + 31 : "freakdie" + 32 : "freak" + 33 : "eatbodytable" + 34 : "eatbody" + 35 : "eatbodystand" + 36 : "ripdoor" + 37 : "zombie_pull_scientist" + 38 : "zombie_eating" + 39 : "eat_to_stand" + 40 : "vent_zidle" + 41 : "vent_c1a3" + 42 : "haulzombie" + 43 : "c2a3_snack_getup" + 44 : "zombie_fight" + 45 : "crush" + 48 : "crushed" + 46 : "spazhard" + 47 : "spaz" + 49 : "compthrow_idle" + 50 : "compthrow" + 51 : "iceslip" + 52 : "get_run_over" + ] +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie_barney.mdl") = monster_zombie_barney : "Barney Zombie" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie_soldier.mdl") = monster_zombie_soldier : "Soldier Zombie" [] + +@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) color(245 128 96) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + //2 : "PVS On/Off" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + 1024 : "No Respawn (Collectible)" : 0 + ] + + // How many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Monster count " : -1 + + respawn_as_playerally(choices) : "Make Player Allys" : 0 = + [ + 0 : "Default (0)" + 1 : "Opposite (1)" + ] + + // If delay is -1, new monster will be made when last monster dies, + // else, delay is the delay in seconds between spawns. + delay(string) : "Frequency" : "5" + + // Maximum number of live children allowed at one time. (New ones will not be made until one dies) -1 means no limit. + m_imaxlivechildren(integer) : "Max live children" : 5 + + health(integer) : "Custom Health" : 0 + path_name(string) : "Path Name" //The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to. + +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(168 255 168) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, AttackObject) studio("models/mortar.mdl") = op4mortar : "Op4 Mortar" +[ + spawnflags(Flags) = + [ + 1 : "Active" : 0 + 16 : "Line of Sight" : 1 + 32 : "Can Control" : 1 + ] + + mortar_velocity(integer) : "Velocity" : 800 + h_min(integer) : "Horiz MIN" : -90 + h_max(integer) : "Horiz MAX" : 90 + mindist(integer) : "Min Target Dist" : 256 + maxdist(integer) : "Max Target Dist" : 2048 + firedelay(integer) : "Delay between shots (seconds)" : 5 + + is_player_ally(Choices) : "Is Player Ally" : 0 = + [ + 0 : "No (Default)" + 1 : "Yes" + ] +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport to this" : 0 + 4: "Fire once" : 0 + 8: "Random targets" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Arrive" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + + + +//Processes and selects a path_condition for the NPC. Allows for multiple path_conditions to be used for a single NPC. +@PointClass base(Targetname) color(145 255 145) = path_condition_controller : "NPC Path Condition Controller" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 // If checked, this controller starts in-active and can not be used until triggered. + ] + + pathcondition_list(string) : "Path_condition List" //Comma separated list of path_condition names (Required). + + selecttype(Choices) : "Selection Mode" : 0 = + [ + 0 : "First Found (Default)" // The first path_condition found (highest priority and active) will be picked. + 1 : "Random" // Any path_condition entities that [share the same priority level] and are [active] will be evaluated together and randomly chosen. + 2 : "Nearest to NPC" // The nearest path_condition found (to the NPC) will be picked. Distance based on path_waypoint to the NPC. + ] +] + + +//Processes and selects a path_waypoint for the NPC or path_condition_controller. +@PointClass base(Targetname) color(225 148 32) = path_condition : "NPC Path Condition" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 // If checked, this path_condition starts in-active and can not be used until triggered with USE_ON or USE_TOGGLE. + ] + + delay_interval(string) : "Delay Interval" : "0.1" //Default time between checks. Minimum is 0.1. + + conditions_reference(string) : "Conditions (Definition Name)" + + mindistance(integer) : "Min Distance" : 0 // 0 = infinite. If not within specified range, path_condition isn't evaluated. + maxdistance(integer) : "Max Distance" : 0 // 0 = infinite. If not within specified range, path_condition isn't evaluated. + + starttrigger(string) : "Trigger on Stop Condition" //Thing to trigger upon start + + priority(integer) : "Priority Level" : 0 // 0 would be the default priority, followed by 1, 2, 3, etc. Higher numbers take precedence over lower numbers. + selecttype(Choices) : "Priority Override" : 0 = + [ + 0 : "None (Default)" + 1 : "Ignore Following" + 2 : "Ignore Following and Guarding" + 3 : "Ignore Following, Guarding, and Scripts" + ] + + pre_location(Choices) : "Pre-Waypoint Destination" : 0 = + [ + 0 : "None (Default)" // Don't use a pre-waypoint destination, go to the first path_waypoint. + 1 : "Use This Origin" // Use path_condition's origin. + 2 : "Enemy" + 3 : "Dead Enemy" + 4 : "Sound" + 5 : "Scent" + 6 : "Near Hiding Spot" //Compute a nearby hiding spot, run to it. + 7 : "Far Hiding Spot" //Compute a distant hiding spot, run to it. + 8 : "Named Entity" // Origin of a specific entity + 9 : "Entity by Key:Value" + ] + + pre_location_values(string) : "Pre-Waypoint Parameters" + // 1 : "Use This Origin" No options. + // 2 : "Enemy" No options. + // 3 : "Dead Enemy" No options. + // 4 : "Sound" Type sound-filter. E.g. (SOUND_DANGER) + // 5 : "Scent" Type scent-filter. E.g. (SCENT_FOOD OR SCENT_CARCASS) + // 6 : "Near Hiding Spot" Type minimum distance. + // 7 : "Far Hiding Spot" Type maximum distance. + // 8 : "Named Entity" Type entity name. + // 9 : "Entity by Key:Value" Type in format: "keyname:keyvalue", optional: Use ( parentheses ), ==, >, >=, <, <=, AND, OR operators. + + //When this path_condition is picked, a waypoint must be picked to start the NPC off on. Select how the waypoint is picked. + selecttype(Choices) : "Waypoint Selection" : 0 = + [ + 0 : "Start Waypoint" // NOTE: The nearest waypoint will be selected if a starting waypoint is not specified when this option is selected. + 1 : "Nearest Waypoint to NPC" //The nearest group found (to the NPC) will be picked. + 2 : "Random Waypoint" + ] + + path_start(string) : "Start Waypoint" //Leave blank for none. + waypoint_list(string) : "Path_Waypoint List" //Required if not using Starting Waypoint for selection. + key_filter(string) : "NPC Keyvalue Filter" //Type in format: "$keyname > 1 AND $keyname == 1", optional: Use ( parentheses ), ==, >, >=, <, <=, AND, OR operators. + npc_trigger_target(string) : "NPC Trigger Target" //NPC will trigger this entity when on this path + npc_trigger_interval(integer) : "NPC Trigger Interval" //NPC will trigger every N seconds + m_szASConditionsName(string) : "Angelscript condition name" //Name of the Angelscript condition that was registered by a map script +] + + + + +@PointClass base(Targetname) color(125 255 255) = path_waypoint : "NPC Path Waypoint" +[ + target(target_destination) : "Next Path_waypoint" + alternate_target(target_destination) : "Alternate Next Path_waypoint" //Alternate Waypoint to use if we're toggled to use our alternate. + + movementtype(Choices) : "Move to Position" : 0 = // How the monster will move to this waypoint. + [ + 0 : "Walk" + 1 : "Run" + 2 : "Teleport" + 3 : "Turn to Face" + 4 : "Don't Move" + ] + + radius(integer) : "Move within Radius" : 0 // When in radius, the NPC has finished moving to the waypoint. Only works for Walk / Run. + + useangles(choices) : "Face Waypoint Direction" : 0 = //Yes = Upon arrival, the NPC's YAW will change gradually to match the path_waypoint's YAW + [ + 0 : "No (default)" + 1 : "Yes" + ] + + trigger_on_arrival(target_destination) : "Trigger on Arrival" // Target to fire before starting the arrival animation. + arrival_animation(string) : "Arrival Animation" // Animation to play on arrival. + trigger_after_arrival(target_destination) : "Trigger after Arrival Animation" // Target to fire upon completing the arrival animation. If no arrival animation, fired after Trigger on Reach is fired. + + wait_activity(Choices) : "Wait Activity" : 0 = + [ + 0 : "Play Wait Animation (default)" + 1 : "Look around" + 2 : "Investigate Area" + 3 : "Use AI" //Let the NPC's AI take over while waiting. + ] + + wait_animation(string) : "Wait Animation" // Animation to play when waiting at this waypoint. (Looped) If animation is blank, the monster will stand in place. If wait time is zero, this is not used. + wait_time(integer) : "Wait Time" : 0 // After the position is reached, the monster must wait this long before moving to the next waypoint, and before any targets are fired. + wait_master(string) : "Wait Master" // Master entity to analyze - the multisource which, when activated, lets the path_waypoint know it can let the NPC continue. + + waituntilfull(choices) : "Wait Here Until Full" : 0 = // Force NPC to wait until this waypoint is full before proceeding to the next waypoint. If Maximum Occupants is 0, a level error message will occur. + [ + 0 : "No (default)" + 1 : "Yes" + ] + + departure_animation(string) : "Departure Animation" // Animation to play before leaving waypoint. Target On Pass is fired after animation completes if animation is present. + trigger_on_departure(target_destination) : "Trigger on Departure" // Target to fire when the NPC finishes the Departure Animation. If no Departure Animation, fired immediately after waiting. + + //-------------------------------------------------------------------------------------------------- + // START OVERFLOW + //-------------------------------------------------------------------------------------------------- + occupant_radius_check(integer) : "Occupant Radius" : 0 // If an NPC is within the radius of this path_waypoint, it takes up an occupant slot. + occupant_limit(integer) : "Maximum # Occupants" : 0 // This point only accepts X number of NPCs at a time. + // If this waypoint is full, monsters will go to the following waypoint specified instead. + // If the provided overflow point is removed or not available, the NPC will remain at the previous waypoint or position until room is available. + overflow_waypoint(string) : "Overflow Waypoint" + //-------------------------------------------------------------------------------------------------- + // END OVERFLOW + //-------------------------------------------------------------------------------------------------- + + + // Forces the NPC to finish this particular path_waypoint even if a higher priority path is found, provided that the stop conditions are not met. + // NOTE: This disables path_condition / path_condition_controller evaluation during the extent of the trip and departure. + force_complete(Choices) : "Force Waypoint Completion" : 0 = + [ + 0 : "No (default)" + 1 : "Yes" + ] + + //If this path_waypoint releases the NPC because of a stop condition, (e.g. a new enemy appears) something can be triggered. + stop_trigger(string) : "Trigger on Stop Condition" + restart_delay(integer) : "Delay before Return" : 0 //If the NPC has stopped moving because of a stop condition (E.g. hearing a gunshot), the NPC will wait this long before continuing back to this path_waypoint. +] + + + + + + + + +@PointClass base(Targetname, Angles) size(16 16 16) color(255 148 0) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + newspeed(integer) : "New Train Speed" : -1 + maxspeed(integer) : "New Maximum Speed" : -1 + speed(integer) : "New Train Speed (Legacy)" : 0 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(96 32 128) = player_weaponstrip : "Strips player's weapons" +[ + spawnflags(Flags) = + [ + 1 : "Strip suit, too" : 0 + ] + m_iAffected(choices) : "Players to strip" : 0 = + [ + 0 : "Activator only (default)" + 1 : "All players" + 2 : "All players except activator" + ] +] + +@SolidClass base(Targetname, ZHLTbmodel) = player_respawn_zone : "Player Zone Respawn brush" +[ + zonetype(choices) : "Zone Type" : 0 = + [ + 0: "Respawn all outside" + 1: "Respawn all inside" + ] +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 200) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(164 128 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + moveto_radius(integer) : "Move to Radius" : 0 + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + 256: "No Reset Entity" : 0 + ] +] + +@PointClass iconsprite("sprites/vhe-iconsprites/speaker.spr") base(Targetname) color(225 200 210) = speaker : "Announcement Speaker" +[ + preset(choices) : "Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + //8: "C2A3 Announcer" + 9: "C2A4 Announcer" + //10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname, Angles, RenderFields, AttackObject, NotRevivable) size(-16 -16 0, 16 16 72) color(245 128 96) = squadmaker : "Squad Maker" +[ + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + //2 : "PVS On/Off" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + 16 : "Prisoner" : 0 + 32 : "Auto Size BBox" : 0 + 64 : "Cyclic Backlog" : 0 + 128 : "WaitForScript" : 0 + 1024 : "No Respawn (Collectible)" : 0 + ] + + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + + // How many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Monster count " : -1 + + // If delay is -1, new monster will be made when last monster dies. + // Else, delay is how often (seconds) a new monster will be spawned. + delay(string) : "Delay between spawns" : "5" + + // Maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 + + spawn_mode(Choices) : "Blocked Spawn Handling" : 0 = + [ + 0 : "Legacy, no special handling" + 1 : "Block, spawn as soon as clear" + 2 : "Force spawn, never block" + ] + + dmg(integer) : "Amount of Telefrag Damage" : 0 + + trigger_target(String) : "TriggerTarget" + trigger_condition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + new_body(integer) : "Body (-1 off)" : -1 + + respawn_as_playerally(choices) : "Is Player Ally" : 0 = + [ + 0 : "Default (0)" + 1 : "Opposite (1)" + ] + + change_rendermode(Choices) : "Override Render Mode" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + xenmaker(String) : "Xenmaker Template Name" + + notsolid(Choices) : "Not Solid" : -1 = + [ + -1 : "Default" + 0 : "No" + 1 : "Yes" + ] + + gag(Choices) : "Gag" : -1 = + [ + -1 : "Default" + 0 : "No" + 1 : "Yes" + ] + + weapons(Choices) : "Weapons (Grunt/Massn/etc)" : 0 = + [ + 0 : "Default / No setting" + 1 : "MP5" + 3 : "MP5 + HG" + 5 : "M16 + GL" + 8 : "Shotgun / Sniper Rifle" + 10 : "Shotgun / Sniper Rifle + HG" + 16 : "SAW (human_grunt_ally only!)" + 32 : "No Weapons (male_assassin only!)" + 64 : "Rocket Launcher" + 66 : "Rocket Launcher + HG" + 128 : "Sniper Rifle (human_grunt only!)" + 130 : "Sniper Rifle + HG (human_grunt only!)" + 256 : "Don't drop weapon (HWG etc)" + ] + + squadname(String) : "Squad Name" : "" + is_squad_leader(Choices) : "Squad Leader" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + displayname(string) : "In-game Name" : "" + bloodcolor(choices) : "Blood Color" : 0 = + [ + 0 : "Monster Default" + -1 : "No Blood" + 1 : "Red" + 2 : "Yellow" + ] + health(integer) : "Custom Health" : 0 + new_model(studio) : "Custom Model" : "" + minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0" + maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0" + + soundlist(string) : "Sound Replacement File" + freeroam(Choices) : "Monster Roaming (nodes)" : 0 = + [ + 0 : "Map Default" + 1 : "Never" + 2 : "Always" + ] + + path_name(string) : "Path Name" // The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to. + + // This will make the monster follow/protect whoever is specified + guard_ent(string): "Entity to Guard" : "" + + wpn_v_model(String) : "V_model (Weapons Only)" : "" + wpn_w_model(String) : "W_model (Weapons Only)" : "" + wpn_p_model(String) : "P_model (Weapons Only)" : "" + + function_name(string) : "Angelscript function name" //Angelscript function to call on creation of a monster. Format: void FunctionName(MonsterEntity@ pSquadmaker, Entity@ pMonster) +] + +@PointClass base(Targetname) color(255 240 128) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +// radius(string) : "Player Radius" +] + +@PointClass base(Targetx) color(250 10 165) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname, ZHLTbmodel) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname, Angles) studio("models/vhe-models/trigger_camera.mdl") color(200 255 255) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + 8: "All Players" : 0 + 16: "Force View" : 0 + 32: "No Instant Turn" : 0 + 64: "Instant Move" : 0 + 128: "Mouse Cursor" : 0 + 256: "Player Invulnerable" : 0 + 512: "Ignore Hold Time" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + turnspeed(string) : "Camera Rotation Speed" : "40" + + mouse_action_0_0(choices) : "Left Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_0_0(string) : "Left Click Param" + mouse_block_drag_0_0(choices) : "Left Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_action_1_0(choices) : "Right Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_1_0(string) : "Right Click Param" + mouse_block_drag_1_0(choices) : "Right Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_action_2_0(choices) : "Third Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_2_0(string) : "Third Click Param" + mouse_block_drag_2_0(choices) : "Third Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_action_0_1(choices) : "Left Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_0_1(string) : "Left Double Click Param" + mouse_block_drag_0_1(choices) : "Left Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_action_1_1(choices) : "Right Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_1_1(string) : "Right Double Click Param" + mouse_block_drag_1_1(choices) : "Right Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_action_2_1(choices) : "Third Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + 7 : "Spawn" + 8 : "Teleport" + 9 : "Teleport Away" + 10 : "Create Explosion" + 11 : "Drag" + 255 : "Exit Camera (Non-forced only)" + ] + mouse_param_2_1(string) : "Third Double Click Param" + mouse_block_drag_2_1(choices) : "Third Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + mouse_digital_action_reset(string) : "Mouse Digital Action Reset Time" : "0" + + // Signature for AS callback method is: bool YourMouseEventCallbackName(CBaseEntity@ pCamera, CBaseEntity@ pPlayer, CBaseEntity@ pEntity, int mouseEvent, int mouseEventParam, float screenX, float screenY, Vector mousePosition, Vector clickDirection, Vector clickPlaneNormal, float scale) + // pCamera - the camera entity calling this method + // pPlayer - the player who created the mouse event + // pEntity - the entity "hit" by the cursor (if any) + // mouseEvent - one of: + // MOUSE_RELEASED = 0; + // MOUSE_PRESSED = 1; + // MOUSE_DOUBLE_PRESSED = 2; + // MOUSE_DRAGGED = 3; + // MOUSE_POS_CHANGED = 4; + // MOUSE_WHEEL_SCROLLED = 5; + // mouseEventParam - depends on the event: + // if event is MOUSE_WHEEL_SCROLLED, mouseEventParam is the scrollDelta (usually: 1, 2, 3 or -1, -2, -3) + // if event is any other, mouseEventParam is one of: + // MOUSE_BUTTON_LEFT = 0; + // MOUSE_BUTTON_RIGHT = 1; + // MOUSE_BUTTON_MIDDLE = 2; + // screenX - x coordinate of the mouse cursor on screen (from -1 to 1) + // screenY - y coordinate of the mouse cursor on screen (from -1 to 1) + // mousePosition - the position of the mouse cursor in world coordinates + // clickDirection - the direction from the camera origin to the cursor "hit" point, basically: (camera->origin - mousePosition).Normalize() + // clickPlaneNormal - the normal vector of the surface that was hit by the mouse cursor + // scale - if clicked through a portal with scale, this is the final scale (useful for scaling explosions or other visual/physical effects caused by the mouse event), usually this will be 1.0 + m_iszASMouseEventCallbackName(string) : "AS Mouse Event Callback Name" + + // Signature for AS callback method is: void YourKeyInputCallbackName(CBaseEntity@ pCamera, CBasePlayer@ pPlayer, bool down, KeyCode keycode) + // pCamera - the camera entity calling this method + // pPlayer - the player who created the key input + // down - true if key is pressed, false if key is released + // keycode - identifier of a keyboard key (see https://github.com/ValveSoftware/halflife/blob/master/utils/vgui/include/VGUI_KeyCode.h) + m_iszASKeyInputCallbackName(string) : "AS Key Input Callback Name" + + // Sets a player's target name when they use the camera, unsets it, when they stop using it + m_iszOverridePlayerTargetname(string) : "Set Player Targetname" + + // Targets to trigger when a player starts or stops using a camera + m_iszTargetWhenPlayerStartsUsing(string) : "Target when player starts using" + m_iszTargetWhenPlayerStopsUsing(string) : "Target when player stops using" + + // Target to fire when the camera is turned off (either through trigger or because time ran out) + m_iszTurnedOffTarget(string) : "Target when turned off" + + max_player_count(integer) : "Max Players" : 1 + max_player_target(string) : "Target: Player tried to use, but Max Players reached" + + hud_health(choices) : "HUD: Health and Battery" : 0 = + [ + 0 : "Show Health and Battery" + 1 : "Hide Health and Battery" + ] + hud_flashlight(choices) : "HUD: Flashlight" : 0 = + [ + 0 : "Show Flashlight" + 1 : "Hide Flashlight" + ] + hud_weapons(choices) : "HUD: Weapons" : 0 = + [ + 0 : "Show Weapons" + 1 : "Hide Weapons" + ] + cursor_sprite(sprite) : "Custom Cursor (Sprite)" +] + +@SolidClass base(Targetname, ZHLTbmodel) = trigger_cameratarget : "Camera Target" +[ + spawnflags(flags) = + [ + 1: "Invisible" : 0 + 2: "Start Off" : 0 + ] + + mouse_action_0_0(choices) : "Left Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_0_0(string) : "Left Click Param" + mouse_block_drag_0_0(choices) : "Left Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_0_0(string) : "Left Click Target" + + mouse_action_1_0(choices) : "Right Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_1_0(string) : "Right Click Param" + mouse_block_drag_1_0(choices) : "Right Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_1_0(string) : "Right Click Target" + + mouse_action_2_0(choices) : "Third Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_2_0(string) : "Third Click Param" + mouse_block_drag_2_0(choices) : "Third Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_2_0(string) : "Third Click Target" + + mouse_action_0_1(choices) : "Left Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_0_1(string) : "Left Double Click Param" + mouse_block_drag_0_1(choices) : "Left Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_0_1(string) : "Left Double Click Target" + + mouse_action_1_1(choices) : "Right Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_1_1(string) : "Right Double Click Param" + mouse_block_drag_1_1(choices) : "Right Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_1_1(string) : "Right Double Click Target" + + mouse_action_2_1(choices) : "Third Double Click Action" : 0 = + [ + 0 : "No Action" + 1 : "Trigger Off" + 2 : "Trigger On" + 3 : "Trigger Toggle" + 4 : "Remove" + 5 : "Hurt" + 6 : "Heal" + ] + mouse_param_2_1(string) : "Third Double Click Param" + mouse_block_drag_2_1(choices) : "Third Double Click Block Drag Repeating Action" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + mouse_target_2_1(string) : "Third Double Click Target" + + mouse_digital_action_reset(string) : "Mouse Digital Action Reset Time" : "0" +] + +@SolidClass base(Targetname, ZHLTbmodel) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@PointClass base(Targetname, Target, AttackObject) color(128 96 2) = trigger_change_class : "Trigger Change Class" [] + +@SolidClass base(Targetname, InventoryRules, ZHLTbmodel) = trigger_changelevel : "Trigger Change level" +[ + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + 4: "No CVAR override" : 0 + ] + map(string) : "New map name" + landmark(string) : "Landmark name" + keep_inventory(choices) : "Players take inventory to new map" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + + percent_of_players(string) : "Percentage of players needed" : "0" +] + +@PointClass base(Targetname) color(100 100 200) = trigger_changemaxammo : "Trigger Change Max Ammo" +[ + target(target_destination) : "Trigger after fire" + spawnflags(flags) = + [ + 1 : "All players" : 0 + 2 : "Remove excess ammo" : 0 + 4 : "Set ammo to new max" : 0 + ] + + message(choices) : "Ammo name" : "9mm" = + [ + "9mm" : "9mm Rounds" + "bolts" : "Crossbow Bolts" + "357" : ".357 Rounds" + "uranium" : "Uranium Ammo" + "Hand Grenade" : "Hand Grenades" + "Hornets" : "Hornets" + "556" : "5.56 Rounds" + "ARgrenades" : "AR Grenades" + "health" : "Health (Medkit Ammo)" + "rockets" : "Rockets" + "Satchel Charge" : "Satchel Charges" + "shock charges" : "Shock Rifle Ammo" + "buckshot" : "Shotgun Ammo" + "m40a1" : "Sniper Rifle Ammo" + "sporeclip" : "Spore Launcher Ammo" + "Snarks" : "Snarks" + "Trip Mine" : "Trip Mines" + ] + + m_iMaxAmmo(integer) : "Value to use" : 100 + m_Mode(choices) : "Change Max Ammo Mode" : 0 = + [ + 0 : "Set" + 1 : "Reset" + 2 : "Add" + 3 : "Subtract" + ] +] + +@PointClass base(Targetname, Target) color(140 0 130) = trigger_changemodel : "Trigger Change Model" +[ + model(studio) : "New Model Name" : "" + skin(integer) : "Skin" : 0 +] + +@PointClass base(Targetname, Targetx) color(60 155 30) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@PointClass base(Targetname) color(160 192 255) = trigger_changesky : "Trigger Change Sky" +[ + skyname(string) : "Sky Name" + color(color255) : "Color" + spawnflags(flags) = + [ + 1 : "All players" : 0 + 2 : "No clients" : 0 + 4 : "Update server" : 0 + ] +] + +// Change any entity keyvalue during runtime, allows set, basic arithmetic operations and bitwise logical operations (useful for flags) +@PointClass base(Targetname) color(90 215 60) = trigger_changevalue : "Trigger Change Value" +[ + spawnflags(Flags) = + [ + + // For Vectors: + 1 : "Don't use X" : 0 + 2 : "Don't use Y" : 0 + 4 : "Don't use Z" : 0 + + 32 : "Invert target value" : 0 + 64 : "Invert source value" : 0 + + ] + target(target_destination) : "Destination entity" + m_iszValueName(string) : "Destination key" + m_iszNewValue(string) : "Source value" + m_iszValueType(choices) : "Action" : 0 = + [ + 0 : "Replace (= source)" + 1 : "Add (= old + source)" + 2 : "Mul (= old * source)" + 3 : "Sub (= old - source)" + 4 : "Div (= old / source)" + 16 : "Pow (= old ^ source)" + 12 : "Mod (= old % source)" + 5 : "AND (= old & source)" + 6 : "OR (= old | source)" + 13 : "XOR (= old ^ source)" + 7 : "NAND (= !(old & source))" + 8 : "NOR (= !(old | source))" + 14 : "NXOR (= !(old ^ source))" + 11 : "Append (String concatenation)" + 17 : "Sin (= sin(source))" + 18 : "Cos (= cos(source))" + 19 : "Tan (= tan(source))" + 23 : "Cot (= cot(source))" + 20 : "Arcsin (= arcsin(source))" + 21 : "Arccos (= arccos(source))" + 22 : "Arctan (= arctan(source))" + 24 : "Arccot (= arccot(source))" + ] + m_trigonometricBehaviour(choices) : "Trigonometric funcs. I/O" : 0 = + [ + 0 : "Degrees in (out for arc.)" + 1 : "Radian measure in (out for arc.)" + ] + m_iAppendSpaces(integer) : "Append spaces (for strings)" : 0 + message(target_destination) : "Trigger after action" +] + +// Copy value of one entity to another value of another entity +@PointClass base(Targetname) color(60 90 215) = trigger_copyvalue : "Trigger Copy Value" +[ + spawnflags(Flags) = + [ + // For vectors + 1 : "Don't use X" : 0 + 2 : "Don't use Y" : 0 + 4 : "Don't use Z" : 0 + + 8 : "Constant" : 0 + + // Only when "Constant" is on + 16 : "Start On" : 0 + + 32 : "Invert target value" : 0 + 64 : "Invert source value" : 0 + 128 : "Multiple destinations" : 0 + ] + netname(target_destination) : "Source entity" + m_iszSrcValueName(string) : "Source key" + target(target_destination) : "Destination entity" + m_iszDstValueName(string) : "Destination key" + m_iszValueType(choices) : "Action" : 0 = + [ + 0 : "Replace (= source)" + 1 : "Add (= old + source)" + 2 : "Mul (= old * source)" + 3 : "Sub (= old - source)" + 4 : "Div (= old / source)" + 16 : "Pow (= old ^ source)" + 12 : "Mod (= old % source)" + 5 : "AND (= old & source)" + 6 : "OR (= old | source)" + 13 : "XOR (= old ^ source)" + 7 : "NAND (= !(old & source))" + 8 : "NOR (= !(old | source))" + 14 : "NXOR (= !(old ^ source))" + 9 : "Direction to Angles" + 10 : "Angles to Direction" + 11 : "Append (String concatenation)" + 17 : "Sin (= sin(source))" + 18 : "Cos (= cos(source))" + 19 : "Tan (= tan(source))" + 23 : "Cot (= cot(source))" + 20 : "Arcsin (= arcsin(source))" + 21 : "Arccos (= arccos(source))" + 22 : "Arctan (= arctan(source))" + 24 : "Arccot (= arccot(source))" + ] + m_iFloatConversion(choices) : "Float-to-string/-int conversion" : 0 = + [ + 0 : "6 decimal places (Default)" + 1 : "5 d. p., rounded to 5 d. p." + 4 : "4 d. p., rounded to 4 d. p." + 7 : "3 d. p., rounded to 3 d. p." + 10 : "2 d. p., rounded to 2 d. p." + 13 : "1 d. p., rounded to 1 d. p." + 16 : "Integer, rounded" + 17 : "Integer, rounded up" + 18 : "Integer, rounded down" + ] + m_trigonometricBehaviour(choices) : "Trigonometric funcs. I/O" : 0 = + [ + 0 : "Degrees in (out for arc.)" + 1 : "Radian measure in (out for arc.)" + ] + m_iAppendSpaces(integer) : "Append spaces (for strings)" : 0 + message(target_destination) : "Trigger after action" + dmg(string) : "Copy-interval (seconds)" : "0.0" +] + +// Checks values of entities and triggers if true or false +@PointClass base(Targetname) color(120 180 10) = trigger_condition : "Trigger Condition" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + + // For vectors + 2 : "Don't use X (R)" : 0 + 4 : "Don't use Y (G)" : 0 + 8 : "Don't use Z (B)" : 0 + 16 : "Don't use W (A)" : 0 + + // Check once when fired - do not toggle + 32 : "Cyclic; no toggle" : 0 + + // Forward original activator instead of overwriting it with the trigger_condition's entity id. + // Not done by default, as time that passes till condition is true and trigger_condition fires, + // activator may no longer exist and unwanted behaviour may be exhibited if it is used anyway. + // Hence, you have to explicitly set the forwarding of the activator with this flag in order to + // use it in entities targeted by trigger_condition. Caller is always forwarded. + 64 : "Keep '!activator'" : 0 + + 128 : "Ignore initial result" : 0 + ] + target(target_destination) : "Monitored entity" + m_iszValueName(string) : "Monitored key" + m_iszSourceName(target_destination) : "Compare-entity" + m_iszSourceKey(string) : "Compare-key" + m_iszCheckValue(string) : "Compare-value (alternative)" + m_iCheckType(choices) : "Comparator; mon. val. -> comp.-val." : 0 = + [ + // Ent keyvalue equals mappers value + 0 : "== (Equal)" + + // Ent keyvalue does not equal mappers value + 1 : "!= (Not equal)" + + // Ent keyvalue is smaller than mappers value + 2 : "< (Less)" + + // Ent keyvalue is greater than mappers value + 3 : "> (Greater)" + + // Ent keyvalue is less than or equal to mappers value + 4 : "<= (Less or equal)" + + // Ent keyvalue is greater than or equal to mappers value + 5 : ">= (Greater or equal)" + + // (Ent keyvalue & mappers value) does not equal 0 (Flag check) + 6 : "& (Logical AND)" + ] + + netname(string) : "Target for 'true'-case" + message(string) : "Target for 'false'-case" + + m_iCheckBehaviour(choices) : "Constant mode trigger behaviour" : 0 = + [ + 0 : "Fire true/false alternatingly" + 1 : "Only wait after false" + 2 : "Only wait after true" + 3 : "Always fire for both" + ] + + // 0.0 means to check every frame + m_fCheckInterval(string) : "Check-interval (seconds)" : "0.1" +] + +@SolidClass base(Trigger, Targetname, ZHLTbmodel) color(238 240 238) = trigger_counter : "Trigger Counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@PointClass base(Targetname, Targetx) color(255 2 0) = trigger_createentity : "Create Entity" +[ + m_iszCrtEntChildClass(string) : "Child Classname" + m_iszCrtEntChildName(string) : "Child Targetname" + //m_iszTriggerAfter(target_destination) : "Trigger after spawn" +] + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) color(100 100 128) = trigger_cyclicobserver : "Controls observer cyclic mode" +[ + m_Mode(choices) : "Mode to use" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@PointClass base(Targetname, Target) color(60 90 215) = trigger_effect : "Trigger Effect" +[ + effect_glow_mode(choices) : "Glow shell mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_glow(color255) : "Glow shell color (R G B)" : "0 0 0" + + effect_block_weapons_mode(choices) : "Block weapons" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + + effect_invulnerable_mode(choices) : "Invulnerable" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + + effect_invisible_mode(choices) : "Invisible" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + + effect_nonsolid_mode(choices) : "Non-solid" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + + effect_respiration_mode(choices) : "Time before drown mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_respiration(string) : "Time before drown (seconds)" : "0.0" + + effect_friction_mode(choices) : "Friction modifier mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_friction(string) : "Friction modifier (%)" : "0.0" + + effect_gravity_mode(choices) : "Gravity modifier mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_gravity(string) : "Gravity modifier (%)" : "0.0" + + effect_speed_mode(choices) : "Speed modifier mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_speed(string) : "Speed modifier (%)" : "0.0" + + effect_damage_mode(choices) : "Damage modifier mode" : 0 = + [ + 0 : "No change" + 1 : "Add" + 2 : "Subtract" + ] + effect_damage(string) : "Damage modifier (%)" : "0.0" +] + +@SolidClass base(Targetname, ZHLTbmodel) color(64 48 32) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@PointClass base(Targetname) size(-12 -12 -12, 12 12 12) color(255 255 0) = trigger_entity_iterator : "Entity Iterator" +[ + name_filter(target_destination) : "Filter Entities by Name" + classname_filter(string) : "Filter Entities by Classname" + status_filter(choices) : "Filter Entities by Status" : 0 = + [ + 0 : "No Filter (default)" + 1 : "Only Living Entities" + 2 : "Only Dead Entities" + ] + delay_between_triggers(string) : "Delay between Entities (secs)" : "0.0" + target(target_destination) : "Entity's Trigger Target" + triggerstate(choices) : "Entity's Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] + run_mode(choices) : "Run Mode" : 0 = + [ + 0 : "Run Once" + 1 : "Run Once; Multi-threaded" + 2 : "Toggle On/Off" + ] + trigger_after_run(target_destination) : "Trigger at end of each Run" + maximum_runs(integer) : "Maximum Runs (0 for unlimited)" : 0 + delay_between_runs(string) : "Delay before Restarting (secs)" : "0.5" +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname, Target, InventoryRules, ZHLTbmodel) = trigger_hurt : "Trigger Hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16: "FireClientOnly" : 0 + 32: "TouchClientOnly" : 0 + 64: "Affect non-moving NPC's": 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384 : "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@PointClass base(Targetname, Target) = trigger_hurt_remote : "Trigger Hurt (non-touch)" +[ + spawnflags(Flags) = + [ + 1 : "Instant Kill" : 0 + 2 : "Constant" : 0 + 4 : "Start On" : 0 + 8 : "Do Armor" : 0 + ] + targetclass(string) : "Target Class" : "" + dmg(integer) : "Damage" : 10 + armordmg(integer) : "Armor Damage" : 0 + delay(string) : "Delay (Only when Constant)" : "1" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384 : "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@PointClass base(Targetname) = trigger_load : "Custom Load Data" +[ + m_iszLevelName(string) : "Alternate Level Save File" + netname(string) : "Label to read from" + target(string) : "Destination Entity" + message(string) : "Destination Keyvalue" + m_iszTrigger(String) : "Trigger after loading" +] + +@PointClass base(Targetname, Angles) = trigger_lookat : "Forces one Ent to look at another Ent" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Set Once" : 0 + ] + target(string) : "Target" + message(string) : "Entity to look at" +] + +@SolidClass base(Angles, ZHLTbmodel) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(0 0 200) = trigger_numericdisplay : "Numeric Display" +[ + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Cyclic" : 0 + 4 : "Ignore leading zeroes" : 0 + 8 : "Zero as leading" : 0 + ] + + target(target_destination) : "Entity to track" + netname(string) : "Key to read" + message(string) : "Base digit name" //Digit names are base_digit_name%u, where %u is 1-10 + frags(string) : "Update delay" : "0.1" //Delay, in seconds, between digit updates +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + 8: "No Clients" : 0 + 16: "No Monsters" : 0 + 64: "Force push" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@BaseClass base(Targetname) = BaseRandom +[ + target_count(integer) : "Target Count" : 4 + target1(target_destination) : "Target 1" + target2(target_destination) : "Target 2" + target3(target_destination) : "Target 3" + target4(target_destination) : "Target 4" + target5(target_destination) : "Target 5" + target6(target_destination) : "Target 6" + target7(target_destination) : "Target 7" + target8(target_destination) : "Target 8" + target9(target_destination) : "Target 9" + target10(target_destination) : "Target 10" + target11(target_destination) : "Target 11" + target12(target_destination) : "Target 12" + target13(target_destination) : "Target 13" + target14(target_destination) : "Target 14" + target15(target_destination) : "Target 15" + target16(target_destination) : "Target 16" +] + +@PointClass base(BaseRandom) color(255 230 150) = trigger_random : "Trigger Random" +[ + spawnflags(Flags) = + [ + 1 : "Start On (Timed only)" : 0 + 2 : "Trigger Once (Timed only)" : 0 + 4 : "Reusable (Unique only)" : 0 + 8 : "Timed" : 0 + 16 : "Unique" : 0 + ] + + min_delay(string) : "Minimum Delay (0 = off)" : "3.0" + max_delay(string) : "Maximum Delay (0 = off)" : "7.0" +] + +//Obsolete: use trigger_random with Timed flag +@PointClass base(trigger_random) color(135 205 255) = trigger_random_time : "Trigger Random Time" +[ +] + +//Obsolete: use trigger_ranom with Random flag +// Unique Trigger Random. Randomly selects an unused trigger. +@PointClass base(BaseRandom) color(225 170 70) = trigger_random_unique : "Trigger Random Unique" +[ + spawnflags(Flags) = + [ + 1 : "Re-usable" : 0 + ] +] + +@PointClass base(Targetname, Targetx) color(165 30 165) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + + // Forward original activator instead of overwriting it with the trigger_relay's entity id. + // Not done by default, as time that passes till relay is true and trigger_relay fires, + // activator may no longer exist and unwanted behaviour may be exhibited if it is used anyway. + // Hence, you have to explicitly set the forwarding of the activator with this flag in order to + // use it in entities targeted by trigger_relay. + 64 : "Keep '!activator'" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + + m_flDelayBeforeReset(string) : "Delay Before Reset" : "0" +] + +// Giving mappers the ability to set the triggering player's targetname +@PointClass base(Targetname) color(192 255 128) = trigger_renameplayer : "Trigger Player Target" +[ + spawnflags(Flags) = + [ + // If set, trigger_playertarget won't remove itself after being used. + 1 : "Reusable" : 0 + ] + netname(String) : "New Player Targetname" +] + +// Respawn all players without affecting the current player status, like health and weapons +@PointClass base(Targetname, Target) size(-16 -16 -16, 16 16 16) color(255 64 2) = trigger_respawn : "Trigger Respawn" +[ + spawnflags(Flags) = + [ + // Respawn target entity instead of all players. + 1 : "Respawn Target" : 0 + 2 : "Respawn dead players" : 0 + 4 : "Don't move living players" : 0 + ] +] + +@PointClass base(Targetname) = trigger_save : "Custom Save Data" +[ + netname(string) : "Label to store in" + target(string) : "Source Entity" + message(string) : "Source Keyvalue" + m_iszTrigger(String) : "Trigger after saving" +] + +@PointClass base(Targetname, Targetx) = trigger_script : "Loads a script and executes a script function on trigger" +[ + m_iszScriptFile(string) : "Script to load" + m_iszScriptFunctionName(string) : "Function to execute on trigger" + m_flThinkDelta(string) : "Time between thinks" + m_iMode(choices) : "Mode" : 1 = + [ + 1 : "Trigger" + 2 : "Think" + ] + + spawnflags(flags) = + [ + 1 : "Start on" : 0 + ] +] + +@PointClass base(Targetname) color(40 200 150) = trigger_setcvar : "Sets a CVAR" +[ + //spawnflags(Flags) = + //[ + // 1 : "Set silently" : 0 // Unimplemented! + //] + m_iszCVarToChange(choices) : "CVAR (only these are allowed)" : "mp_allowmonsterinfo" = + [ + "mp_allowmonsterinfo": "mp_allowmonsterinfo" + "mp_banana": "mp_banana" + "mp_barnacle_paralyze": "mp_barnacle_paralyze" + "mp_disablegaussjump": "mp_disablegaussjump" + "mp_disable_autoclimb": "mp_disable_autoclimb" + "mp_disable_pcbalancing": "mp_disable_pcbalancing" + "mp_disable_player_rappel": "mp_disable_player_rappel" + "mp_dropweapons": "mp_dropweapons" + "mp_falldamage": "mp_falldamage" + "mp_flashlight": "mp_flashlight" + "mp_forcerespawn": "mp_forcerespawn" + "mp_fraglimit": "mp_fraglimit" + "mp_grapple_mode": "mp_grapple_mode" + "mp_monsterpoints": "mp_monsterpoints" + "mp_noblastgibs": "mp_noblastgibs" + "mp_nomedkit": "mp_nomedkit" + "mp_no_akimbo_uzis": "mp_no_akimbo_uzis" + "mp_npckill": "mp_npckill" + "mp_pcbalancing_factorlist": "mp_pcbalancing_factorlist" + "mp_respawndelay": "mp_respawndelay" + "mp_timelimit": "mp_timelimit" + "mp_weaponstay": "mp_weaponstay" + "mp_weapon_respawndelay": "mp_weapon_respawndelay" + "mp_ammo_respawndelay": "mp_ammo_respawndelay" + "mp_item_respawndelay": "mp_item_respawndelay" + "npc_dropweapons": "npc_dropweapons" + "skill": "skill" + "sk_": "sk_* (see skill.cfg)" + "sv_ai_enemy_detection_mode": "sv_ai_enemy_detection_mode" + "sv_accelerate": "sv_accelerate" + "sv_airaccelerate": "sv_airaccelerate" + "sv_friction": "sv_friction" + "sv_gravity": "sv_gravity" + "sv_maxspeed": "sv_maxspeed" + "sv_wateraccelerate": "sv_wateraccelerate" + "sv_waterfriction": "sv_waterfriction" + ] + message(string) : "New Value" + netname(target_destination) : "Trigger after set" + SetType(choices) : "Which CVARs to set" : 0 = + [ + 0 : "All" + 1 : "Engine" + 2 : "Angelscript" + ] +] + +// Set the origin of an entity dynamically +@PointClass base(Targetname, Target) color(64 255 96) size(-8 -8 -8, 8 8 8) = trigger_setorigin : "Trigger Set Origin" +[ + spawnflags(flags) = + [ + // Will constantly update position if set. + 1: "Constant" : 0 + + // Trigger_setorigin entity will be removed after firing. + 4: "Set Once" : 0 + + // Save the offset between the Target entity and the Copy pointer, apply offset when updating the Target entity's position + // Requires "Constant" flag + 8: "Lock Offsets" : 0 + + 16: "Copy X Angle" : 0 + 32: "Copy Y Angle" : 0 + 64: "Copy Z Angle" : 0 + + 128: "Copy X Axis" : 1 + 256: "Copy Y Axis" : 1 + 512: "Copy Z Axis" : 1 + + // If you're using the Constant flag, check this box to NOT move the origin of the entity or set the angles initially. + // If you're not using the Constant flag, make sure this isn't enabled or trigger_setorigin won't do anything. + // + // This allows the "Constant" + "offset difference" combination to work as intended from the entity's original location. + // + // You would leave this off if you needed to move the entity to an initial position before having it follow another entity. + // (If this isn't set, trigger_setorigin will move the entity to it's copypointer's origin before doing the offset difference calculation) + 1024: "Skip Initial Set" : 0 + ] + + //The entity we wish to copy coordinates/angles from + copypointer(string) : "Copy Pointer" + + //Manual Offset to copied coordinates + offset(string) : "Position Offset (X Y Z)" : "0 0 0" + + //Applied once on first use + //After first use - Applied if "constant" flag is checked, and for each "Copy [x, y, z] Angle" checked. + angleoffset(string) : "Angle Offset (X Y Z)" : "0 0 0" + + + invert_x(choices) : "Invert X Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + invert_y(choices) : "Invert Y Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + invert_z(choices) : "Invert Z Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger Teleport" +[ + spawnflags(flags) = + [ + 64: "Random Destination" : 0 + 128: "Relative Teleport" : 0 + 256: "Keep Angles" : 0 + 512: "Keep velocity" : 0 + 1024: "Rotate (Dest Angles)" : 0 + + // Hammer will not save a spawn flag beyond 2048... (and 2048 is engine reserved) + // 4096: "Start Inactive" : 0 + // 8192: "Ignore Delays" : 0 + // Their respective properties below will add the flag when the entity is created instead + ] + teleport_cooldown(string) : "Teleport Cooldown Delay" : "1" + teleport_ignore_delay(choices) : "Ignore Delays" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + teleport_start_inactive(choices) : "Start Inactive" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + teleport_if_blocked(choices) : "Teleport If Blocked" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname, Target) color(255 220 28) = trigger_track_goal : "Trigger Track Goal" +[ + spawnflags(Flags) = + [ + // Only functions if train is not moving. + 1 : "Stopped Only" : 0 + 2 : "Don't move if no path available" : 0 + ] + + // Where the train wants to stop at. + path_name(string) : "Path Name" + m_iszSoundNoPath(sound) : "Sound to play if no path is available" +] + +@SolidClass base(Targetname, ZHLTbmodel) = trigger_transition : "Trigger: Select Transition Area" [] + +// Gives mapper ability to start custom votes +@PointClass base(Targetname) color(32 138 255) = trigger_vote : "Trigger Vote" +[ + message(String) : "Vote Message" + frags(integer) : "Time To Vote (Seconds)" : 90 + health(integer) : "Percentage needed" : 50 + target(String) : "Yes Target" + netname(String) : "No Target" + noise(String) : "No Vote Target" + m_iszYesString(string) : "Yes string (optional)" + m_iszNoString(string) : "No string (optional)" +] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_357.mdl") = weapon_357 : "357 Handgun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_9mmAR.mdl") = weapon_9mmAR : "9mm Assault Rifle" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_9mmhandgun.mdl") = weapon_9mmhandgun : "9mm Handgun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_crossbow.mdl") = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_displacer.mdl") = weapon_displacer : "Displacer" +[ + spawnflags(flags) = + [ + 64: "Random Destination" : 0 + 128: "Rotate (Dest Angles)" : 0 + 256: "Keep Angles" : 0 + 512: "Keep velocity" : 0 + 4096 : "Ignore delay" : 0 + ] + + m_TertiaryMode(choices) : "Tertiary fire mode" : 0 = + [ + 0 : "Default (weaponmode_displacer)" + 1 : "Disable" + 2 : "Enable" + ] + + m_flPortalSpeed(string) : "Portal Speed" + m_flPortalRadius(string) : "Portal Radius" + m_iszTeleportDestination(target_destination) : "Teleport destination" + + m_flPrimaryAmmoNeeded(string) : "Ammo needed/used to fire primary" + m_flSecondaryAmmoNeeded(string) : "Ammo needed/used to fire secondary" + m_flTertiaryAmmoNeeded(string) : "Ammo needed/used to fire tertiary" +] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_desert_eagle.mdl") = weapon_eagle : "Desert Eagle" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_bgrap.mdl") = weapon_grapple : "Barnacle Grapple" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_grenade.mdl") = weapon_handgrenade : "Hand Grenade" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_m16.mdl") = weapon_m16 : "M16" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_saw.mdl") = weapon_m249 : "M249 SAW" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_medkit.mdl") = weapon_medkit : "Medkit" [] + +@PointClass base(Weapon, Targetx) studio("models/w_minigun.mdl") = weapon_minigun : "Minigun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_pipe_wrench.mdl") = weapon_pipewrench : "Wrench" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge" [] + +@PointClass base(Weapon, Targetx) studio("models/w_shock_rifle.mdl") = weapon_shockrifle : "Shock Rifle" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_sqknest.mdl") = weapon_snark : "Squeak Grenade" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_m40a1.mdl") = weapon_sniperrifle : "Sniper Rifle" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_spore_launcher.mdl") = weapon_sporelauncher : "Spore Launcher" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/vhe-models/w_tripmine_hammer.mdl") = weapon_tripmine : "Tripmine" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_uzi.mdl") = weapon_uzi : "Single UZI (2 UZIs for Akimbo)" [] + +@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_2uzis.mdl") = weapon_uziakimbo : "Akimbo UZIs" [] + +@PointClass base(Item, CustomRespawnDelay) studio("models/w_weaponbox.mdl") = weaponbox : "Weapon/Ammo Container" +[ + bullet9mm(integer) : "Packed 9mm rounds" + bullet357(integer) : "Packed 357 rounds" + buckshot(integer) : "Packed shotgun shells" + bolts(integer) : "Packed crossbow bolts" + bullet556(integer) : "Packed 5.56mm rounds" + ARgrenades(integer) : "Packed assault rifle grenades" + rockets(integer) : "Packed rockets" + uranium(integer) : "Packed gauss charges" + handgrenade(integer) : "Packed hand grenades" + satchelcharge(integer) : "Packed satchels" + tripmine(integer) : "Packed trip mines" + Snarks(integer) : "Packed snarks" + m40a1(integer) : "Packed 7.62mm rounds" + sporeclip(integer) : "Packed spores" +] + +@PointClass base(Weapon, Targetx) color(128 128 0) = world_items : "World Items" +[ + type(choices) : "Type" : 42 = + [ + 42 : "Antidote" + 43 : "Security Card" + 44 : "Battery" + 45 : "Suit" + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) studio("models/hair.mdl") = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + ] +] + +@PointClass base(Targetname, Target, RenderFields, Angles, AttackObject) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl") = xen_plantlight : "Xen Plant Light" +[ + spawnflags(Flags) = + [ + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl") = xen_spore_large : "Xen Spore (large)" +[ + spawnflags(Flags) = + [ + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + 8 : "Non Solid" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl") = xen_spore_medium : "Xen Spore (medium)" +[ + spawnflags(Flags) = + [ + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + 8 : "Non Solid" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl") = xen_spore_small : "Xen Spore (small)" +[ + spawnflags(Flags) = + [ + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + 8 : "Non Solid" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl") = xen_tree : "Xen Tree" +[ + spawnflags(Flags) = + [ + 2 : "Drop To Ground" : 0 + 4 : "Face Randomly" : 0 + 8 : "Non Solid" : 0 + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/team-fortress-classic.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/team-fortress-classic.fgd new file mode 100644 index 0000000..6b9969e --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/team-fortress-classic.fgd @@ -0,0 +1,2815 @@ +// Half-Life Team Fortress Classic Game Definition File (.fgd) +// Version 1.5f revision 5 for WorldCraft 3.3, Hammer 3.4+ +// +// Last update: 12 Jul 2002, by Professional Victim +// +// For detailed TFC editing information, go to TFMapped! +// http://tf.valve-erc.com/ + +// 0712 - Release version 1.5f, revision 8 +// 0712 - Added a number of undocumented "artifact" entities that remained from the Quake days. +// 0630 - Added TFCriteria fix that had somehow not been included in 1.5F r1 and had persisted through the revisions. +// 0626 - Added missing "(Use Teamcheck Entity)" value to spawn points' Team Allowed... property (thanks to [WTF?]Snowdog) +// 0626 - Added targetname to func_tankcontrols for killtargeting. (thanks to Dan Sheehan) +// +// 0620 - Release version 1.5f, revision 7 +// 0620 - Added deathtype property to trigger_hurt. +// +// 0604 - Release version 1.5f, revision 6 +// 0604 - Added goal activation to trigger_hurt (thanks Radish). +// 0604 - Added new entities for ZHLT 2.5.3 (info_compile_parameters, info_texlights). +// +// 0517 - Release version 1.5f, revision 5 +// 0517 - Fixed property name of "Return Item #" to remove incorrect specification. +// 0517 - Fixed various random capitalizations and spelling errors. +// +// 0329 - Release version 1.5f, revision 4 +// 0329 - Fixed name of skyname property. +// +// 0223 - Release version 1.5f, revision 3 +// 0223 - Fixed TriggerTarget key in Monster baseclass. +// +// 1213 - Release version 1.5f, revision 2 +// 1213 - Fixed bug with func_water not having certain baseclass (from 1.5e). +// +// 1209 - Release version 1.5f, revision 1 +// 1209 - Fixed bug with info_player_teamspawn's Angles key. Thanks to TFM forum member Radish for pointing this out. +// +// 0703 - Release version 1.5f +// 0703 - Added some spawnflags to Monster baseclass for turrets. +// Fixed env_beam and some other "missing" entities (baseclass error in last version). +// Fixed some miscellaneous stuff in various parts of the FGD. +// Restored the player_weaponstrip entity that had been removed for some reason (???). +// Added Angular Velocity (avelocity) to many entities. Works with PYR angle sets. +// Removed ZLightflags base that had been added to the invisible func_tankcontrols and func_traincontrols. +// Fixed an incorrect capitalization of ZLightflags baseclass on func_illusionary. +// Removed TFCriteria and TFEffects5 from info_player_teamspawn and moved relevant properties to TFSpawnInfo. +// Removed TFItemStatus and TFEffects5 from func_button (WTF was it there for?!). +// Removed TFCriteria base from monster_* entities and moved relevant properties to Monster. +// Fixed some incorrect capitalizations, spelling errors, etc. left over from previous versions. +// Added 1.1.0.8 model replacement properties to item_tfgoal. +// Removed the (now unnecessary) ERC script comments. +// Removed TFItemStatus from a number of entities (as it served no purpose there). +// Release version 1.5f +// +// 1107 - Release version 1.5e +// 1104 - Fix 'number_of_teams' in info_tfdetect. Added endround_team1 - 4 message strings. +// Changed several key descriptions. Removed itemstatus from item and i_p_t. +// +// 1028 - Release version 1.5d +// 1027 Fix ZHLT light flag description. Additions from 1104 patch, func_nogrenades, +// info_areadef, info_tf_teamcheck, and info_tf_teamset. Added 'teamcheck' key to +// TF Criteria and 'no_of_teams' to info_tfdetect. Added targetname to tf goals. +// New endround keys added to tf goals. +// From PV, added Goal result to info_player_teamspawn so goals activated by it will +// apply results to player. + +// 0823 - Release version 1.5c +// 0822 - Redid grouping of BaseClasses for benefit of Entity Script. Replaced env_global. +// Replaced 'cycler', but renamed it 'Model Cycler', rather than 'Monster cycler'. + +// 0807 - Started adding Entity script formatting. Removed bounding boxes from TF goals which +// seemed defunct. Removed defunct properties from worldspawn for TFC. + +// 0717 - Added Zoners lightflags for brush based entities, you need Zoner's Compile Tools 2.2+ +// for them to work. +// Following changes submitted by Pvt. Beavis. Removed bounding boxes from i_p_t. +// Change TF delay to 'Delay before activate(sec)' rather than 're-trigger'. +// Set TF goals 'wait' default to 0. + +// 0714 - Removed some abbreviations from Flaginfo sentences that caused bugs. +// Added TFCriteria to Trigger entities. Add TF effects to many of the +// triggers. Added TF criteria to additional Func_ entities. + +// 0704 - Replaced long name version of info_player_teamspawn and info_tfgoal_timer. +// Set func_water wave height default to 0 + +// 0621 - FlintMan - Removed Trigger Conditions/Spawnflags from monster_ entities. +// Release version 1.5a + +// 0619 - Additions by Ryan "Professional Victim" Desgroseilliers, TFMapped +// Added armor classes and comments to item_armor1, item_armor2, and item_armor3 +// Added targetname to func_nobuild for killtargetting +// Removed ammo_medkit variable from TF entities. + +// 0617 - First beta version by FlintMan +// Redo of original halflife-tfc.fgd created and contributed by Autolycus, Juddhunter, +// Ryan 'PV' Desgroseilliers, Paul 'MoOg' Samways, Decker, Sean 'Zoner' Cavanaugh, +// Curber, Mirar, Brad Rembielak. +// This version consists of reorganizing TF base classes, removing defunct HL entities +// and variables. Incorporated entity and key abbreviations. + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + skyname(string) : "Environment map (sky box)" : "2desert" + sounds(integer) : "CD track to play" : 0 + light(integer) : "Default light level" + WaveHeight(string) : "Default wave height" : 0 + MaxRange(string) : "Max viewable distance" : "4096" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +// +// BaseClasses +// + +@BaseClass = TFSpawnInfo +[ + netname(string) : "Entity reference name (for logging)" + goal_no(integer) : "Spawn #" + group_no(integer) : "Spawn group #" + goal_state(choices) : "Initial state" : 0 = + [ + 0 : "Ready to use" + 1 : "Removed" + ] + + team_no(choices) : "Team allowed to spawn here" : 1 = + [ + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + 0 : "(Use Teamcheck Entity)" + ] + + teamcheck(string) : "Targetname of teamcheck goal" + + playerclass(choices) : "Player class allowed to spawn here" : 0 = + [ + 0 : "Any" + 1 : "Scout" + 2 : "Sniper" + 3 : "Soldier" + 4 : "Demolitions man" + 5 : "Medic" + 6 : "Heavy Weapons Guy" + 7 : "Pyro" + 8 : "Spy" + 9 : "Engineer" + ] + + items_allowed(integer) : "Has item #" + h_i_g(integer) : "Has item from group #" + hasnt_item_from_group(integer) : "Hasn't item from group #" + + if_item_has_moved(integer) : "If item # has moved" + if_item_hasnt_moved(integer) : "If item # hasn't moved" + + if_goal_is_active(integer) : "If goal # active" + if_goal_is_inactive(integer) : "If goal # inactive" + if_goal_is_removed(integer) : "If goal # removed" + + if_group_is_active(integer) : "If group # active" + if_group_is_inactive(integer) : "If group # inactive" + if_group_is_removed(integer) : "If group # removed" +] + +@BaseClass = TFItemInfo +[ + netname(string) : "Entity reference name (for logging)" + goal_no(integer) : "Item #" + group_no(integer) : "Item group #" + targetname(target_source) : "Name (targetname)" +] + +@BaseClass = TFInfo1 +[ + netname(string) : "Entity reference name (for logging)" + goal_no(integer) : "Goal #" + group_no(integer) : "Goal group #" + targetname(target_source) : "Name (targetname)" +] + +@BaseClass = TFInfo2 +[ + goal_state(choices) : "Goal Initial State" : 2 = + [ + 1 : "Active" + 2 : "Inactive" + 3 : "Removed" + ] +] + +@BaseClass = TFInfo3 +[ + mdl(string) : "Model path/name.mdl" + skin(integer) : "Model skin-varies per model" +] + +@BaseClass = TFCriteria +[ + team_no(choices) : "Team allowed to use goal" : 0 = + [ + 0 : "Any" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + + teamcheck(string) : "Targetname of teamcheck goal" + + playerclass(choices) : "Player class allowed to use goal" : 0 = + [ + 0 : "Any" + 1 : "Scout" + 2 : "Sniper" + 3 : "Soldier" + 4 : "Demolitions man" + 5 : "Medic" + 6 : "Heavy Weapons Guy" + 7 : "Pyro" + 8 : "Spy" + 9 : "Engineer" + ] + + items_allowed(integer) : "Has item #" + h_i_g(integer) : "Has item from group #" + hasnt_item_from_group(integer) : "Hasn't item from group #" + + if_item_has_moved(integer) : "If item # has moved" + if_item_hasnt_moved(integer) : "If item # hasn't moved" + + if_goal_is_active(integer) : "If goal # active" + if_goal_is_inactive(integer) : "If goal # inactive" + if_goal_is_removed(integer) : "If goal # removed" + + if_group_is_active(integer) : "If group # active" + if_group_is_inactive(integer) : "If group # inactive" + if_group_is_removed(integer) : "If group # removed" +] + +@BaseClass = TFItemCriteria +[ + team_no(choices) : "Team allowed to use item" : 0 = + [ + 0 : "Any" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + + teamcheck(string) : "Targetname of teamcheck goal" + + playerclass(choices) : "Player class allowed to use item" : 0 = + [ + 0 : "Any" + 1 : "Scout" + 2 : "Sniper" + 3 : "Soldier" + 4 : "Demolitions man" + 5 : "Medic" + 6 : "Heavy Weapons Guy" + 7 : "Pyro" + 8 : "Spy" + 9 : "Engineer" + ] + + items_allowed(integer) : "Has item #" + h_i_g(integer) : "Has item from group #" + hasnt_item_from_group(integer) : "Hasn't item from group #" + + if_item_has_moved(integer) : "If item # has moved" + if_item_hasnt_moved(integer) : "If item # hasn't moved" + + if_goal_is_active(integer) : "If goal # active" + if_goal_is_inactive(integer) : "If goal # inactive" + if_goal_is_removed(integer) : "If goal # removed" + + if_group_is_active(integer) : "If group # active" + if_group_is_inactive(integer) : "If group # inactive" + if_group_is_removed(integer) : "If group # removed" +] + +@BaseClass = TFButtonCriteria +[ + team_no(choices) : "Team allowed to activate entity" : 0 = + [ + 0 : "Any" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + + teamcheck(string) : "Targetname of teamcheck goal" + + playerclass(choices) : "Player class allowed to activate entity" : 0 = + [ + 0 : "Any" + 1 : "Scout" + 2 : "Sniper" + 3 : "Soldier" + 4 : "Demolitions man" + 5 : "Medic" + 6 : "Heavy Weapons Guy" + 7 : "Pyro" + 8 : "Spy" + 9 : "Engineer" + ] + + items_allowed(integer) : "Has item #" + h_i_g(integer) : "Has item from group #" + hasnt_item_from_group(integer) : "Hasn't item from group #" + + if_item_has_moved(integer) : "If item # has moved" + if_item_hasnt_moved(integer) : "If item # hasn't moved" + + if_goal_is_active(integer) : "If goal # active" + if_goal_is_inactive(integer) : "If goal # inactive" + if_goal_is_removed(integer) : "If goal # removed" + + if_group_is_active(integer) : "If group # active" + if_group_is_inactive(integer) : "If group # inactive" + if_group_is_removed(integer) : "If group # removed" +] + +@BaseClass = TFMessages +[ + owned_by(choices) : "Owned by-for msg & item glow" : 0 = + [ + 0 : "Not Owned" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + + owned_by_teamcheck(string) : "Owned by teamcheck" + + deathtype(string) : "Death type" + b_b(string) : "Message to all" + message(string) : "Message to AP" + b_t(string) : "Message to AP team" + b_n(string) : "Message to non-AP team" + b_o(string) : "Message to owner team" + non_owners_team_broadcast(string) : "Message to non-owner team(s)" + + n_b(string) : "Console msg. to all, %s = AP name" + n_t(string) : "Console msg to AP team" + n_n(string) : "Console msg. to non-AP team" + n_o(string) : "Console msg. to owner team" + + speak(string) : "Speak (global)" + AP_speak(string) : "Speak (AP)" + team_speak(string) : "Speak (AP team)" + non_team_speak(string) : "Speak (non-AP team)" + owners_team_speak(string) : "Speak (owner team)" + non_owners_team_speak(string) : "Speak (non-owner teams)" +] + +@BaseClass = TFItemStatus +[ + display_item_status1(integer) : "Item 1 no. for flaginfo" + display_item_status2(integer) : "Item 2 no. for flaginfo" + display_item_status3(integer) : "Item 3 no. for flaginfo" + display_item_status4(integer) : "Item 4 no. for flaginfo" + + team_str_home(string) : "Item at origin message, owners" + t_s_m(string) : "Item dropped msg, owners" + t_s_c(string) : "Item carried msg owner, %s = AP name" + + non_team_str_home(string) : "Item at origin msg, non owner" + non_team_str_moved(string) : "Item dropped msg, non owner" + n_s_c(string) : "Item carried msg, non owner, %s = AP name" +] + +@BaseClass = TFOperations +[ + wait(integer) : "Stay active(sec), -1 stays" : 0 + delay_time(integer) : "Delay before activate(sec)" +] + +@BaseClass = TFOperat2 +[ + maxammo_shells(Choices) : "Affect all on Team" : 0 = + [ + 0 : "Disabled" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + maxammo_nails(Choices) : "Affect all not on Team" : 0 = + [ + 0 : "Disabled" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + t_length(integer) : "Effect radius, 0=infinite" : 0 + +] + +@BaseClass = TFEffects1 +[ + + // if criteria check fails, activate this goal instead + else_goal(integer) : "If criteria fails activate Goal #" + + all_active(integer) : "If all goals in group # active..." + last_impulse(integer) : "...activate goal #" + + activate_goal_no(integer) : "Activate goal #" + inactivate_goal_no(integer) : "Inactivate goal #" + rv_g(integer) : "Remove goal #" + rs_g(integer) : "Restore goal #" + + activate_group_no(integer) : "Activate goals in group #" + inactivate_group_no(integer) : "Inactivate goals in group #" + rv_gr(integer) : "Remove goals in group #" + rs_gr(integer) : "Restore goals in group #" + + remove_spawnpoint(integer) : "Remove Spawn point #" + restore_spawnpoint(integer) : "Restore Spawn point #" + rv_s_h(integer) : "Remove spawn group #" + rs_s_h(integer) : "Restore spawn group #" +] + +@BaseClass = TFEffects2 +[ + items(integer) : "Item to give" + +] + +@BaseClass = TFEffects3 +[ + axhitme(integer) : "Remove item from APA" + return_item_no(integer) : "Return item #" + r_i_g(integer) : "Remove items in group #" +] + +@BaseClass = TFEffects4 +[ + target(target_destination) : "Target entity with this targetname" + killtarget(target_destination) : "Remove entity with this targetname" + noise(string) : "Play Sound Path/name.wav" +] + +@BaseClass = TFEffects4b +[ + + killtarget(target_destination) : "Remove entity with this targetname" + noise(string) : "Play Sound Path/name.wav" +] + +@BaseClass = TFEffects5 +[ + // All the following attributes are applied to the attributes of + // every player specified by the "goal_effect"(see above). + + frags(integer) : "Add/Subtract frags" + lives(integer) : "Add/Subtract lives" + health(integer) : "Add/Subtract health" + + armorvalue(integer) : "Armor Value %" + +// Armor classes: what they provide superior protection against +// Add up values for multiple protections, e.g. 3 is good vs. all bullets, 20 is good vs explosions & fire. + +// 0 - Normal: Nothing +// 1 - Kevlar: Shotgun, Super Shotgun, Sentry Gun, AssCan, trigger_hurt SHOT damage (?) +// 2 - Wooden: Nailgun, Super Nailgun, Railgun, Tranquilizer Gun, Nail Grenade, trigger_hurt SLASH damage (?) +// 4 - Blast: Pipebombs, GL grenades, Rockets, Regular & MIRV grenades, Detpack (still kills though), trigger_hurt BLAST damage (?) +// 8 - Shock: trigger_hurt SHOCK damage (?) +// 16 - Ceramic: Flamethrower, Incendiary Cannon, Napalm Grenade, trigger_hurt BURN damage, "lava" func_water (not very effective) + + armorclass(choices) : "Armor Class" : 0 = + [ + 0 : "0 - Normal" + 1 : "1 - Kevlar (shell resistant)" + 2 : "2 - Wooden (nail resistant)" + 4 : "4 - Blast (explosion resistant)" + 8 : "8 - Shock (electricity resistant)" + 16 : "16 - Ceramic (fire resistant)" + ] + + a_s(integer) : "Add/Subtract shells" + a_n(integer) : "Add/Subtract nails" + a_r(integer) : "Add/Subtract rockets" + a_c(integer) : "Add/Subtract cells" + ammo_detpack(integer) : "Add/Subtract detpack" + +// Note A: After applying all these values to the player, the playerclass +// limitations of the player are applied. So if you set the health of +// the player over that allowed, by his/her playerclass, it will then +// be lowered to the max_health for that playerclass. +// +// Note B: "lives" allows you to give/remove lives from players. This is only +// useful if the current map limits the number of lives each player +// has. See the Auto Detection section above. + +// TeamFortress Grenades can be given/removed to/from the player by setting +// the following two variables. + + no_grenades_1(integer) : "Add/subtract grenades #1" + no_grenades_2(integer) : "Add/subtract grenades #2" + +// And finally, the following attributes are added to the global time +// and applied to every player specified by the "goal_effect"(see below). +// (e.g. if the goal's invincible_finished is 5, then the player will +// get invincibility for 5 seconds after activating the goal.) + + +// The following 9 items push the gamedata variable limit past 128 :( + + invincible_finished(integer) : "Invincibility duration" + invisible_finished(integer) : "Invisibility duration" + super_damage_finished(integer) : "Quad duration" + radsuit_finished(integer) : "Rad Suit duration" + + count(integer) : "Score to AP team" + increase_team(integer) : "Teamcheck team point gain" + increase_team1(integer) : "Blue point gain" + increase_team2(integer) : "Red point gain" + increase_team3(integer) : "Yellow point gain" + increase_team4(integer) : "Green point gain" +] + +@BaseClass = TFArmor +[ + +// The armorclass variable is a toggleflag style variable. You can make +// any combination of armor type, but don't get carried away. :) + + respawn_delay(integer) : "Respawn delay" : 5 + +// PV: see note in TFEffects5 + + armorclass(choices) : "Armor Class" : 0 = + [ + 0 : "0 - Normal" + 1 : "1 - Kevlar (shell resistant)" + 2 : "2 - Wooden (nail resistant)" + 4 : "4 - Blast (explosion resistant)" + 8 : "8 - Shock (electricity resistant)" + 16 : "16 - Ceramic (fire resistant)" + ] +] + +@BaseClass = Endround +[ + endround_time(integer) : "Length of endround" + endround_owned_by(string) : "Owners endround message" + endround_non_owned_by(string) : "Non-owners endround message" + endround_team1(string) : "Endround message for team 1" + endround_team2(string) : "Endround message for team 2" + endround_team3(string) : "Endround message for team 3" + endround_team4(string) : "Endround message for team 4" +] + +@BaseClass = Angles +[ + angles(string) : "Pitch yaw roll" : "0 0 0" +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name (targetname)" +] + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass = Button +[ + g_a(Choices) : "Goal Activation bitfields" : 1 = + [ + 0 : "0 - None" + 4 : "4 - If AP fails criteria" + 8 : "8 - Hit by engin. spanner" + ] + +// what the goal affects + g_e(Choices) : "Goal Effects bitfields" : 1 = + [ + 0 : "0 - Nobody" + 1 : "1 - Activating player (AP)" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - Not the AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA individually" + ] + + goal_result(Choices) : "Goal result bitfields" : 0 = + [ + 0 : "0 - None" + 2 : "2 - Sub-goals apply AP mods" + 4 : "4 - Scores, intermission, end" + 8 : "8 - Sub-Goals don't apply results" +// PV: how the hell can this be used with a button??? +// 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + ] + + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + wait(integer) : "Delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch activates": 0 + ] + + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small Zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small Zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small Zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + + // All the following attributes are applied to the attributes of + // every player specified by the "goal_effect"(see above). + + frags(integer) : "Add/Subtract frags" + lives(integer) : "Add/Subtract lives" + + armorvalue(integer) : "Armor value %" + + // PV: See note in TFEffects5 + armorclass(choices) : "Armor class" : 0 = + [ + 0 : "0 - Normal" + 1 : "1 - Kevlar (shell resistant)" + 2 : "2 - Wooden (nail resistant)" + 4 : "4 - Blast (explosion resistant)" + 8 : "8 - Shock (electricity resistant)" + 16 : "16 - Ceramic (fire resistant)" + ] + + a_s(integer) : "Add/subtract shells" + a_n(integer) : "Add/subtract nails" + a_r(integer) : "Add/subtract rockets" + a_c(integer) : "Add/subtract cells" + ammo_detpack(integer) : "Add/subtract detpack" + + no_grenades_1(integer) : "Add/subtract grenades #1" + no_grenades_2(integer) : "Add/subtract grenades #2" + + invincible_finished(integer) : "Invincibility duration" + invisible_finished(integer) : "Invisibility duration" + super_damage_finished(integer) : "Quad duration" + radsuit_finished(integer) : "Rad Suit duration" + + count(integer) : "Score to AP Team" + increase_team(integer) : "Teamcheck team point gain" + increase_team1(integer) : "Blue point gain" + increase_team2(integer) : "Red point gain" + increase_team3(integer) : "Yellow point gain" + increase_team4(integer) : "Green point gain" + +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib velocity" : 200 + + // Course variance + m_flVariance(string) : "Course variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass = Door1 +[ + g_a(Choices) : "Goal Activation bitfields" : 1 = + [ + 0 : "0 - None" + 4 : "4 - If AP fails criteria" + 8 : "8 - Hit by engin. spanner" + ] + + // what the goal affects + g_e(Choices) : "Goal Effects bitfields" : 1 = + [ + 1 : "1 - Activating player(AP)" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - Not the AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA individually" + ] + + goal_result(Choices) : "Goal Result bitfields" : 0 = + [ + 0 : "none" + 2 : "2 - Sub-goals apply AP mods" + 4 : "4 - scores, intermission, end" + 8 : "8 - Sub-Goals don't apply results" +// PV: Same as with button -- how the hell would this work? +// 16 : "16 - Prevent spy disguise" + 32 : "32 - Force respawn, no die" + ] + +] + +@BaseClass = Door2 +[ + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeak elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeak stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" +] + +@BaseClass = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass color(0 200 200) = Monster +[ + g_a(Choices) : "Goal Activation bitfields" : 0 = + [ + 4 : "4 - if AP fails criteria" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] + + team_no(choices) : "Team to shoot at" : 0 = + [ + 0 : "Any" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] + + teamcheck(string) : "Targetname of teamcheck goal" + + playerclass(choices) : "Player class to shoot at" : 0 = + [ + 0 : "Any" + 1 : "Scout" + 2 : "Sniper" + 3 : "Soldier" + 4 : "Demolitions man" + 5 : "Medic" + 6 : "Heavy Weapons Guy" + 7 : "Pyro" + 8 : "Spy" + 9 : "Engineer" + ] + + items_allowed(integer) : "Has item #" + h_i_g(integer) : "Has item from group #" + hasnt_item_from_group(integer) : "Hasn't item from group #" + + if_item_has_moved(integer) : "If item # has moved" + if_item_hasnt_moved(integer) : "If item # hasn't moved" + + if_goal_is_active(integer) : "If goal # active" + if_goal_is_inactive(integer) : "If goal # inactive" + if_goal_is_removed(integer) : "If goal # removed" + + if_group_is_active(integer) : "If group # active" + if_group_is_inactive(integer) : "If group # inactive" + if_group_is_removed(integer) : "If group # removed" + + TriggerTarget(String) : "AI Trigger Target" + TriggerCondition(Choices) : "AI Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] +] + +@BaseClass = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +@BaseClass = AVelocity +[ + avelocity(string) : "Angular Velocity (PYR)" +] + +@BaseClass = ZLightflags +[ + zhlt_lightflags(choices) : "ZHLT Light flags" : 0 = + [ + 0 : "Default" + 1 : "Embedded fix" + 2 : "Opaque, blocks light" + 3 : "Both" + ] + + _minlight(string) : "Minimum light level" +] + +// +// Team Fortress Entities +// + +@SolidClass base(Targetname) = func_nobuild : "Engineer no-build area" [] + +@SolidClass base(Targetname) = func_nogrenades : "Grenades protected area" [] + +@PointClass base(TFItemStatus) = info_tfdetect : "TF Detection Entity" +[ + broadcast(string) : "Version String" + number_of_teams(integer) : "No. of teams-for teamcheck only" + + team1_name(string) : "Team 1 VGUI menu name" + team2_name(string) : "Team 2 VGUI menu name" + team3_name(string) : "Team 3 VGUI menu name" + team4_name(string) : "Team 4 VGUI menu name" + +// impulse variable settings +// +// Bit 1 (1) : Off - ClasSkin , On - Multiskin +// Bit 2 (2) : Off - ClassPersistence Off , On - ClassPersistence On +// Bit 3 (4) : Off - CheatChecking Off , On - CheatChecking On +// Bit 4 (8) : Off - FortressMap Off , On - FortressMap On +// Bit 5 (16) : Off - RespawnDelay Off , On - RespawnDelay (See below) +// Bit 6 (32) : Off - RespawnDelay Off , On - RespawnDelay (See below) +// Bit 7 (64) : Off - AutoTeam Off , On - AutoTeam On +// Bit 8 (128) : Off - Individual Frags , On - Frags = TeamScore +// +// N.B. FortressMap will be set On automatically by the +// Detection entity anyway, so just ignore that Bit. +// +// N.B. The RespawnDelay settings takes 2 bits. The value of both of +// them determines the level of respawn delay, as follows: +// Bit 5 Bit 6 Result +// Off Off No Respawn delays +// On Off 5 Second respawn delay +// Off On 10 Second respawn delay +// On On 20 Second respawn delay + + impulse(integer) : "Game Settings (toggleflags)" + +// When using the "message" variable to set do localcmd's, you +// can issue more than one command by seperating them with \n +// Make sure you end it with a \n too. +// E.g. The following changes the gravity and the friction. +// "message" "sv_gravity 200\nsv_friction .5\n" + + + message(string) : "LocalCmd String" + ammo_shells(choices) : "Blue Lives" : 0 = [ 0 : "infinite" ] + ammo_nails(choices) : "Red Lives" : 0 = [ 0 : "infinite" ] + ammo_rockets(choices) : "Yellow Lives" : 0 = [ 0 : "infinite" ] + ammo_cells(choices) : "Green Lives" : 0 = [ 0 : "infinite" ] + +// The following 4 variables use toggle flags with 0 and -1 being special values. +// For no class limits, or for making a team civilian only, use 0 and -1 respectively. +// Otherwise, add up the bit values and use the final number as the maxammo_xxxxx value. +// +// For example, if you wanted class 1 to be unable to play scouts or spys, you'd add the +// two values together (1 + 256) for a value of 257, which you'd then give to maxammo_shells. + + maxammo_shells(choices) : "Blue class limits toggleflags" : 0 = + [ + 0 : "no limits" + -1 : "civilian only" + 1 : "1 - no scout" + 2 : "2 - no sniper" + 4 : "4 - no soldier" + 8 : "8 - no demo man" + 16 : "16 - no combat medic" + 32 : "32 - no heavy weapons guy" + 64 : "64 - no pyro" + 128 : "128 - no random playerclass" + 256 : "256 - no spy" + 512 : "512 - no engineer" + ] + maxammo_nails(choices) : "Red class limits toggleflags" : 0 = + [ + 0 : "no limits" + -1 : "civilian only" + 1 : "1 - no scout" + 2 : "2 - no sniper" + 4 : "4 - no soldier" + 8 : "8 - no demo man" + 16 : "16 - no combat medic" + 32 : "32 - no heavy weapons guy" + 64 : "64 - no pyro" + 128 : "128 - no random playerclass" + 256 : "256 - no spy" + 512 : "512 - no engineer" + ] + maxammo_rockets(choices) : "Yellow class limits toggleflags" : 0 = + [ + 0 : "no limits" + -1 : "civilian only" + 1 : "1 - no scout" + 2 : "2 - no sniper" + 4 : "4 - no soldier" + 8 : "8 - no demo man" + 16 : "16 - no combat medic" + 32 : "32 - no heavy weapons guy" + 64 : "64 - no pyro" + 128 : "128 - no random playerclass" + 256 : "256 - no spy" + 512 : "512 - no engineer" + ] + maxammo_cells(choices) : "Green class limits toggleflags" : 0 = + [ + 0 : "no limits" + -1 : "civilian only" + 1 : "1 - no scout" + 2 : "2 - no sniper" + 4 : "4 - no soldier" + 8 : "8 - no demo man" + 16 : "16 - no combat medic" + 32 : "32 - no heavy weapons guy" + 64 : "64 - no pyro" + 128 : "128 - no random playerclass" + 256 : "256 - no spy" + 512 : "512 - no engineer" + ] + + ammo_medikit(choices) : "Max Players, Blue" : 0 = + [ + 0 : "0 - Unlimited" + ] + ammo_detpack(choices) : "Max Players, Red" : 0 = + [ + 0 : "0 - Unlimited" + ] + maxammo_medikit(choices) : "Max Players, Yellow" : 0 = + [ + 0 : "0 - Unlimited" + ] + maxammo_detpack(choices) : "Max Players, Green" : 0 = + [ + 0 : "0 - Unlimited" + ] + + team1_allies(choices) : "Blue Allies" : 0 = + [ + 0 : "No Allies" + 2 : "2 - Red" + 4 : "4 - Yellow" + 8 : "8 - Green" + ] + team2_allies(choices) : "Red Allies" : 0 = + [ + 0 : "No Allies" + 1 : "1 - Blue" + 4 : "4 - Yellow" + 8 : "8 - Green" + ] + team3_allies(choices) : "Yellow Allies" : 0 = + [ + 0 : "No Allies" + 1 : "1 - Blue" + 2 : "2 - Red" + 8 : "8 - Green" + ] + team4_allies(choices) : "Green Allies" : 0 = + [ + 0 : "No Allies" + 1 : "1 - Blue" + 2 : "2 - Red" + 4 : "4 - Yellow" + ] +] + +@PointClass base(TFSpawnInfo, TFOperations, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects4, TFMessages, Angles) size(-16 -16 -36, 16 16 36) color(255 128 0) = info_player_teamspawn : "TF Team Spawnpoint" +[ + g_a(choices) : "Goal activation" : 3 = + [ + 0 : "0 - only first gets..." + 1 : "1 - all get item" + 2 : "2 - all get message" + 3 : "3 - all get item/messages" + ] + g_e(choices) : "Remove after spawn?" : 0 = + [ + 0 : "no" + 1 : "yes" + ] + goal_result(choices) : "Pass AP to Activated Goals?" : 0 = + [ + 0 : "No" + 2 : "Yes" + ] +] + +@PointClass base(info_player_teamspawn) size(-16 -16 -36, 16 16 36) color(255 128 0) = i_p_t : "TF Team Spawnpoint" [] + +@PointClass color(255 128 0) = info_tf_teamcheck : "Team check" +[ + targetname(string) : "Name to target this entity by" + team_no(choices) : "Starting Team" : 1 = + [ + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] +] + +@PointClass color(255 128 0) = info_tf_teamset : "Team set" +[ + targetname(string) : "Name to target this entity by" + target(string) : "Teamcheck to target" + team_no(choices) : "Team" : 0 = + [ + 0 : "Alternate" + 1 : "Blue" + 2 : "Red" + 3 : "Yellow" + 4 : "Green" + ] +] + +@PointClass color(255 128 0) = info_areadef : "Area definition" +[ + areaname(string) : "Name of area" + mins(string) : "(# # #)" : "0 0 0" + maxs(string) : "(# # #)" : "0 0 0" +] + +@PointClass base(TFInfo1, TFInfo2, TFInfo3, TFCriteria, TFOperations, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects4, TFEffects5, Endround, TFMessages, Angles, AVelocity) size(32 32 32) color(255 255 0) = info_tfgoal : "TFC Goal" +[ + g_a(Choices) : "Goal Activation bitfields" : 0 = + [ + 0 : "0 - none" + 1 : "1 - player touch" + 2 : "2 - detpack explosion" + 4 : "4 - when criteria fails" + 2048 : "2048 - drop model to ground on spawn" + ] + + g_e(Choices) : "Goal Effects bitfields" : 0 = + [ + 1 : "1 - Activating Player(AP)" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - All except AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA criteria individually" + ] + + goal_result(Choices) : "Goal Result bitfields" : 0 = + [ + 0 : "none" + 1 : "1 - remove immediately" + 2 : "2 - Sub-Goals apply mods" + 4 : "4 - scores, intermission, end" + 8 : "8 - Sub-goals don't apply mods" + 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + 64 : "64 - Remove SG & dispensers" + ] + +] + +@SolidClass base(TFInfo1, TFInfo2, TFCriteria, TFOperations, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects4, TFEffects5, Endround, TFMessages) color(255 255 0) = i_t_g : "TFC Goal shortcut, solid" +[ + g_a(Choices) : "Goal Activation bitfields" : 1 = + [ + 0 : "0 - none" + 1 : "1 - player touch" + 2 : "2 - detpack explosion" + 4 : "4 - if Criteria fails" + ] + + + g_e(Choices) : "Goal Effects bitfields" : 1 = + [ + 1 : "1 - Activating Player(AP)" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - All except AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA individually" + ] + + goal_result(Choices) : "Goal Result bitfields" : 0 = + [ + 0 : "none" + 1 : "1 - remove immediately" + 2 : "2 - Sub-Goals apply mods" + 4 : "4 - scores, intermission, end" + 8 : "8 - Sub-goals don't apply mods" + 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + 64 : "64 - Remove SG & dispensers" + ] + +] + +@PointClass base(TFInfo1, TFInfo2, TFInfo3, TFCriteria, TFOperations, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects4, TFEffects5, Endround, TFMessages, Angles) size(16 16 16) color(255 255 0) = info_tfgoal_timer : "Goal Timer" +[ + + goal_state(choices) : "Goal Initial State" : 2 = + [ + 1 : "Active" + 2 : "Inactive" + 3 : "Removed" + ] + + search_time(integer) : "Time between activations" + + g_e(Choices) : "Goal Effects bitfields" : 0 = + [ + 0 : "None" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA criteria individually" + ] + + goal_result(choices) : "Goal Result bitfields" : 0 = + [ + 0 : "None" + 1 : "1 - remove after activating" + 2 : "2 - Sub-Goals apply mod APA" + 4 : "4 - Display scores, end level" + 8 : "8 - Sub-goals don't apply mods" + 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + 64 : "64 - If APA fails criteria" + + ] +] + +@PointClass base(info_tfgoal_timer) size(16 16 16) color(255 255 0) = i_t_t : "Goal Timer" [] + +@PointClass base(TFItemInfo, TFInfo2, TFInfo3, TFCriteria, TFOperations, TFOperat2, TFEffects1, TFEffects3, TFEffects4, TFEffects5, TFMessages, Angles, AVelocity) size(16 16 16) color(255 128 0) = item_tfgoal : "TF Goal Item" +[ + g_a(Choices) : "Goal Activation Bitfields" : 0 = + [ + 0 : "0 - none" + 1 : "1 - player glows" + 2 : "2 - move at half-speed" + 4 : "4 - drop item on death" + 8 : "8 - return upon death-drop" + 16 : "16 - return if removed by goal" + 32 : "32 - return if (128) is set" + 64 : "64 - if AP fails criteria" + 128 : "128 - remove after pause" + 256 : "256 - keep item when player dies" + 512 : "512 - glows when not carried" + 1024 : "1024 - player keeps effects" + 2048 : "2048 - drop to ground at spawn" + 4096 : "4096 - is droppable" + 8192 : "8192 - is solid" + ] + + + // what the goal affects + g_e(Choices) : "Goal Effects bitfields" : 1 = + [ + 1 : "1 - AP is affected" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - Everyone except AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + 64 : "64 - Check APA individually" + ] + + speed_reduction(integer) : "Percentage of full speed" + pausetime(integer) : "Pause (stays on ground) seconds" + distance(integer) : "All in group# being carried..." + pain_finished(integer) : "...activate this goal" + + speed(integer) : "All in group # by 1 player.." + attack_finished(integer) : "...activate this goal" + + impulse(integer) : "Activate/Restore goal on return" + goal_result(choices) : "Goal Result bitfields" : 0 = + [ + 0 : "None" + 1 : "1 - remove after activating" + 2 : "2 - Sub-Goals apply mod AP" + 4 : "4 - Display scores, end level" + 8 : "8 - Sub-goals don't apply results to APA" + 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + 64 : "64 - Remove SG & dispensers" + ] + + team_drop(string) : "Center msg, death drop, owner team" + non_team_drop(string) : "Center msg, death drop, non owners" + netname_team_drop(string) : "Console msg, death drop, owner team" + netname_non_team_drop(string) : "Console msg, death drop, non owners" + + noise3(string) : "Return to start msg, team" + noise4(string) : "Return to start msg, owners" + + items(choices) : "Highlight HUD items bitvalue" : 0 = + [ + 0 : "No Highlighting" + 131072 : "Blue logo" + 262144 : "Red logo" + 16777216 : "Yellow logo" + 33554432 : "Green logo" + ] + + replacement_model(string) : "Replacement model" + replacement_model_body(integer) : "Replacement model Body setting" + replacement_model_skin(integer) : "Replacement model Skin setting" + replacement_model_flags(choices) : : 0 = + [ + 1 : "1 - hide player's weapon model" + ] +] + +@PointClass size(-16 -16 -24, 16 16 32) base(TFInfo1, TFInfo2, TFItemCriteria, TFArmor, Angles, AVelocity) = item_armor1 : "Green Armor" [] + +@PointClass size(-16 -16 -24, 16 16 32) base(TFInfo1, TFInfo2, TFItemCriteria, TFArmor, Angles, AVelocity) = item_armor2 : "Yellow Armor" [] + +@PointClass size(-16 -16 -24, 16 16 32) base(TFInfo1, TFInfo2, TFItemCriteria, TFArmor, Angles, AVelocity) = item_armor3 : "Red Armor" [] + +@PointClass size(-16 -16 0, 16 16 72) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_artifact_envirosuit : "Envirosuit (Deprecated)" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_artifact_invisibility : "Invisibility (Deprecated)" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_artifact_invulnerability : "Invulnerability (Deprecated)" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_artifact_super_damage : "Quad (Deprecated)" [] + +// +// HL Entities +// + +@PointClass = _halflife_entities_below_ : "This is not an entity!" [] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Ambient Generic" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +@SolidClass base(Target, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperations, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects4b, TFEffects5, TFMessages, ZLightFlags) = button_target : "Target Button" +[ + master(string) : "Master" + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] +] + +@PointClass base(Targetname, Angles, AVelocity) size(-16 -16 0, 16 16 72) = cycler : "Model Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles, RenderFields, RenderFxChoices) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 +] + +// +// Environmental effects +// + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, RenderFxChoices) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields, RenderFxChoices) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "Global Shake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(Targetname, Angles, gibshooterbase, RenderFields, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Angles, Targetname, RenderFields, RenderFxChoices) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Targetname, Breakable, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, AVelocity) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, Button, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFMessages, AVelocity) = func_button : "Button" [] + +@SolidClass base(RenderFields, RenderFxChoices, ZLightflags, Targetname, Angles) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" +] + +@SolidClass base(Targetname, Angles, Door1, Door2, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5, TFMessages, AVelocity) = func_door : "Basic door" [] + +@SolidClass base(Targetname, Angles, Door1, Door2, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5, TFMessages) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(RenderFields, RenderFxChoices, ZLightflags) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, AVelocity) = func_guntarget : "Moving target" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 +] + +@SolidClass base(RenderFields, RenderFxChoices, ZLightflags, TFCriteria) = func_healthcharger: "Wall health recharger" +[ + dmdelay(integer) : "Deathmatch recharge delay" : 0 +] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags, AVelocity) = func_illusionary : "Fake Wall/Light" +[ + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] +] + +@SolidClass base (Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Targetname, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] +] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags, PlatSounds, TFButtonCriteria, AVelocity) = func_plat : "Moving Platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 +] + +@SolidClass base(Targetname, Angles, RenderFields, RenderFxChoices, ZLightflags, PlatSounds, TFButtonCriteria) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 +] + +@SolidClass base(Targetname, Breakable, RenderFields, RenderFxChoices, ZLightflags) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 +] + +@SolidClass base(RenderFields, RenderFxChoices, ZLightflags, TFCriteria) = func_recharge: "Battery recharger" +[ + dmdelay(integer) : "Deathmatch recharge delay" : 0 +] + +@SolidClass base(Targetname, Angles, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = func_rot_button : "RotatingButton" +[ + g_a(Choices) : "Goal Activation bitfields" : 1 = + [ + 0 : "0 - none" + 4 : "4 - if AP fails criteria" + 8 : "8 - hit by engin. spanner" + ] + + // what the goal affects + g_e(Choices) : "Goal Effects bitfields" : 1 = + [ + 1 : "1 - Activating Player(AP)" + 2 : "2 - APs team" + 4 : "4 - Not on APs team" + 8 : "8 - Not the AP" + 16 : "16 - Walls obstruct radius" + 32 : "32 - Same environment only" + ] + + goal_result(Choices) : "Goal Result bitfields" : 0 = + [ + 0 : "none" + 2 : "2 - Sub-goals apply AP mods" + 4 : "4 - scores, intermission, end" + 8 : "8 - Sub-Goals don't apply results" + 16 : "16 - Prevent Spy disguise" + 32 : "32 - Force respawn, no die" + ] + + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] +] + +@SolidClass base(Targetname, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, Targetname, Target, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass base(Targetname, TFButtonCriteria) = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, Targetname, Target, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, Targetname, Target, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank, Targetname, Target, Angles, RenderFields, RenderFxChoices, ZLightflags) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, Targetname, RenderFields, RenderFxChoices, ZLightflags, PlatSounds) = func_trackautochange : "Automatic track changing platform" [] + +@SolidClass base(Trackchange, Targetname, RenderFields, RenderFxChoices, ZLightflags, PlatSounds) = func_trackchange : "Train track changing platform" [] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" +] + +@SolidClass base(TFButtonCriteria) = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags, AVelocity) = func_train : "Platform follows paths" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] +] + +@SolidClass base(Targetname, RenderFields, RenderFxChoices, ZLightflags) = func_wall : "Wall" [] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Targetname, Angles, Door2, RenderFields, RenderFxChoices, ZLightflags) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "0" +] + +@PointClass base(Targetname, Angles, gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass size(-8 -8 0, 8 8 32) = info_compile_parameters : "ZHLT Compile Options Entity" +[ + texdata(string) : "Texture Data Memory (in KB)" : "4096" + estimate(choices) : "Estimate Compile Times?" : 0 = + [ + 0: "Yes" + 1: "No" + ] + bounce(integer) : "Number of radiosity bounces" : 0 + ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0" + smooth(integer) : "Smoothing threshold (in degrees)" : 0 + dscale(integer) : "Direct Lighting Scale" : 1 + chop(integer) : "Chop Size" : 64 + texchop(integer) : "Texture Light Chop Size" : 32 + hullfile(string) : "Custom Hullfile" + + priority(choices) : "Priority Level" : 0 = + [ + 0 : "Normal" + 1 : "High" + -1 : "Low" + ] + wadautodetect(choices) : "Wad Auto Detect" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wadconfig(string) : "Custom Wad Configuration" : "" + verbose(choices) : "Verbose compile messages" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 = + [ + 1 : "Yes" + 0 : "No" + ] + + spawnflags(flags) = + [ + 1 : "Run CSG" : 1 + 2 : " No Clip" : 0 + 4 : " Only Ents" : 0 + 8 : " No Sky Clip" : 0 + 32 : "Run BSP" : 1 + 64 : " Leak Only" : 0 + 128 : " No Clip" : 0 + 256 : "Run VIS" : 1 + 512 : " Fast " : 0 + 2048 : "Run RAD" : 1 + 4096 : " Sparse " : 0 + 8192 : " Circus Mode" : 0 + 16384 : " Extra Mode " : 0 + ] +] + +@PointClass base(Target, Angles, AVelocity) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = info_player_start : "Player start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] + +@PointClass size(-8 -8 0, 8 8 16) color(0 255 0) base(Targetname, Angles) = info_teleport_destination : "Teleport destination" [] + +@PointClass color(255 128 0) = info_texlights : "ZHLT Texture Light Config" [] + +// +//HL items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_antidote : "Poison antidote" [] + +// PV: CAUTION! Misprogrammed in TFC! Will only charge to 100 armor and will over-charge classes with max armor <100! + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_battery : "HEV battery" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_healthkit : "Small Health Kit" [] + +@PointClass size(-16 -16 0, 16 16 36) base(Target, Targetname, Angles, Targetx, TFItemCriteria, AVelocity) = item_longjump : "Longjump Module" [] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname, Target, Angles) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner (bright) angle" : 30 + _cone2(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass base(Angles) iconsprite("sprites/lightbulb.spr") = light_environment : "Environmental Light" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Targetname, Angles, Door1, Door2, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5, TFMessages, AVelocity) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, RenderFxChoices, ZLightflags, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5, TFMessages) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] +] + +@PointClass base(Monster, Target, Targetname, Angles, RenderFields, RenderFxChoices) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] +] + +@PointClass base(Monster, Target, Targetname, Angles, RenderFields, RenderFxChoices) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] +] + +@PointClass base(Monster, Target, Targetname, Angles, RenderFields, RenderFxChoices) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" [] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "Multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train Rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Target, Targetx, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@PointClass base(Target, Targetx, Targetname, TFButtonCriteria) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@PointClass base(Target, Targetx, Targetname, TFCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Target, Targetname, TFCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Trigger, Target, Targetname) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname, Target, TFButtonCriteria) = trigger_hurt : "Trigger player hurt" +[ + g_a(Choices) : "Goal Activation bitfields" : 0 = + [ + 5 : "5 - if AP fails criteria" + ] + + deathtype(string) : "Death type" + + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Trigger, Target, Targetname, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger, Target, Targetname, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Target, Targetname, TFButtonCriteria, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Target, Targetname, Targetx, TFCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger, Target, Targetname, TFButtonCriteria, TFOperat2, TFEffects1, TFEffects2, TFEffects3, TFEffects5) = trigger_teleport : "Trigger teleport" [] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, RenderFxChoices, Angles, AVelocity) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" [] + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/the-opera.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/the-opera.fgd new file mode 100644 index 0000000..87026a3 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/the-opera.fgd @@ -0,0 +1,2770 @@ + +//************************************************************************** +// "The Opera" game definiton file (.fgd) +// Version 0.9 - 2/24/2000 +// +// Based on original Half-Life FGD file, v1.51 +// Modified exclusively for "The Opera" Total Conversion for Half-Life +// +// File modified by David "Nighthawk" Flor (dflor@mach3.com) +// (c) 2000, RedeemedSoft - All Rights Reserved +//************************************************************************** + +//************************************************************************** +// Half-Life game definition file (.fgd) +// version 1.51 +// for Worldcraft 2.0 and above, and Half-Life 1.0.0.9 and above +// last update: 1 april 1999 +// +// updated by autolycus / autolycus@gamedesign.com +// http://halflife.gamedesign.net/ +// email me with improvements and suggestions +// +// special thanks to: Everyone at Valve Software! +// +//************************************************************************** + +// +// BaseClasses +// + +@BaseClass = ExtraSpawnflags +[ + extra_spawnflags(integer) : "Extra spawnflags" : 0 +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" + killtarget(target_destination) : "KillTarget" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass [] + +@BaseClass base(Appearflags, Target, Targetname, RenderFields) color(0 200 200) = Monster +[ + ProperName(string) : "Proper Name" : "" + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 5 : "(N/A) Squad Member Dead" + 6 : "(N/A)Squad Leader Dead" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 32: "Has Proper Name" : 0 + 64: "No Penetration Kill" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] + team(Choices) : "Team?" : 0 = + [ + 0 : "None" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + targetname (target_source) : "Name" + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + spawnflags(flags) = + [ + 1024 : "No penetration" : 0 + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(string) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door +[ + killtarget(target_destination) : "KillTarget" + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(choices) : "Delay before close" : 4 = + [ + -1 : "Stays open" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + 1024 : "No penetration" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + style(integer) : "Style" : 32 + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 1 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(string) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// +// cyclers +// + +@PointClass base(Targetname) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" +[ + model(string) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = cycler_sprite : "Sprite Cycler" +[ + model(string) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(string) : "model" +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(string) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0= + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0= + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubbles" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 1 : "On" + 0 : "Off" + 3 : "Toggle" + 2 : "Dead" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(string) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(string) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(string) : "Sound effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(string) : "Model" : "" + shootsounds(choices) :"Material Sound" : 0 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Meejum" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(string) : "Sprite Name" : "sprites/glow.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_unbreakable : "Unbreakable Object" +[ + scale(string) : "Debris Scale" : "0.25" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Damage gibs" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targetted object" + netname(target_destination) : "Target Path" + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + 1024 : "No penetration" : 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(RenderFields, Targetname) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 16384 : "Breakable" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(RenderFields) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Appearflags, Targetname, RenderFields) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, PlatSounds) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squake Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + 1024 : "No penetration" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, RenderFields) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(string) : "Path/filename.wav of WAV" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, Global) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 1 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, RenderFields, Global) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + 1024 : "No penetration" : 0 + ] +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "No dead body" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) size(-8 -8 -8, 8 8 8) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Target) size( -8 -8 -8, 8 8 8 ) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "AI Node" +[ + hinttype(choices) : "Hint" : 0 = + [ + 0 : "None" + + 1: "World: Door" + 2: "World: Window" + 3: "World: Button" + 4: "World: Machinery" + 5: "World: Ledge" + 6: "World: Light Source" + 7: "World: Heat Source" + 8: "World: Blinking Light" + 9: "World: Bright Colors" + 10: "World: Human Blood Decal" + 11: "World: Alien Blood Decal" + + 300: "Stuka: Ceiling Perch" + 301: "Stuka: Landing spot" + ] + activity(choices) : "Activity" : 45 = + [ + 0: "None" + 35: "Eat" + 45: "Inspect Ground" + 46: "Inspect Wall" + ] +] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "AI Node - Air" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_coop : "Player cooperative start" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_deathmatch : "Player deathmatch start" +[ + master(string) : "Master" +] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_start : "Player start" [] + +@PointClass base(Targetname) size( -8 -8 -8, 8 8 8 ) color(200 100 50) = info_target : "info_target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// lights +// + +@PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass iconsprite("sprites/lightbulb.spr") base(Targetname) = light_spot : "Spotlight" +[ + _cone(integer) : "Inner Radius" : 32 + _cone2(integer) : "Outer Radius" : 64 + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "255 255 128 200" + _sky(Choices) : "Is Sky" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@PointClass iconsprite("sprites/lightbulb.spr") = light_environment : "Environment" +[ + pitch(integer) : "Pitch" : 0 + _light(color255) : "Brightness" : "255 255 128 200" +] + +@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squake Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// monsters +// + +@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney" [] +@PointClass base(RenderFields,Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] + +@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(string) : "model" +] + +@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] + +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(string) : "model" + body(Integer) : "Body" : 0 +] + +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" [] +@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 1024 : "Autostart" : 0 + 2048 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 1024 : "Autostart" : 0 + 2048 : "Start Inactive" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + 2 : "PVS On/Off" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) = multi_manager : "MultiTarget Manager" [] + +@PointClass base(Targetname, Target) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(string) : "Wait here (secs)" : "0" + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + targetname(target_source) : "Target Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(string) : "Hold time" : "10" + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16: "FireClientOnly" : 0 + 32: "TouchClientOnly" : 0 + 64: "No Dead body" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "BLEEDING" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "KICK" + 512 : "OVERDOSE" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "ACID" + ] +] + +@SolidClass = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(string) : "Delay before reset" : "10" +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetx, Targetname) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +//--------------------------------------------------------------- +// NEW OR MODIFIED ENTITIES!!! +//--------------------------------------------------------------- + +@SolidClass base(Trigger) = func_cushion : "Cushion" +[ + fall_ratio(string) : "Fall damage adjustment" : "1.0" + wait(string) : "Delay before reset" : "10" +] + +@SolidClass base(Door) = func_door : "Basic door" +[ + break_health(integer) : "Breakable Health" : 100 + break_type(choices) : "Debris type" : 1 = + [ + 0: "Wood" + 1: "Glass" + 2: "Metal" + ] +] + +@PointClass base(RenderFields) size(-4 -4 -4, 4 4 4) color(128 255 128) = env_dynalight : "Dynamic light" +[ + spawnflags(flags) = + [ + 1: "Random light colors" : 0 + ] + dyn_minwait(string) : "Minimum Flash Time" : "1.0" + dyn_maxwait(string) : "Maximum Flash Time" : "5.0" + dyn_radius(string) : "Light Radius" : "200" + dyn_fade(string) : "Fade Count" : "20" + dyn_brightness(integer) : "Brightness" : 255 +] + +@PointClass base(Target, Targetname) size(-24 -24 -4, 24 24 4) color(0 255 255) = spawnpoint_police : "Police Spawnpoint" +[ + team(Choices) : "Team?" : 0 = + [ + 0 : "Undefined" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +@PointClass base(Target, Targetname) size(-24 -24 -4, 24 24 4) color(0 255 255) = spawnpoint_mook : "Mook Spawnpoint" +[ + flHits(integer) : "Hits needed" : 1 + flDmgAdjust(string) : "Damage multiplier" : "1.0" + flAimAdjust(string) : "Aim modifier" : "0" + team(Choices) : "Team?" : 0 = + [ + 0 : "Undefined" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +@BaseClass base(ExtraSpawnflags) = NPC +[ + ProperName(string) : "Proper Name" : "" + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 8 : "Invulnerable" : 0 + 16: "Prisoner" : 0 + 32: "Proper Name" : 0 + 128: "WaitForScript" : 0 + 512: "Fade Corpse" : 0 + 8192: "Always Present" : 0 + ] + attacktarget(target_destination) : "Attack Target" + team(Choices) : "Team?" : 0 = + [ + 0 : "Undefined" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +@PointClass base(NPC, Target, Targetname) color(0 200 200) size(-16 -16 0, 16 16 72) = monster_gundealer : "Gun Dealer" +[ + target_classname(string) : "Target class" : "info_node" + body_type(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Jacket - Luther" + ] +] + +@PointClass base(NPC, Target, Targetname) color(0 200 200) size(-16 -16 0, 16 16 72) = monster_civilian : "Civilian" +[ + body_type(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Jacket - Slick" + 1 : "Jacket - Einstein" + 2 : "Jacket - Walter" + ] +] + +@PointClass base(NPC, Target, Targetname) color(0 200 200) size(-16 -16 0, 16 16 72) = monster_civilian_armed : "Civilian - Armed" +[ + body_type(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Jacket - Luther" + ] +] + +@PointClass base(NPC, Target, Targetname) color(0 200 200) size(-16 -16 0, 16 16 72) = monster_policeman : "Policeman" +[ + body_type(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Barney" + ] +] + +@PointClass base(NPC, Target, Targetname) color(0 200 200) size(-16 -16 0, 16 16 72) = monster_mook : "Mook" +[ + body_type(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Grunt" + ] +] + +@PointClass size(-16 -16 -4, 16 16 4 ) = prop_album : "Record album" +[ + body(Choices) : "Type" : 0 = + [ + 0 : "Red" + 1 : "Blue" + ] + album_on(integer) : "Spinning?" : 1 + album_speed(integer) : "Spin Speed" : 300 +] + +@PointClass base(RenderFields) size(-16 -16 0, 16 16 32 ) = prop_plant : "Green plant" +[ + plant_type(Choices) : "Type" : 0 = + [ + 0 : "Fern" + 1 : "Single leaf" + 2 : "Thin w/ leaves" + ] + spawnflags(flags) = + [ + 1: "Animated" : 1 + ] +] + +@PointClass base(Target, Targetname, RenderFields) size(-16 -16 0, 16 16 72 ) = prop_generic : "Generic prop" +[ + spawnflags(flags) = + [ + 1 : "Start Invisible" : 0 + 2 : "Is trigger?" : 1 + 4 : "Is animated?" : 0 + 8 : "Random rotation" : 1 + ] + model(string) : "model" + body(Integer) : "Body" : 0 + sequence(Integer) : "Sequence" : 0 + message(string) : "Message if triggered" + triggersound(string) : "Trigger Sound" : "sounds/items/gunpickup2.wav" + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] +] + +@PointClass base(Target, Targetname, RenderFields) size(-8 -8 0, 8 8 16 ) = prop_beercan : "Beer Can" +[ + can_type(Choices) : "Type" : 0 = + [ + 0 : "Can1" + 1 : "Can2" + 2 : "Can3" + 3 : "Can4" + 4 : "Can5" + 5 : "Can6" + ] + spawnflags(flags) = + [ + 1: "On its side" : 0 + ] +] + +@PointClass base(Target, Targetname, RenderFields) size(-8 -8 0, 8 8 16 ) = prop_beerbottle : "Beer Bottle" [] +@PointClass base(RenderFields) size(-8 -8 0, 8 8 16 ) = prop_pills : "Pills" [] + +@PointClass base(RenderFields) size(-8 -8 0, 8 8 16 ) = prop_money : "Money" +[ + health(integer) : "Cash amount" : 5 + spawnflags(flags) = + [ + 1 : "Persistant" : 0 + ] +] + +@PointClass base(RenderFields) size(-16 -16 0, 16 16 16 ) = money_spawner : "Money Spawner" [] + +@PointClass base(RenderFields) size(-16 -16 0, 16 16 16 ) = func_money : "Money Trigger" +[ + health(integer) : "Cash amount" : 5 + max_health(integer) : "Max dispensed" : 100 + spawnflags(flags) = + [ + 1: "Unlimited money" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields) = func_glass : "Breakable Glass" +[ + spawnflags(flags) = + [ + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 8 : "Damage gibs" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@PointClass size( -16 -16 -16, 16 16 16 ) = func_playermenu : "Player Menu Activator" [] + +//************************************************************************************* +// NEW Worldspawn - modified slightly for "The Opera"'s consumption... +// + +@BaseClass base(ExtraSpawnflags) = GameRestrictions +[ + spawnflags(flags) = + [ + 1 : "No looting" : 0 + 2 : "No round limit" : 0 + 4 : "No observers" : 0 + 8 : "No dropped weapons" : 0 + 16 : "No Action Meter" : 0 + ] +] + +@SolidClass base(GameRestrictions) = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(string) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" +] + +//************************************************************************************* +// OPERA: New modes of play... + +@PointClass size( -32 -32 -32, 32 32 32 ) = opera_equip : "Opera Equip" +[ + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] + item_classname(string) : "Item class" : "" + max_health(integer) : "Item quantity" : 1 +] + +@PointClass base(GameRestrictions) size( -32 -32 -32, 32 32 32 ) = opera_restrictions : "Opera Team Restrictions" +[ + team(Choices) : "Team?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] + nofire(integer) : "Base no fire delay" : 0 + nomovement(integer) : "Base no movement delay" : 0 +] + +//***** TEAMPLAY +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team1 : "Team ONE" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team2 : "Team TWO" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team3 : "Team THREE" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team4 : "Team FOUR" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team5 : "Team FIVE" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team6 : "Team SIX" [] +@PointClass base(Target, PlayerClass) size(-16 -16 -36, 16 16 36) = info_player_team : "Team Generic" +[ + team(Choices) : "Team?" : 1 = + [ + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +@PointClass base(Targetname) size( -32 -32 -32, 32 32 32 ) = trigger_win : "Trigger - Player WIN" +[ + health(integer) : "Cash bonus" : 1000 + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] +] + +@PointClass base(Targetname) size( -32 -32 -32, 32 32 32 ) = trigger_teamwin : "Trigger - Team WIN" +[ + max_health(integer) : "Cash bonus" : 1000 + health(integer) : "Cash bonus - Dead" : 500 + team(Choices) : "Winning team" : 0 = + [ + 0 : "Triggering player" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] +] + +@PointClass base(Targetname) size( -32 -32 -32, 32 32 32 ) = trigger_nowinner : "Trigger - NO Winner" +[ + team(Choices) : "Team restrict?" : 0 = + [ + 0 : "Any team" + 1 : "Team ONE Only" + 2 : "Team TWO Only" + 3 : "Team THREE Only" + 4 : "Team FOUR Only" + 5 : "Team FIVE Only" + 6 : "Team SIX Only" + ] +] + +// TRAINING ROOM +@PointClass size( -16 -16 -16, 16 16 16 ) = info_training_map : "Training Map" +[ + map_type(Choices) : "Map Type" : 0 = + [ + -1 : "Undefined" + 0 : "General" + 1 : "Mook Gauntlet" + 2 : "Firing Range" + 3 : "Wardrobe Room" + 4 : "Obstacle Course" + ] +] + +@SolidClass = func_areasound : "Area Sound" +[ + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size( -8 -8 -8, 8 8 8 ) = env_fire : "Fire" +[ + scale(integer) : "Size" : 10 +] + +//***** SPECIAL BRUSH ENTITIES for HOSPITAL +@SolidClass base(Breakable, RenderFields) = func_trolley : "Hospital trolley" +[ + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door) = func_door_swinging : "Swinging door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16384 : "Breakable" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion_movie : "Big Movie Explosion" +[ + m_iMagnitude(Integer) : "Magnitude" : 100 + m_iBlasts(Integer) : "Amount of blasts" : 10 + m_iBlastRadius(Integer) : "Blast damage radius" : 200 + m_iEffectRadius(Integer) : "Blast effect radius" : 50 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + ] +] + +//***** WARDROBE ROOM +@PointClass base(PlayerClass) = wardrobe_model : "Wardrobe room - Model" +[ + min_dist(string) : "Minimum view distance" : "200" + max_dist(string) : "Maximum view distance" : "500" + mirrored(Choices) : "Mirrored?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname) size( -16 -16 -16, 16 16 16 ) = opera_mookmatch : "Mookmatch" +[ + health(Integer) : "Maximum players" : -1 + mook_maximum(integer) : "Maximum mooks" : 0 + mook_frequency(string) : "Mook frequency" : "0.7" + ammo_state(Choices) : "Ammo availability" : 0 = + [ + 0 : "Normal (off)" + 1 : "Infinite" + 2 : "After mook count" + 3 : "At random" + ] + ammo_counter(Integer) : "Mook count for ammo" : 0 + ammo_rnd(string) : "Ammo randomness" : "100.0" +] + +@PointClass base(Targetname) size( -8 -8 -8, 8 8 8 ) = func_shower : "Bathroom shower" +[ + spawnflags(flags) = + [ + 1 : "Start on" : 0 + ] +] + +@PointClass base(Targetname) size( -8 -8 -8, 8 8 8 ) = func_rain : "Raindrop" [] + +@SolidClass base(Trigger) = trigger_delayed : "Trigger: Random delay" +[ + spawnflags(Flags) = + [ + 8 : "Remove On fire" : 1 + ] + wait(string) : "Delay before reset" : "10" + delay_start(integer) : "Minimum delay" : 2 + delay_end(integer) : "Maximum delay" : 4 +] + +//****************************************************************** +// OBJECTIVE SYSTEM +// For use in "The Opera" and "Wasteland Half-Life" +// Written by David "Nighthawk" Flor ( dflor@redeemedsoft.com ) +//****************************************************************** + +// Immediate success trigger. "Target" is the "info_objective_handler" +@PointClass base(Target, Targetname) size( -16 -16 -16, 16 16 16 ) = trigger_objective_success : "Target - Objective Success" +[ + team(Choices) : "Team?" : 0 = + [ + 0 : "None" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +// Immediate failure trigger. "Target" is the "info_objective_handler" +@PointClass base(Target, Targetname) size( -16 -16 -16, 16 16 16 ) = trigger_objective_failure : "Target - Objective Failure" +[ + team(Choices) : "Team?" : 0 = + [ + 0 : "None" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] +] + +// General named objective trigger. "Target" is the "info_objective_handler" +@PointClass base(Target, Targetname) size( -16 -16 -16, 16 16 16 ) = trigger_objective : "Target - Objective" +[ + iPoints(integer) : "Points awarded for triggering" : 0 + iPointsTo(choices) : "Give points to?" : 0 = + [ + 0: "All team members" + 1: "Individual player" + 2: "Everybody" + ] + szCompleted(string) : "Message on completion" : "Completed" + iNegPoints(integer) : "Points taken for failure" : 0 + iNegPointsFrom(choices) : "Take points from?" : 0 = + [ + 0: "All team members" + 1: "Individual player" + 2: "Everybody" + ] + szFailed(string) : "Message on failure" : "FAILED" + iTriggeredMsgTo(choices) : "Type of message" : 0 = + [ + 0: "Send to everyone" + 1: "Send to team members" + 2: "Send to triggering player" + 3: "Tell no one" + ] + flTimeLimit(string) : "Time limit (in seconds, 0 for none)" : "0" + team(Choices) : "Team?" : 0 = + [ + 0 : "None" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] + spawnflags(flags) = + [ + 1 : "Start timer on trigger" : 0 + ] +] + +@PointClass base(Target, Targetname) size( -16 -16 -16, 16 16 16 ) = info_objective_handler : "Objective Handler" +[ + szEquation(string) : "Objective equation" : "" + iPoints(integer) : "Points awarded for triggering" : 0 + iPointsTo(choices) : "Give points to?" : 0 = + [ + 0: "All team members" + 1: "Individual player" + 2: "Everybody" + ] + szCompleted(string) : "Message on completion" : "Completed" + iNegPoints(integer) : "Points taken for failure" : 0 + iNegPointsFrom(choices) : "Take points from?" : 0 = + [ + 0: "All team members" + 1: "Individual player" + 2: "Everybody" + ] + szFailed(string) : "Message on failure" : "FAILED" + iTriggeredMsgTo(choices) : "Type of message" : 0 = + [ + 0: "Send to everyone" + 1: "Send to team members" + 2: "Send to triggering player" + 3: "Tell no one" + ] + flTimeLimit(string) : "Time limit (in seconds, 0 for none)" : "0" + team(Choices) : "Team?" : 0 = + [ + 0 : "None" + 1 : "Team ONE" + 2 : "Team TWO" + 3 : "Team THREE" + 4 : "Team FOUR" + 5 : "Team FIVE" + 6 : "Team SIX" + ] + spawnflags(flags) = + [ + 1 : "Start timer on trigger" : 0 + ] +] + +//****************************************************************** +@SolidClass base(Trigger) = trigger_timed_usage : "Trigger: Timed Usage" +[ + flTimeRequired(string) : "Time of use before trigger" : "5" + szItemName(string) : "Item entity name" : "" + spawnflags(flags) = + [ + 1 : "Resets if interrupted" : 0 + ] +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = trigger_money : "Award/Deduct Money" +[ + szMessage(string) : "Message" : "" + iMon(integer) : "Bonus" : 0 +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/zhlt.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/zhlt.fgd new file mode 100644 index 0000000..4971e84 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/goldsource/zhlt.fgd @@ -0,0 +1,247 @@ + +// light_shadow +// It creates toggleable shadow for func_door, func_breakable, ... +@PointClass color(255 255 0) = light_shadow : "Dynamic shadow control" +[ + // Control the shadow of this solid entity. + // The solid entity must have 'Opaque' set in its lightflags. + target(target_destination) : "Target solid entity" + // Switch the light_shadow on/off will cause shadow to disappear/appear. + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// light_bounce +// Use as complement for light_shadow. +@PointClass color(255 255 0) = light_bounce : "Bounce light control" +[ + // Control the light bounced from this solid entity. + target(target_destination) : "Target solid entity" + // When the targeted entity disappear, switch on the light_shadow and switch off the light_bounce at the same time. + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// info_overview_point +// It makes all entities visible from this place. This is useful for overview mode (dev_overview 1). +// If "Reversed" is selected, this place will become visible from the entire map. This is useful for large skybox model. +@PointClass color(255 0 0) = info_overview_point : "Disable VIS here for overview" +[ + reverse(choices) : "Reversed" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_sunlight +// It generates a fake light_environment which defines sv_skycolor and sv_skyvec in game. +// If you are using multiple light_environments, you will probably need this entity. +@PointClass color(255 255 0) = info_sunlight : "light_environment information that affects model brightness" +[ + target(target_destination) : "Target" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "0 0 0 100" +] + +// func_group +// It is not a real entity. Brushes in this entity are still world brushes. +@SolidClass = func_group : "Solid brushes" +[ + zhlt_coplanarpriority(integer) : "Priority when faces overlap" : 0 + zhlt_noclip(choices) : "Passable" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_texlights +// It defines texture lights. +// Add any texture name as a key and their brightness as the value. +// Don't need to set colors because hlrad knows texture colors. +@PointClass color(255 0 0) = info_texlights : "Texture name : Brightness" +[ +] + +// info_smoothvalue +// It specifies smoothing threshold angle for each texture. +@PointClass color(255 0 0) = info_smoothvalue : "Texture name : Threshold of smooth angle" +[ +] + +// info_translucent +// It defines translucent effect for textures. +// 0.0 = normal (only receive light from front), 1.0 = receive 100% light from back and 0% from front. +// Can be used to simulate materials like fabric, coarse glass, plastic. +// The thickness of brush with translucent textures can not exceed 2 units. +@PointClass color(255 0 0) = info_translucent : "Texture name : translucent amount (0.0-1.0)" +[ +] + +// info_angularfade +// It gives textures metal like look. +// 1.0 = normal; higher value = brightness decrease more quickly when the angle increases +// Do not use this effect too much, because it looks unnatural and exaggerated. +@PointClass color(255 0 0) = info_angularfade : "Texture name : the speed at which light fade as its direction becomes parellel to the texture (default 1.0)" +[ +] + +// light_surface +// It defines texture lights. +// It is recommended to replace lights.rad and info_texlights with this entity. +@PointClass color(255 255 0) = light_surface : "Advanced texture light" +[ + _tex(string) : "Texture name" : "" // texture name (not case sensitive) + _frange(string) : " Filter max distance" : "" // max distance from face center to this entity + _fdist(string) : " Filter max dist to plane" : "" // max distance from face plane to this entity + _fclass(string) : " Filter entity classname" : "" + _fname(string) : " Filter entity name" : "" + _light(color255) : "Texture brightness" : "255 255 255 80" // value >= 80 will ensure full brightness. Colored brightness is not recommended. + _texcolor(color255) : " Color(replace texture color)" : "" // emit light as if the texture is in this color + // Note: + // If you want to set cone angle or any other value to 0, + // '0.0' should be used instead of '0'. + // This is a bug in Hammer. + _cone(string) : " Inner(bright) angle(90default)" : "" // should be 90 for conventional texlights + _cone2(string) : " Outer(fading) angle(90default)" : "" // should be 90 for conventional texlights + _scale(string) : " Adjust emit scale(1.0default)" : "" // 0.0 = no emitting + _chop(string) : " Grid size of sampling" : "" // in inch; not affected by texture scale + _texlightgap(choices) : " Dark gap in front of texlight" : "" = // in texture pixels; size of dark area near the light source + [ + "": "Default (no gap)" + "0.0": "0.0 - no gap" + "3.0": "3.0 - small gap" + "12.0": "12.0 - large gap" + ] + _fast(choices) : " Fast" : "" = + [ + "": "Auto" + 1: "Yes" + 2: "No" + ] + // 'light_surface' will not be recognized by the game if we don't change its classname. + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + targetname(target_source) : " Name" : "" // create a new light style with this name + style(choices) : " Appearance (no name allowed)" : "" = // use predefined light styles which have predefined patterns + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + // Light of the same style share the same pattern. + pattern(string) : " Custom Appearance" : "" // pattern defined by a sequence of letters + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// func_detail +// Similar in function to the func_detail in Source, though it is still subject to the bsp file format. +@SolidClass = func_detail : "Detail brushes" +[ + // You can leave the detail level to 1. For tiny objects, you might set to 2, so that they won't chop faces of other func_details. + zhlt_detaillevel(integer) : "Detail level" : 1 + // For large shapes such as terrain and walls, set this to no less than their detail level, so that they can chop the faces of adjacent world brushes. + zhlt_chopdown(integer) : "Lower its level to chop others" : 0 + // Usually you don't have to use this. + zhlt_chopup(integer) : "Raise its level to get chopped" : 0 + // For brushes in the same detail level and have overlapping faces (which are on the same plane), this priority determines which one will appear. + zhlt_coplanarpriority(integer) : "Priority when faces overlap" : 0 + // Setting this to 0 will reduce clipnode count, but will lose the benefit of func_detail's better content deciding method which is designed to prevent "Ambiguous leafnode contents" problem. + zhlt_clipnodedetaillevel(integer) : "Detail level of cliphulls" : 1 + // Very useful option which can reduce clipnode count. + zhlt_noclip(choices) : "Passable" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_hullshape +// It replaces the default cuboid shape of the player when generating collision hulls for certain brushes. +@SolidClass = info_hullshape : "Hull shape definition" +[ + targetname(target_source) : "Name" + defaulthulls(choices) : "Set as default shape" : "" = + [ + "": "No" + 2: "for hull 1" + 4: "for hull 2" + 8: "for hull 3" + ] + disabled(choices) : "Disable this entity" : "" = + [ + "": "No" + 1: "Yes" + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/gunman.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/gunman.fgd new file mode 100644 index 0000000..348b9f7 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/gunman.fgd @@ -0,0 +1,2887 @@ +// +// Gunman Chronicles game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// original version from +// https://developer.valvesoftware.com/wiki/Gunman.fgd +// modified by H-3D +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Map Description / Title" + skyname(sky) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 : "CD track to play when the level begins." + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : : "Set the default wave height here (can be overridden by the properties in func_water)." + MaxRange(string) : "Max viewable distance" : "4096" : "Maximum distance the player can see." + chaptertitle(string) : "Chapter Title Message" : "" : "Text displayed when entering the level." + startdark(choices) : "Level Fade In" : 0 : "If Yes, then the level will start black and fade into normal light." = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 : "Game title that appears onscreen when this level starts." = + [ + 0 : "No" : "Don't display game title sprite." + 1 : "Yes" : "Display game title sprite." + ] + newunit(choices) : "New Level Unit" : 0 : "Used to clear out savegame data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = + [ + 0 : "No, keep current" : "Keeps all globals alive." + 1 : "Yes, clear previous levels" : "Flushes all globals." + ] + mapteams(string) : "Map Team List" : : "This will be copied into the mp_teamlist while your map is running if the server allows maps to override the team list." + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" : : "Sequence to display in Jackhammer. This does not affect gameplay." +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Sets the pitch (up / down), yaw (left / right) and roll (bank) respectively. The compass in Jackhammer corresponds to Yaw. The settings are not always (or not all) used." +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" : : "When an entity is activated, it triggers the entity with the name specified by Target." +] + + +@BaseClass = Item +[ + nopickupsound(integer) : "No Pickup Sound" : 0 +] + +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Item) = Weapon [] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + killtarget(target_destination) : "KillTarget" : : "When an entity is triggered, it will remove from the game the entity specified by this property." +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags) flags(Angle) size(-16 -16 -36, 16 16 36) color(0 255 0) offset(0 0 36) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields) flags(Angle) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] + + spawndeadpose(Choices) : "Spawn Dead" : 0 = + [ + 36 : "Normal Die" + 37 : "Backward" + 38 : "Forward" + 39 : "Violent" + 66 : "HeadShot" + 67 : "ChestShot" + 68 : "GutShot" + 69 : "BackShot" + ] + + netname(string) : "Squadname for Squadmonsters" : "" +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + targetname (target_source) : "Name" + + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + + + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Mayan Block" + 5: "Ice" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "item_battery" + 2: "item_healthkit" + 3: "weapon_fists" + 4: "weapon_shotgun" + 5: "weapon_SPchemicalgun" + 6: "weapon_beamgun" + 7: "weapon_minigun" + 8: "weapon_dml" + 9: "weapon_gausspistol" + 10: "ammo_buckshot" + 11: "ammo_chemical" + 12: "ammo_beamgunclip" + 13: "ammo_minigunClip" + 14: "ammo_dmlclip" + 15: "ammo_gaussclip" + 16: "weapon_gausspistol" + 17: "entity_clustergod" + 18: "cust_2MinigunCooled" + 19: "cust_2GaussPistolSniper" + 20: "item_armor" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + + + +@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, ZHLT) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds, ZHLT) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) flags(Angle) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + corpse_offset(integer) : "Offset for teleporting" : 0 + + m_iszAnimMovement(string) : "Movement Animation" : "" + + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 1 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + +@PointClass base(Weapon, Targetx) studio("models/beamgunammo.mdl") = ammo_beamgunclip : "BeamGun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/shotgunammo.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/chem_ammo.mdl") = ammo_chemical : "ChemGun Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/dmlammo.mdl") = ammo_dmlclip : "DML Ammo Clip" [] +@PointClass base(Weapon, Targetx) studio("models/dmlrocket.mdl") = ammo_dmlsingle : "DML Ammo Single" [] +@PointClass base(Weapon, Targetx) studio("models/guassammo.mdl") = ammo_gaussclip : "Gauss Pistol Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/mechammo.mdl") = ammo_minigunClip : "MiniGun Ammo" [] + + +@PointClass size( -16 -16 0, 16 16 16) = button_aiwallplug : "AIWallPlug Button" +[ + target(target_destination) : "Targetted object" + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + 256: "Leave Core In: " : 0 + ] +] + +@SolidClass base(Target) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 1 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +//Cust + +@PointClass base(Weapon, Targetx) studio("models/w_snipercase.mdl") = cust_2GaussPistolSniper : "Sniper Kit" [] +@PointClass base(Weapon, Targetx) studio("models/w_coolers.mdl") = cust_2MinigunCooled : "Barrel Cooler Item" [] + + + +@PointClass base(Monster, Sequence) flags(Angle) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + + + +// +// cyclers +// + +@PointClass base(Targetname, Angles, Sequence) flags(Angle) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) flags(Angle) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +//Decore + +@PointClass size( -16 -16 0, 16 16 40) = decore_asteroid : "Asteroid" +[ + asteroidsize(choices) : "Asteriod type" : 1 = + [ + 0 : "big asteroid" + 1 : "medium asteroid" + 2 : "small asteroid" + ] +] + +@PointClass size( -24 -24 -24, 24 24 24) = decore_aicore : "insert AI here"[] +@PointClass size( -16 -16 0, 16 16 16) = decore_baboon : "Decoration Hanging Baboon"[] + +@PointClass size( -16 -16 0, 16 16 40) = decore_bodygib : "Sprawled bitten human body"[] +@PointClass size( -16 -16 0, 16 16 40) = decore_butterflyflock : "Spawns a flock of butterflies" +[ + iFlockSize(integer) : "Number of butterflies" : 10 + flFlockRadius(integer) : "RADIUS of Spawning(KEEP SAFE!!)" : 0 +] +@PointClass size(-16 -16 0, 16 16 64) = decore_cactus : "Decoration Cactus"[] + + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 16) = decore_cam : "Decoration Cam"[] + +@PointClass size( -16 -16 0, 16 16 40) = decore_corpse : "Generic Body/Death Spawn - MIGHT NOT BE FUNCTIONING" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "On Back" + 3 : "Seated" + ] + creaturetype(choices) : "Monsters Type" : 0 = + [ + 0 : "Rustbot" + 1 : "NOT YET Rustbit" + 2 : "NOT YET Gunner" + 3 : "NOT YET Beak" + 4 : "NOT YET Critter" + 5 : "NOT YET Hiveback" + 6 : "NOT YET Tube" + 7 : "NOT YET Tubeball" + 8 : "NOT YET Xenome" + 9 : "NOT YET Gator" + 10 : "NOT YET Ourano" + 11 : "NOT YET Penta" + 12 : "NOT YET Raptor" + ] +] +@PointClass base(Monster) size(-32 -32 -16, 32 32 16)= decore_eagle : "eagle" [] +@PointClass base(Targetname, RenderFxChoices, RenderFields) = decore_explodable : "Exploding Gibbing Decore" +[ + decoremodel(studio) : "Model" : "models/dropship.mdl" + decoregib(studio) : "Gib Model" : "models/gunnergibs.mdl" + decoreidle(string) : "Idle Anim" : "idle" + decoreaction(string) : "Action Anim" : "none" +] +@PointClass size(-24 -24 -24, 24 24 24) = decore_foot : "giant scripted dino foot"[] +@PointClass base(Monster) size(-10 -10 -12, 10 10 12) = decore_goldskull : "Decoration GoldenSkull"[] +@PointClass size(-16 -16 0, 16 16 40) = decore_gutspile : "Discusting Pile of Human"[] +@PointClass size(-16 -16 0, 16 16 40) = decore_hatgib : "Bandit hat"[] +@PointClass base(Monster) size(-16 -16 0, 16 16 40) = decore_ice : "Decore Ice" +[ + beakinside (choices) : "W/O Filling" : 0 = + [ + 0 : "Normal Ice" + 1 : "Beak Inside" + ] +] +@PointClass size(-16 -16 0, 16 16 16) = decore_mushroom : "Decoration Mushroom"[] +@PointClass size(-16 -16 0, 16 16 16) = decore_mushroom2 : "Decoration Mushroom2"[] +@PointClass size(-32 -32 0, 32 32 16) = decore_nest : "Ourano nest"[] +@PointClass size(-16 -16 -16, 16 16 0) = decore_pipes : "Hanging Pipes"[] +@PointClass size(-8 -8 0, 8 8 8) = decore_prickle: "Decoration Prickle"[] +@PointClass base(Monster) size(-32 -32 -16, 32 32 16) = decore_pteradon : "Pteradon"[] +@PointClass size( -32 -32 0, 32 32 64) = decore_sittingtubemortar : "TubeMortar Standing"[] +@PointClass size(-48 -48 -16, 48 48 16) = decore_scripted_boulder : "Scripted boulder(mayan)"[] + +@PointClass base(Targetname,Target) = decore_spacedebris: "SpaceDebris" +[ + modelname(string) : "Model" : "" + forwardspeed(string) : "Speed" : "100" + anglespeed(string) : "SpinSpeed" : "100" + debrislife(string) : "Life" : "10" + +] + + +@PointClass size(-16 -16 0, 16 16 64) = decore_swampplants : "Decoration SwampPlants" +[ + body (Choices) : "Plant Type" : 0 = + [ + 0 : "Leafy" + 1 : "Stalky" + 2 : "3 Lily" + 3 : "1 Lily w/flower" + 4 : "1 lily" + 5 : "1 lily smaller" + ] +] + +@PointClass size(-8 -8 -8, 8 8 16) = decore_torch : "Torch with a Flame"[] +@PointClass size(-4 -4 -8, 4 4 16) = decore_torchflame : "Flame Like Torch Flame"[] +@PointClass base(Targetname) size(-4 -4 -4, 4 4 8) = demoman_mine : "Demoman Proximity Mine"[] + +@PointClass size(-16 -16 0, 16 16 16) = entity_clustergod : "Spawns Cluster Grenades"[] + +@PointClass base(Targetname,Target) = entity_digitgod : "Digit God" +[ + maxdamage(integer) : "Max Damage Before Use" : 500 +] + +@PointClass base(Targetname) sprite() = entity_spritegod : "SpriteSpray" +[ + spritename(sprite) : "Sprite" : "" + spritenoise(integer) : "Noise" : 50 + spritespeed(integer) : "Speed" : 100 + spritestartstate(choices) : "Start State" : 1 = + [ + 0: "Off" + 1: "On" + ] + spritecount(integer) : "NumberPerSpray" : 1 + spritefreq(integer) : "Frequence-dividedBy10" : 5 + spritex(integer) : "x Direction" : 0 + spritey(integer) : "y Direction" : 0 + spritez(integer) : "z Direction" : 0 + targetent(target_destination) : "Target" : "" +] + + +@PointClass size(-4 -4 -4, 4 4 4) = entity_volcanoSpew : "Volcano Eruption"[] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 0, 16 16 16) = env_clusterExplosion: "Cluster Grenade Spawn" +[ + clusterDamage(integer) : "Damage of Cluster Grenades" : 40 + numGrenades(integer) : "Number of grenades" : 4 + spawnflags(flags) = + [ + 2 : "Repeatable" : 0 + ] + +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 1 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tanklaserrust : "Rust Eye Laser" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + + + +@PointClass = func_wind : "Wind creator entity (see leaf doc for more info) DEFAULT VALUES ARE NOT TESTED AND TO BE CHANGED" +[ + minamp(string) : "Minimum amplitude of the wind " : "1" + maxamp(string) : "Maximum amplitude of the wind" : "5" + minfreq(string) : "Minimum frequency of wind speed changes" : "1" + maxfreq(string) : "Maximum frequency of wind speed changes" : "5" + dir_x(string) : "Direction of the wind (X component)" : "1" + dir_y(string) : "Direction of the wind (Y component)" : "1" + dir_z(string) : "Direction of the wind (Z component)" : "1" +] + + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 1 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio() = gunman_cycler : "Gunman Cycler" +[ + model(studio) : "model" + cyc_submodel1(integer) : "Body1" : 1 + cyc_submodel2(integer) : "Body2" : 1 + cyc_submodel3(integer) : "Body3" : 1 +] + + +@PointClass base(Targetname) = hologram_beak : "Hologram Beak" +[ + creaturetype(choices) : "CreatureType" : 0 = + [ + 0 : "Beak" + 1 : "Tube" + 2 : "MicroRaptor" + ] + + targetfail(target_source) : "Failname" +] + +@PointClass base(Targetname,Target) = hologram_damage : "Hologram Damage" +[ + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "gauss-pulse" + 1 : "gauss-charged" + 2 : "gauss-rapid" + 3 : "gauss-sniper" + 4 : "generic-bullet" + 5 : "chemgun acid damage" + 6 : "chemgun base damage" + 7 : "chemgun explosive damage" + 8 : "chemgun smoke damage" + ] + + targetfail(target_source) : "Failname" + creaturetype(choices) : "CreatureType" : 0 = + [ + 0 : "Beak" + 1 : "Tube" + 2 : "MicroRaptor" + ] +] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Target) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/w_armor.mdl") = item_armor : "Armor Jacket" [] +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/gastank.mdl") = item_gascan : "Gas for the Tank" [] +@PointClass base(Item) size (-16 -16 0, 16 16 36) studio("models/w_medkit.mdl") = item_healthkit : "Small Health Kit" [] + +// +// lights +// + +@PointClass iconsprite("sprites/light.spr") base(Target, Targetname, Light, ZHLT_point) flags(Light) = light : "Invisible lightsource." : "http://twhl.info/wiki.php?id=148" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] +] + +@PointClass iconsprite("sprites/light.spr") base(Targetname, Target, Angles, ZHLT_point) flags(Light) = light_spot : "The light_spot entity allows you to create direct beams of light (like from a, err, spotlight)." : "http://twhl.info/wiki.php?id=147" +[ + _cone(integer) : "Inner (bright) angle" : 30 : "The angle of the cone formed around the directional axis. The area inside this cone will contain the brightest light." + _cone2(integer) : "Outer (fading) angle" : 45 : "As above, although the area inside this cone will fade increasingly towards the outer edges." + pitch(integer) : "Pitch" : -90 : "The pitch of the light (-90 is straight down, 90 is straight up)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + _sky(Choices) : "Is Sky" : 0 : "If Yes, the spot_light will affect the sky brushes, rather than project any light itself." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] + style(Choices) : "Appearance" : 0 : "Light appearance. Values:" = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/light_environment.spr") flags(Light) = light_environment : "This entity makes a map's sky emit light. The only practical way of lighting outdoor maps." : "http://twhl.info/wiki.php?id=146" +[ + pitch(integer) : "Pitch" : 0 : "A negative number will give downward pitch (which is normally what you want)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = meteor_god : "Meteor God" +[ + typestreak(integer) : "Ratio of Streakers" : 1 + typelarge(integer) : "Ratio of Large Meteors" : 1 + typesmall(integer) : "Ratio of Small Meteors" : 1 + dropsizex(string) : "Half X Distance" : "0" + dropsizey(string) : "Half Y Distance" : "0" + mindropfreq(string) : "Min Drop Frequency in Seconds" : "1" + maxdropfreq(string) : "Max Drop Frequency in Seconds" : "5" + pitch(string): "Pitch" : "-90" + debris(choices) : "Debris Dropped" : 1 = + [ + 1 : "No Debris" + 2 : "Debris" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = meteor_target : "Target Meteor" +[ + pitch(string) : "Pitch" : "-90" + heightabove(string) : "Height Above" : "4096" + type(choices) : "Meteor Type" : 2 = + [ + 0 : "Streak" + 1 : "Small" + 2 : "Large" + ] +] + +@SolidClass base(RenderFields, Targetname, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +// +// monsters +// + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 40) studio("models/beak.mdl") = monster_beak : "Xenome Beak" [] +@PointClass base(Monster, Sequence) size(-4 -4 -4, 4 4 4) studio("models/cricket.mdl") = monster_cricket : "Cricket" +[ + _skin(integer) : "_skin" : 0 +] + +@PointClass base(Monster, Sequence) size( -48 -48 0, 48 48 64 ) studio("models/critter.mdl") = monster_critter : "Xenome Critter" [] + +@PointClass base(Monster) size(-12 -12 -12, 12 12 12) = monster_darttrap : "DartTrapShooter" +[ + dartcount(integer) : "Darts to fire(-1 is infinite)" : -1 + timebetweenshots(string) : "Frequency of firing" : "0.1" + spread(integer) : "spread in degrees" : 10 +] + +@PointClass base(Monster, Sequence) size(-5 -5 0, 5 5 2) studio("models/dragonfly.mdl") = monster_dragonfly : "Dragon Fly" [] + +@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_flashlight : "Monster With Flashlight" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] + +@PointClass base(Monster, Sequence) size(-48 -48 0, 48 48 300) studio("models/endboss.mdl") = monster_endboss : "Monster EndBoss" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] + +@PointClass base(Monster, Sequence) size(-35 -35 -48, 35 35 -35) studio("models/gator.mdl") = monster_gator : "Animal Gator" [] + +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] + +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 150) studio("models/aigunner.mdl") = monster_gunner_friendly : "Monster Gunner Friendly"[] + +@PointClass base(Monster, Sequence) size(-25 -25 -20, 1 1 2) studio("models/hatchet.mdl") = monster_hatchetfish : "Hatchetfish" +[ + skin(choices) : "Skin" : 0 = + [ + 0: "Light" + 1: "Dark" + ] +] + +@PointClass base(Monster, Sequence) size(-50 -50 -45, 50 50 50) = monster_hiveback : "Xenome Hiveback" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/bandit.mdl") = monster_human_bandit : "Human Bandit" +[ + StartDrawn(Choices) : "Gun Drawn" : 1 = + [ + 2 : "No" + 1 : "Yes" + ] + +MechaGunBandit(Choices) : "Is a MechBandit" : 0 = +[ + 0 : "No" + 1 : "Yes" +] + + body(Choices) : "Head" : 0 = + [ + 0 : "Random" + 1 : "Original" + 2 : "Bandana" + 3 : "Tail" + 4 : "Pilot" + 5 : "!!Headless!!" + ] +] + +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) studio("models/chopper.mdl") = monster_human_chopper : "bandit chopper" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/demolitionman.mdl") = monster_human_demoman : "Human Demoman" [] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gunmantrooper.mdl") = monster_human_gunman : "Human Gunman Friendly" +[ + healthvalue(integer) : "Heath" : 100 + + gunstate(Choices) : "Gun state" : 1 = + [ + 1 : "Drawn" + 2 : "None" + ] + + gn_answer(string) : "Answer Group" : "" + gn_question(string) : "Question Group" : "" + gn_idle(string) : "Idle Talk Group" : "" + gn_stare(string) : "Player Staring at me Group" : "" + gn_use(string) : "Player Used Me Group" : "" + gn_unuse(string) : "Player Used Me Again" : "" + gn_stop(string) : "Can't Do it" : "" + gn_noshoot(string) : "Friendly, Don't shoot Group" : "GN_DONTSHOOT" + gn_hello(string) : "Hello Player Group" : "" + gn_plhurt1(string) : "You are Very Hurt Group" : "" + gn_plhurt2(string) : "You are Pretty Hurt Group" : "" + gn_plhurt3(string) : "You are Hurt a Bit Group" : "" + gn_phello(string) : "Predisaster Hello Group" : "" + gn_pidle(string) : "Predisaster Idle Group" : "" + gn_pquestion(string) : "Predisaster Question Group" : "" + gn_smell(string) : "Talk About Smell Group" : "" + gn_wound(string) : "I was hurt Group" : "" + gn_mortal(string) : "I was Very Hurt Group" : "" + gn_kill(string) : "I just killed something Group" : "" + gn_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/evil_scientist.mdl") = monster_human_scientist : "Human Evil Scientist" +[ + skin(Choices) : "Suit Color" : 0 = + [ + 0 : "White Suit" + 1 : "Red Suit" + 2 : "Bloody" + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gunmantrooper_ng.mdl") = monster_human_unarmed : "Unarmed Gunman" +[ + gunstate(Choices) : "Gun state" : 0 = + [ + 0 : "Holstered" + 1 : "Drawn" + 2 : "None" + ] + + gn_answer(string) : "Answer Group" : "" + gn_question(string) : "Question Group" : "" + gn_idle(string) : "Idle Talk Group" : "" + gn_stare(string) : "Player Staring at me Group" : "" + gn_use(string) : "Player Used Me Group" : "" + gn_unuse(string) : "Player Used Me Again" : "" + gn_stop(string) : "Can't Do it" : "" + gn_noshoot(string) : "Friendly, Don't shoot Group" : "GN_DONTSHOOT" + gn_hello(string) : "Hello Player Group" : "" + gn_plhurt1(string) : "You are Very Hurt Group" : "" + gn_plhurt2(string) : "You are Pretty Hurt Group" : "" + gn_plhurt3(string) : "You are Hurt a Bit Group" : "" + gn_phello(string) : "Predisaster Hello Group" : "" + gn_pidle(string) : "Predisaster Idle Group" : "" + gn_pquestion(string) : "Predisaster Question Group" : "" + gn_smell(string) : "Talk About Smell Group" : "" + gn_wound(string) : "I was hurt Group" : "" + gn_mortal(string) : "I was Very Hurt Group" : "" + gn_kill(string) : "I just killed something Group" : "" + gn_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Sequence) size(-24 -24 0, 24 24 36) studio("models/scorpion_large.mdl") = monster_largescorpion : "Animal Large Scorpion" +[ + _skin(integer) : "_skin" : 0 +] + +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) studio("models/tank.mdl") = monster_tank : "Scripted Tank" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 32 : "Point entity" : 0 + ] +] + +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) = monster_manta : "Manta ship script bombs" [] + +@PointClass base(Monster, Sequence) size(-16 -16 -16, 16 16 16) studio("models/raptor.mdl") = monster_microraptor : "Small raptor" [] +@PointClass base(Monster, Sequence) size(-40 -40 -5, 40 40 60) studio("models/ourano.mdl") = monster_ourano : "Animal Ourano" [] +@PointClass base(Monster, Sequence) size(-70 -70 -40, 70 70 60) studio("models/penta.mdl") = monster_penta : "Animal Pentaceratops" [] +@PointClass base(Monster, Sequence) size(-32 -32 -45, 32 32 20) studio("models/rheptor.mdl") = monster_raptor : "Animal Raptor" +[ + skin(choices) : "Skin" : 0 = + [ + 0: "Green" + 1: "Red" + ] +] + +@PointClass base(Monster, Sequence) size(-16 -16 -16, 16 16 16) = monster_rustbattery: "Rust Rustbattery" [] +@PointClass base(Monster, Sequence) size(-36 -36 -5, 36 36 40) studio("models/rustbit.mdl") = monster_rustbit : "Rust Rustbit" [] +@PointClass base(Monster, Sequence) size(-36 -36 -5, 36 36 40) studio("models/rustbit.mdl") = monster_rustbit_friendly : "Friendly Rust Rustbit"[] +@PointClass base(Monster, Sequence) size(-36 -36 -16, 36 36 48) studio("models/rustbot.mdl") = monster_rustbot : "Rust Rustbot" [] +@PointClass base(Monster, Sequence) size(-36 -36 -16, 36 36 48) studio("models/rustbot.mdl") = monster_rustbot_friendly : "Friendly Rust Rustbot"[] + +@PointClass base(Monster, Sequence) size(-64 -64 0, 64 64 64) studio("models/rustflyer.mdl") = monster_rustflier : "Rust Flier" +[ + // Allow the mapper to set the shield status + startshieldstate(Choices) : "Starting state of Shield" : 1 = + [ + 0 : "Off" + 1 : "On" + ] + + targetdamage(string) : "Target and die when this damage is taken at once" : "10000" + deathpath(string) : "Name of path to fly to when killed" : "" + timetillcrash(string) : "Time till we want to reach death point" : "10" + deathangle(string) : "Angle be at when we reach deathpath" : "0 0 0" + triggerondeath(string) : "Triggered when killed" : "" +] + +@PointClass base(Monster, Sequence) size(-45 -45 0, 45 45 140) studio("models/gunner.mdl") = monster_rustgunr : "Rust Gunner" [] +@PointClass base(Monster, TalkMonster, Sequence) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + knife(integer) : "Knife" : 0 + + skin(Choices) : "Suit Color" : 0 = + [ + 0 : "White Suit" + 1 : "Red Suit" + 2 : "Bloody" + ] + + clearvoice(Choices) : "Clear Voice Channel On Scared" : 0 = + [ + 0 : "Don't clear channels" + 1 : "Clear on scared" + ] + + blocksound(Choices) : "Responds to sounds" : 0 = + [ + 0 : "Normal Sound Response" + 1 : "No Sound Response" + ] + + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Young" + 1 : "Bald" + 2 : "Beard" + 3 : "Mask" + ] + + sc_answer(string) : "Answer Group" : "" + sc_question(string) : "Question Group" : "" + sc_idle(string) : "Idle Talk Group" : "" + sc_stare(string) : "Player Staring at me Group" : "" + sc_use(string) : "Player Used Me Group" : "" + sc_unuse(string) : "Player Used Me Again" : "" + sc_stop(string) : "Can't Do it" : "" + sc_noshoot(string) : "Don't shoot Group" : "SC_DONTSHOOT" + sc_hello(string) : "Hello Player Group" : "" + sc_plhurt1(string) : "You are Very Hurt Group" : "" + sc_plhurt2(string) : "You are Pretty Hurt Group" : "" + sc_plhurt3(string) : "You are Hurt a Bit Group" : "" + sc_phello(string) : "Predisaster Hello Group" : "" + sc_pidle(string) : "Predisaster Idle Group" : "" + sc_pquestion(string) : "Predisaster Question Group" : "" + sc_smell(string) : "Talk About Smell Group" : "" + sc_wound(string) : "I was hurt Group" : "" + sc_mortal(string) : "I was Very Hurt Group" : "" + sc_kill(string) : "I just killed something Group" : "" + sc_attack(string) : "I see one! Group" : "" +] + +@PointClass base(Monster, Angles) size(-32 -32 0, 32 32 64) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster, Angles) size(-16 -16 0, 16 16 32) studio("models/small_sentry.mdl") = monster_sentry_mini : "Small Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Young" + 1 : "Bald" + 2 : "Beard" + 3 : "Mask" + ] +] + +@PointClass base(Monster) size(-12 -12 0, 12 12 24) studio("models/scorp.mdl") = monster_scorpion : "Animal Scorpion" +[ + _skin(integer) : "_skin" : 0 +] +@PointClass base(Monster) size(-12 -12 -12, 12 12 12) = monster_targetrocket : "On Targeting, FireRocketAtTarget"[] +@PointClass base(Monster) size(-16 -16 0, 16 16 40) studio("models/battbot.mdl") = monster_trainingbot : "Training bot" +[ + spawnflags(Flags) = + [ + 1024 : "No Distortion Rings" : 0 + ] + +] +@PointClass base(Monster) size(-32 -32 -28, 32 32 24) studio("models/tube.mdl") = monster_tube : "Xenome Tube" [] +@PointClass base(Monster) size( -12 -12 -16, 12 12 24) studio("models/tubryo.mdl") = monster_tube_embryo : "TubeEmbryo"[] +@PointClass base(Monster) size(-32 -32 0, 32 32 50) studio("models/xenome.mdl") = monster_xenome : "Xenome Xenome" [] +@PointClass base(Monster) size( -6 -6 -6, 6 6 12) studio("models/xmbryo.mdl") = monster_xenome_embryo : "XenomeEmbryo"[] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + 16: "Warp In Effect" : 0 + 32: "Dont Fall to Ground" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 + + // give the mappers a way of sying directly if a monster fades or not + fadestatus(Choices) : "Fade on Death" : -1 = + [ + -1 : "Default Handling" + 0 : "Dont Fade" + 1 : "Fade" + ] + + // skin option for setting childrens skin + _skin(integer) : "Childrens Skin" : 0 +] + +@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 + angles(string) : "X Y Z angles" +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + 16: "Teleport" : 0 + + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_giveitems : "give player weapons" +[ + spawnflags(Flags) = + [ + 1: "Fists" : 0 + 2: "Pistol" : 0 + 4: "Sniper" : 0 + 8: "Shotgun" : 0 + 16: "Mechagun" : 0 + 32: "Coolers" : 0 + 64: "Beamgun" : 0 + 128: "Dml" : 0 + 256: "Chemgun" : 0 + 512: "Aicore" : 0 + 1024: "Armor" : 0 + 2048: "Healthkit1" : 0 + 4096: "Healthkit2" : 0 + 8192: "Healthkit3" : 0 + 16384: "Healthkit4" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_speaker : "Player Speaker" +[ + sentencegroup(string) : "Name of group to play" : "!GENERAL1" + sentencelength(string) : "Length of sentence" : "5.0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_togglehud : "Player Toggle Hud"[] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass iconsprite("sprites/speaker.spr") = random_speaker : "Random Time Wav Player" +[ + rsnoise(sound) : "Path/filename.wav of WAV" + volume(string) : "Volume (0 to 1)" : "1" + wait(string) : "Minimum time for sound repetition" : "10" + random(string) : "Random % of this added to wait" : "20" +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 16) = random_trigger : "Random Trigger" +[ + start_state(Choices) : "Start State" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + wait(string) : "Min Random Time" : "5" + random_min(string) : "Min Random Time Added" : "5" + random_max(string) : "Max Random Time Added" : "10" +] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx) flags(Angle) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + 6 : "walk and face player" + 7 : "run and face player" + 8 : "turn and face player" + + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = sphere_explosion : "Exposion Effect Entity" +[ + maxradius(string) : "Length of Effect" : "200" + radiusstep(integer) : "Speed of Expansion" : 4 + trans(integer) : "Starting transparency of sphere" : 255 + transstep(integer) : "Speed of Fade out" : 5 + numtracers(choices) : "Tracers" : 1 = + [ + 0 : "No tracers" + 1 : "15 tracers" + ] + + shockwave(choices) : "Ring" : 1 = + [ + 0 : "No ring" + 1 : "ring" + ] + + implosion(choices) : "Implosion" : 0 = + [ + 0 : "No implosion" + 1 : "Imposion" + ] + + shakeduration(integer) : "Length of shake" : 0 + fadeholdtime(string) : "time between fades" : "0.1" + fadetime(string) : "time till fade in (0 for never)" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = targ_speaker : "targeted Time Wav Player" +[ + targetname(target_source) : "Name" + tsnoise(sound) : "path/name.wav" : "path/name.wav" + volume(string) : "Volume (0 to 1)" : "1" +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 1 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + + + +@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" + instantangle(choices) : "Instant Angle" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + overridehack(choices) : "Override Hack" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@PointClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@PointClass base(Trigger) = trigger_gunmanteleport : "Trigger Gunman Teleport" [] +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + + +@SolidClass base(Trigger) = trigger_tank : "Tank Trigger"[] +@SolidClass base(Trigger) = trigger_tankoutofgas : "Tank Trigger out of Gas"[] +@SolidClass base(Trigger) = trigger_tankshell : "TankShellTriggered"[] +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] +//@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] +//@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" +[ + landmark(string) : "Landmark name" +] + +@PointClass = vehicle_tank: "Vehicle_tank" +[ + vehicle_id(integer) : "Tank Id" : 1 + spawnflags(flags) = + [ + 1 : "No Turret Weapons" : 0 + 2 : "No Machine Guns" : 0 + ] + vehicle_volume(string) : "Volume Adj Value (0 to 1)" : "1" +] +// +// weapons +// + +@PointClass base(Weapon, Targetx, Angles) studio("models/w_knife.mdl") = weapon_fists : "Fists" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_beam.mdl") = weapon_beamgun : "BeamGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_dml.mdl") = weapon_dml : "DualMissileLauncher" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_gauss.mdl") = weapon_gausspistol : "Gauss Pistol" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_mechagun.mdl") = weapon_minigun : "MiniGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_chemgun.mdl") = weapon_SPchemicalgun : "ChemGun" [] +@PointClass base(Weapon, Targetx, Angles) studio("models/w_aicore.mdl") = weapon_aicore : "AI Core Pickup" [] + + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife-op4.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife-op4.fgd new file mode 100644 index 0000000..b997f18 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife-op4.fgd @@ -0,0 +1,3289 @@ +// +// Half-Life Opposing Force game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// Based on Half-Life .fgd version 1.7 with changes and additions for +// Opposing Force addon pack +// +// modified by TCHORGO / http://www.moddb.com/members/tchorgo +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "This is the world entity. Each map can only contain one, and it's automatically created for you." : "http://twhl.info/wiki.php?id=162" +[ + message(string) : "Map Description / Title" + skyname(sky) : "environment map (cl_skyname)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" + MaxRange(string) : "Max viewable distance" : "4096" + chaptertitle(string) : "Chapter Title Message" + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + mapteams(string) : "Map Team List" : "grunt;scientist" + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] + defaultctf(choices) : "Default CTF" : 0 = + [ + 0 : "Not CTF map" + 1 : "CTF map" + ] +] + +// +// BaseClasses +// + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" : : "Sequence to display in Jackhammer. This does not affect gameplay." +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags, Angles) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" +] +@BaseClass = Target +[ + target(target_destination) : "Target" +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + killtarget(target_destination) : "KillTarget" + delay(string) : "Delay before trigger" : "0" +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) flags(Angle) size(-16 -16 -36, 16 16 36) color(0 255 0) offset(0 0 36) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) flags(Angle) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" + TriggerCondition(Choices) : "Trigger Condition" : 0 = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(choices) : "Delay before close" : 4 = + [ + -1 : "Stays open" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) flags(Angle) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/ambient_generic.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "Path/filename.wav of WAV" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1: "Play Everywhere" : 0 + 2: "Small Radius" : 0 + 4: "Medium Radius" : 0 + 8: "Large Radius" : 0 + 16:"Start Silent":0 + 32:"Is NOT Looped":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm Pistol Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm Assault Rifle Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_chainammo.mdl") = ammo_9mmbox : "box of 200 9mm shells" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Assault Grenades" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotbox.mdl") = ammo_buckshot : "Shotgun Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357ammobox.mdl") = ammo_357 : "357 Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "RPG Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss Gun Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow Ammo" [] + +@SolidClass base(Target, Targetname, Angles, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 0 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +// +// cyclers +// + +@PointClass base(Targetname, Angles, Sequence) size(-16 -16 0, 16 16 72) flags(Angle) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" + bodygroup(integer) : "Body Group" : 0 +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster, Sequence) size(-16 -16 -16, 16 16 16) flags(Angle) studio() = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "model" +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(string) : "Scale" : "1.0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] + +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0= + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env_global.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +// use game_text instead +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "path/filename.wav of WAV" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, Angles, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targetted object" + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +// THIS CREATES AN INVISIBLE CLIMBABLE FIELD +// You must create the physical ladder yourself +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +// blocks monster path ai +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +// not fully implemented +@SolidClass base(Appearflags, Targetname, Global, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + speed(integer) : "Speed" : 100 + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "Path/filename.wav of WAV" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 0 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + + +// don't forget func_tankcontrols +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, Appearflags, RenderFields, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl") = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl") = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl") = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl") = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl") = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl") = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl") = item_suit : "HEV Suit" +[ + body(Choices) : "Body" : 0 = + [ + 0 : "Standing" + 1 : "Laying Flat" + ] + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/light.spr") base(Target, Targetname, Light, ZHLT_point) flags(Light) = light : "Invisible lightsource." : "http://twhl.info/wiki.php?id=148" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] +] + +@PointClass iconsprite("sprites/light.spr") base(Targetname, Target, Angles, ZHLT_point) flags(Light) = light_spot : "The light_spot entity allows you to create direct beams of light (like from a, err, spotlight)." : "http://twhl.info/wiki.php?id=147" +[ + _cone(integer) : "Inner (bright) angle" : 30 : "The angle of the cone formed around the directional axis. The area inside this cone will contain the brightest light." + _cone2(integer) : "Outer (fading) angle" : 45 : "As above, although the area inside this cone will fade increasingly towards the outer edges." + pitch(integer) : "Pitch" : -90 : "The pitch of the light (-90 is straight down, 90 is straight up)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + _sky(Choices) : "Is Sky" : 0 : "If Yes, the spot_light will affect the sky brushes, rather than project any light itself." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] + style(Choices) : "Appearance" : 0 : "Light appearance. Values:" = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/light_environment.spr") flags(Light) = light_environment : "This entity makes a map's sky emit light. The only practical way of lighting outdoor maps." : "http://twhl.info/wiki.php?id=146" +[ + pitch(integer) : "Pitch" : 0 : "A negative number will give downward pitch (which is normally what you want)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(RenderFields, Targetname, Angles, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + target(target_destination) : "Targetted object" + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields, Sequence) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster, Sequence) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" +[ + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname,RenderFields,Appearflags, Angles, Sequence) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] +] +@PointClass base(Monster, Sequence) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster, Sequence) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + 8 : "Head Controller" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields, Sequence) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] +@PointClass base(Targetname,Appearflags,RenderFields, Angles, Sequence) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Targetname,Appearflags,RenderFields, Angles, Sequence) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster, Sequence) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] +@PointClass base(Monster, Sequence) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster, Sequence) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat (no ai?)" [] +@PointClass base(Weapon,Targetx,RenderFields, Sequence) studio("models/w_satchel.mdl") = monster_satchel : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster, Sequence) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + 4 : "Einstein w/ Clipboard" + 5 : "Slick w/ Stick" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Targetname,Appearflags,RenderFields, Angles, Sequence) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] +] +@PointClass base(Monster, Sequence) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + spawnflags(Flags) = + [ + 64 : "Tentacle3" : 0 + ] + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster, Sequence) studio("models/p_tripmine.mdl") = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + 2 : "PVS On/Off" : 0 + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) iconsprite("sprites/multi_manager.spr") = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) iconsprite("sprites/multisource.spr") = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) flags(Path) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Entity" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) flags(Angle) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + 256: "No Reset Entity" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) iconsprite("sprites/trigger_auto.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/trigger_camera.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/trigger_changetarget.spr") = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer): "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/trigger_relay.spr") = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" +[ + telesound(string) : "Teleport Sound" +] + + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl") = weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357.mdl") = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl") = weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crossbow.mdl") = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/p_tripmine.mdl") size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_squeak.mdl") = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_chainammo.mdl") = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 1 = + [ + 44: "Battery" + 42: "Antidote" + 43: "Security Card" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) flags(Angle) studio("models/light.mdl") = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) studio("models/hair.mdl") = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] + +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) studio("models/tree.mdl") = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) studio("models/fungus(small).mdl") = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) studio("models/fungus.mdl") = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) studio("models/fungus(large).mdl") = xen_spore_large : "Xen Spore (large)" [] + + + + + + +////////////////////////////////////////////////////////////////////////////// +// Opposing Force Entities // +////////////////////////////////////////////////////////////////////////////// + + +// +//AMMO +// + +@PointClass base(Weapon, Targetx, RenderFields) studio("models/W_saw_clip.mdl") = ammo_556 : "M249 Ammo" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_m40a1clip.mdl") = ammo_762 : "Sniper Ammo" [] + +//Spore ammo orientation refers to the direction that the base of the plant faces +@PointClass base(Weapon, Targetx, RenderFields) studio("models/spore_ammo.mdl") = ammo_spore : "Spore" [] + + + +// +// ENV ENTITIES +// +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_blowercannon : "Blower Cannon" +[ + delay(string) : "Delay" : "0" + zoffset(integer) : "Z Offset" : 0 + target(string) : "Target" : "" + weaptype(choices) :"Weapon Type" : 1 = + [ + 1: "Spore (Rocket)" + 2: "Spore (Grenade)" + 3: "Shock Beam" + 4: "Displacer Ball" + ] + firetype(choices) :"Fire Type" : 1 = + [ + 1: "Toggle On/Off" + 2: "Fire When Triggered" + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_electrified_wire : "Electrified Wire" +[ + segments(integer) : "Segments" : 16 + sparkfrequency(integer) : "Spark Frequency" : 3 + bodysparkfrequency(integer) : "Body Spark Frequency" : 3 + lightningfrequency(integer) : "Lightning Frequency" : 3 + xforce(integer) : "X Force" : 80000 + yforce(integer) : "Y Force" : 80000 + zforce(integer) : "Z Force" : 80000 + disable(choices) :"Disable Use" : 0 = + [ + 0: "Not Disabled" + 1: "Disabled" + ] + endingmodel(studio) : "Ending Model" : "models/wire_copper16.mdl" + bodymodel(studio) : "Body Model" : "models/wire_black16.mdl" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_rope : "Rope" +[ + segments(integer) : "Segments" : 16 + disable(choices) :"Disable Use" : 0 = + [ + 0: "Not Disabled" + 1: "Disabled" + ] + endingmodel(studio) : "Ending Model" : "models/rope16.mdl" + bodymodel(studio) : "Body Model" : "models/rope16.mdl" +] + + + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(0 128 255)= env_spritetrain : "Sprite Train" +[ + target(target_source) : "First stop target" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + speed(integer) : "Speed (units per second)" : 64 + scale(string) : "Sprite Scale" +] + + +// +// FUNC ENTITIES +// + +@SolidClass base(Target) = func_op4mortarcontroller : "Op4 Mortar Controller" +[ + mortar_axis(Choices) : "Axis" : 0 = + [ + 0 : "Vertical" + 1 : "Horizontal" + ] +] + +@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTankOF +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" + enemytype(Choices) : "Enemy Type" : 1 = + [ + 0: "Player" + 1: "Ally" + 2: "Random" + ] +] + +// Don't forget func_tankcontrols_of +@SolidClass base(BaseTankOF) = func_tank_of : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols_of : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +// Don't forget func_tankcontrols_of +@SolidClass base(BaseTankOF) = func_tanklaser_of : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +// Don't forget func_tankcontrols +@SolidClass base(BaseTankOF) = func_tankrocket_of : "Brush Rocket Turret" [] + + +// Don't forget func_tankcontrols +@SolidClass base(BaseTankOF) = func_tankmortar_of : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +// +// INFO ENTITIES +// + +// Displacer target placement represents the point where the player's feet shall be +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_xen_target : "Displacer XEN Target" [] +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_earth_target : "Displacer EARTH Target" [] + +@PointClass base(Targetname, Target) = info_pitworm_steam_lock : "Pitworm Steam Lock" [] + + +// +// ITEM ENTITIES +// + +@PointClass base(Weapon, Targetx) = item_generic : "Generic scenery item" +[ + model(studio) : "Model" : "models/egg.mdl" + sequencename(string) : "Sequence Name" : "idle" + skin(integer) : "Skin" : 0 + body(integer) : "Body" : 0 +] + +@PointClass base(Weapon, Targetx) size(-16 -16 0, 16 16 36) = item_nuclearbomb : "Nuclear Bomb" +[ + initialstate(integer) : "Initial State" : 0 + wait(integer) : "Wait" : 1 +] + + + +// +// MONSTERS +// + +@PointClass base(Monster, Sequence) studio("models/baby_voltigore.mdl") = monster_alien_babyvoltigore : "Baby Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + + + +@PointClass base(Monster, Sequence) studio("models/voltigore.mdl") = monster_alien_voltigore : "Voltigore" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] + +@PointClass base(Monster, Sequence) studio("models/islave.mdl") = monster_alien_slave_dead : "Dead Vortigaunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On Stomach" + ] +] + + +@PointClass base(Monster, Sequence) studio("models/massn.mdl") = monster_assassin_repel : "Male Assassin (Repel)" [] + +@PointClass base(Monster, Sequence) studio("models/blkop_apache.mdl") = monster_blkop_apache : "Black Ops Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] + +@PointClass base(Monster, Sequence) studio("models/blkop_osprey.mdl") = monster_blkop_osprey : "Black Ops Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] + + +@PointClass base(Monster, TalkMonster, Sequence) studio("models/cleansuit_scientist.mdl") = monster_cleansuit_scientist : "Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Targetname,Appearflags,RenderFields, Sequence) studio("models/cleansuit_scientist.mdl") = monster_cleansuit_scientist_dead : "Dead Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + 7 : "Hi Mike!" + 8 : "Dead Against Wall" + ] +] + +@PointClass base(Monster, Sequence) studio("models/cleansuit_scientist.mdl") = monster_sitting_cleansuit_scientist : "Sitting Cleansuit Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] +] + +@PointClass base(Monster,TalkMonster, Sequence) studio("models/drill.mdl") = monster_drillsergeant : "Drill Sergeant" [] + +@PointClass base(Monster, Sequence) studio("models/geneworm.mdl") = monster_geneworm : "Gene Worm" [] +@PointClass base(Monster, Sequence) studio("models/gonome.mdl") = monster_gonome : "Gonome" [] +@PointClass base(Targetname,Appearflags,RenderFields, Sequence) studio("models/gonome.mdl") = monster_gonome_dead : "Dead Gonome" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On Stomach" + 1 : "On Back" + 2 : "On Side" + ] +] + +@PointClass base(Monster, Sequence) studio("models/houndeye_dead.mdl") = monster_houndeye_dead : "Dead Houndeye" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "Just plain dead" + ] +] + +@PointClass base(Monster, Sequence) studio("models/hgrunt_opfor.mdl") = monster_grunt_ally_repel : "Human Grunt Ally (Repel)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + ] + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + ] +] + +@PointClass base(Monster, Sequence) studio("models/hgrunt_opfor.mdl") = monster_human_grunt_ally : "Human Grunt Ally (camo)" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + weapons(Choices) : "Weapons" : 3 = + [ + 0 : "None" + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + 16 : "Saw" + ] + + head(Choices) : "Heads" : -1 = + [ + -1 : "Default" + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + 6 : "Major" + 7 : "Beret (Black)" + ] +] + + +@PointClass base(Targetname,Appearflags,RenderFields, Sequence) studio("models/hgrunt_opfor.mdl") = monster_human_grunt_ally_dead : "Dead Human Grunt Ally" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + 3 : "Dead On Back" + 4 : "Dead On Stomach" + 5 : "Head Crabbed" + ] + + weapons(Choices) : "Weapons" : 1 = + [ + 0 : "None" + 1 : "9mmAR" + 8 : "Shotgun" + 16 : "Saw" + ] + + head(Choices) : "Heads" : 0 = + [ + 0 : "Gas Mask" + 1 : "Beret" + 2 : "Ops Mask" + 3 : "Bandana White" + 4 : "Bandana Black" + 5 : "MP" + ] +] + + +@PointClass base(Monster, Sequence) studio("models/hgrunt_medic.mdl") = monster_human_medic_ally : "Medic" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + head(Choices) : "Heads" : -1 = + [ + -1 : "Random" + 0 : "White" + 1 : "Black" + ] + + weapons(Choices) : "Weapons" : 2 = + [ + 0 : "None" + 1 : "Desert Eagle" + 2 : "9mm Handgun" + 4 : "Hypodermic Needle" + ] +] + + +@PointClass base(Monster, Sequence) studio("models/hgrunt_torch.mdl") = monster_human_torch_ally : "Torch" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "Desert Eagle" + 2 : "Blow Torch" + ] +] + + +@PointClass base(Monster, Sequence) studio("models/massn.mdl") = monster_male_assassin : "Male Assassin" +[ + netname(string) : "Squad Name" + + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + + head(Choices) : "Heads" : 0 = + [ + -1 : "Random" + 0 : "Ski Mask White" + 1 : "Ski Mask Black" + 2 : "Night Goggles" + ] + + weapons(Choices) : "Weapons" : 3 = + [ + 0 : "None" + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Sniper Rifle" + ] + standgroundrange(string) : "Stand Ground Range" : "0.0" +] + +@PointClass base(Monster, RenderFields, Sequence) studio("models/loader.mdl") = monster_op4loader : "Loader machine" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] +] + + +@PointClass base(Monster,TalkMonster, Sequence) studio("models/otis.mdl") = monster_otis : "Otis" +[ + bodystate(Choices) : "bodystate" : -1 = + [ + -1 : "Random" + 0 : "Gun Holstered" + 1 : "Gun Drawn" + 3 : "Donut" + ] + head(Choices) : "head" : -1 = + [ + -1 : "Random" + 0 : "Bald Head" + 1 : "Head with hair" + ] + suspicious(choices) : "Suspicious" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname,Appearflags, Sequence) studio("models/otis.mdl") = monster_otis_dead : "Dead Otis" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + 3 : "Stuffed in Vent" + 4 : "Dead Sitting" + ] +] + + +@PointClass base(Monster, Sequence) studio("models/pit_drone.mdl") = monster_pitdrone : "PitDrone" +[ +initammo(string) : "Initial Ammo" : "6" +] + +@PointClass base(Monster, Sequence) studio("models/pit_worm_up.mdl") = monster_pitworm : "Pit Worm" [] +@PointClass base(Monster, Sequence) studio("models/pit_worm_up.mdl") = monster_pitworm_up : "Pit Worm Upright" [] + +@PointClass base(Monster, Sequence) studio("models/w_shock_rifle.mdl") = monster_shockroach : "Shock Roach" [] + + +@PointClass base(Monster, Sequence) studio("models/zombie_barney.mdl") = monster_zombie_barney : "Barney Zombie" [] +@PointClass base(Monster, Sequence) studio("models/zombie_soldier.mdl") = monster_zombie_soldier : "Soldier Zombie" [] +@PointClass base(Monster, Sequence) studio("models/zombie_soldier.mdl") = monster_zombie_soldier_dead : "Dead Soldier Zombie" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On stomach" + ] +] + +@PointClass base(Monster,TalkMonster, Sequence) studio("models/recruit.mdl") = monster_recruit : "Recruit" [] + +@PointClass base(Targetname,Appearflags,RenderFields, Sequence) size(-16 -16 0, 16 16 72) = monster_skeleton_dead : "Dead Skeleton" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "Against Wall" + 3 : "On Stomach" + ] +] + +@PointClass base(Monster, Sequence) studio("models/strooper.mdl") = monster_shocktrooper : "Shock Trooper" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + weapons(Choices) : "Weapons" : 3 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] +] + +@PointClass base(Targetname) = op4mortar : "Op4 Mortar" +[ + spawnflags(Flags) = + [ + 1 : "Active" : 0 + 16 : "Line of Sight" : 1 + 32 : "Can Control" : 1 + ] + mortar_velocity(integer) : "Velocity" : 800 + h_min(integer) : "Horiz MIN" : -90 + h_max(integer) : "Horiz MAX" : 90 + mindist(integer) : "Min Target Dist" : 256 + maxdist(integer) : "Max Target Dist" : 2048 + enemytype(Choices) : "Enemy Type" : 0 = + [ + 0 : "Player" + 1 : "Ally" + 2 : "Random" + ] + firedelay(integer) : "Fire Rate" : 5 +] + + +@PointClass base(gibshooterbase) = pitworm_gibshooter : "Pitworm Gib Shooter" [] + + +// +// TRIGGERS +// + +@SolidClass base(Targetname,Target) = trigger_geneworm_hit : "Trigger GeneWorm Hit" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + delay(string) : "Delay before trigger" : "0" +] + +@PointClass base(Targetx, Targetname) = trigger_playerfreeze : "Trigger Player Freeze" [] +@SolidClass base(Trigger) = trigger_xen_return : "Return To Earth (self-tele)" [] + +// +//WEAPONS +// +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_displacer.mdl") = weapon_displacer : "Displacer" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_desert_eagle.mdl") = weapon_eagle : "Desert Eagle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_bgrap.mdl") = weapon_grapple : "Barnacle Grapple" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_knife.mdl") = weapon_knife : "Knife" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_saw.mdl") = weapon_m249 : "M249 SAW" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_penguinnest.mdl") = weapon_penguin : "Killer Penguin" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_pipe_wrench.mdl") = weapon_pipewrench : "Pipe Wrench" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shock.mdl") = weapon_shockrifle : "Shock Roach" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_m40a1.mdl") = weapon_sniperrifle : "Sniper Rifle" [] +@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_spore_launcher.mdl") = weapon_sporelauncher : "Spore Launcher" [] + + + +////////////////////////////////////////////////////////////////////////////// +// Opposing Force CTF Entities // +////////////////////////////////////////////////////////////////////////////// + + +// +// BaseClasses +// + + +@BaseClass = CTFAttributes +[ + goal_no(Choices) : "Team" : 1 = + [ + 1 : "Black Mesa" + 2 : "Opposing Force" + ] + goal_min(string) : "Min Bounds" : "-16 -16 0" + goal_max(string) : "Max Bounds" : "16 16 72" +] + +@BaseClass = CTFItem +[ + spawnflags(flags) = + [ + 4: "Random Spawn" : 0 + ] + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + + +// +// Items +// + + +@PointClass base(CTFAttributes) size(-16 -16 0, 16 16 72) = item_ctfflag : "CTF Flag" +[ + skin(choices) : "Skin" : 1 = + [ + 1 : "Black Mesa" + 2 : "Opposing Force" + ] + model(studio) : "Model" : "models/flag.mdl" +] +@PointClass base(CTFAttributes) size(-16 -16 0, 16 16 72) = item_ctfbase : "CTF Goal" +[ + skin(choices) : "Skin" : 0 = + [ + 0 : "Default" + ] + model(studio) : "Model" : "models/civ_stand.mdl" +] +@PointClass base(PlayerClass) = info_ctfspawn : "Player CTF Start" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + +@PointClass = info_ctfdetect : "CTF Detect" +[ + flagreturntime(string) : "Flag Return Time" : "30.0" + basedefenddist(string) : "Base Defend Distance" : "192.0" + defendcarriertime(string) : "Defend Carrier Time" : "10.0" + captureassisttime(string) : "Capture Assist Time" : "10.0" + poweruprespawntime(string) : "Powerup Respawn Time" : "30.0" + score_icon_namebm(string) : "Non-Flag Black Mesa icon" : "item_ctfscorebm" + score_icon_nameof(string) : "Non-Flag Opposing Force icon" : "item_ctfscoreof" + map_score_max(string) : "Maximum Map Team Score" : "0" +] + +@PointClass base(CTFItem) studio("models/w_jumppack.mdl") = item_ctflongjump : "Longjump Module for CTF" [] +@PointClass base(CTFItem) studio("models/w_porthev.mdl") = item_ctfportablehev : "Portable HEV charger for CTF" [] +@PointClass base(CTFItem) studio("models/w_health.mdl") = item_ctfregeneration : "Health regeneration for CTF" [] +@PointClass base(CTFItem) studio("models/w_accelerator.mdl") = item_ctfaccelerator : "Double Weapon Damage for CTF" [] +@PointClass base(CTFItem) studio("models/w_backpack.mdl") = item_ctfbackpack : "Backpack Powerup for CTF" [] +@PointClass size(-16 -16 0, 16 16 36) = info_ctfspawn_powerup : "CTF Powerup Spawn Spot" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Random" + 1 : "Black Mesa" + 2 : "Opposing Force" + ] +] + +@SolidClass base(Target, Targetname) = trigger_ctfgeneric : "Trigger CTF Generic" +[ + team_no(Choices) : "Team" : 0 = + [ + 0 : "Both Teams" + 1 : "Black Mesa Only" + 2 : "Opposing Force Only" + ] + trigger_delay(string) : "Re-activate delay" : "5" + score(string) : "Player Score" : "0" + team_score(string) : "Team Score" : "0" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife.fgd new file mode 100644 index 0000000..04705bd --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/halflife.fgd @@ -0,0 +1,2708 @@ +// +// Half-Life game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// updated by Chris Bokitch +// autolycus@valvesoftware.com +// http://www.valve-erc.com/ +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "This is the world entity. Each map can only contain one, and it's automatically created for you." : "http://twhl.info/wiki.php?id=162" +[ + message(string) : "Map Description / Title" + skyname(sky) : "Environment map (cl_skyname)" : : "Lets you choose what sky image you want. Values are: 2desert, alien1, alien2, alien3, black, city, cliff, desert, dusk, morning, neb1, neb2, neb6, neb7, night, space, xen8, xen9, xen10. More skies exist in Half-Life modifications, and you can also make your own skies." + sounds(integer) : "CD track to play" : 1 : "CD track to play when the level begins." + light(integer) : "Default light level" + WaveHeight(string) : "Default Wave Height" : : "Set the default wave height here (can be overridden by the properties in func_water)." + MaxRange(string) : "Max viewable distance" : "4096" : "Maximum distance the player can see." + chaptertitle(string) : "Chapter Title Message" : "" : "Text displayed when entering the level." + startdark(choices) : "Level Fade In" : 0 : "If Yes, then the level will start black and fade into normal light." = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display game title" : 0 : "Game title that appears onscreen when this level starts." = + [ + 0 : "No" : "Don't display game title sprite." + 1 : "Yes" : "Display game title sprite." + ] + newunit(choices) : "New Level Unit" : 0 : "Used to clear out savegame data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = + [ + 0 : "No, keep current" : "Keeps all globals alive." + 1 : "Yes, clear previous levels" : "Flushes all globals." + ] + mapteams(string) : "Map Team List" : : "This will be copied into the mp_teamlist while your map is running if the server allows maps to override the team list." + defaultteam(choices) : "Default Team" : 0 = + [ + 0 : "Fewest Players" + 1 : "First Team" + ] +] + +// +// BaseClasses +// + + +@BaseClass = Sequence +[ + sequence(integer) : "Animation Sequence (editor)" : : "Sequence to display in Jackhammer. This does not affect gameplay." +] + +@BaseClass = ZHLT +[ + zhlt_lightflags(choices) : "ZHLT Lightflags" : 0 = + [ + 0 : "Default" + 1 : "Embedded Fix" + 2 : "Opaque (blocks light)" + 3 : "Opaque + Embedded fix" + 6 : "Opaque + Concave Fix" + ] + light_origin(string) : "Light Origin Target" +] + +@BaseClass = ZHLT_point +[ + _fade(string) : "ZHLT Fade" : "1.0" + _falloff(choices) : "ZHLT Falloff" : 0 = + [ + 0 : "Default" + 1 : "Inverse Linear" + 2 : "Inverse Square" + ] +] + +@BaseClass = Appearflags +[ + spawnflags(Flags) = + [ + 2048 : "Not in Deathmatch" : 0 + ] +] + +@BaseClass = Angles +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Sets the pitch (up / down), yaw (left / right) and roll (bank) respectively. The compass in Jackhammer corresponds to Yaw. The settings are not always (or not all) used." +] + +@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo [] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" : : "Property used to identify entities." +] +@BaseClass = Target +[ + target(target_destination) : "Target" : : "When an entity is activated, it triggers the entity with the name specified by Target." +] +@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags, Angles) = Weapon [] +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" +] + +@BaseClass base(Target) = Targetx +[ + delay(string) : "Delay before trigger" : "0" : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + killtarget(target_destination) : "KillTarget" : : "When an entity is triggered, it will remove from the game the entity specified by this property." +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@BaseClass base(Appearflags, Angles) flags(Angle) size(-16 -16 -36, 16 16 36) color(0 255 0) offset(0 0 36) = PlayerClass [] + +@BaseClass base(Target, Targetname, RenderFields, Angles) flags(Angle) color(0 200 200) = Monster +[ + TriggerTarget(String) : "TriggerTarget" : : "The event to trigger when the TriggerCondition is met. Used by monsters." + TriggerCondition(Choices) : "Trigger Condition" : 0 : "This controls the condition under which a monster will trigger its TriggerTarget. The options are:" = + [ + 0 : "No Trigger" + 1 : "See Player, Mad at Player" + 2 : "Take Damage" + 3 : "50% Health Remaining" + 4 : "Death" + 7 : "Hear World" + 8 : "Hear Player" + 9 : "Hear Combat" + 10: "See Player Unconditional" + 11: "See Player, Not In Combat" + ] + spawnflags(Flags) = + [ + 1 : "WaitTillSeen" : 0 + 2 : "Gag" : 0 + 4 : "MonsterClip" : 0 + 16: "Prisoner" : 0 + 128: "WaitForScript" : 0 + 256: "Pre-Disaster" : 0 + 512: "Fade Corpse" : 0 + ] +] + +@BaseClass = TalkMonster +[ + UseSentence(String) : "Use Sentence" + UnUseSentence(String) : "Un-Use Sentence" +] + +@BaseClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = gibshooterbase +[ + // how many pieces to create + m_iGibs(integer) : "Number of Gibs" : 3 + + // delay (in seconds) between shots. If 0, all gibs shoot at once. + delay(string) : "Delay between shots" : "0" + + // how fast the gibs are fired + m_flVelocity(integer) : "Gib Velocity" : 200 + + // Course variance + m_flVariance(string) : "Course Variance" : "0.15" + + // Time in seconds for gibs to live +/- 5% + m_flGibLife(string) : "Gib Life" : "4" + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] +] + +@BaseClass = Light +[ + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + style(Choices) : "Appearance" : 0 : "Light appearance. Values:" = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." +] + +@BaseClass base(Targetname,Global) = Breakable +[ + target(target_destination) : "Target on break" + health(integer) : "Strength" : 1 + material(choices) :"Material type" : 0 = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Cinder Block" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + ] + explosion(choices) : "Gibs Direction" : 0 = + [ + 0: "Random" + 1: "Relative to Attack" + ] + delay(string) : "Delay before fire" : "0" + gibmodel(studio) : "Gib Model" : "" + spawnobject(choices) : "Spawn On Break" : 0 = + [ + 0: "Nothing" + 1: "Battery" + 2: "Healthkit" + 3: "9mm Handgun" + 4: "9mm Clip" + 5: "Machine Gun" + 6: "Machine Gun Clip" + 7: "Machine Gun Grenades" + 8: "Shotgun" + 9: "Shotgun Shells" + 10: "Crossbow" + 11: "Crossbow Bolts" + 12: "357" + 13: "357 clip" + 14: "RPG" + 15: "RPG Clip" + 16: "Gauss clip" + 17: "Hand grenade" + 18: "Tripmine" + 19: "Satchel Charge" + 20: "Snark" + 21: "Hornet Gun" + ] + explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 +] + +@BaseClass base(Appearflags, Targetname, RenderFields, Global, Angles) = Door +[ + killtarget(target_destination) : "KillTarget" + speed(integer) : "Speed" : 100 + master(string) : "Master" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "Servo (Sliding)" + 2: "Pneumatic (Sliding)" + 3: "Pneumatic (Rolling)" + 4: "Vacuum" + 5: "Power Hydraulic" + 6: "Large Rollers" + 7: "Track Door" + 8: "Snappy Metal Door" + 9: "Squeaky 1" + 10: "Squeaky 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "Clang with brake" + 2: "Clang reverb" + 3: "Ratchet Stop" + 4: "Chunk" + 5: "Light airbrake" + 6: "Metal Slide Stop" + 7: "Metal Lock Stop" + 8: "Snappy Metal Stop" + ] + wait(integer) : "delay before close, -1 stay open " : 4 + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + target(target_destination) : "Target" + delay(integer) : "Delay before fire" + netname(string) : "Fire on Close" + health(integer) : "Health (shoot open)" : 0 + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Only" : 0 + 512: "Monsters Can't" : 0 + ] + // NOTE: must be duplicated in BUTTON + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + ] + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(string) : "Smoke Sprite" : "" + spriteflash(string) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatesound(sound) : "Rotate Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" + persistence(string) : "Firing persistence" : "1" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" +] + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel altitude" : 0 + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 + train(target_destination) : "Train to switch" + toptrack(target_destination) : "Top track" + bottomtrack(target_destination) : "Bottom track" + speed(integer) : "Move/Rotate speed" : 0 +] + +@BaseClass base(Target, Targetname) = Trigger +[ + killtarget(target_destination) : "Kill target" + netname(target_destination) : "Target Path" + master(string) : "Master" + sounds(choices) : "Sound style" : 0 = + [ + 0 : "No Sound" + ] + delay(string) : "Delay before trigger" : "0" + message(string) : "Message (set sound too!)" + spawnflags(flags) = + [ + 1: "Monsters" : 0 + 2: "No Clients" : 0 + 4: "Pushables": 0 + ] +] + +// +// Entities +// + +@PointClass base(Targetname, Targetx, Angles) flags(Angle) size(-16 -16 0, 16 16 72) color(255 0 255)=aiscripted_sequence:"AI Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = + [ + 0 : "Default AI" + 1 : "Ambush" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + ] +] + +@PointClass iconsprite("sprites/ambient_generic.spr") base(Targetname) = ambient_generic : "Universal Ambient" +[ + message(sound) : "WAV Name" + health(integer) : "Volume (10 = loudest)" : 10 + preset(choices) :"Dynamic Presets" : 0 = + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 + fadein(integer) : "Fade in time (0-100)" : 0 + fadeout(integer) : "Fade out time (0-100)" : 0 + pitch(integer) : "Pitch (> 100 = higher)" : 100 + pitchstart(integer) : "Start Pitch" : 100 + spinup(integer) : "Spin up time (0-100)" : 0 + spindown(integer) : "Spin down time (0-100)" : 0 + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 + lforate(integer) : "LFO rate (0-1000)" : 0 + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 + cspinup(integer) : "Incremental spinup count" : 0 + spawnflags(flags) = + [ + 1 : "Play Everywhere" : 0 + 2 : "Small Radius" : 0 + 4 : "Medium Radius" : 1 + 8 : "Large Radius" : 0 + 16 : "Start Silent":0 + 32 : "Not Toggled":0 + ] +] + +// +// ammo +// + + +@PointClass base(Weapon, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "Spawns a 9mm handgun ammo clip." : "http://twhl.info/wiki.php?id=1" [] +@PointClass base(Weapon, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "Spawns ammo for the 9mm AR / handgun." : "http://twhl.info/wiki.php?id=2" [] +@PointClass base(Weapon, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "Spawns a large amount (200) of 9mm ammo in a box." : "http://twhl.info/wiki.php?id=3" [] +@PointClass base(Weapon, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Spawns 2 grenades for the 9mm AR's secondary fire." : "http://twhl.info/wiki.php?id=4" [] +@PointClass base(Weapon, Targetx) studio("models/w_shotbox.mdl") = ammo_buckshot : "Spawns ammo for the shotgun." : "http://twhl.info/wiki.php?id=7" [] +@PointClass base(Weapon, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "Spawns ammo for the .357 Magnum." : "http://twhl.info/wiki.php?id=6" [] +@PointClass base(Weapon, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "Spawns rockets for the RPG." : "http://twhl.info/wiki.php?id=9" [] +@PointClass base(Weapon, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Spawns ammo for the gauss and egon weapons." : "http://twhl.info/wiki.php?id=5" [] +@PointClass base(Weapon, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Spawns crossbow ammo." : "http://twhl.info/wiki.php?id=8" [] + +@SolidClass base(Target, ZHLT) = button_target : "Target Button" +[ + spawnflags(flags) = + [ + 1: "Use Activates" : 0 + 2: "Start On" : 0 + ] + master(string) : "Master" + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + + +// +// cyclers +// + +@PointClass base(Targetname, Angles, Sequence) flags(Angle) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler" +[ + model(studio) : "Model" + scale(string) : "Scale" + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname, Angles) sprite() = cycler_sprite : "Sprite Cycler" +[ + model(sprite) : "Sprite" + scale(string) : "Scale" + framerate(integer) : "Frames per second" : 10 + renderfx(choices) :"Render FX" : 0 : "Gives objects special render effects. Think of it as modifying whatever the Render Mode puts out. The options are as follows:" = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + ] + rendermode(choices) : "Render Mode" : 0 : "Controls the type of rendering that is used for an object. Options are:" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + ] + renderamt(integer) : "FX Amount (1 - 255)" + rendercolor(color255) : "FX Color (R G B)" : "0 0 0" +] + +@PointClass base(Monster, Sequence) flags(Angle) size(-16 -16 -16, 16 16 16) studio() = cycler_weapon : "Weapon Cycler" +[ + model(studio) : "Model" + scale(string) : "Scale" +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/fire.spr" + scale(string) : "Scale" : "1.0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +// +// Environmental effects +// + +@BaseClass = BeamStartEnd +[ + LightningStart(target_destination) : "Start Entity" + LightningEnd(target_destination) : "Ending Entity" +] +@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + Radius(integer) : "Radius" : 256 + life(string) : "Life (seconds 0 = infinite)" : "1" + BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framerate(integer) : "Frames per 10 seconds" : 0 + framestart(integer) : "Starting Frame" : 0 + StrikeTime(string) : "Strike again time (secs)" : "1" + damage(string) : "Damage / second" : "0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + ] +] + +@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" +[ + health(integer) : "Capacity" : 10 + skin(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" +[ + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + ] +] + +@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" +[ + iMagnitude(Integer) : "Magnitude" : 100 + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + ] +] + +@PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env_global.spr") = env_global : "Global State" +[ + globalstate(string) : "Global State to Set" + triggermode(choices) : "Trigger Mode" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + 3 : "Toggle" + ] + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" +[ + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(integer) : "Scale" : 1 +] + +@PointClass base(Targetname) = env_fade : "Screen Fade" +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 4: "Activator Only" : 0 + ] + duration(string) : "Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" +[ + LaserTarget(target_destination) : "Target of Laser" + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" + width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" + EndSprite(sprite) : "End Sprite" : "" + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 + framestart(integer) : "Starting Frame" : 0 + damage(string) : "Damage / second" : "100" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] +] + +@PointClass base(Targetname, Target) = env_message : "HUD Text Message" +[ + message(string) : "Message Name" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" + messagevolume(string) : "Volume 0-10" : "10" + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" +[ + spawnflags(flags) = + [ + 1: "No Renderfx" : 0 + 2: "No Renderamt" : 0 + 4: "No Rendermode" : 0 + 8: "No Rendercolor" : 0 + ] +] + +@PointClass base(Targetname) = env_shake : "Screen Shake" +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + ] + amplitude(string) : "Amplitude 0-16" : "4" + radius(string) : "Effect radius" : "500" + duration(string) : "Duration (seconds)" : "1" + frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" +] + +@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" +[ + shootmodel(studio) : "Model or Sprite name" : "" + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + scale(string) : "Gib Sprite Scale" : "" + skin(integer) : "Gib Skin" : 0 +] + +@PointClass iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound" +[ + radius(integer) : "Radius" : 128 + roomtype(Choices) : "Room Type" : 0 = + [ + 0 : "Normal (off)" + 1 : "Generic" + + 2 : "Metal Small" + 3 : "Metal Medium" + 4 : "Metal Large" + + 5 : "Tunnel Small" + 6 : "Tunnel Medium" + 7 : "Tunnel Large" + + 8 : "Chamber Small" + 9 : "Chamber Medium" + 10: "Chamber Large" + + 11: "Bright Small" + 12: "Bright Medium" + 13: "Bright Large" + + 14: "Water 1" + 15: "Water 2" + 16: "Water 3" + + 17: "Concrete Small" + 18: "Concrete Medium" + 19: "Concrete Large" + + 20: "Big 1" + 21: "Big 2" + 22: "Big 3" + + 23: "Cavern Small" + 24: "Cavern Medium" + 25: "Cavern Large" + + 26: "Weirdo 1" + 27: "Weirdo 2" + 28: "Weirdo 3" + ] +] + +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" +[ + MaxDelay(string) : "Max Delay" : "0" + spawnflags(flags) = + [ + 32: "Toggle" : 0 + 64: "Start ON" : 0 + ] +] + +@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" +[ + framerate(string) : "Framerate" : "10.0" + model(sprite) : "Sprite Name" : "sprites/glow01.spr" + scale(string) : "Scale" : "" + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_breakable : "Breakable Object" +[ + spawnflags(flags) = + [ + 1 : "Only Trigger" : 0 + 2 : "Touch" : 0 + 4 : "Pressure" : 0 + 256: "Instant Crowbar" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,Targetname, Target, RenderFields, Angles, ZHLT) = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + health(integer) : "Health (shootable if > 0)" + lip(integer) : "Lip" + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 14: "Lightswitch" + ] + wait(integer) : "delay before reset (-1 stay)" : 3 + delay(string) : "Delay before trigger" : "0" + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 64: "Sparks" : 0 + 256:"Touch Activates": 0 + ] + locked_sound(choices) : "Locked Sound" : 0 = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt" +[ + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Door, ZHLT) = func_door : "Basic door" [] + +@SolidClass base(Door, ZHLT) = func_door_rotating : "Rotating door" +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + distance(integer) : "Distance (deg)" : 90 +] + +@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction" +[ + modifier(integer) : "Percentage of standard (0 - 100)" : 15 +] + +@SolidClass base(Targetname, RenderFields, Global, ZHLT) = func_guntarget : "Moving platform" +[ + speed(integer) : "Speed (units per second)" : 100 + target(target_source) : "First stop target" + message(target_source) : "Fire on damage" + health(integer) : "Damage to Take" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global, RenderFields, ZHLT) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light" +[ + + skin(choices) : "Contents" : -1 = + [ + -1: "Empty" + -7: "Volumetric Light" + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname) = func_ladder : "Ladder" [] + +@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" [] + +@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" +[ + m_flSpread(integer) : "Spread Radius" : 64 + m_iCount(integer) : "Repeat Count" : 1 + m_fControl(Choices) : "Targeting" : 0 = + [ + 0 : "Random" + 1 : "Activator" + 2 : "Table" + ] + m_iszXController(target_destination) : "X Controller" + m_iszYController(target_destination) : "Y Controller" +] + +@SolidClass base(Global,Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth" +[ + speed(integer) : "Speed" : 100 + distance(integer) : "Distance (deg)" : 90 + damp(integer) : "Damping (0-1000)" : 0 + dmg(integer) : "Damage inflicted when blocked" : 0 + spawnflags(flags) = + [ + 1: "Start ON" : 0 + 8: "Passable" : 0 + 16: "Auto-return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname,Global,RenderFields, PlatSounds, ZHLT) = func_plat : "Elevator" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + ] + height(integer) : "Travel altitude (can be negative)" : 0 + speed(integer) : "Speed" : 50 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, PlatSounds, Angles, ZHLT) = func_platrot : "Moving Rotating platform" +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + speed(integer) : "Speed of rotation" : 50 + height(integer) : "Travel altitude (can be negative)" : 0 + rotation(integer) : "Spin amount" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object" +[ + size(choices) : "Hull Size" : 0 = + [ + 0: "Point size" + 1: "Player size" + 2: "Big Size" + 3: "Player duck" + ] + spawnflags(flags) = + [ + 128: "Breakable" : 0 + ] + friction(integer) : "Friction (0-400)" : 50 + buoyancy(integer) : "Buoyancy" : 20 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Global,RenderFields, ZHLT) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rot_button : "RotatingButton" +[ + target(target_destination) : "Targetted object" + // changetarget will change the button's target's TARGET field to the button's changetarget. + changetarget(target_destination) : "ChangeTarget Name" + master(string) : "Master" + speed(integer) : "Speed" : 50 + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 21 = + [ + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(string) : "Delay before trigger" : "0" + distance(integer) : "Distance (deg)" : 90 + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256:"Touch Activates": 0 + ] + _minlight(integer) : "_minlight" +] + +@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object" +[ + speed(integer) : "Rotation Speed" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + fanfriction(integer) : "Friction (0 - 100%)" : 20 + sounds(choices) : "Fan Sounds" : 0 = + [ + 0 : "No Sound" + 1 : "Fast Whine" + 2 : "Slow Rush" + 3 : "Medium Rickety" + 4 : "Fast Beating" + 5 : "Slow Smooth" + ] + message(sound) : "WAV Name" + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Radius" : 0 + 256: "Medium Radius" : 0 + 512: "Large Radius" : 1 + ] + _minlight(integer) : "_minlight" + spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" + dmg(integer) : "Damage inflicted when blocked" : 0 +] + +@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret" +[ + bullet(choices) : "Bullets" : 0 = + [ + 0: "None" + 1: "9mm" + 2: "MP5" + 3: "12mm" + ] +] + +@SolidClass = func_tankcontrols : "Tank controls" +[ + target(target_destination) : "Tank entity name" +] + +@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_source) : "env_laser Entity" +] + +@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" [] + + +@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 +] + +@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_tracktrain : "Track Train" +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + ] + target(target_destination) : "First stop target" + sounds(choices) : "Sound" : 0 = + [ + 0: "None" + 1: "Rail 1" + 2: "Rail 2" + 3: "Rail 3" + 4: "Rail 4" + 5: "Rail 6" + 6: "Rail 7" + ] + wheels(integer) : "Distance between the wheels" : 50 + height(integer) : "Height above track" : 4 + startspeed(integer) : "Initial speed" : 0 + speed(integer) : "Speed (units per second)" : 64 + dmg(integer) : "Damage on crush" : 0 + volume(integer) : "Volume (10 = loudest)" : 10 + bank(string) : "Bank angle on turns" : "0" + _minlight(string) : "Minimum light level" +] + +@SolidClass = func_traincontrols : "Train Controls" +[ + target(target_destination) : "Train Name" +] + +@SolidClass base(Targetname, Global, RenderFields, ZHLT) = func_train : "Moving platform" +[ + target(target_source) : "First stop target" + movesnd(choices) : "Move Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + speed(integer) : "Speed (units per second)" : 64 + avelocity(string) : "Angular Veocity (y z x)" + dmg(integer) : "Damage on crush" : 0 + skin(integer) : "Contents" : 0 + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" + spawnflags(flags) = + [ + 8 : "Not solid" : 0 + ] + _minlight(string) : "Minimum light level" +] + +@SolidClass base(Targetname, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall" +[ + _minlight(string) : "Minimum light level" +] + +@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] +] + +@SolidClass base(Door, ZHLT) = func_water : "Liquid" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 256:"Use Only" : 0 + ] + skin(choices) : "Contents" : -3 = + [ + -3: "Water" + -4: "Slime" + -5: "Lava" + ] + WaveHeight(string) : "Wave Height" : "3.2" +] + +// +// game entities (requires Half-Life 1.0.0.9) +// + +@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + 2: "Reset On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "Initial Value" : 0 + health(integer) : "Limit Value" : 10 +] + +@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" + frags(integer) : "New Value" : 10 +] + +@PointClass base(Targetname) = game_end : "End this multiplayer game" +[ + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_equip : "Initial player equipment" +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master" +] + +@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires" +[ + dmg(string) : "Damage To Apply" : "999" + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname) = game_player_team : "Allows player to change teams" +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master" +] + +@PointClass base(Targetname) = game_score : "Award/Deduct Points" +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] + teamindex(integer) : "Team Index (-1 = no team)" : -1 + master(string) : "Master" +] + +@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + master(string) : "Master" +] + +@PointClass base(Targetname, Target) = game_text : "HUD Text Message" +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" + fadeout(string) : "Fade Out Time" : "0.5" + holdtime(string) : "Hold Time" : "1.2" + fxtime(string) : "Scan time (scan effect only)" : "0.25" + channel(choices) : "Text Channel" : 1 = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" +] + +@SolidClass base(Targetname) = game_zone_player : "Player Zone brush" +[ + intarget(target_destination) : "Target for IN players" + outtarget(target_destination) : "Target for OUT players" + incount(target_destination) : "Counter for IN players" + outcount(target_destination) : "Counter for OUT players" + // master(string) : "Master" +] + +@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" [] + +// +// info entities +// + +@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal" +[ + texture(decal) +] + +@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" +[ + spawnflags(Flags) = + [ + 1 : "Run To Node" : 0 + 2 : "Wait Indefinitely" : 0 + ] + target(target_destination) : "Next node" + radius(string) : "Radius" : "0" + reachdelay(string) : "Wait after approach" : "0" + killtarget(target_destination) : "KillTarget" + reachtarget(target_destination) : "Fire on approach" + reachsequence(string) : "Sequence on approach" : "" + health(string) : "Health on approach" : "" + presequence(string) : "Sequence before approach" : "" +] + +@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] + +@PointClass base(Targetname) = info_landmark : "Transition Landmark" [] + +@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] + +@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" [] + +@PointClass base(Targetname) = info_null : "info_null (spotlight target)" [] + +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" +[ + target(target_destination) : "Target" + master(string) : "Master" +] +@PointClass base(PlayerClass) sequence(2) studio("models/player.mdl") = info_player_start : "Player 1 start" [] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" [] +@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +// +// items +// + +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl") = item_airtank : "Oxygen tank" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl") = item_antidote : "Poison antidote" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl") = item_battery : "HEV battery" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl") = item_healthkit : "Small Health Kit" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl") = item_longjump : "Longjump Module" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl") = item_security : "Security card" [] +@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl") = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +// +// lights +// + +@PointClass iconsprite("sprites/light.spr") base(Target, Targetname, Light, ZHLT_point) flags(Light) = light : "Invisible lightsource." : "http://twhl.info/wiki.php?id=148" +[ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] +] + +@PointClass iconsprite("sprites/light.spr") base(Targetname, Target, Angles, ZHLT_point) flags(Light) = light_spot : "The light_spot entity allows you to create direct beams of light (like from a, err, spotlight)." : "http://twhl.info/wiki.php?id=147" +[ + _cone(integer) : "Inner (bright) angle" : 30 : "The angle of the cone formed around the directional axis. The area inside this cone will contain the brightest light." + _cone2(integer) : "Outer (fading) angle" : 45 : "As above, although the area inside this cone will fade increasingly towards the outer edges." + pitch(integer) : "Pitch" : -90 : "The pitch of the light (-90 is straight down, 90 is straight up)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." + _sky(Choices) : "Is Sky" : 0 : "If Yes, the spot_light will affect the sky brushes, rather than project any light itself." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = [ 1 : "Initially dark" : 0 : "If this is enabled, the entity will need to be triggered to work." ] + style(Choices) : "Appearance" : 0 : "Light appearance. Values:" = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : : "Use a string of letters to provide a custom light style. The property allows you to enter a string of letters from a to z, representing brightness. If you entered 'abcdefghihgfedcba' then the light would go from bright to dim and back again and then repeat. Complicating things, to use this feature, you must name the light. However, if you then use a trigger to activate it, then it will behave as a normal light." +] + +@PointClass base(Targetname, Angles, ZHLT_point) iconsprite("sprites/light_environment.spr") flags(Light) = light_environment : "This entity makes a map's sky emit light. The only practical way of lighting outdoor maps." : "http://twhl.info/wiki.php?id=146" +[ + pitch(integer) : "Pitch" : 0 : "A negative number will give downward pitch (which is normally what you want)." + _light(color255) : "Brightness" : "255 255 128 200" : "First three integer numbers are the color (RGB). The fourth number is the brightness." +] + +@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + ] +] + +@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control" +[ + speed(integer) : "Speed" : 50 + master(string) : "Master" + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance (deg)" : 90 + returnspeed(integer) : "Auto-return speed" : 0 + spawnflags(flags) = + [ + 1: "Door Hack" : 0 + 2: "Not useable" : 0 + 16: "Auto Return" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + _minlight(integer) : "_minlight" +] + +// +// monsters +// + +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + 64 : "IgnorePlayer" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache" +[ + spawnflags(Flags) = + [ + 8 : "NoWreckage" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" [] +@PointClass base(RenderFields, Sequence) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" [] +@PointClass base(Monster,TalkMonster, Sequence) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney" [] +@PointClass base(RenderFields,Appearflags, Angles, Sequence) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") sequence(35) = monster_barney_dead : "Dead Barney" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On side" + 2 : "On stomach" + ] + sequence(Choices) : "Animation Sequence (editor)" : 35 = + [ + 35 : "lying_on_back" + 36 : "lying_on_side" + 37 : "lying_on_stomach" + ] +] +@PointClass base(Monster, Sequence) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma" +[ + netname(string) : "First node" : "" +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") sequence(7) = monster_bullchicken : "BullChicken" [] +@PointClass base(Monster, Sequence) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers" +[ + iFlockSize(Integer) : "Flock Size" : 8 + flFlockRadius(Integer) : "Flock Radius" : 128 +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" +[ + model(studio) : "model" + +] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" [] +@PointClass base(Monster, RenderFields, Sequence) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster" +[ + spawnflags(Flags) = + [ + 4 : "Not solid" : 0 + ] + model(studio) : "model" + body(Integer) : "Body" : 0 +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" [] +@PointClass base(Weapon, Targetx, RenderFields, Sequence) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" [] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" [] +@PointClass base(Appearflags,RenderFields, Angles, Sequence) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "Seated" + 2 : "On stomach" + 3 : "On Table" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt" +[ + pose(Choices) : "Pose" : 0 = + [ + 0 : "On stomach" + 1 : "On side" + 2 : "Seated" + ] + body(Choices) : "Body" : 0 = + [ + 0 : "Grunt with Gun" + 1 : "Commander with Gun" + 2 : "Grunt no Gun" + 3 : "Commander no Gun" + ] + sequence(Choices) : "Animation Sequence (editor)" : 44 = + [ + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye" +[ + netname(string) : "Squad Name" + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" [] +@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)" +[ + spawnflags(Flags) = + [ + 32 : "SquadLeader" : 0 + ] + netname(string) : "Squad Name" + weapons(Choices) : "Weapons" : 1 = + [ + 1 : "9mmAR" + 3 : "9mmAR + HG" + 5 : "9mmAR + GL" + 8 : "Shotgun" + 10 : "Shotgun + HG" + ] + sequence(Choices) : "Animation Sequence (editor)" : 11 = + [ + 0 : "walk1" + 1 : "run" + 2 : "victorydance" + 3 : "cower" + 4 : "smflinch" + 5 : "leftlegsmflinch" + 6 : "rightlegsmflinch" + 7 : "rightarmflinch" + 8 : "leftarmflinch" + 9 : "launchgrenade" + 10 : "throwgrenade" + 11 : "idle1" + 12 : "idle2" + 13 : "combatidle" + 14 : "frontkick" + 15 : "crouching_idle" + 16 : "crouching_wait" + 17 : "crouching_mp5" + 18 : "standing_mp5" + 19 : "reload_mp5" + 20 : "crouching_shotgun" + 21 : "standing_shotgun" + 22 : "reload_shotgun" + 23 : "advance_signal" + 24 : "flank_signal" + 25 : "retreat_signal" + 26 : "drop_grenade" + 27 : "limpingwalk" + 28 : "limpingrun" + 29 : "180L" + 30 : "180R" + 31 : "strafeleft" + 32 : "straferight" + 33 : "dieback1" + 34 : "dieforward" + 35 : "diesimple" + 36 : "diebackwards" + 37 : "dieheadshot" + 38 : "diegutshot" + 39 : "barnacled1" + 40 : "barnacled2" + 41 : "barnacled3" + 42 : "barnacled4" + 43 : "dead_on_stomach" + 44 : "deadstomach" + 45 : "deadside" + 46 : "deadsitting" + 47 : "repel_jump" + 48 : "repel_repel" + 49 : "repel_shoot" + 50 : "repel_land" + 51 : "repel_die" + 52 : "dragholeidle" + 53 : "draghole" + 54 : "bustwall" + 55 : "hoprail" + 56 : "converse1" + 57 : "converse2" + 58 : "startleleft" + 59 : "startleright" + 60 : "divecover" + 61 : "defuse" + 62 : "corner1" + 63 : "corner2" + 64 : "stonetoss" + 65 : "cliffdie" + 66 : "diveaside_idle" + 67 : "diveaside" + 68 : "kneeldive_idle" + 69 : "kneeldive" + 70 : "WM_button" + 71 : "WM_moatjump" + 72 : "bustwindow" + 73 : "dragleft" + 74 : "dragright" + 75 : "trackwave" + 76 : "trackdive" + 77 : "flyback" + 78 : "impaled" + 79 : "jumptracks" + 80 : "pipetoss" + 81 : "plunger" + ] +] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" [] +@PointClass base(Monster, Sequence) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" [] +@PointClass base(Monster, Sequence) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" [] +@PointClass base(Monster, Sequence) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey" +[ + spawnflags(Flags) = + [ + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat (no ai)" [] +@PointClass base(Weapon,Targetx,RenderFields, Sequence) studio("models/w_satchel.mdl") = monster_satchelcharge : "Live Satchel Charge" [] +@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 13 = + [ + 0 : "walk" + 1 : "walk_scared" + 2 : "run" + 3 : "run1" + 4 : "run2" + 5 : "180_Left" + 6 : "180_Right" + 7 : "flinch" + 8 : "flinch1" + 9 : "laflinch" + 10 : "raflinch" + 11 : "llflinch" + 12 : "rlflinch" + 13 : "idle1" + 14 : "idle3" + 15 : "idle4" + 16 : "idle5" + 17 : "idle6" + 18 : "idle7" + 19 : "crouchstand" + 20 : "crouch_idle" + 21 : "crouch_idle2" + 22 : "crouch_idle3" + 23 : "crouch_idle3" + 24 : "panic" + 25 : "fear1" + 26 : "fear2" + 27 : "eye_wipe" + 28 : "pull_needle" + 29 : "return_needle" + 30 : "give_shot" + 31 : "diesimple" + 32 : "dieforward" + 33 : "dieforward1" + 34 : "diebackward" + 35 : "headshot" + 36 : "gutshot" + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + 43 : "barnacled1" + 44 : "barnacled2" + 45 : "barnacled3" + 46 : "barnacled4" + 47 : "console" + 48 : "checktie" + 49 : "dryhands" + 50 : "tieshoe" + 51 : "whiteboard" + 52 : "studycart" + 53 : "lean" + 54 : "pondering" + 55 : "pondering2" + 56 : "pondering3" + 57 : "buysoda" + 58 : "pause" + 59 : "yes" + 60 : "no" + 61 : "push_button" + 62 : "converse1" + 63 : "converse2" + 64 : "retina" + 65 : "talkleft" + 66 : "talkright" + 67 : "deskidle" + 68 : "coffee" + 69 : "franticbutton" + 70 : "startle" + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + 76 : "cprscientist" + 77 : "cprscientistrevive" + 78 : "cowering_in_corner" + 79 : "sstruggleidle" + 80 : "sstruggle" + 81 : "headcrabbed" + 82 : "c1a0_catwalkidle" + 83 : "c1a0_catwalk" + 84 : "ceiling_dangle" + 85 : "ventpull1" + 86 : "ventpull2" + 87 : "ventpullidle1" + 88 : "ventpullidle2" + 89 : "sitidle" + 90 : "sitstand" + 91 : "keypad" + 92 : "panic1" + 93 : "lookwindow" + 94 : "wave" + 95 : "pulldoor" + 96 : "beatdoor" + 97 : "fallingloop" + 98 : "crawlwindow" + 99 : "divewindow" + 100 : "locked_door" + 101 : "push_button2" + 102 : "unlock_door" + 103 : "quicklook" + 104 : "handrailidle" + 105 : "handrail" + 106 : "hanging_idle" + 107 : "fall" + 108 : "scientist_get_pulled" + 109 : "hanging_idle2" + 110 : "fall_elevator" + 111 : "scientist_idlewall" + 112 : "ickyjump_sci" + 113 : "haulscientist" + 114 : "c1a4_wounded_idle" + 115 : "c1a4_dying_speech" + 116 : "tentacle_grab" + 117 : "helicack" + 118 : "windive" + 119 : "scicrashidle" + 120 : "scicrash" + 121 : "onguard" + 122 : "seeya" + 123 : "rocketcrawl" + 124 : "portal" + 125 : "gluonshow" + 126 : "crouch" + 127 : "kneel" + ] +] +@PointClass base(Appearflags,RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + pose(Choices) : "Pose" : 0 = + [ + 0 : "On back" + 1 : "On Stomach" + 2 : "Sitting" + 3 : "Hanging" + 4 : "Table1" + 5 : "Table2" + 6 : "Table3" + ] + sequence(Choices) : "Animation Sequence (editor)" : 37 = + [ + 37 : "lying_on_back" + 38 : "lying_on_stomach" + 39 : "dead_sitting" + 40 : "dead_table1" + 41 : "dead_table2" + 42 : "dead_table3" + ] +] +@PointClass base(Monster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist" +[ + body(Choices) : "Body" : -1 = + [ + -1 : "Random" + 0 : "Glasses" + 1 : "Einstein" + 2 : "Luther" + 3 : "Slick" + ] + sequence(Choices) : "Animation Sequence (editor)" : 73 = + [ + 71 : "sitlookleft" + 72 : "sitlookright" + 73 : "sitscared" + 74 : "sitting2" + 75 : "sitting3" + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" [] +@PointClass base(Monster, Sequence) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm" +[ + sweeparc(integer) : "Sweep Arc" : 130 + sound(Choices) : "Tap Sound" : -1 = + [ + -1 : "None" + 0 : "Silo" + 1 : "Dirt" + 2 : "Water" + ] +] +@PointClass base(Monster, Sequence) studio("models/v_tripmine.mdl") body(3) sequence(7) = monster_tripmine : "Active Tripmine" +[ + spawnflags(Flags) = + [ + 1 : "Instant On" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret" +[ + orientation(Choices) : "Orientation" : 0 = + [ + 0 : "Floor Mount" + 1 : "Ceiling Mount" + ] + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + ] +] +@PointClass base(Monster, Sequence) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [] +@PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker" +[ + target(string) : "Target On Release" + monstertype(string) : "Monster Type" + netname(string) : "Childrens' Name" + spawnflags(Flags) = + [ + 1 : "Start ON" : 0 + // 2 : "PVS On/Off" : 0 // not implemented + 4 : "Cyclic" : 0 + 8 : "MonsterClip" : 0 + ] + + // how many monsters the monstermaker can create (-1 = unlimited) + monstercount(integer) : "Number of Monsters" : -1 + + // if delay is -1, new monster will be made when last monster dies. + // else, delay is how often (seconds) a new monster will be dookied out. + delay(string) : "Frequency" : "5" + + // maximum number of live children allowed at one time. (New ones will not be made until one dies) + // -1 no limit + m_imaxlivechildren(integer) : "Max live children" : 5 +] + +@PointClass base(Targetname) color(255 128 0) iconsprite("sprites/multi_manager.spr") = multi_manager : "MultiTarget Manager" +[ + spawnflags(Flags) = + [ + 1 : "multithreaded" : 0 + ] +] + +@PointClass base(Targetname, Target) color(128 255 128) iconsprite("sprites/multisource.spr") = multisource : "Multisource" +[ + globalstate(string) : "Global State Master" +] + +@PointClass base(Targetname, Angles) flags(Path) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport" : 0 + 4: "Fire once" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 +] + +@PointClass base(Targetname, Angles) flags(Path) size(16 16 16) = path_track : "Train Track Path" +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + ] + target(target_destination) : "Next stop target" + message(target_destination) : "Fire On Pass" + altpath(target_destination) : "Branch Path" + netname(target_destination) : "Fire on dead end" + speed(integer) : "New Train Speed" : 0 +] + +// +// player effects +// + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + messagetime(string) : "Show Message delay" : "0" + message(string) : "Message To Display" : "" + loadtime(string) : "Reload delay" : "0" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" [] + +@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 0 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 0 + 8 : "Concurrent" : 0 + ] + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + duration(string) : "Sentence Time" : "3" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] +] + +@PointClass base(Targetname, Targetx, Angles) flags(Angle) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" +[ + m_iszEntity(string) : "Target Monster" + m_iszPlay(string) : "Action Animation" : "" + m_iszIdle(string) : "Idle Animation" : "" + m_flRadius(integer) : "Search Radius" : 512 + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(choices) : "Move to Position" : 0 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "No Script Movement" : 0 + ] +] + +@PointClass iconsprite("sprites/speaker.spr") base(Targetname) = speaker : "Announcement Speaker" +[ + preset(choices) :"Announcement Presets" : 0 = + [ + 0: "None" + 1: "C1A0 Announcer" + 2: "C1A1 Announcer" + 3: "C1A2 Announcer" + 4: "C1A3 Announcer" + 5: "C1A4 Announcer" + 6: "C2A1 Announcer" + 7: "C2A2 Announcer" + // 8: "C2A3 Announcer" + 9: "C2A4 Announcer" + // 10: "C2A5 Announcer" + 11: "C3A1 Announcer" + 12: "C3A2 Announcer" + ] + message(string) : "Sentence Group Name" + health(integer) : "Volume (10 = loudest)" : 5 + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + ] +] + +@PointClass base(Targetname) = target_cdaudio : "CD Audio Target" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] + radius(string) : "Player Radius" +] + +// +// Triggers +// + +@PointClass base(Targetx) iconsprite("sprites/trigger_auto.spr") = trigger_auto : "AutoTrigger" +[ + spawnflags(Flags) = + [ + 1 : "Remove On fire" : 0 + ] + globalstate(string) : "Global State to Read" + triggerstate(choices) : "Trigger State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Toggle" + ] +] + +@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger" +[ + master(string) : "Master" +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/trigger_camera.spr") = trigger_camera : "Trigger Camera" +[ + wait(integer) : "Hold time" : 10 + moveto(string) : "Path Corner" + spawnflags(flags) = + [ + 1: "Start At Player" : 0 + 2: "Follow Player" : 0 + 4: "Freeze Player" : 0 + ] + speed(string) : "Initial Speed" : "0" + acceleration(string) : "Acceleration units/sec^2" : "500" + deceleration(string) : "Stop Deceleration units/sec^2" : "500" +] + +@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio" +[ + health(choices) : "Track #" : -1 = + [ + -1 : "Stop" + 1 : "Track 1" + 2 : "Track 2" + 3 : "Track 3" + 4 : "Track 4" + 5 : "Track 5" + 6 : "Track 6" + 7 : "Track 7" + 8 : "Track 8" + 9 : "Track 9" + 10 : "Track 10" + 11 : "Track 11" + 12 : "Track 12" + 13 : "Track 13" + 14 : "Track 14" + 15 : "Track 15" + 16 : "Track 16" + 17 : "Track 17" + 18 : "Track 18" + 19 : "Track 19" + 20 : "Track 20" + 21 : "Track 21" + 22 : "Track 22" + 23 : "Track 23" + 24 : "Track 24" + 25 : "Track 25" + 26 : "Track 26" + 27 : "Track 27" + 28 : "Track 28" + 29 : "Track 29" + 30 : "Track 30" + ] +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + targetname(string) : "Name" + map(string) : "New map name" + landmark(string) : "Landmark name" + changetarget(target_destination) : "Change Target" + changedelay(string) : "Delay before change target" : "0" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + 2: "USE Only" : 0 + ] +] + +@PointClass base(Targetx, Targetname) iconsprite("sprites/trigger_changetarget.spr") = trigger_changetarget : "Trigger Change Target" +[ + m_iszNewTarget(string) : "New Target" +] + +@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = + [ + 1 : "No Message" : 0 + ] + master(string) : "Master" + count(integer) : "Count before activation" : 2 +] + +@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger" +[ + section(string) : "Section" + spawnflags(flags) = + [ + 1: "USE Only" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" +[ + spawnflags(flags) = + [ + 1: "Target Once" : 0 + 2: "Start Off" : 0 + 8: "No clients" : 0 + 16:"FireClientOnly" : 0 + 32:"TouchClientOnly" : 0 + ] + master(string) : "Master" + dmg(integer) : "Damage" : 10 + delay(string) : "Delay before trigger" : "0" + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@SolidClass base(Angles) = trigger_monsterjump : "Trigger monster jump" +[ + master(string) : "Master" + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] + +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [] + +@SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = + [ + 1: "Once Only" : 0 + 2: "Start Off" : 0 + ] + speed(integer) : "Speed of push" : 40 +] + +@PointClass base(Targetname, Targetx) iconsprite("sprites/trigger_relay.spr") = trigger_relay : "Trigger Relay" +[ + spawnflags(flags) = + [ + 1: "Remove On fire" : 0 + ] + triggerstate(choices) : "Trigger State" : 0 = + [ + 0: "Off" + 1: "On" + 2: "Toggle" + ] +] + +@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [] + +@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] + +// +// weapons +// + +@PointClass base(Weapon, Targetx) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon, Targetx) studio("models/w_9mmhandgun.mdl") = weapon_9mmhandgun : "9mm Handgun" [] +@PointClass base(Weapon, Targetx) studio("models/w_357.mdl") = weapon_357 : "357 Handgun" [] +@PointClass base(Weapon, Targetx) studio("models/w_9mmar.mdl") = weapon_9mmAR : "9mm Assault Rifle" [] +@PointClass base(Weapon, Targetx) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon, Targetx) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" [] +@PointClass base(Weapon, Targetx) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" [] +@PointClass base(Weapon, Targetx) studio("models/w_crossbow.mdl") = weapon_crossbow : "Crossbow" +[ + sequence(choices) : "Placement" : 0 = + [ + 0 : "Normal (flat)" + 1 : "Realistic (tilted)" + ] +] +@PointClass base(Weapon, Targetx) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" [] +@PointClass base(Weapon, Targetx) studio("models/v_tripmine.mdl") body(3) sequence(8) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" [] +@PointClass base(Weapon, Targetx) studio("models/w_squeak.mdl") = weapon_snark : "Squeak Grenade" [] +@PointClass base(Weapon, Targetx) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" [] +@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_chainammo.mdl") = weaponbox : "Weapon/Ammo Container" [] + +@PointClass base(Weapon, Targetx) = world_items : "World Items" +[ + type(choices) :"types" : 42 = + [ + 42: "Antidote" + 43: "Security Card" + 44: "Battery" + 45: "Suit" + ] +] + +// +// Xen +// + +@PointClass base(Target, Targetname, RenderFields, Angles) flags(Angle) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl") = xen_plantlight : "Xen Plant Light" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) size(-8 -8 0, 8 8 32 ) studio("models/hair.mdl") = xen_hair : "Xen Hair" +[ + spawnflags(Flags) = + [ + 1 : "Sync Movement" : 0 + ] +] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl") = xen_tree : "Xen Tree" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl") = xen_spore_small : "Xen Spore (small)" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl") = xen_spore_medium : "Xen Spore (medium)" [] +@PointClass base(Targetname, RenderFields, Angles) flags(Angle) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl") = xen_spore_large : "Xen Spore (large)" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/hexen2.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/hexen2.fgd new file mode 100644 index 0000000..2cd5682 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/hexen2.fgd @@ -0,0 +1,1430 @@ +// +// Hexen 2 game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// written by autolycus / autolycus@planetquake.com +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Level name" + worldtype(choices) : "Ambience" : 0 = + [ + 0 : "castle" + 1 : "egypt" + 2 : "meso" + 3 : "roman" + ] + CD(integer) : "CD track to play" : 1 + MIDI(string) : "Midi file to play" +] + +// +// base marker definitions +// + +@baseclass = Appearflags [ + spawnflags(Flags) = + [ + 256 : "Not in Easy" : 0 + 512 : "Not in Normal" : 0 + 1024 : "Not in Hard" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@baseclass = Targetname [ targetname(target_source) : "Name" ] +@baseclass = Target [ target(target_destination) : "Target" ] +@BaseClass base(Appearflags) flags(Angle) = Object [] +@baseclass = Angles [ + angles(string) : "Angles (X Y Z)" : "0 0 0" +] + +@baseclass = Spawn [ + bluemana(integer) : "Blue mana" + greenmana(integer) : "Green mana" + cnt_torch(integer) : "Torch" + cnt_h_boost(integer) : "Quartz flask" + cnt_sh_boost(integer) : "Mystic urn" + cnt_mana_boost(integer) : "Krater of might" + cnt_teleport(integer) : "Chaos device" + cnt_tome(integer) : "Tome of power" + cnt_summon(integer) : "Stone of summoning" + cnt_invisibility(integer) : "Invisibility" + cnt_glyph(integer) : "Glyph of ancients" + cnt_haste(integer) : "Boots of speed" + cnt_blast(integer) : "Disc of repulsion" + cnt_polymorph(integer) : "Ovinimancer" + cnt_cubeofforce(integer) : "Force cube" + cnt_invincibility(integer) : "Invincibility" +] + +// +// player starts, deathmatch, coop, teleport +// + +@baseclass base(Object) size(-16 -16 -32, 16 16 32) offset(0 0 32) + color(0 255 0) = PlayerClass [] + +@PointClass base(PlayerClass, Targetname) = info_player_start : "Player 1 start" [] +@PointClass base(PlayerClass, Targetname) = info_player_start2 : "Player 1 start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] + +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = air_bubbles : "Air bubbles" [] + +// +// Artifacts +// +@BaseClass base(Appearflags) size(-8 -8 -44, 8 8 20) color(80 0 200) = Artifact +[ + spawnflags(Flags) = + [ + 1 : "Floating" : 0 + ] +] +@PointClass base(Artifact) studio("models/a_blast.mdl") = art_blastradius : "Blast Radius" [] +@PointClass base(Artifact) studio("models/a_cube.mdl") = art_cubeofforce : "Cube of Force" [] +@PointClass base(Artifact) studio("models/a_glyph.mdl") = art_glyph : "Glyph" [] +@PointClass base(Artifact) studio("models/a_haste.mdl") = art_haste : "Haste" [] +@PointClass base(Artifact) studio("models/a_hboost.mdl") = art_HealthBoost : "Health Boost" [] +@PointClass base(Artifact) studio("models/a_invinc.mdl") = art_invincibility : "Invincibility" [] +@PointClass base(Artifact) studio("models/a_invis.mdl") = art_invisibility : "Invisibility" [] +@PointClass base(Artifact) studio("models/a_mboost.mdl") = art_manaboost : "Mana Boost" [] +@PointClass base(Artifact) studio("models/a_poly.mdl") = art_polymorph : "Polymorph" [] +@PointClass base(Artifact) studio("models/a_summon.mdl") = art_summon : "Summoning" [] +@PointClass base(Artifact) studio("models/a_shbost.mdl") = art_SuperHBoost : "Super Health Boost" [] +@PointClass base(Artifact) studio("models/a_telprt.mdl") = art_teleport : "Teleport" [] +@PointClass base(Artifact) studio("models/a_tome.mdl") = art_tomeofpower : "Tome of Power" [] +@PointClass base(Artifact) studio("models/a_torch.mdl") = art_torch : "Torch" [] + +@SolidClass base(Appearflags) = breakable_brush : "Breakable brush" +[ + spawnflags(Flags) = + [ + 1 : "Kill All" : 0 + 2 : "Hierarchy" : 0 + 4 : "No Link" : 0 + 8 : "Check Name" : 0 + 16 : "Ordered" : 0 + 32 : "Translucent" : 0 + 64 : "Invincible" : 0 + 128 : "Invisible" : 0 + ] + flags(integer) : "Hierachial order" + thingtype(choices) : "Material type" : 0 = + [ + 0 : "glass (default)" + 1 : "grey stone" + 2 : "wood" + 3 : "metal" + 4 : "flesh" + 5 : "fire" + 6 : "clay" + 7 : "leaves" + 8 : "hay" + 9 : "brown stone" + 10 : "cloth" + 11 : "wood & leaf" + 12 : "wood & metal" + 13 : "wood & stone" + 14 : "metal & stone" + 15 : "metal & cloth" + 16 : "spider web" + 19 : "clear glass" + 20 : "red glass" + ] + health(choices) : "Health" : 0 = + [ + 0 : "Based on material" + ] + abslight(integer) : "Absolute light level" +] + +@SolidClass base(Appearflags) = brush_pushable : "Pushable brush" +[ + mass(integer) : "Mass" : 5 +] + +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = camera_remote : "Camera" +[ + target(target_destination) : "Target (target_null)" + wait(integer) : "Time in camera mode" : 3 + angles_x(integer) : "pitch (optional)" + angles_y(integer) : "yaw (optional)" +] + +@SolidClass base(Appearflags, Target, Targetname) = func_angletrigger : "rotating trigger" +[ + mangle(string) : "Mangle (x y z)" + cnt(integer) : "Degrees per move" + dmg(integer) : "Damage when blocked" +] + +@SolidClass base(Appearflags, Target, Targetname) = func_button : "Button" +[ + spawnflags(Flags) = + [ + 1 : "Deactivated" : 0 + 2 : "Fired only" : 0 + 4 : "Fire multiple" : 0 + ] + speed(integer) : "Speed" : 40 + wait(choices) : "Wait" : 1 = + [ + -1 : "Stay pressed" + ] + lip(integer) : "Lip" : 4 + health(integer) : "Health" + abslight(integer) : "Absolute light value" + soundtype(choices) : "Sounds" : 0 = + [ + 0 : "steam metal" + 1 : "wooden clunk" + 2 : "metallic click" + 3 : "in-out" + ] +] + +@SolidClass base(Appearflags, Targetname) = func_crusher : "Crusher" +[ + spawnflags(Flags) = + [ + 1 : "multiple" : 0 + 2 : "slide" : 0 + 4 : "start open" : 0 + 8 : "end open" : 0 + ] + speed(integer) : "Speed" : 150 + dmg(integer) : "Damage" : 10 + lip(integer) : "Lip" : 4 + wait(integer) : "Wait" : 1 + soundtype(choices) : "Sounds" : 1 = + [ + 1 : "base fast" + 2 : "chain slow" + 3 : "guillotine" + ] +] + +@BaseClass base(Appearflags, Targetname) = Door +[ + spawnflags(Flags) = + [ + 1 : "start open" : 0 + 2 : "reverse" : 0 + 4 : "dont link" : 0 + ] + message(string) : "Message" + health(integer) : "Health (shootable)" + speed(integer) : "Speed" : 100 + wait(choices) : "Wait" : 3 = + [ + 3 : "default (3)" + -1 : "Never return" + ] + dmg(choices) : "Damage" : 2 = + [ + 2 : "default (2)" + 666 : "instant kill (666)" + ] + strength(integer) : "Strength" : 1 + soundtype(choices) : "Sounds" : 4 = + [ + 0 : "no sound" + 1 : "big metal door, swinging" + 2 : "big stone door, sliding" + 3 : "big wood door, swinging" + 4 : "normal wood door, swinging" + 5 : "big wood door, sliding" + 6 : "drawbridge" + 7 : "rotating walkway" + 8 : "big metal door, sliding" + 9 : "pendulum swinging" + ] + puzzle_piece_1(integer) : "Puzzle Piece 1" + puzzle_piece_2(integer) : "Puzzle Piece 2" + puzzle_piece_3(integer) : "Puzzle Piece 3" + puzzle_piece_4(integer) : "Puzzle Piece 4" + no_puzzle_msg(string) : "Puzzle message" +] + +@SolidClass base(Door) = func_door : "Door" +[ + spawnflags(Flags) = + [ + 8 : "toggle" : 0 + 16 : "slide" : 0 + 32 : "normal move" : 0 + 64 : "remove puzzle" : 0 + 128 : "no puzzle" : 0 + ] + level(integer) : "movement length" + lip(integer) : "Lip" : 8 + v_angle(string) : "Angle to turn" : "0 0 0" + anglespeed(integer) : "Turning speed" : 0 +] + +@SolidClass base(Door) = func_door_rotating : "Rotating door" +[ + spawnflags(Flags) = + [ + 8 : "remove puzzle" : 0 + 16 : "no puzzle" : 0 + 32 : "toggle" : 0 + 64 : "x axis" : 0 + 128 : "y axis" : 0 + ] + flags(integer) : "Degrees of rotation" + flags2(integer) : "Damage when touched" + abslight(integer) : "Absolute light value" +] + +@SolidClass base(Door) = func_door_secret : "Secret door" +[ + spawnflags(Flags) = + [ + 1 : "open once" : 0 + 2 : "1st left" : 0 + 4 : "1st down" : 0 + 8 : "no shoot" : 0 + 16 : "always shoot" : 0 + 32 : "" : 0 + 64 : "remove puzzle" : 0 + 128: "no puzzle" : 0 + ] + t_width(integer) : "Override width" + t_length(integer) : "Override length" +] + +@SolidClass base(Door) = func_door_smashing : "Smashing door" +[ + spawnflags(Flags) = + [ + 2 : "" : 0 + 8 : "toggle" : 0 + 16 : "slide" : 0 + 32 : "normal move" : 0 + 64 : "remove puzzle" : 0 + 128 : "no puzzle" : 0 + ] +] + +@SolidClass base(Appearflags) = func_illusionary : "Illusionary brush" +[ + spawnflags(Flags) = + [ + 1 : "translucent" : 0 + 2 : "light" : 0 + ] + abslight(integer) : "Absolute light value" +] + +@PointClass base(Appearflags, Targetname) size(-16 -16 0, 16 16 56) = func_monsterspawn_spot : "spawn spot" +[ + spawnflags(Flags) = + [ + 1 : "Imp" : 0 + 2 : "Archer" : 0 + 4 : "Wizard" : 0 + 8 : "Scorpian" : 0 + 16 : "Spider" : 0 + 32 : "on death" : 0 + 64 : "quiet" : 0 + ] + aflag(integer) : "Spawn order" + cnt(integer) : "Number of spawns" : 17 + spawnername(string) : "Spawnername" + wait(integer) : "Time between spawns (0.5)" : 0 +] + +@PointClass base(func_monsterspawn_spot) size(-16 -16 0, 16 16 56) = func_monsterspawner : "spawner" +[ + spawnflags(Flags) = + [ + 128 : "trigger only" : 0 + ] +] + +@SolidClass base(Appearflags, Targetname) = func_newplat : "New plat" +[ + spawnflags(Flags) = + [ + 1 : "bottom start" : 0 + 2 : "return to start" : 0 + 4 : "continuous" : 0 + ] + speed(integer) : "Speed" : 150 + height(integer) : "Height" + soundtype(choices) : "Sounds" : 1 = + [ + 1 : "base fast" + 2 : "chain slow" + ] + wait(integer) : "Wait before moving" : 3 +] + +@SolidClass base(Appearflags, Targetname) = func_plat : "Plat" +[ + spawnflags(Flags) = + [ + 1 : "trigger low" : 0 + ] + speed(integer) : "Speed" : 150 + height(integer) : "Height" + soundtype(choices) : "Sounds" : 1 = + [ + 1 : "pully" + 2 : "chain" + ] + wait(integer) : "Wait before moving" : 3 +] + +@SolidClass base(func_button) = func_pressure : "Pressure plate" +[ + spawnflags(Flags) = + [ + 1 : "activate" : 0 + 2 : "" : 0 + 4 : "" : 0 + ] + mass(integer) : "Mass required" +] + +@SolidClass base(Appearflags, Targetname) = func_reflect : "missilie relector" +[ + spawnflags(Flags) = + [ + 1 : "return" : 0 + 2 : "toggle" : 0 + 4 : "start open" : 0 + ] +] + +@SolidClass base(Appearflags, Targetname) = func_rotating : "Rotating object" +[ + spawnflags(Flags) = + [ + 1 : "start on" : 0 + 2 : "reverse" : 0 + 4 : "x axis" : 0 + 8 : "y axis" : 0 + 16 : "break" : 0 + 32 : "gradual" : 0 + 64 : "toggle reverse" : 0 + 128 : "keep start" : 0 + ] + speed(integer) : "Speed" : 100 + dmg(integer) : "Damage when blocked" : 2 + lifetime(choices) : "Lifetime" : 0 = + [ + 0 : "Continuous" + ] + wait(integer) : "Time between lifetimes" : 3 + thingtype(choices) : "Material type" : 0 = + [ + 0 : "glass" + 1 : "grey stone" + 2 : "wood" + 3 : "metal" + 4 : "flesh" + ] + health(choices) : "Health" : 0 = + [ + 0 : "Based on material" + ] + abslight(integer) : "Absolute light value" + anglespeed(integer) : "accel/decell time" : 10 +] + +@SolidClass base(Appearflags, Targetname) = func_rotating_movechain : "move chain" +[ + spawnflags(Flags) = + [ + 1 : "No angle chain" : 0 + ] + netname(string) : "Netname" + dmg(integer) : "Damage on touch" + noise(string) : "Noise" + noise1(string) : "Impact noise" + wait(integer) : "Length of sound (for looping)" + avelocity(string) : "Pitch/Yaw/Roll" : "0 0 0" +] + +@SolidClass base(Appearflags, Targetname) = func_train : "Train" +[ + spawnflags(Flags) = + [ + 1 : "glow" : 0 + 2 : "toggle" : 0 + 4 : "return" : 0 + 8 : "translucent" : 0 + ] + speed(integer) : "Speed" : 100 + dmg(integer) : "Damage when blocked" : 2 + soundtype(choices) : "Sound" : 1 = + [ + 1 : "ratchet metal" + ] + distance(integer) : "Distance" + anglespeed(integer) : "Speed of rotation" : 100 + wait(choices) : "Wait between moves" : 0 = + [ + 0 : "no wait" + -1 : "stop" + -2 : "explode" + ] + pausetime(integer) : "Pause before explode" + thingtype(choices) : "Material" : 1 = + [ + 0 : "glass" + 1 : "grey stone" + 2 : "wood" + 3 : "metal" + 4 : "flesh" + 5 : "fire" + 6 : "clay" + 7 : "leaves" + 8 : "hay" + 9 : "brown stone" + 10 : "cloth" + 11 : "wood & leaf" + 12 : "wood & metal" + 13 : "wood & stone" + 14 : "metal & stone" + 15 : "metal & cloth" + ] + abslight(integer) : "Absolute light value" +] + +@SolidClass base(Appearflags, Targetname) = func_wall : "Wall" +[ + spawnflags(Flags) = + [ + 1 : "Translucent" : 0 + ] + abslight(integer) : "Absolute light value" +] + +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = fx_colorbeam_end : "End of beam" [] +@PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 8) = fx_colorbeam_start : "Start of beam" +[ + spawnflags(Flags) = + [ + 1 : "start off" : 0 + ] + noise(choices) : "Noise" : 1 = + [ + 1 : "no sound (default)" + 2 : "lightning" + ] + wait(choices) : "Wait" : -1 = + [ + -1 : "Triggerable" + ] + color(choices) : "Color" : 0 = + [ + 0 : "red" + 1 : "blue" + 2 : "green" + 3 : "white" + 4 : "yellow" + ] + lifespan(integer) : "Lifespan" +] + +@SolidClass base(Appearflags) = fx_friction_change : "Friction change" +[ + friction(choices) : "Friction" : 1 = + [ + 1 : "normal (1)" + 0 : "slippery (> 0, < 1)" + 2 : "high (> 1)" + ] +] + +@PointClass base(Appearflags, Targetname) size(-5 -5 -5, 5 5 5) = fx_particle_explosion : "particle explosion" +[ + spawnflags(Flags) = + [ + 1 : "flash" : 0 + ] + color(choices) : "Color" : 101 = + [ + 31 : "white" + 47 : "light blue" + 63 : "purple" + 79 : "light green" + 85 : "light brown" + 101 : "red (default)" + 117 : "light blue" + 133 : "yellow" + 149 : "green" + 238 : "red to orange" + 242 : "purple to red" + 246 : "green to purple" + 250 : "blue - green" + 254 : "yellow to blue" + ] + exploderadius(integer) : "Exlpode radius (1 - 10)" : 5 + soundtype(choices) : "Sounds" : 1 = + [ + 0 : "no sound" + 1 : "rocket exlposion" + 2 : "grenade shoot" + ] + counter(integer) : "Number of particles (1 - 1024)" : 512 +] + +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = fx_smoke_generator : "smoker" +[ + wait(integer) : "Time between puffs" : 2 + thingtype(choices) : "Type of smoke" : 0 = + [ + 0 : "white puff" + 1 : "red" + 2 : "green" + 3 : "grey" + ] +] + +@PointClass base(Appearflags) size(-16 -16 -16, 16 16 16) = info_intermission : "intermission camera" +[ + mangle(string) : "Pitch/Roll/Yaw" : "0 0 0" +] + +@PointClass base(Appearflags, Targetname) size(-4 -4 -4, 4 4 4) = info_null : "null target" [] + +@BaseClass base(Appearflags, Target) size(-8 -8 -20, 8 8 45) color(80 0 200) = Item +[ + spawnflags(Flags) = + [ + 1 : "floating" : 0 + ] +] + +@PointClass base(Item) studio("models/i_amulet.mdl") = item_armor_amulet : "Armor amulet" [] +@PointClass base(Item) studio("models/i_bracer.mdl") = item_armor_bracer : "Armor bracer" [] +@PointClass base(Item) studio("models/i_bplate.mdl") = item_armor_breastplate : "Breastplate" [] +@PointClass base(Item) studio("models/i_helmet.mdl") = item_armor_helmet : "Helmet" [] +@PointClass base(Item) studio("models/i_hboost.mdl") = item_health : "10 health" [] +@PointClass base(Item) studio("models/i_btmana.mdl") = item_mana_both : "Mana" +[ + spawnflags(Flags) = + [ + 2 : "big (30)" : 0 + ] +] + +@PointClass base(Item) size(-8 -8 -8, 8 8 8) = item_mirage : "Holoduke type thing" [] +@PointClass base(Item, Spawn) = item_spawner : "generic item spawner" [] + +@PointClass base(Appearflags, Targetname, Target) flags(Light) iconsprite("sprites/light.spr") size(-8 -8 -8, 8 8 8) = light : "normal light" +[ + spawnflags(Flags) = + [ + 1 : "start low" : 0 + ] + light(integer) : "Brightness" : 300 + style(integer) : "Style" : 0 + lightvalue1(integer) : "Lowest light value" : 0 + lightvalue2(integer) : "Highest light value" : 11 + fadespeed(integer) : "Fade speed" : 1 +] + + +@PointClass base(light) size(-10 -10 -40, 10 10 40) studio("models/flame1.mdl") = light_flame_large_yellow : "Flame large yellow"[] +@PointClass base(light) size(-10 -10 -12, 12 12 18) studio("models/flame2.mdl") = light_flame_small_yellow : "Flame small yellow"[] +@PointClass base(light, Angles) size(-8 -8 -8, 8 8 8) studio("models/gemlight.mdl") = light_gem : "Gem light" [] +@PointClass base(light) size(-8 -8 -8, 8 8 8) studio("models/cflmtrch.mdl") = light_torch_castle : "Castle torch" +[ + health(integer) : "Health (shootable)" +] +@PointClass base(light_torch_castle) studio("models/eflmtrch.mdl") = light_torch_eqypt : "Egyptian torch" [] +@PointClass base(light_torch_castle) studio("models/mflmtrch.mdl") = light_torch_meso : "Meso torch" [] +@PointClass base(light_torch_castle) studio("models/rflmtrch.mdl") = light_torch_rome : "Roman torch" [] +@PointClass base(light) size(-10 -10 -20, 10 10 20) studio("models/flame.mdl") = light_torch_small_walltorch : "Walltorch" +[ + light(integer) : "Brightness" : 200 +] + +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = light_thunderstorm : "thunderstorm" +[ + light(integer) : "Brightness" : 300 + wait(integer) : "Wait (1 - 100)" : 33 + dmg(integer) : "Lightning frequency" : 10 + lightvalue1(integer) : "Normal light value" : 11 + frags(integer) : "Lightning area radius" : 1000 +] + +@PointClass base(Appearflags) size(0 0 2, 32 32 66) = misc_explobox : "Large exploding container" [] +@PointClass base(Appearflags) size(0 0 2, 32 32 34) = misc_explobox2 : "Small exploding container" [] + +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = misc_fireball : "Lava balls" [] + +@PointClass base(Appearflags) size(0 0 0, 32 32 32) = misc_fountain : "Fountain" +[ + angles(string) : "Angles (x y z)" : "0 0 0" + movedir(string) : "Direction (x y z)" : "1 1 1" + color(integer) : "Color" : 256 + cnt(integer) : "Number of particles" : 2 +] + +@PointClass size(-10 -10 -10, 10 10 10) = misc_noisemaker : "For optimization testing, starts a lot of sounds." [] + +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = misc_teleporttrain : "Moving teleporter" [] + +@BaseClass base(Appearflags, Target, Targetname) flags(Angle) size(-16 -16 0, 16 16 50) = Monster +[ + spawnflags(Flags) = + [ + 1 : "ambush" : 0 + 2 : "stuck" : 0 + 4 : "jump" : 0 + 8 : "play dead" : 0 + 16 : "dormant" : 0 + 32 : "no drop" : 0 + 64 : "frozen" : 0 + ] +] + +@PointClass base(Monster) studio("models/archer.mdl") = monster_archer : "Archer" [] +@PointClass base(Monster) studio("models/archer.mdl") = monster_archer_lord : "Archer lord" [] +@PointClass base(Appearflags, Targetname, Target) size(-100 -100 0, 100 100 666) studio("models/boss/smaleido.mdl") = monster_eidolon : "Eidolon" [] +@PointClass base(Monster) size(-14 -14 -41, 14 14 23) studio("models/fangel.mdl") = monster_fallen_angel : "Fallen angel" [] +@PointClass base(Monster) size(-14 -14 -41, 14 14 23) studio("models/fangel.mdl") = monster_fallen_angel_lord : "Fallen angel lord" [] +@PointClass base(Appearflags, Targetname, Target) size(-16 -16 -8, 16 16 8) studio("models/fish.mdl") = monster_fish : "Fish" +[ + skin(choices) : "Skin" : 0 = + [ + 0 : "Bright colored" + 1 : "Darker colored" + ] +] +@PointClass base(Appearflags, Targetname, Target) size(-64 -64 0, 64 64 194) studio("models/golem_b.mdl") = monster_golem_bronze : "Bronze golem" +[ + spawnflags(Flags) = + [ + 1 : "ambush" : 0 + ] +] +@PointClass base(monster_golem_bronze) size(-32 -32 -24, 32 32 64) studio("models/golem_s.mdl") = monster_golem_crystal : "Crystal golem" [] +@PointClass base(monster_golem_bronze) size(-55 -55 0, 55 55 120) studio("models/golem_i.mdl") = monster_golem_iron : "Iron golem" [] +@PointClass base(monster_golem_bronze) size(-32 -32 0, 32 32 112) studio("models/golem_s.mdl") = monster_golem_stone : "Stone golem" [] +@PointClass base(Appearflags, Targetname, Target) size(-40 -40 -42, 40 40 42) studio("models/hydra.mdl") = monster_hydra : "Hydra" +[ + spawnflags(Flags) = + [ + 1 : "stand" : 0 + 2 : "hover" : 0 + 4 : "jump" : 0 + 8 : "play dead" : 0 + 16 : "dormant" : 0 + ] +] +@PointClass base(Appearflags, Targetname, Target) studio("models/imp.mdl") = monster_imp_fire : "Fire imp" +[ + spawnflags(Flags) = + [ + 1 : "stand" : 0 + 2 : "hover" : 0 + 16 : "gargoyle" : 0 + ] +] +@PointClass base(monster_imp_fire) = monster_imp_ice : "Ice imp" [] +@PointClass base(monster_imp_fire) = monster_imp_lord : "Lord imp" [] +@PointClass base(Monster) studio("models/medusa.mdl") = monster_medusa_green : "Green medusa" [] +@PointClass base(monster_medusa_green) = monster_medusa_red : "Red medusa" [] +@PointClass base(Appearflags, Targetname, Target) size(-16 -16 0, 16 16 55) studio("models/mummy.mdl") = monster_mummy : "Mummy" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] +@PointClass base(Monster) = monster_mummy_lord : "Mummy lord" [] +@PointClass base(Appearflags, Targetname, Target) size(-3 -3 0, 3 3 7) studio("models/rat.mdl") = monster_rat : "Rat" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] +@PointClass base(monster_rat) size(-20 -20 0, 20 20 10) studio("models/rat.mdl") = monster_ratnest : "Rat's nest" [] +@PointClass base(Monster) studio("models/raven.mdl") = monster_raven : "Raven" [] +@PointClass base(Appearflags, Targetname, Target) size(-10 -10 0, 10 10 64) studio("models/scorpion.mdl") = monster_scorpion_yellow : "Yellow scorpion" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] +@PointClass base(monster_scorpion_yellow) skin(1) = monster_scorpion_black : "Black scorpion" [] +@PointClass base(Appearflags, Targetname, Target) size(-24 -24 0, 24 24 64) studio("models/skullwiz.mdl") = monster_skull_wizard : "Skull wizard" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] +@PointClass base(monster_skull_wizard) studio("models/skullwiz.mdl") = monster_skull_wizard_lord : "Skull wizard lord" [] +@PointClass base(Appearflags, Targetname, Target) size(-80 -80 0, 80 80 200) studio("models/snake.mdl") = monster_snake : "Snake" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] +@BaseClass base(Appearflags, Targetname, Target) = Spider +[ + spawnflags(Flags) = + [ + 1 : "ambush" : 0 + 2 : "stuck" : 0 + 4 : "jump" : 0 + 8 : "play dead" : 0 + 16 : "dormant" : 0 + 32 : "on wall" : 0 + ] +] +@PointClass base(Spider) size(-16 -16 0, 16 16 26) studio("models/spider.mdl") = monster_spider_red_large : "Big red bug" [] +@PointClass base(Spider) size(-12 -12 0, 12 12 16) studio("models/spider.mdl") = monster_spider_red_small : "Small red bug" [] +@PointClass base(Spider) size(-16 -16 0, 16 16 26) studio("models/spider.mdl") skin(1) = monster_spider_yellow_large : "Big yellow bug" [] +@PointClass base(Spider) size(-12 -12 0, 12 12 16) studio("models/spider.mdl") skin(1) = monster_spider_yellow_small : "Small yellow bug" [] +@PointClass base(Monster) studio("models/mezzoman.mdl") = monster_werejaguar : "Werejaguar" [] +@PointClass base(monster_werejaguar) studio("models/mezzoman.mdl") skin(1) = monster_werepanther : "Werepanther" [] + +// +// objects!!! +// +@PointClass base(Appearflags, Targetname) flags(Angle) size(-45 -45 0, 45 45 60) studio("models/ballista.mdl") = obj_ballista : "Ballista" +[ + spawnflags(Flags) = + [ + 1 : "track" : 0 + ] + health(choices) : "Health" : 0 = + [ + 0 : "Indestructible" + ] + cnt(integer) : "degrees of pitch off start" : 30 + count(integer) : "degrees per movement" : 5 + dmg(integer) : "Damage of projectile" : 50 + speed(integer) : "Delay between firings" : 5 +] +@PointClass base(Object, Spawn) size(-13 -13 0, 13 13 36) studio("models/barrel.mdl") = obj_barrel_indestructible : "Barrel" +[ + spawnflags(Flags) = + [ + 1 : "downhill" : 0 + 2 : "no drop" : 0 + 4 : "on side" : 0 + 8 : "floats" : 0 + ] +] +@PointClass base(obj_barrel_indestructible, Spawn) studio("models/barrel.mdl") = obj_barrel : "Barrel" [ health(integer) : "Health" : 25 ] +@PointClass base(obj_barrel) = obj_barrel_exploding : "Barrel" +[ + spawnflags(Flags) = + [ + 8 : "sink" : 0 + ] +] +@PointClass base(Object) size(-10 -10 -5, 10 10 32) studio("models/stool.mdl") = obj_barstool : "Bar stool" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/beefslab.mdl") = obj_beefslab : "Slab o' beef" [] +@PointClass base(Object) size(-100 -100 -210, 100 100 8) studio("models/bellring.mdl") = obj_bell : "Bell" [] +@PointClass base(Object) size(-30 -30 0, 30 30 40) studio("models/bench.mdl") = obj_bench : "Bench" [] +@PointClass base(Object) size(-10 -10 0, 10 10 10) studio("models/bonepile.mdl") = obj_bonepile : "Pile o' bones" [] +@PointClass base(Object) size(-8 -8 0, 8 8 10) studio("models/bookclos.mdl") = obj_book_closed : "Closed book" [] +@PointClass base(obj_book_closed) studio("models/bookopen.mdl") = obj_book_open : "Open book" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/bush1.mdl") = obj_bush1 : "Bush" [] +@PointClass base(Object) size(-36 -32 -10, 36 75 64) studio("models/cart.mdl") = obj_cart : "Cart" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/cauldron.mdl") = obj_cauldron : "Cauldron" [] +@PointClass base(Object) size(-10 -10 -5, 10 10 40) studio("models/chair.mdl") = obj_chair : "Chair" [] +@PointClass base(Object) size(-100 -100 0, 100 100 200) = obj_chaos_orb : "Chaos orb" [] //Spawns at 0,0,0 in the world regardless of where it is placed + +@PointClass base(Object, Spawn) size(-16 -16 0, 16 16 32) studio("models/chest3.mdl") = obj_chest3 : "Chest #3" [] +@PointClass base(obj_chest3) flags(Angle) studio("models/chest1.mdl") = obj_chest1 : "Chest #1" +[ + skin(choices) : "Skin" : 0 = + [ + 0 : "generic texture" + 1 : "roman texture" + ] +] +@PointClass base(obj_chest3) flags(Angle) studio("models/chest2.mdl") = obj_chest2 : "Chest #2" +[ + skin(choices) : "Skin" : 0 = + [ + 0 : "generic texture" + 1 : "meso texture" + 2 : "egypt texture" + ] +] + +@PointClass base(Object) size(-32 -32 0, 32 32 10) studio("models/corps1.mdl") = obj_corpse1 : "Corpse #1" +[ + skin(choices) : "Skin" : 1 = + [ + 0 : "burnt, nude guy" + 1 : "normal, nude guy" + 2 : "yucky diseased, nude guy" + 3 : "wound in back, has on pants" + ] +] +@PointClass base(obj_corpse1) studio("models/corps2.mdl") = obj_corpse2 : "Corpse #2" +[ + skin(choices) : "Skin" : 1 = + [ + 0 : "shoulder and facial wounds" + 1 : "clawed chest" + 2 : "stomach wound" + 3 : "just dead" + 4 : "webbed" + ] +] +@PointClass base(Object) size(-26 -26 0, 26 26 70) studio("models/fence.mdl") = obj_fence : "Fence" [] +@PointClass base(Object) size(-16 -16 0, 16 16 160) studio("models/flag.mdl") = obj_flag : "Flag" [] +@PointClass base(Object) size(-24 -24 0, 24 24 80) studio("models/fountain.mdl") = obj_fountain : "Fountain" [] +@PointClass base(Object) size(-16 -16 0, 16 16 80) studio("models/hedge1.mdl") = obj_hedge1 : "X-Mas tree" [] +@PointClass base(obj_hedge1) studio("models/hedge2.mdl") = obj_hedge2 : "Square, medium hedge" [] +@PointClass base(obj_hedge2) studio("models/hedge3.mdl") = obj_hedge3 : "Tall, thin hedge" [] +@SolidClass base(Object) = obj_ice : "Ice" +[ + spawnflags(Flags) = + [ + 1 : "no transparency" : 0 + ] + health(integer) : "Health" : 20 + friction(integer) : "Friction (0 - 10, 0.2)" : 0 + abslight(integer) : "Absolute light value (0.5)" : 0 +] +@PointClass base(Object) size(-16 -40 0, 16 40 50) studio("models/pew.mdl") = obj_pew : "Pew" [] +@PointClass base(Object) size(-10 -10 0, 10 10 20) studio("models/plantgen.mdl") = obj_plant_generic : "Generic plant" [] +@PointClass base(Object) size(-10 -10 0, 10 10 40) studio("models/plantmez.mdl") = obj_plant_meso : "Meso plant" [] +@PointClass base(Object) size(-24 -24 0, 24 24 90) studio("models/plantrom.mdl") = obj_plant_rome : "Roman plant" [] +@PointClass base(Object) size(-8 -8 0, 8 8 16) studio("models/h_ass.mdl") = obj_playerhead_assassin : "Assassin head" [] +@PointClass base(obj_playerhead_assassin) studio("models/h_cru.mdl") = obj_playerhead_crusader : "Crusader head" [] +@PointClass base(obj_playerhead_assassin) studio("models/h_nec.mdl") = obj_playerhead_necromancer : "Necro head" [] +@PointClass base(obj_playerhead_assassin) studio("models/h_pal.mdl") = obj_playerhead_paladin : "Paladin head" [] +@PointClass base(Object, Spawn) size(-24 -24 0, 24 24 50) studio("models/pot1.mdl") = obj_pot1 : "Pot #1" [] +@PointClass base(obj_pot1) size(-16 -16 0, 16 16 40) studio("models/pot2.mdl") = obj_pot2 : "Pot #2" [] +@PointClass base(obj_pot2) studio("models/pot3.mdl") = obj_pot3 : "Pot #3" [] +@PointClass base(Object) size(-8 -8 0, 8 8 32) studio("models/seaweed.mdl") = obj_seaweed : "Sea weed" [] +@PointClass base(Object) size(-8 -8 0, 8 8 16) studio("models/skull.mdl") = obj_skull : "Skull" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/skllstk1.mdl") = obj_skullstick : "1 skull, stick" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/skllstk2.mdl") = obj_skull_stick2 : "2 skulls, stick" [] +@PointClass base(Object) size(-60 -60 0, 60 60 120) studio("models/anglstat.mdl") = obj_statue_angel : "Angel" [] +@PointClass base(Object) size(-30 -30 0, 30 30 90) studio("models/athena.mdl") = obj_statue_athena : "Athena" [] +@PointClass base(Object) size(-24 -24 0, 24 24 90) studio("models/caesar.mdl") = obj_statue_caesar : "Caesar" [] +@PointClass base(Object) size(-30 -30 0, 30 30 120) studio("models/king.mdl") = obj_statue_king : "King" [] +@PointClass base(Object) size(-56 -14 0, 56 14 60) studio("models/lion.mdl") = obj_statue_lion : "Lion" [] +@PointClass base(Object) size(-30 -30 0, 30 30 80) studio("models/mars.mdl") = obj_statue_mars : "Mars" [] +@PointClass base(Object) size(-16 -16 0, 16 16 160) studio("models/mumstatu.mdl") = obj_statue_mummy : "Mummy" [] +@PointClass base(Object) size(-16 -16 -26, 16 16 160) studio("models/mhdstatu.mdl") = obj_statue_mummy_head : "Mummy head"[] +@PointClass base(Object) size(-30 -30 0, 30 30 100) studio("models/neptune.mdl") = obj_statue_neptune : "Neptune" [] +@PointClass base(Object) size(-40 -40 0, 40 40 130) studio("models/olmec1.mdl") = obj_statue_olmec : "Olmec???" [] +@PointClass base(Object) size(-16 -16 0, 16 16 80) studio("models/snkstatu.mdl") = obj_statue_snake : "Snake" [] +@PointClass base(Object) size(-44 -44 0, 44 44 90) = obj_statue_snake_coil : "Coiling snake" [] +@PointClass base(Object) size(-36 -36 0, 36 36 248) studio("models/tutstatu.mdl") = obj_statue_tut : "Tut" [] +@PointClass base(Object) size(-16 -16 -8, 16 16 8) studio("models/sword.mdl") = obj_sword : "Sword" [] +@PointClass base(Object) size(-24 -24 0, 24 24 60) studio("models/tombstn1.mdl") = obj_tombstone1 : "Cross tombstone" [] +@PointClass base(Object) size(-16 -16 0, 16 16 40) studio("models/tombstn2.mdl") = obj_tombstone2 : "Rounded tombstone" [] +@PointClass base(Object) size(-42 -42 0, 42 42 160) studio("models/tree.mdl") = obj_tree : "Leaveless tree" [] +@PointClass base(Object) size(-140 -140 -16, 140 140 220) studio("models/tree2.mdl") = obj_tree2 : "Normal tree" [] +@SolidClass base(Appearflags) = obj_stairs : "Stairs" [] +@PointClass base(Appearflags) size(-25 -25 -25, 25 25 25) = obj_webs : "Spider web" +[ + spawnflags(Flags) = + [ + 1 : "solid" : 0 + 2 : "animate" : 0 + 4 : "weak" : 0 + 8 : "touch & move" : 0 + 16 : "flat" : 0 + 32 : "no transparency" : 0 + ] + abslight(integer) : "Absolute light value" + health(integer) : "Health" : 0 + skin(choices) : "Skin" : 0 = + [ + 0 : "Many little webs" + 1 : "corner web" + 2 : "cobwebs" + 3 : "giant web" + 4 : "big ass web (15x)" + ] + scale(integer) : "Scale (0 - 2.5)" : 1 + v_angle(string) : "Angle of web (x y z)" : "0 0 0" +] + +@PointClass base(Appearflags) size(-16 -16 0, 16 16 56) = paladin_dead : "Dead paladin" [] + +@PointClass base(Appearflags, Targetname) flags(Path) size(-8 -8 -8, 8 8 8) = path_corner : "Monster and Train path" +[ + spawnflags(Flags) = + [ + 1 : "Synch" : 0 + ] + target(string) : "Next path_corner" + speed(integer) : "Speed" + angles(string) : "Rotation angle (x y z)" + anglespeed(integer) : "Rotation speed" +] + +@SolidClass base(Appearflags, Targetname) = plaque : "Readable plaque" +[ + spawnflags(Flags) = + [ + 1 : "invisible" : 0 + 2 : "deactivated" : 0 + ] + message(integer) : "String index #" + noise1(string) : "Noise (dir/sound.wav)" +] + +@PointClass base(Appearflags, Target) size(-8 -8 0, 8 8 32) studio("models/sheep.mdl") = player_sheep : "Sheep" +[ + spawnflags(Flags) = + [ + 1 : "stationary" : 0 + 2 : "stuck" : 0 + 4 : "jump" : 0 + 8 : "play dead" : 0 + 16 : "dormant" : 0 + 32 : "no drop" : 0 + ] +] + +@PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 16) = puzzle_piece : "Puzzle piece" +[ + spawnflags(Flags) = + [ + 1 : "spawn" : 0 + 2 : "floating" : 0 + 4 : "auto get" : 0 + ] + puzzle_id(integer) : "Puzzle id" + netname(string) : "Name of piece" +] + +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = puzzle_static_piece : "Static puzzle piece" +[ + puzzle_id(string) : "Name of puzzle" + lifespan(integer) : "Lifespan" +] + +@PointClass base(Appearflags, Targetname) size(-55 -55 -24, 55 55 100) = rider_death : "Death!" +[ + spawnflags(Flags) = + [ + 1 : "trigger wait" : 0 + ] + map(string) : "Next map after killing" + target(string) : "Start spot on next map" +] +@PointClass base(rider_death) = rider_famine : "Famine!" [] +@PointClass base(rider_death) = rider_pestilence : "Pestilence!" [] +@PointClass base(rider_death) size(-50 -50 -24, 50 50 100) = rider_war : "War!" [] + +@SolidClass base(Appearflags, Targetname) = rider_quake : "Rider quake" [] +@PointClass base(Appearflags) = rider_quake_center : "Quake center" [] + +@SolidClass base(Appearflags) = rider_trigger_multiple : "Trigger multiple" +[ + rt_chance(integer) : "Chance of triggering (0 - 1)" : 1 +] + +@SolidClass base(rider_trigger_multiple) = rider_trigger_once : "Trigger once" [] + +@PointClass base(Item) size(-8 -8 -44, 8 8 20) studio("models/ringft.mdl") = Ring_Flight : "Ring o' flight" [] +@PointClass base(Ring_Flight) studio("models/ringre.mdl") = Ring_Regeneration : "Ring o' regeneration" [] +@PointClass base(Ring_Flight) studio("models/ringtn.mdl") = Ring_Turning : "Ring o' turning" [] +@PointClass base(Ring_Flight) studio("models/ringwb.mdl") = Ring_WaterBreathing : "Ring o' water breathing" [] + +@SolidClass base(Appearflags) = ropebridge_link : "rope bridge" +[ + spawnflags(Flags) = + [ + 1 : "start" : 0 + ] + target(string) : "Next link" +] +@PointClass base(Appearflags) iconsprite("sprites/speaker.spr") = sound_ambient : "Ambient sound" +[ + soundtype(choices) : "Sound" : 4 = + [ + 1 : "windmill" + 2 : "sewer water sound" + 3 : "dripping water, no echo" + 4 : "subtle sky/wind" + 5 : "crickets / night sounds" + 6 : "birds" + 7 : "raven caw" + 8 : "rocks falling" + 9 : "lava bubble" + 10 : "water gurgle" + 11 : "metal" + 12 : "pounding" + 13 : "moans and screams" + 14 : "creaking" + 15 : "chain rattling" + ] +] + +@PointClass base(Appearflags, Targetname) size(-10 -10 -8, 10 10 8) iconsprite("sprites/speaker.spr") = sound_maker : "Triggerable sound" +[ + soundtype(choices) : "Sound" : 1 = + [ + 1 : "bell ringing" + 2 : "organ music" + 3 : "tomb sound" + ] +] + +@PointClass base(Appearflags) size(-48 -48 -16, 48 48 16) = sprite_backgrnd_1 : "Sprite background #1" [] +@PointClass base(sprite_backgrnd_1) = sprite_backgrnd_2 : "Sprite background #2" [] +@PointClass base(Appearflags) size(-16 -16 -10, 16 16 10) = sprite_moss1 : "Moss" [] +@PointClass base(Appearflags) size(-32 -32 -95, 32 32 90) = sprite_tree1 : "Tree" [] +@PointClass base(sprite_tree1) = sprite_tree2 : "Tree" [] +@PointClass base(Appearflags) size(-32 -32 -10, 32 32 10) = sprite_treetop : "Tree top" [] + +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = target_null : "Null target for camera" [] + +@PointClass base(Appearflags) size(-13 -13 -14, 13 13 22) = trap_boulder : "Boulder" [] +@PointClass base(Appearflags) size(0 0 0, 16 16 16) = trap_death_fireball : "Fireball" +[ + wait(integer) : "Time between firings (0.5)" : 0 + dmg(integer) : "Damage" : 10 +] +@PointClass base(Appearflags, Targetname, Target) size(0 0 0, 16 16 16) = trap_fireball : "Triggerable fireball" +[ + spawnflags(Flags) = + [ + 1 : "trigger only" : 0 + ] + wait(integer) : "Time between firings (0.5)" : 0 + dmg(integer) : "Damage" : 10 +] +@PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 8) = trap_lightning : "Lightning" +[ + spawnflags(Flags) = + [ + 1 : "track" : 0 + 2 : "once" : 0 + ] + noise(choices) : "Sounds" : 2 = + [ + 1 : "no sound" + 2 : "lightning" + ] + wait(integer) : "Time between shots" + aflag(integer) : "Radius limiter" + dmg(integer) : "Damage" +] +@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = trap_shooter : "Shooter" +[ + spawnflags(Flags) = + [ + 1 : "super spike" : 0 + 2 : "laser" : 0 + ] + wait(integer) : "Time between shots" : 1 + nextthink(integer) : "Delay before start" +] +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = trap_spikeshooter_spray : "Shooter" +[ + wait(integer) : "Time between shots" : 1 + nextthink(integer) : "Delay before start" +] +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = trap_spikeshooter : "Shooter" +[ + spawnflags(Flags) = + [ + 1 : "super spike" : 0 + 2 : "laser" : 0 + ] + wait(integer) : "Time between shots" : 1 + nextthink(integer) : "Delay before start" +] + +// +// triggers +// + +@BaseClass base(Appearflags, Targetname, Target) = Trigger +[ + killtarget(string) : "KillTarget" + netname(string) : "Netname" + aflag(integer) : "order" + wait(integer) : "Wait" + health(integer) : "Health" + delay(integer) : "Delay before trigger" + message(string) : "Message" +] + +@SolidClass base(Trigger) = trigger_activate : "Activate" +[ + spawnflags(Flags) = + [ + 1 : "once" : 0 + 2 : "relay" : 0 + 8 : "deactivated" : 0 + ] +] +@SolidClass base(Trigger) = trigger_attack : "Trigger on weapon fire" [] +@SolidClass base(Trigger) = trigger_changelevel : "Changes level" +[ + spawnflags(Flags) = + [ + 1 : "no intermission" : 0 + 2 : "end of unit" : 0 + 4 : "end of episode" : 0 + ] + map(string) : "Map name" +] +@SolidClass base(Trigger) = trigger_check : "Check" +[ + netname(string) : "Check name" +] +@SolidClass base(Trigger) = trigger_combination_assign : "Combination assign" +[ + spawnflags(Flags) = + [ + 1 : "no touch" : 0 + 2 : "monster touch" : 0 + 4 : "push touch" : 0 + 8 : "deactivated" : 0 + 16 : "remove puzzle" : 0 + 32 : "no puzzle" : 0 + 64 : "light start low" : 0 + ] + mangle(string) : "Mangle (x y z)" +] +@SolidClass base(Trigger) = trigger_control : "Ballista control" [] +@SolidClass base(Trigger) = trigger_counter : "Counter" +[ + spawnflags(Flags) = + [ + 1 : "no message" : 0 + 2 : "ordered" : 0 + 4 : "always return" : 0 + 8 : "deactivated" : 0 + ] + count(integer) : "number of triggers - 1" + mangle(string) : "Mangle (x1 x2 x3)" +] +@SolidClass base(Trigger) = trigger_counter_reset : "Counter reset" +[ + spawnflags(Flags) = + [ + 1 : "no touch" : 0 + 2 : "monster touch" : 0 + 4 : "push touch" : 0 + 8 : "deactivated" : 0 + 16 : "remove puzzle" : 0 + 32 : "no puzzle" : 0 + 64 : "light toggle" : 0 + 128 : "light start low" : 0 + ] +] +@SolidClass base(Trigger) = trigger_crosslevel : "Cross level trigger" +[ + spawnflags(Flags) = + [ + 1 : "trigger 1" : 0 + 2 : "trigger 2" : 0 + 4 : "trigger 3" : 0 + 8 : "trigger 4" : 0 + 16 : "trigger 5" : 0 + 32 : "trigger 6" : 0 + 64 : "trigger 7" : 0 + 128 : "trigger 8" : 0 + ] +] +@SolidClass base(trigger_crosslevel) = trigger_crosslevel_target : "Crosslevel trigger target" [] +@SolidClass base(trigger_activate) = trigger_deactivate : "Deactivate" [] +@SolidClass base(Appearflags, Targetname) = trigger_deathtouch : "Removes whatever it touches" +[ + th_die(integer) : "Death type" +] +@SolidClass base(Appearflags, Targetname) = trigger_fan_blow : "Blows player away from func_rotating" [] +@SolidClass base(Appearflags) = trigger_hurt : "Hurt brush" [ dmg(integer) : "Damage" : 5 ] +@PointClass base(Trigger) size(-8 -8 -8, 8 8 8) = trigger_interval : "Interval trigger?" [] +@SolidClass base(Appearflags) = trigger_magicfield : "magic field (does this exist???)" [] +@SolidClass base(Appearflags, Targetname, Target) = trigger_message_transfer : "Target transferer" +[ + message(string) : "Message" +] +@SolidClass base(Appearflags) = trigger_monsterjump : "Monster jumper" +[ + speed(integer) : "Speed forward" : 200 + height(integer) : "Speed upwards" : 200 +] +@SolidClass base(Trigger) = trigger_multiple : "Multiple trigger" +[ + spawnflags(Flags) = + [ + 1 : "no touch" : 0 + 2 : "monster touch" : 0 + 4 : "push touch" : 0 + 8 : "deactivated" : 0 + 16 : "remove puzzle" : 0 + 32 : "no puzzle" : 0 + 64 : "light toggle" : 0 + 128 : "light start low" : 0 + ] + soundtype(choices) : "Sounds" : 0 = + [ + 0 : "no sound" + 1 : "secret" + 2 : "beep beep" + 3 : "large switch" + ] + puzzle_piece_1(integer) : "Puzzle Piece 1" + puzzle_piece_2(integer) : "Puzzle Piece 2" + puzzle_piece_3(integer) : "Puzzle Piece 3" + puzzle_piece_4(integer) : "Puzzle Piece 4" + no_puzzle_msg(string) : "Puzzle message" +] +@SolidClass base(Appearflags) = trigger_no_friction : "Removes friction" [] +@SolidClass base(trigger_multiple) = trigger_once : "Single trigger" +[ + style(integer) : "Light toggle style (33 - 63)" + lightvalue1(integer) : "Low light value" : 0 + lightvalue2(integer) : "High light value" : 11 + fadespeed(integer) : "Fade speed (0.5)" : 0 +] +@SolidClass base(Trigger) = trigger_onlyregistered : "Registered trigger" [] +@SolidClass base(Appearflags, Targetname) = trigger_push : "Push" +[ + spawnflags(Flags) = + [ + 1 : "push once" : 0 + ] + speed(integer) : "Speed of push" +] +@SolidClass base(Appearflags, Targetname, Target) = trigger_quake : "Quake! er...Earthquake!" +[ + spawnflags(Flags) = + [ + 1 : "do damage" : 0 + 2 : "multiple" : 0 + ] + items(integer) : "Radius of quake" + dmg(integer) : "Damage" : 5 + lifespan(integer) : "Duration" : 2 + wait(integer) : "Delay before quake" : 1 +] +@SolidClass base(Appearflags) = trigger_reflect : "Missile reflector" +[ + spawnflags(Flags) = + [ + 1 : "activate" : 0 + ] +] +@PointClass base(Trigger) size(-8 -8 -8, 8 8 8) = trigger_relay : "Relay" [] +@SolidClass base(Appearflags) = trigger_secret : "Secret trigger" +[ + soundtype(choices) : "Sounds" : 1 = + [ + 1 : "secret" + 2 : "beep beep" + ] + message(string) : "Message" +] +@SolidClass base(Appearflags, Targetname) = trigger_setskill : "Set skill level" +[ + message(choices) : "Skill level" : 1 = + [ + 0 : "Easy" + 1 : "Medium" + 2 : "Hard" + 3 : "Nightmare!" + ] +] +@SolidClass base(Appearflags, Targetname, Target) = trigger_teleport : "Trigger teleport" +[ + spawnflags(flags) = + [ + 1 : "player only" : 0 + 2 : "silent" : 0 + 4 : "activate" : 0 + ] +] +@SolidClass base(Appearflags) = trigger_teleport_newmap : "Trigger teleport to new map" +[ + target(string) : "New map name" +] + +@PointClass base(Appearflags) = viewthing : "Debugging only, do not use" [] +@SolidClass base(Appearflags) = weather_dust : "Dusty area" [ color(integer) : "Color" : 101 ] +@PointClass base(Appearflags, Targetname) = weather_lightning_end : "End of lightning bolt" [] +@PointClass base(Appearflags, Targetname, Target) = weather_lightning_start : "Beginning of lighting" +[ + spawnflags(Flags) = + [ + 1 : "start off" : 0 + 2 : "thunder sound" : 0 + ] + noise(choices) : "Sounds" : 2 = + [ + 1 : "no sound" + 2 : "lightning" + ] + wait(choices) : "Time between strikes" : -1 = + [ + -1 : "triggerable" + ] + lifespan(integer) : "Duration" +] +@SolidClass base(Appearflags) = weather_rain : "Rain area" +[ + spawnflags(Flags) = + [ + 1 : "fall straight" : 0 + 2 : "no splat" : 0 + ] + color(integer) : "Base color" : 414 + counter(integer) : "Density" : 300 + wait(integer) : "Frequency (0.1)" : 0 + soundtype(choices) : "Sounds" : 1 = + [ + 0 : "rain" + 1 : "drip" + ] +] +@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = weather_sunbeam_end : "End of sunbeam" [] +@PointClass base(Appearflags, Targetname, Target) = weather_sunbeam_start : "Start of sunbeam" +[ + spawnflags(Flags) = + [ + 1 : "start off" : 0 + ] + noise(choices) : "Sounds" : 2 = + [ + 1 : "no sound" + 2 : "lightning" + ] + wait(choices) : "Time between strikes" : -1 = + [ + -1 : "triggerable" + ] + lifespan(integer) : "Duration" +] +@PointClass base(Appearflags, Target) size(-8 -8 -44, 8 8 20) studio("models/w_l2_c1.mdl") = wp_weapon2 : "Weapon 2" +[ + spawnflags(Flags) = + [ + 1 : "floating" : 0 + ] +] +@PointClass base(wp_weapon2) studio("models/w_l3_c1.mdl") = wp_weapon3 : "Weapon 3" [] +@PointClass base(wp_weapon2) studio("models/w_l41_c1.mdl") = wp_weapon4_head : "Weapon 4 head" [] +@PointClass base(wp_weapon2) studio("models/w_l42_c1.mdl") = wp_weapon4_staff : "Weapon 4 staff" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake.fgd new file mode 100644 index 0000000..3366c25 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake.fgd @@ -0,0 +1,476 @@ +// +// Quake game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// written by autolycus / autolycus@planetquake.com +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Text on entering the world" + worldtype(choices) : "Ambience" : 0 = + [ + 0 : "Medieval" + 1 : "Runic (metal)" + 2 : "Present (base)" + ] + sky(sky) : "Sky name (modified engines only)" + sounds(integer) : "CD track to play" : 1 + light(integer) : "Default light level" +] + +// +// base marker definitions +// + +@baseclass = Appearflags [ + spawnflags(Flags) = + [ + 256 : "Not in Easy" : 0 + 512 : "Not in Normal" : 0 + 1024 : "Not in Hard" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@baseclass = Targetname [ targetname(target_source) : "Name" ] +@baseclass = Target [ target(target_destination) : "Target" ] + +// +// player starts, deathmatch, coop, teleport +// + +@baseclass base(Appearflags) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24) + color(0 255 0) = PlayerClass [] + +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_start2 : "Player episode return point" [] +@PointClass base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] +@PointClass = info_null : "info_null (spotlight target)" +[ + targetname(target_source) : "Name" +] + +// +// CTF stuff +// + +@PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) = + item_flag_team1 : "CTF: Red Team Flag" [] +@PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) = + item_flag_team2 : "CTF: Blue Team Flag" [] +@PointClass base(PlayerClass) = info_player_team1 : "CTF: Red team base start" [] +@PointClass base(PlayerClass) = info_player_team2 : "CTF: Blue team base start" [] + +@PointClass base(Appearflags) = info_intermission : "Intermission camera" [] + +// +// items +// + +@baseclass size(32 32 32) color(80 0 200) base(Appearflags) = Ammo +[ + spawnflags(flags) = + [ + 1 : "Large box" : 0 + ] +] + +@PointClass base(Ammo) studio("maps/b_batt0.bsp") = item_cells : "Thunderbolt ammo" [] +@PointClass base(Ammo) studio("maps/b_rock0.bsp") = item_rockets : "Rockets" [] +@PointClass base(Ammo) studio("maps/b_shell0.bsp") = item_shells : "Shells" [] +@PointClass base(Ammo) studio("maps/b_nail0.bsp") = item_spikes : "Perforator/Nailgun ammo" [] + +@PointClass size(-16 -16 0, 16 16 16) base(Appearflags) studio("maps/b_bh25.bsp") = item_health : "Health pak" +[ + spawnflags(flags) = + [ + 1 : "Rotten" : 0 + 2 : "Megahealth" : 0 + ] +] + +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/suit.mdl") = + item_artifact_envirosuit : "Environmental protection suit" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/quaddama.mdl") = + item_artifact_super_damage : "Quad damage" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/invulner.mdl") = + item_artifact_invulnerability : "Pentagram of Protection" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/invisibl.mdl") = + item_artifact_invisibility : "Ring of Shadows" [] + +@PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(2) = + item_armorInv : "200% armor (Red)" [] +@PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(1) = + item_armor2 : "150% armor (Yellow)" [] +@PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(0) = + item_armor1 : "100% armor (Green)" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/w_s_key.mdl") = + item_key1 : "Silver key" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/w_g_key.mdl") = + item_key2 : "Gold key" [] +@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/end1.mdl") = + item_sigil : "Sigil" +[ + spawnflags(Flags) = + [ + 1 : "Episode 1" : 0 + 2 : "Episode 2" : 0 + 4 : "Episode 3" : 0 + 8 : "Episode 4" : 0 + ] +] + +// +// weapons +// + +@baseclass size(-16 -16 0, 16 16 32) color(0 0 200) base(Appearflags) = Weapon [] + +@PointClass base(Weapon) studio("progs/g_shot.mdl") = weapon_supershotgun : "Super shotgun" [] +@PointClass base(Weapon) studio("progs/g_nail.mdl") = weapon_nailgun : "Nailgun" [] +@PointClass base(Weapon) studio("progs/g_nail2.mdl") = weapon_supernailgun : "Perforator" [] +@PointClass base(Weapon) studio("progs/g_rock.mdl") = weapon_grenadelauncher : "Grenade launcher" [] +@PointClass base(Weapon) studio("progs/g_rock2.mdl") = weapon_rocketlauncher : "Rocket launcher" [] +@PointClass base(Weapon) studio("progs/g_light.mdl") = weapon_lightning : "Thunderbolt" [] + +// +// badasses +// + +@baseclass base(Appearflags, Targetname, Target) flags(Angle) color(220 0 0) offset(0 0 24) = Monster +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + ] +] + +@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/soldier.mdl") = monster_army : "Grunt" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 40) studio("progs/dog.mdl") = monster_dog : "Nasty Doggie" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/ogre.mdl") = monster_ogre : "Ogre" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/ogre.mdl") = monster_ogre_marksman : "Ogre marksman" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/knight.mdl") = monster_knight : "Knight" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/hknight.mdl") = monster_hell_knight : "Hell knight" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/wizard.mdl") = monster_wizard : "Scrag" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/demon.mdl") = monster_demon1 : "Fiend" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/shambler.mdl") = monster_shambler : "Shambler" [] +@PointClass base(Monster) size(-128 -128 -24, 128 128 256) studio("progs/boss.mdl") = monster_boss : "Chthon" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/enforcer.mdl") = monster_enforcer : "Enforcer" [] +@PointClass base(Monster) size(-32 -32 -24, 32 32 48) studio("progs/shalrath.mdl") = monster_shalrath : "Shalrath" [] +@PointClass base(Monster) size(32 32 48) studio("progs/tarbaby.mdl") = monster_tarbaby : "Tarbaby" [] +@PointClass base(Monster) size(32 32 48) studio("progs/fish.mdl") = monster_fish : "Rotfish" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 32) studio("progs/oldone.mdl") = monster_oldone : "Shub-Niggurath" [] +@PointClass base(Monster) size(-16 -16 -24, 16 16 32) studio("progs/zombie.mdl") = monster_zombie : "Zombie" +[ + spawnflags(Flags) = + [ + 1 : "Crucified" : 0 + 2 : "Ambush" : 0 + ] + sequence(choices) : "Pose (editor)" = + [ + 0 : "Normal" + 192: "Crucified" + ] +] + +// +// lights +// + +@baseclass = Light [ + light(integer) : "Brightness" : 200 + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] +] + +@PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Target, Light) iconsprite("sprites/light.spr") = + light : "Invisible lightsource" + [ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + ] +@PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) iconsprite("sprites/light.spr") = + light_fluoro : "Fluorescent light" + [ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + ] +@PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) iconsprite("sprites/light.spr") = + light_fluorospark : "Sparking fluorescent light" + [ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + ] +@PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) sprite("progs/s_light.spr") = + light_globe : "Globe light" [] +@PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(1) = + light_flame_large_yellow : "Large yellow flame" [] +@PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(0) = + light_flame_small_yellow : "Small yellow flame" + [ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + ] +@PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(0) = + light_flame_small_white : "Small white flame" + [ + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + ] +@PointClass size(-10 -10 -20, 10 10 20) offset(0 0 20) base(Targetname, Light) studio("progs/flame.mdl") = + light_torch_small_walltorch : "Small walltorch" [] + +// +// misc +// + +@PointClass base(Appearflags) = air_bubbles : "Air bubbles" [] +@PointClass base(Appearflags, Targetname) = + event_lightning : "Chthon's lightning" [] +@PointClass base(Appearflags) = misc_fireball : "Small fireball" + [ speed(integer) : "Speed" : 40 ] +@PointClass studio("maps/b_explob.bsp") = misc_explobox : "Large nuclear container" [] +@PointClass studio("maps/b_exbox2.bsp") = misc_explobox2 : "Small nuclear container" [] +@PointClass base(Targetname) = trap_spikeshooter : "Triggered shooter" +[ + spawnflags(Flags) = + [ + 1 : "Superspike" : 0 + 2 : "Laser" : 0 + ] +] +@PointClass base(trap_spikeshooter) = trap_shooter : "Continuous shooter" [] + +// +// ambient sounds +// + +@PointClass = ambient_drip : "Dripping sound" [] +@PointClass = ambient_drone : "Engine/machinery sound" [] +@PointClass = ambient_comp_hum : "Computer background sounds" [] +@PointClass = ambient_flouro_buzz : "Fluorescent buzzing sound" [] +@PointClass = ambient_light_buzz : "Buzzing sound from light" [] +@PointClass = ambient_suck_wind : "Wind sound" [] +@PointClass = ambient_swamp1 : "Frogs croaking" [] +@PointClass = ambient_swamp2 : "Frogs croaking B" [] +@PointClass = ambient_thunder : "Thunder sound" [] + +// +// moving things +// + +@baseclass base(Appearflags, Targetname) = Door +[ + speed(integer) : "Speed" : 100 + sounds(choices) : "Sound" : 1 = + [ + 1: "Stone" + 2: "Machine" + 3: "Stone Chain" + 4: "Screechy Metal" + ] + wait(choices) : "Delay before close" : 4 = + [ + -1 : "Stays open" + ] + lip(integer) : "Lip" + dmg(integer) : "Damage inflicted when blocked" : 0 + message(string) : "Message if triggered" + health(integer) : "Health (shoot open)" : 0 +] + +@SolidClass base(Door) = func_door : "Basic door" +[ + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + 4 : "Don't link" : 0 + 8 : "Gold Key required" : 0 + 16: "Silver Key required" : 0 + 32: "Toggle" : 0 + ] +] + +@SolidClass base(Door) = func_door_secret : "Triggered door" +[ + spawnflags(flags) = + [ + 1 : "Open once only" : 0 + 2 : "Moves left first" : 0 + 4 : "Moves down first" : 0 + 8 : "Not shootable" : 0 + 16 : "Always shootable" : 0 + ] +] + +@SolidClass base(Appearflags) = func_wall : "Moving wall" [] + +@SolidClass = func_button : "Button" +[ + speed(integer) : "Speed" : 5 + target(target_destination) : "Targeted object" + health(integer) : "Health (shootable if > 0)" + sounds(choices) : "Sounds" : 1 = + [ + 1: "Steam metal" + 2: "Wooden clunk" + 3: "Metallic clink" + 4: "In-out" + ] + wait(choices) : "Delay before reset" : 3 = + [ + -1: "Stays pressed" + ] + delay(integer) : "Delay before trigger" +] + +@SolidClass base(Targetname) = func_train : "Moving platform" +[ + sounds(choices) : "Sound" : 1 = + [ + 0: "None" + 1: "Ratchet Metal" + ] + speed(integer) : "Speed (units per second)" : 64 + target(target_destination) : "First stop target" + dmg(integer) : "Damage on crush" : 0 +] + +@PointClass base(Targetname) flags(Path) size(16 16 16) = path_corner : "Moving platform stop" +[ + target(target_destination) : "Next stop target" +] + +@SolidClass = func_plat : "Elevator" +[ + height(integer) : "Travel altitude (can be negative)" : 0 + sounds(choices) : "Sound group" : 1 = + [ + 0: "None" + 1: "Base fast" + 2: "Chain Slow" + ] +] + +@SolidClass = func_dm_only : "Deathmatch teleporter" [] +@SolidClass = func_illusionary : "Solids can be walked through" [] + +@SolidClass = func_episodegate : "Episode Gate" +[ + spawnflags(Flags) = + [ + 1 : "Episode 1" : 0 + 2 : "Episode 2" : 0 + 4 : "Episode 3" : 0 + 8 : "Episode 4" : 0 + ] +] + +@SolidClass = func_bossgate : "Boss gate" [] + +// +// triggers +// + +@baseclass base(Target) = Trigger +[ + style(integer) : "Style" : 32 + killtarget(target_destination) : "Kill target" + sounds(choices) : "Sound style" : 3 = + [ + 1 : "Secret sound" + 2 : "Beep beep" + 3 : "Large switch" + 4 : "Set message to text string" + ] + delay(integer) : "Delay before trigger" : 2 + message(string) : "Message (set sound too!)" +] + +@SolidClass = trigger_changelevel : "Trigger: Change level" +[ + map(string) : "New map name" + spawnflags(flags) = + [ + 1: "No Intermission" : 0 + ] +] + +@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" +[ + spawnflags(flags) = [ 1: "Entity only" : 0 ] +] +@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" +[ + spawnflags(flags) = [ 1: "Entity only" : 0 ] + wait(integer) : "Delay before reset" : 10 +] +@SolidClass base(Trigger) = trigger_onlyregistered : "Trigger: Registered only" +[ + spawnflags(flags) = [ 1: "Entity only" : 0 ] +] +@SolidClass base(Trigger) = trigger_secret : "Trigger: Secret" +[ + spawnflags(flags) = [ 1: "Entity only" : 0 ] + wait(integer) : "Delay before reset" : 10 +] + +@SolidClass base(Targetname, Target) = trigger_teleport : "Trigger teleport" +[ + spawnflags(Flags) = + [ + 1 : "Player only" : 0 + 2 : "Silent" : 0 + ] +] + +// need updates: + +@SolidClass = trigger_setskill : "Trigger set skill" +[ + message(choices) : "Skill to change to" : 1 = + [ + 0 : "Easy" + 1 : "Medium" + 2 : "Hard" + 3 : "Nightmare!" + ] +] +@PointClass base(Targetname, Trigger) = trigger_relay : "Trigger relay" [] +@SolidClass base(Trigger) = trigger_monsterjump : "Trigger monster jump" +[ + speed(integer) : "Jump Speed" : 40 + height(integer) : "Jump Height" : 128 +] +@SolidClass base(Targetname, Trigger) = trigger_counter : "Trigger counter" +[ + spawnflags(flags) = [ 1: "No Message" : 0 ] + count(integer) : "Count before activation" : 2 +] +@SolidClass base(Trigger) = trigger_push : "Trigger player push" +[ + spawnflags(flags) = [ 1: "Once Only" : 0 ] + speed(integer) : "Speed of push" : 40 +] +@SolidClass base(Trigger) = trigger_hurt : "Trigger player hurt" +[ + dmg(integer) : "Damage" : 10 +] + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake2.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake2.fgd new file mode 100644 index 0000000..b0202af --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake2.fgd @@ -0,0 +1,913 @@ +// +// Quake 2 game definition file (.fgd) +// for Jackhammer 1.0 and above +// +// written by autolycus / autolycus@planetquake.com +// modified by XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "World entity" +[ + message(string) : "Level name" + nextmap(string) : "Next map (DM only)" + sky(sky) : "Environment map name" + skyaxis(string) : "Vector axis for rotating sky" + skyrotate(float) : "Speed of rotation (degrees/second)" + sounds(integer) : "CD Track Number" : 1 + gravity(integer) : "Gravity" : 800 +] + +// +// base marker definitions +// + +@baseclass = Appearflags [ + spawnflags(Flags) = + [ + 256 : "Not in Easy" : 0 + 512 : "Not in Normal" : 0 + 1024 : "Not in Hard" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +@baseclass = Targetname [ targetname(target_source) : "Name" ] +@baseclass = Target [ target(target_destination) : "Target" ] + +// +// player start, deathmatch, coop, deathmatch intermission +// + +@baseclass base(Appearflags, Targetname) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24) color(0 255 0) = PlayerClass [] + +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] +@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] +@PointClass base(PlayerClass) = info_player_intermission : "Deathmatch intermission point" +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" +] + +// Notes on the 'team' key: First of all, it's really only useful in DM because it creates a +// random respawn pattern. Let's say that in one spot, you want to have the shotgun, Quad +// damage and mega health item to respawn in alternance. Place all of them in approximately +// the same location, team them and voila! The FIRST item that you place in the map will be +// the team MASTER - the others will be SLAVES. In DM play, the Master will be the first one +// to spawn. Once the Master is picked up, the respawn pattern becomes RANDOM: it could be +// the same or one of the other 2. If you try to use this in a Single Player map, it's +// pretty useless because only the team MASTER spawns and the others never appear obviously. + +@BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) offset(0 0 16) = Ammo +[ + team(string) : "Team" +] + + +@PointClass base(Ammo) studio("models/items/ammo/shells/medium/tris.md2") = ammo_shells : "Shotgun ammo" [] +@PointClass base(Ammo) studio("models/items/ammo/bullets/medium/tris.md2") = ammo_bullets : "Machine/Chain gun ammo" [] +@PointClass base(Ammo) studio("models/items/ammo/cells/medium/tris.md2") = ammo_cells : "Blaster/BFG ammo" [] +@PointClass base(Ammo) studio("models/items/ammo/grenades/medium/tris.md2") = ammo_grenades : "Grenades" [] +@PointClass base(Ammo) studio("models/items/ammo/rockets/medium/tris.md2") = ammo_rockets : "Rockets" [] +@PointClass base(Ammo) studio("models/items/ammo/slugs/medium/tris.md2") = ammo_slugs : "Rail gun ammo" [] + +// Keep in mind when using func_areaportal that it must +// *completely* separate two areas. otherwise, you will +// get an error message and the areaportal will not work +// +@SolidClass base(Appearflags, Targetname) = func_areaportal : "Area portal (Vis blocker)" [] + +@SolidClass base(Appearflags, Target, Targetname) color(0 128 204) = func_button : "Button" +[ + killtarget(string) : "Kill Target" + pathtarget(string) : "Elevator level target" + speed(integer) : "Speed" : 40 + wait(choices) : "Wait before reset" : 1 = + [ + -1 : "Never Return" + ] + lip(integer) : "Lip remaining after move" : 4 + health(integer) : "Health (shootable)" + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] + message(string) : "Activation message" + _minlight(integer) : "Minimum light (optional)" +] + +@PointClass base(Appearflags, Targetname) color(0 0 255) size(-8 -8 -8, 8 8 8) = func_clock : "Clock" +[ + spawnflags(Flags) = + [ + 1 : "Timer Up" : 0 + 2 : "Timer Down" : 0 + 4 : "Start Off" : 0 + 8 : "Multi Use" : 0 + ] + count(integer) : "Clock Count" + pathtarget(string) : "Target" + style(choices) : "Style" : 0 = + [ + 0 : "xx" + 1 : "xx:xx" + 2 : "xx:xx:xx" + ] +] + +// func_conveyor code is incomplete. use the surface attribute "flowing" +// and the "current" content flag. (texture won't scroll) +// +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_conveyor : "Conveyor belt" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + ] + speed(integer) : "Speed" : 100 + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname, Target) color(0 128 204) = func_door : "Door" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 4 : "Crusher" : 0 + 8 : "No Monsters" : 0 + 16 : "Animated" : 0 + 32 : "Toggle" : 0 + 64 : "Animated Fast" : 0 + ] + killtarget(string) : "Kill Target" + team(string) : "Team" + message(string) : "Trigger message" + health(integer) : "Health (shootable)" + speed(integer) : "Speed" : 100 + wait(choices) : "Wait before close" : 3 = + [ + -1 : "Stay open" + ] + lip(integer) : "Lip remaining after move" : 8 + dmg(integer) : "Damage when blocked" : 2 + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname, Target) color(0 128 204) = func_door_rotating : "Rotating Door" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 2 : "Reverse" : 0 + 4 : "Crusher" : 0 + 8 : "No Monsters" : 0 + 16 : "Animated" : 0 + 32 : "Toggle" : 0 + 64 : "X Axis" : 0 + 128 : "Y Axis" : 0 + ] + killtarget(string) : "Kill Target" + team(string) : "Team" + distance(integer) : "Degrees of rotation" : 90 + message(string) : "Trigger message" + health(integer) : "Health (shootable)" + speed(integer) : "Speed" : 100 + wait(choices) : "Wait before close" : 3 = + [ + -1 : "Stay open" + ] + dmg(integer) : "Damage when blocked" : 2 + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_door_secret : "Secret Door" +[ + spawnflags(Flags) = + [ + 1 : "Always shoot" : 0 + 2 : "1st Left" : 0 + 4 : "1st Down" : 0 + ] + dmg(integer) : "Damage when blocked" : 2 + wait(choices) : "Wait before close" : 5 = + [ + -1 : "Stay open" + ] + message(string) : "Message" + _minlight(integer) : "Minimum light (optional)" +] + +// not visible in DM mode +// +@SolidClass base(Appearflags, Targetname, Target) color(0 128 204) = func_explosive : "Exploding/Breakable brush" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Animated" : 0 + 4 : "Animated Fast" : 0 + ] + health(integer) : "Health" : 100 + mass(integer) : "Mass (debris)" : 75 + dmg(integer) : "Damage" : 0 + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname) color(255 0 0) = func_killbox : "Instant death" [] + +@SolidClass base(Appearflags, Targetname) color (0 128 204) = func_object : "Solid bmodel, will fall if its support is removed" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Animated" : 0 + 4 : "Animated Fast" : 0 + ] + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_plat : "Platform" +[ + spawnflags(Flags) = + [ + 1 : "Plat Low Trigger" : 0 + ] + speed(integer) : "Speed" : 100 + accel(integer) : "Acceleration" : 500 + lip(integer) : "Lip remaining after move" : 8 + height(integer) : "Movement distance" + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_rotating : "Rotating brush" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Reverse" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16 : "Pain on Touch" : 0 + 32 : "Block Stops" : 0 + 64 : "Animated" : 0 + 128 : "Animated Fast" : 0 + ] + team(string) : "Team" + speed(integer) : "Speed" : 100 + dmg(integer) : "Damage when blocked" : 2 + _minlight(integer) : "Minimum light (optional)" +] + +@PointClass base(Appearflags, Targetname, Target) color(76 25 153) size(-8 -8 -8, 8 8 8) = func_timer : "Timer" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + ] + wait(integer) : "Base wait time" : 1 + random(integer) : "Wait variance (+/-)" + delay(integer) : "Delay before first firing" + pausetime(integer) : "Additional delay" +] + +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_train : "Moving platform" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Block Stops" : 0 + ] + target(string) : "First stop target" + team(string) : "Team" + speed(integer) : "Speed" : 100 + dmg(integer) : "Damage when blocked" : 2 + noise(sound) : "Sound name" + _minlight(integer) : "Minimum light (optional)" +] + +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_wall : "Solid Wall" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Toggle" : 0 + 4 : "Start On" : 0 + 8 : "Animated" : 0 + 16 : "Animated Fast" : 0 + ] + _minlight(integer) : "Minimum light (optional)" +] + +// must never be transparent? +// +@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_water : "Moveable water" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + ] + speed(integer) : "Speed" : 25 + wait(choices) : "Wait before return" : -1 = + [ + -1 : "Toggle" + ] + lip(integer) : "Lip remaining after move" + sounds(Choices) : "Sounds" : 1 = + [ + 0 : "No Sounds" + 1 : "Water" + 2 : "Lava" + ] + team(string) : "Team" + _minlight(integer) : "Minimum light (optional)" +] + +@PointClass base(Appearflags, Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_null : "Spotlight target" [] +@PointClass base(info_null) = info_notnull : "Lightning target" [] + +@BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) offset(0 0 16) = Items +[ + team(string) : "Team" +] +@BaseClass base(Items) bobparms( 100 0 0 ) = ItemsBob [] + + +@PointClass base(ItemsBob) studio("models/items/adrenal/tris.md2") = item_adrenaline : "+1 to max health" [] +@PointClass base(ItemsBob) studio("models/items/c_head/tris.md2") = item_ancient_head : "+2 to max health" [] +@PointClass base(ItemsBob) studio("models/items/armor/body/tris.md2") = item_armor_body : "Body armor" [] +@PointClass base(ItemsBob) studio("models/items/armor/combat/tris.md2") = item_armor_combat : "Combat armor" [] +@PointClass base(ItemsBob) studio("models/items/armor/jacket/tris.md2") = item_armor_jacket : "Jacket armor" [] +@PointClass base(ItemsBob) studio("models/items/armor/shard/tris.md2") = item_armor_shard : "Armor shard" [] +@PointClass base(ItemsBob) studio("models/items/band/tris.md2") = item_bandolier : "Equipment belt" [] +@PointClass base(ItemsBob) studio("models/items/breather/tris.md2") = item_breather : "Underwater breather" [] +@PointClass base(ItemsBob) studio("models/items/enviro/tris.md2") = item_enviro : "Enviro-Suit" [] +@PointClass base(Items) studio("models/items/healing/medium/tris.md2") = item_health : "+10 health" [] +@PointClass base(Items) studio("models/items/healing/stimpack/tris.md2") = item_health_small : "+2 health" [] +@PointClass base(Items) studio("models/items/healing/large/tris.md2") = item_health_large : "+25 health" [] +@PointClass base(Items) studio("models/items/mega_h/tris.md2") = item_health_mega : "+100 health" [] +@PointClass base(ItemsBob) studio("models/items/invulner/tris.md2") = item_invulnerability : "Invulnerability" [] +@PointClass base(ItemsBob) studio("models/items/pack/tris.md2") = item_pack : "Heavy backpack" [] +@PointClass base(ItemsBob) studio("models/items/armor/screen/tris.md2") = item_power_screen : "Power screen" [] +@PointClass base(ItemsBob) studio("models/items/armor/shield/tris.md2") = item_power_shield : "Power shield" [] +@PointClass base(ItemsBob) studio("models/items/quaddama/tris.md2") = item_quad : "Quad damage" [] +@PointClass base(ItemsBob) studio("models/items/silencer/tris.md2") = item_silencer : "Silencer" [] + +@BaseClass base(Appearflags, Target) color(0 128 204) size(-16 -16 -16, 16 16 16) offset(0 0 16) bobparms( 100 0 0 ) = Keys [] + +@PointClass base(Keys) studio("models/items/keys/target/tris.md2") = key_airstrike_target : "Tank commander's head" [] +@PointClass base(Keys) studio("models/items/keys/key/tris.md2") = key_blue_key : "Normal door key - blue" [] +@PointClass base(Keys) studio("models/monsters/commandr/head/tris.md2") = key_commander_head : "Tank commander's head" [] +@PointClass base(Keys) studio("models/items/keys/data_cd/tris.md2") = key_data_cd : "Key for computer centers" [] +@PointClass base(Keys) studio("models/items/keys/spinner/tris.md2") = key_data_spinner : "Key for city computer" [] +@PointClass base(Keys) studio("models/items/keys/pass/tris.md2") = key_pass : "Security pass for secret level" [] + +@PointClass base(Keys, Targetname) studio("models/items/keys/power/tris.md2") = key_power_cube : "Warehouse circuits" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "No Touch" : 0 + ] +] +@PointClass base(Keys) studio("models/items/keys/pyramid/tris.md2") = key_pyramid : "Key for entrance to jail3" [] +@PointClass base(Keys) studio("models/items/keys/red_key/tris.md2") = key_red_key : "normal door key - red" [] + +@PointClass base(Appearflags, Target, Targetname) flags(Light) color(0 255 0) size(-8 -8 -8, 8 8 8) iconsprite("sprites/light.spr") = light : "Light" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] + light(integer) : "Brightness" : 300 + _color(color1) : "RGB Color" : "1 1 1" + style(Choices) : "Style" : 0 = + [ + 0 : "Normal" + 1 : "Flicker #1" + 6 : "Flicker #2" + 2 : "Slow Strong Pulse" + 3 : "Candle #1" + 7 : "Candle #2" + 8 : "Candle #3" + 4 : "Fast Strobe" + 5 : "Gentle Pulse #1" + 9 : "Slow Strobe" + 10 : "Fluorescent Flicker" + 11 : "Slow pulse, no black" + ] + _cone(integer) : "Size of light (spotlight)" : 10 +] + +@PointClass base(light) color(0 255 0) size(-4 -4 -8, 4 4 8) = light_mine1 : "Dusty fluorescent light fixture" +[ + spawnflags(Flags) = + [ + 1 : "" : 0 + ] +] + +@PointClass base(light_mine1) = light_mine2 : "Clean fluorescent light fixture" [] + +// actor code is still broken...leaving this in because i know *someone* will fix +// this because its pretty damn cool. +@PointClass base(PlayerClass, Target) = misc_actor : "Actor" +[ + health(integer) : "Health" : 100 +] +@PointClass base(Appearflags, Targetname) = target_actor : "Actor path" +[ + spawnflags(Flags) = + [ + 1 : "Jump" : 0 + 2 : "Shoot" : 0 + 4 : "Attack" : 0 + 16 : "Hold" : 0 + 32 : "Brutal" : 0 + ] + target(string) : "Next path target" + pathtarget(string) : "Action target" + wait(integer) : "Pause time" + message(string) : "Message" + speed(integer) : "Forward (jump)" : 200 + height(integer) : "Height (jump)" : 200 +] + +@PointClass base(Appearflags) color(255 128 0) size(-4 -4 0, 4 4 246) = misc_banner : "Flowing banner" [] + +@PointClass base(Appearflags) color(255 128 0) size(-8 -8 -8, 8 8 8) = misc_blackhole : "Blackhole" [] + +@PointClass base(Appearflags) color(255 128 0) size(-16 -16 0, 16 16 16) = misc_deadsoldier : "Dead guys! 6 of em!" +[ + spawnflags(Flags) = + [ + 1 : "On Back" : 0 + 2 : "On Stomach" : 0 + 4 : "Back, Decap" : 0 + 8 : "Fetal Position" : 0 + 16 : "Sitting, Decap" : 0 + 32 : "Impaled" : 0 + ] +] + +// The following three entities are eye-candy - they don't do anything +@PointClass base(Appearflags) color(255 128 0) size(-32 -32 -16, 32 32 32) = misc_eastertank : "Tank Pimp" [] +@PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick : "Chick #1" [] +@PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick2 : "Chick #2" [] + +@PointClass base(Appearflags, Targetname) color(0 128 204) size(-16 -16 0, 16 16 40) = misc_explobox : "Large exploding box" +[ + mass(integer) : "Mass" : 100 + health(integer) : "Health" : 80 + dmg(integer) : "Damage" : 150 +] + +// set angle for gib direction, otherwise it just drops +@PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_arm : "arm gib, use with target_spawner" [] +@PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_head : "head gib, use with target_spawner" [] +@PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_leg : "leg gib, use with target_spawner" [] + +@PointClass base(Appearflags, Targetname, Target) color(255 128 0) studio("models/monsters/insane/tris.md2") size(-16 -16 -24, 16 16 32) offset(0 0 24) = misc_insane : "Insane Soldiers" +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + 2 : "Trigger Spawn" : 0 + 4 : "Crawl" : 0 + 8 : "Crucified" : 0 + 16 : "Stand Ground" : 0 + 32 : "Always Stand" : 0 + ] + deathtarget(string) : "Entity to trigger at death" + killtarget(string) : "Entity to remove at death" + item(string) : "Item to spawn at death" +] + +@PointClass base(Appearflags, Targetname) color(255 128 0) size(-64 -64 0, 64 64 128) = misc_satellite_dish : "Satellite Dish" [] + +@PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_strogg_ship : "Strogg ship for flybys" +[ + target(string) : "First path target" + speed(integer) : "Speed" + +] + +// place teleporter units 10 units into a brush to get rid of teleport pad +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter : "Teleporter" +[ + target(string) : "Teleport Destination" +] +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter_dest : "Teleport Destination" [] + +@PointClass base(Appearflags) color(255 128 0) size(-176 -120 -24, 176 120 72) = misc_bigviper : "Large stationary Viper" [] +@PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_viper : "Viper for flybys" +[ + target(string) : "First path target" + speed(integer) : "Speed" + +] +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_viper_bomb : "Viper Bomb" +[ + dmg(integer) : "Damage" +] + +// +// Monsters! +// + +// 0221 - added "deathtarget", "killtarget", and "combattarget" keys +@BaseClass base(Appearflags, Target, Targetname) flags(Angle) color(255 128 0) size(-16 -16 -24, 16 16 32) offset(0 0 24) = Monsters +[ + spawnflags(Flags) = + [ + 1 : "Ambush" : 0 + 2 : "Trigger Spawn" : 0 + 4 : "Sight" : 0 + ] + combattarget(string) : "Point combat target" + deathtarget(string) : "Entity to trigger at death" + killtarget(string) : "Entity to remove at death" + item(string) : "Spawn Item" +] + +@PointClass base(Monsters) studio("models/monsters/berserk/tris.md2") = monster_berserk : "Berserker" [] +@PointClass base(Monsters) studio("models/monsters/boss2/tris.md2") size(-56 -56 0, 56 56 80) offset(0 0 0) = monster_boss2 : "Boss2" [] + +// Just fidgets in one spot and teleports away when triggered +// +@PointClass base(Appearflags, Targetname) studio("models/monsters/boss3/rider/tris.md2") sequence(414) size(-32 -32 0, 32 32 90) offset(0 0 0) = monster_boss3_stand : "Stationnary Makron" [] + +@PointClass base(Monsters) studio("models/monsters/brain/tris.md2") = monster_brain : "Brains" [] +@PointClass base(Monsters) studio("models/monsters/bitch/tris.md2") offset(0 0 0) = monster_chick : "Iron Maiden" [] +@PointClass base(Appearflags, Targetname) color(255 128 0) studio("models/monsters/commandr/tris.md2") size(-32 -32 0, 32 32 48) offset(0 0 0) = monster_commander_body : "Tank commander's decapitated body" [] +@PointClass base(Monsters) studio("models/monsters/flipper/tris.md2") offset(0 0 8) = monster_flipper : "Barracuda shark" [] +@PointClass base(Monsters) studio("models/monsters/float/tris.md2") = monster_floater : "Technician" [] +@PointClass base(Monsters) studio("models/monsters/flyer/tris.md2") offset(0 0 12) = monster_flyer : "Flyer" [] +@PointClass base(Monsters) studio("models/monsters/gladiatr/tris.md2") size(-32 -32 -24, 32 32 64) offset(0 0 24) = monster_gladiator : "Gladiator" [] +@PointClass base(Monsters) studio("models/monsters/gunner/tris.md2") = monster_gunner : "Gunner" [] +@PointClass base(Monsters) studio("models/monsters/hover/tris.md2") = monster_hover : "Icarus" [] +@PointClass base(Monsters) studio("models/monsters/infantry/tris.md2") = monster_infantry : "Infantry" [] +@PointClass base(Monsters) studio("models/monsters/boss3/jorg/tris.md2") size(-80 -80 0, 90 90 140) offset(0 0 0) = monster_jorg : "Jorg" [] +@PointClass base(Monsters) studio("models/monsters/boss3/rider/tris.md2") size(-30 -30 0, 30 30 90) offset(0 0 0) = monster_makron : "Makron" [] +@PointClass base(Monsters) studio("models/monsters/medic/tris.md2") = monster_medic : "Medic" [] +@PointClass base(Monsters) studio("models/monsters/mutant/tris.md2") size(-32 -32 -24, 32 32 32) offset(0 0 24) = monster_mutant : "Mutant" [] +@PointClass base(Monsters) studio("models/monsters/parasite/tris.md2") = monster_parasite : "Parasite" [] +@PointClass base(Monsters) studio("models/monsters/soldier/tris.md2") skin(0) = monster_soldier_light : "Light Soldier" [] +@PointClass base(Monsters) studio("models/monsters/soldier/tris.md2") skin(2) = monster_soldier : "Soldier" [] +@PointClass base(Monsters) studio("models/monsters/soldier/tris.md2") skin(4) = monster_soldier_ss : "SS Soldier" [] +@PointClass base(Monsters) studio("models/monsters/tank/tris.md2") size(-32 -32 -16, 32 32 72) offset(0 0 16) = monster_tank : "Tank" [] +@PointClass base(Monsters) studio("models/monsters/boss1/tris.md2") size(-64 -64 0, 64 64 72) offset(0 0 16) = monster_supertank : "Super tank" [] +@PointClass base(Monsters) studio("models/monsters/tank/tris.md2") skin(2) size(-32 -32 -16, 32 32 72) offset(0 0 16) = monster_tank_commander : "Tank commander" [] + +// using a "wait" value of -1 on a path corner causes a func_train to go silent between +// itself and the next path corner when the train is restarted. The train's sound will +// resume as soon as it reaches a path corner with a "wait" value other than -1 +@PointClass base(Appearflags, Targetname) flags(Path) color(128 76 0) size(-8 -8 -8, 8 8 8) = path_corner : "Path marker" +[ + spawnflags(Flags) = + [ + 1 : "Teleport" : 0 + ] + target(string) : "Next path target" + pathtarget(string) : "Event to trigger" + wait(choices) : "Wait" : 0 = + [ + -1 : "Wait for retrigger" + ] +] + +// "target" doesn't work (for now)...a separate trigger is needed +@PointClass base(Appearflags, Targetname, Target) color(128 76 9) size(-8 -8 -8, 8 8 8) = point_combat : "1st point of combat" +[ + spawnflags(Flags) = + [ + 1 : "Hold" : 0 + ] +] + +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_blaster : "Blaster" +[ + spawnflags(Flags) = + [ + 1 : "No Trail" : 0 + 2 : "No Effects" : 0 + ] + dmg(integer) : "Damage" : 15 + speed(integer) : "Speed" : 1000 +] + +// set "map" value to "mapname$playername" where playername equals +// the targetname of a corresponding info_player_start in the +// next map. To play a cinematic before starting the level, the +// "map" value should be "cinemeatic.cin+mapname$playername". Note +// that a playername is not required if the corresponding info_player_start +// doesn't have a targetname. If you want this to be designated as the last +// level of a unit, place an asterix (*) before the map name. +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_changelevel : "Change level" +[ + map(string) : "Next map" +] + +@SolidClass base(Appearflags, Targetname) color(0 0 255) = target_character : "Use with target_string and func_clock" +[ + team(string) : "Team" + count(integer) : "Position in the string" + _minlight(string) : "Minimum light (optional)" +] + +@PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crosslevel_trigger : "Cross-level trigger" +[ + spawnflags(Flags) = + [ + 1 : "Trigger 1" : 0 + 2 : "Trigger 2" : 0 + 4 : "Trigger 3" : 0 + 8 : "Trigger 4" : 0 + 16 : "Trigger 5" : 0 + 32 : "Trigger 6" : 0 + 64 : "Trigger 7" : 0 + 128 : "Trigger 8" : 0 + ] + killtarget(string) : "Kill Target" + message(string) : "Message" + delay(integer) : "Trigger delay" +] + +@PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crosslevel_target : "Cross-level trigger" +[ + spawnflags(Flags) = + [ + 1 : "Trigger 1" : 0 + 2 : "Trigger 2" : 0 + 4 : "Trigger 3" : 0 + 8 : "Trigger 4" : 0 + 16 : "Trigger 5" : 0 + 32 : "Trigger 6" : 0 + 64 : "Trigger 7" : 0 + 128 : "Trigger 8" : 0 + ] + killtarget(string) : "Kill Target" + delay(integer) : "Trigger delay (if activated)" : 1 +] + +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_earthquake : "Level wide earthquake" +[ + speed(integer) : "Severity of quake" : 200 + count(integer) : "Duration" : 5 +] + +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_explosion : "Explosion" +[ + delay(integer) : "Delay before explosion" + dmg(integer) : "Radius damage" : 0 +] + +@PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_goal : "Counts a goal completed" [] + +@PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_help : "Computer help message" +[ + spawnflags(Flags) = + [ + 1 : "Main Objective" : 0 + ] + message(string) : "Computer message" +] + +// if no color spawnflags are set, the laser color defaults to dim gray (and hard to see +// setting the damage to 0 makes it use the default damage of 1 +// setting the damage to a negative number will actually give health +@PointClass base(Appearflags, Targetname, Target) color(0 128 204) size(-8 -8 -8, 8 8 8) = target_laser : "Laser" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Red" : 0 + 4 : "Green" : 0 + 8 : "Blue" : 0 + 16 : "Yellow" : 0 + 32 : "Orange" : 0 + 64 : "Fat" : 0 + ] + dmg(integer) : "Damage" +] + +@PointClass base(Appearflags, Targetname, Target) color(0 128 204) size(-8 -8 -8, 8 8 8) = target_lightramp : "Light ramp" +[ + spawnflags(Flags) = + [ + 1 : "Toggle" : 0 + ] + speed(integer) : "Speed" + message(string) : "start/end light level" +] + +@PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_secret : "Counts a secret found" +[ + message(string) : "Message to print" : "You have found a secret." +] + +// set speed and angle, otherwise spawned object drops +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_spawner : "Monster/Item spawner" +[ + target(string) : "Monster/Item to spawn" + speed(integer) : "Speed" +] + +// looped sounds are automatically volume 1, attenuation 3 :\ +@PointClass base(Appearflags, Targetname) iconsprite("sprites/speaker.spr") color(255 0 0) size(-8 -8 -8, 8 8 8) = target_speaker : "Sound player" +[ + spawnflags(Flags) = + [ + 1 : "Looped On" : 0 + 2 : "Looped Off" : 0 + 4 : "Reliable" : 0 + ] + noise(sound) : "Sound name" + attenuation(Choices) : "Attenuation" : 1 = + [ + -1 : "None, send to whole level" + 1 : "Normal fighting sounds" + 2 : "Idle sound level" + 3 : "Ambient sound level" + ] + volume(integer) : "Volume (0.0 - 1.0)" : 1 +] + +// "sounds" values other than 1 are silent. leaving in the other +// options for availability to mods/fixes +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_splash : "Creates a splash when used" +[ + sounds(choices) : "Type of splash" : 2 = + [ + 1 : "Sparks" + 2 : "Blue water" + 3 : "Brown water" + 4 : "Slime" + 5 : "Lava" + 6 : "Blood" + ] + count(integer) : "Number of pixels in splash (1 - 255)" + dmg(integer) : "Radius damage" +] + +@PointClass base(Appearflags, Targetname) color(0 0 255) size(-8 -8 -8, 8 8 8) = target_string : "String" +[ + team(string) : "Team" +] + +// eye candy... Particles #2 (style 22) is quite cool +@PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_temp_entity : "Temp entity" +[ + style(choices) : "Style" : 22 = + [ + 20 : "Green Fireball" + 21 : "Particles #1" + 22 : "Particles #2" + ] +] + +@PointClass base(Appearflags, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_always : "Always triggers" +[ + killtarget(string) : "Kill Target" + delay(integer) : "Time before triggering" +] + +@PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_counter : "Counter" +[ + spawnflags(Flags) = + [ + 1 : "No Message" : 0 + ] + killtarget(string) : "Kill Target" + count(integer) : "Count before trigger" : 2 +] + +@PointClass base(Appearflags, Targetname, Target) color(76 25 153) = trigger_elevator : "Elevator trigger" [] + +@SolidClass base(Appearflags) color(128 128 128) = trigger_gravity : "Change gravity" +[ + gravity(integer) : "Gravity (standard = 1.0)" : 1 +] + +@SolidClass base(Appearflags, Targetname) color(128 128 128) = trigger_hurt : "Hurts on touch" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Toggle" : 0 + 4 : "Silent" : 0 + 8 : "No Protection" : 0 + 16 : "Slow hurt" : 0 + ] + dmg(integer) : "Damage" : 5 +] + +@PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_key : "Triggers with key" +[ + killtarget(string) : "Kill target" + item(string) : "Item classname" : "key_blue_key" +] + +@SolidClass base(Appearflags) color(128 128 128) = trigger_monsterjump : "Makes monsters jump" +[ + speed(integer) : "Speed thrown forward" : 200 + height(integer) : "Height thrown upward" : 200 +] + +@PointClass base(Appearflags, Targetname, Target) color(128 128 128) = trigger_relay : "Relay trigger" +[ + killtarget(string) : "Kill Target" + delay(integer) : "Time before triggering" + message(string) : "Trigger message" +] + +@SolidClass base(trigger_relay) = trigger_once : "Single fire trigger" +[ + spawnflags(Flags) = + [ + 4 : "Triggered" : 0 + ] + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Beep beep" + 1 : "Secret" + 2 : "F1 prompt" + 3 : "Silent" + ] +] + +@SolidClass base(trigger_once) = trigger_multiple : "Multiple fire trigger" +[ + spawnflags(Flags) = + [ + 1 : "Monster" : 0 + 2 : "Not Player" : 0 + ] + wait(integer) : "Seconds between triggers" : 0 +] + +@SolidClass base(Appearflags) color(128 128 128) = trigger_push : "Push trigger" +[ + spawnflags(Flags) = + [ + 1 : "Push Once" : 0 + ] + speed(integer) : "Speed of push" : 1000 +] + +@SolidClass base(Appearflags, Targetname, Target) color(128 255 128) = turret_breach : "Turret breach" +[ + speed(integer) : "Speed" : 50 + dmg(integer) : "Damage" : 10 + minpitch(integer) : "Miminum pitch angle" : -30 + maxpitch(integer) : "Maximum pitch angle" : 30 + minyaw(integer) : "Minimum yaw angle" : 0 + maxyaw(integer) : "Maximum yaw angle" : 360 + team(string) : "Team" + _minlight(string) : "Minimum light (optional)" +] +@SolidClass base(Appearflags) color(128 255 128) = turret_base : "Turret base" +[ + team(string) : "Team" + _minlight(string) : "Minimum light (optional)" +] +@PointClass base(Appearflags) color(128 255 128) size(-16 -16 -24, 16 16 32) = turret_driver : "Turret driver" +[ + target(string) : "Target (turret_breach)" +] + +@PointClass base(Appearflags) color(0 128 204) size(-8 -8 -8, 8 8 8) = viewthing : "Just for debugging level - dont use" [] + +@BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) offset(0 0 16) bobparms( 100 0 0 ) = Weapons +[ + team(string) : "Team" +] + +// +// Weapons! +// + +@PointClass base(Weapons) studio("models/weapons/g_shotg/tris.md2") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapons) studio("models/weapons/g_shotg2/tris.md2") = weapon_supershotgun : "Super shotgun" [] +@PointClass base(Weapons) studio("models/weapons/g_machn/tris.md2") = weapon_machinegun : "Machinegun" [] +@PointClass base(Weapons) studio("models/weapons/g_chain/tris.md2")= weapon_chaingun : "Chain gun" [] +@PointClass base(Weapons) studio("models/weapons/g_launch/tris.md2") = weapon_grenadelauncher : "Grenade launcher" [] +@PointClass base(Weapons) studio("models/weapons/g_rocket/tris.md2") = weapon_rocketlauncher : "Rocket launcher" [] +@PointClass base(Weapons) studio("models/weapons/g_hyperb/tris.md2") = weapon_hyperblaster : "Hyperblaster" [] +@PointClass base(Weapons) studio("models/weapons/g_rail/tris.md2") = weapon_railgun : "Rail gun" [] +@PointClass base(Weapons) studio("models/weapons/g_bfg/tris.md2") = weapon_bfg : "Big Freakin Gun!" [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake3.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake3.fgd new file mode 100644 index 0000000..c6182ea --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/quake3.fgd @@ -0,0 +1,555 @@ +// +// Quake III Arena game definition file (.fgd) +// for Jackhammer 1.1 and above +// +// written by: +// Scrama / scrama@ya.ru +// XaeroX / support@hlfx.ru +// + +// +// worldspawn +// + +@SolidClass = worldspawn : "This is the world entity. Each map can only contain one, and it's automatically created for you." +[ + message(string) : "Logon message" + music(sound) : "Music file" : : "Path/name of looping .wav file used for level's music (e.g. music/sonic5.wav)." + _ambient(integer) : "Ambient light level" : : "Adds a constant value to overall lighting. Use is not recommended. Ambient light will have a tendency to flatten out variations in light and shade." + color(color255) : "Ambient Color" : : "RGB value for ambient light color (default is 0 0 0)." + gravity(integer) : "Gravity" : : "Gravity of level (default normal gravity: 800)." + gridsize(string) : "Dynamic Light Granularity" : : "Granularity of the lightgrid created by q3map. Value is three integers separated by spaces, representing number of units between grid points in X Y Z. Default gridsize value is 128 128 256. Use larger powers of 2 to reduce BSP size and compile time on very large maps." + _blocksize(integer) : "BSP Block Size" : : "Q3Map always splits the BSP tree along the planes X=_blocksize*n and Y=_blocksize*n. Increase the blocksize using larger powers of 2 to reduce compile times on very large maps with a low structural brush density (default 1024 1024 0, 0 values = disable)." + //-------- Q3MAP2 KEYS -------- + _minlight(integer) : "Min Lightmap Intensity" : : "Minimum light value, levelwide. Uses the _color key to set color. Does not add unlike ambient." + _minvertexlight(integer) : "Min Vertex Intensity" : : "Minimum vertex lighting, levelwide." + _mingridlight(integer) : "Min Dynamic Intensity" : : "Minimum lightgrid (dynamic entity lighting) levelwide." + _keeplights(choices) : "Keep Light Entities" : 0 : "Keep light entities in the BSP. Normally stripped out by the BSP process and read from the .map file by the lighting phase." = + [ + 0 : "No" + 1 : "Yes" + ] + _noshadersun(choices) : "Ignore Shader Sun" : 0 : "Ignore q3map_sun/sun directives in sky shaders and ONLY use entity sun lights." = + [ + 0 : "No" + 1 : "Yes" + ] + _farplanedist(integer) : "Far Clip Distance" : : "Limit on how many units the vis phase of compilation can see. Used in combination with level-wide fog, it can help reduce r_speeds on large, open maps." + _foghull(string) : "Fog Hull Shader" : : "Shader to use for 'fog hull'. Foghull shader should be a sky shader. Omit the 'textures/' prefix." + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps on brushes/patches in the world. Can be overridden in func_group (or other entities) (default 1.0)." + _celshader(string) : "Cel Shader" : : "Sets the cel shader used for this geometry. Note: Omit the 'textures/' prefix." + _style1alphaGen(string) : "Style Light alphaGen" : : "*IMPORTANT* Replace 'N' in the key '_styleNalphaGen' with an integer between 1 and 31 as your style index. Values takes standard shader waveform functions (e.g. wave sin 0.5 0.3 0.25 1.5)" + _style1rgbGen(string) : "Style Light rgbGen" : : "*IMPORTANT* Replace 'N' in the key '_styleNrgbGen' with an integer between 1 and 31 as your style index. Values take standard shader waveform functions (e.g. wave sin 0.5 0.3 0.25 1.5)" + //-------- Q3MAP2 TERRAIN KEYS -------- + _indexmap(string) : "Terrain Blending Map" : : "Path/name for the art file used to guide the mapping of textures on the terrain surface." + _layers(integer) : "Terrain Layers" : : "Integer value denotes number of unique root shaders that will be used on the terrain." + _shader(string) : "Terrain MetaShader" : : "Path to the metashader used to assign textures to the terrain entity. Note: Omit the 'textures/' prefix." +] + +@BaseClass = ShadowControl +[ + _castshadows(choices) : "Shadow Caster Level" : 0 : "Allows per-entity control over shadow casting. Defaults to 0 on entities, 1 on world. 0 = no shadow casting. 1 = cast shadows on world. >1 = cast shadows on entities with _rs (or _receiveshadows) with the corresponding value, AND world. Negative values imply same, but DO NOT cast shadows on world." = + [ + 0 : "No shadow casting" + 1 : "Cast shadows on world" + ] + _receiveshadows(choices) : "Shadow Reciever Level" : 0 : "Allows per-entity control over shadow reception. Defaults to 1 on everything (world shadows). 0 = receives NO shadows. >1 = receive shadows only from corresponding keyed entities (see above) and world. < 1 = receive shadows ONLY from corresponding keyed entities." = + [ + 0 : "No shadow casting" + 1 : "Cast shadows on world" + ] +] + +@BaseClass = Angles +[ + angles(angle) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Sets the pitch (up / down), yaw (left / right) and roll (bank) respectively. The compass in Jackhammer corresponds to Yaw. The settings are not always (or not all) used." +] + +@PointClass color(160 192 255) size(-4 -4 -4, 4 4 4) base(Angles) flags(Angle) = _skybox : "Compiler-only entity that specifies the origin of a skybox (a wholly contained, separate area of the map), similar to some games portal skies. When compiled with Q3Map2, the skybox surfaces will be visible from any place where sky is normally visible. It will cast shadows on the normal parts of the map, and can be used with cloud layers and other effects." +[ + _scale(integer) : "Scale" : : "Scaling factor (default 64), good values are between 50 and 300, depending on the map." +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" : : "Property used to identify entities." +] +@BaseClass = Target +[ + target(target_destination) : "Target" : : "When an entity is activated, it triggers the entity with the name specified by Target." + targetShaderName(string) : "Target Shader Name" : : "Points to the name of the original shader to swap out for triggerable shader entities (see notes)." + targetShaderNewName(string) : "Target Shader New Name" : : "Points to the name of the new shader to swap in for triggerable shader entities (see notes)." +] + +@BaseClass base(Target) = Targetx +[ + delay(float) : "Delay before trigger" : 0.0 : "Usually the time in seconds before an entity should trigger its target (after being triggered itself). Under other SmartEdit names, delay might also be the time to wait before performing some other action." + killtarget(target_destination) : "KillTarget" : : "When an entity is triggered, it will remove from the game the entity specified by this property." +] + +@BaseClass = Modes +[ + notfree(choices) : "Hidden For FFA" : 0 : "When set to 1, entity will not spawn in 'Free for all' and 'Tournament' modes." = + [ + 0 : "No" + 1 : "Yes" + ] + notteam(choices) : "Hidden For Teamplay" : 0 : "When set to 1, entity will not spawn in 'Teamplay' and 'CTF' modes." = + [ + 0 : "No" + 1 : "Yes" + ] + notsingle(choices) : "Hidden For SP" : 0 : "When set to 1, entity will not spawn in Single Player mode (bot play mode)." = + [ + 0 : "No" + 1 : "Yes" + ] + gametype(string) : "Game Type" : : "Defines the gametypes that will spawn this item. Q3A point release 1.32 only. Q3A values: ffa tournament single team ctf. Q3TA values: oneflag obelisk harvester teamtournament." + notbot(choices) : "Invisible To Bots" : 0 : "Used to make an item invisible for bot attraction." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass = Respawn +[ + wait(float) : "Respawn Delay" : : "Time in seconds before item respawns after being picked up (default 40, -1 = never respawn)" + random(float) : "Respawn Delay Variance" : : "Random time variance in seconds added or subtracted from 'wait' delay (default 0). When the random key is set, its value is used to calculate a minimum and a maximum delay. The final time delay will be a random value anywhere between the minimum and maximum values: (min delay = wait - random) (max delay = wait + random)." + team(string) : "Team Name" : : "Set this to team items. Teamed items will respawn randomly after team master is picked up. The amount of time it takes for an item in the team to respawn is determined by the 'wait' value of the item that was picked up previously. So if one of the items in the team has it's 'wait' key set to -1 (never respawn), the random respawning cycle of the teamed items will stop after that item is picked up." +] + +// +// Ammo +// +@BaseClass size(-16 -16 -16, 16 16 16) offset(0 0 16) color(96 96 255) base(Target, Targetname, Respawn, Modes) bobparms( 180 8 0 ) = Ammo +[ + count(integer) : "Ammo Given" : : "Sets the amount of ammo given to the player when picked up." + spawnflags(Flags) = + [ + 1 : "Suspended" : 0 + ] +] +@PointClass base(Ammo) studio("models/powerups/ammo/bfgam.md3") = ammo_bfg : "BFG ammo. Gives the player 15 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/machinegunam.md3") = ammo_bullets : "Machinegun ammo. Gives the player 50 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/plasmaam.md3") = ammo_cells : "Plasma Gun ammo. Gives the player 30 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/grenadeam.md3") = ammo_grenades : "Grenade Launcher ammo. Gives the player 5 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/lightningam.md3") = ammo_lightning : "Lightning Gun ammo. Gives the player 60 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/rocketam.md3") = ammo_rockets : "Rocket Launcher ammo. Gives the player 5 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/shotgunam.md3") = ammo_shells : "Shotgun ammo. Gives the player 10 by default." [] +@PointClass base(Ammo) studio("models/powerups/ammo/railgunam.md3") = ammo_slugs : "Railgun ammo. Gives the player 10 by default." [] + +// +// Holdable items +// + +@BaseClass size(-16 -16 -16, 16 16 16) offset(0 0 16) color(75 75 255) base(Target, Targetname, Respawn, Modes) bobparms( 180 8 0 ) = Holdable +[ + spawnflags(Flags) = + [ + 1 : "Suspended" : 0 + ] +] +@PointClass base(Holdable) studio("models/powerups/holdable/teleporter.md3") = holdable_teleporter : "Personal teleporter." [] +@PointClass base(Holdable) studio("models/powerups/holdable/medkit.md3") = holdable_medkit : "Holdable medkit, restores health to maximum upon activation." [] + +// +// Bonus items +// +@BaseClass size(-16 -16 -16, 16 16 16) offset(0 0 16) color(0 255 255) base(Target, Targetname, Respawn, Modes) bobparms( 180 8 0, -180 8 12 ) = Bonus +[ + spawnflags(Flags) = + [ + 1 : "Suspended" : 0 + ] +] +@PointClass base(Bonus) studio("models/powerups/instant/quad.md3", "models/powerups/instant/quad_ring.md3") = item_quad : "Quad powerup." [] +@PointClass base(Bonus) studio("models/powerups/instant/enviro.md3", "models/powerups/instant/enviro_ring.md3") = item_enviro : "Environmental suit powerup." [] +@PointClass base(Bonus) studio("models/powerups/instant/haste.md3", "models/powerups/instant/haste_ring.md3") = item_haste : "Haste powerup." [] +@PointClass base(Bonus) studio("models/powerups/instant/invis.md3", "models/powerups/instant/invis_ring.md3") = item_invis : "Invisibility powerup." [] +@PointClass base(Bonus) studio("models/powerups/instant/regen.md3", "models/powerups/instant/regen_ring.md3") = item_regen : "Regeneration powerup." [] +@PointClass base(Bonus) studio("models/powerups/instant/flight.md3", "models/powerups/instant/flight_ring.md3") = item_flight : "Flight powerup." [] +@PointClass base(Bonus) studio("models/flags/r_flag.md3") = team_CTF_redflag : "Red team CTF flag. Only in CTF games." [] +@PointClass base(Bonus) studio("models/flags/b_flag.md3") = team_CTF_blueflag : "Blue team CTF flag. Only in CTF games." [] + +// +// Func entities +// + +@SolidClass base(Targetname, ShadowControl) = func_bobbing : "Normally bobs on the Z axis." +[ + height(float) : "Amplitude" : : "Amplitude of bob, in units, default 32." + speed(float) : "Cycle time (sec)" : : "Seconds to complete a bob cycle. Default 4." + phase(float) : "Phase" : 0.0 : "The 0.0 to 1.0 offset in the cycle to start at." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when object is blocked (2 default)." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." + spawnflags(Flags) = + [ + 1 : "X Axis" : 0 + 2 : "Y Axis" : 0 + ] +] +@SolidClass base(Targetname, Target, ShadowControl) = func_button : "Brush button. When a button is touched, it moves some distance in the direction of it's angle, triggers all of it's targets, waits some time, then returns to it's original position where it can be triggered again." +[ + angle(float) : "Opening direction" : 0 + speed(string) : "Movement speed" : : "Default 40." + wait(choices) : "Wait before returning" : 3 = + [ + -1 : "Stay pressed" + ] + lip(string) : "Lip" : : "Lip remaining at end of move, in units, default 4." + health(string) : "Health" : : "If set, the button must be killed instead of touched." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." +] +@SolidClass base(Targetname, ShadowControl) = func_door : "Brush door." +[ + angle(float) : "Opening direction" : 0 + speed(string) : "Movement speed" : : "Default 100." + wait(choices) : "Wait before returning" : 3 = + [ + -1 : "Stay opened" + ] + lip(string) : "Lip" : : "Lip remaining at end of move, in units, default 8." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when door is blocked (2 default)." + health(string) : "Health" : : "If set, the door must be shot open." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 4 : "Crusher" : 0 : "Don't reverse if blocked." + ] +] +@SolidClass = func_group : "Used to group brushes together just for editor convenience. They are turned into normal brushes by the utilities." +[ + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." +] +@SolidClass base(Targetname, ShadowControl) = func_pendulum : "You need to have an origin brush as part of this entity. Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions. Pendulum frequency is a physical constant based on the length of the beam and gravity." +[ + speed(string) : "Distance (deg)" : : "The number of degrees each way the pendulum swings. Default 30." + phase(float) : "Phase" : 0.0 : "The 0.0 to 1.0 offset in the cycle to start at." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when train is blocked (2 default)." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." +] +@SolidClass base(Targetname, ShadowControl) = func_plat : "Plats are always drawn in the extended position so they will light correctly." +[ + height(float) : "Movement height" : : "Defaults to model height." + speed(string) : "Movement speed" : : "Default 200." + lip(string) : "Lip" : : "Protrusion above rest position, in units, default 8." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when plat is blocked (2 default)." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." +] +@SolidClass base(Targetname, ShadowControl) = func_rotating : "You need to have an origin brush as part of this entity. The center of that brush will be the point around which it is rotated. It will rotate around the Z axis by default. You can check either the X_AXIS or Y_AXIS box to change that." +[ + speed(string) : "Movement speed" : : "Default 100." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when train is blocked (2 default)." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + ] +] +@SolidClass base(Targetname, ShadowControl) = func_static : "A bmodel that just sits there, doing nothing. Can be used for conditional walls and models." +[ + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." +] +@SolidClass base(Targetname, Target, ShadowControl) = func_train : "A train is a mover that moves between path_corner target points. Trains MUST HAVE AN ORIGIN BRUSH. The train spawns at the first target it is pointing at." +[ + speed(string) : "Movement speed" : : "Default 100." + dmg(string) : "Damage inflicted when blocked" : : "Damage to inflict when train is blocked (2 default)." + noise(sound) : "Sound" : : "Looping sound to play when the object is in motion." + model2(studio) : "MD3 Model" + color(color1) : "Constant light color" + light(float) : "Constant light radius" + _lightmapscale(float) : "Lightmap Scale" : : "Floating point value scales the resolution of lightmaps (default 1.0)." + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Crusher" : 0 : "Stop if blocked." + ] +] +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = func_timer : "Repeatedly fires its targets. Can be turned on or off by using." +[ + wait(float) : "Delay" : : "Seconds between triggerings, 0.5 default, -1 = one time only." + random(float) : "Wait variance" : : "Wait variance, default is 0" + spawnflags(flags) = + [ + 1 : "Start On" : 0 + ] +] + +// +// Info entities +// + +@PointClass base(Targetname, Target) color(0 255 0) size(-8 -8 -8, 8 8 8) = info_player_intermission : "The intermission will be viewed from this point. Target an info_notnull for the view direction." [] +@PointClass base(Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_camp : "Used as a positional target for calculations in the utilities (spotlights, etc), but removed during gameplay." [] +@PointClass base(Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_null : "Used as a positional target for calculations in the utilities (spotlights, etc), but removed during gameplay." [] +@PointClass base(Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_notnull : "Used as a positional target for in-game calculation, like jumppad targets. target_position does the same thing." [] + +// +// Items +// + +@BaseClass size(-16 -16 -16, 16 16 16) offset(0 0 16) color(0 255 255) base(Target, Targetname, Respawn, Modes) bobparms( 180 8 0 ) = Item +[ + spawnflags(Flags) = + [ + 1 : "Suspended" : 0 + ] +] + +@PointClass base(Item) studio("models/powerups/armor/shard.md3") = item_armor_shard : "Armor shard, +5 Armor." [] +@PointClass base(Item) studio("models/powerups/armor/armor_yel.md3") = item_armor_combat : "Yellow armor, +50 Armor." [] +@PointClass base(Item) studio("models/powerups/armor/armor_red.md3") = item_armor_body : "Red armor, +100 Armor." [] +@PointClass base(Item) studio("models/powerups/health/small_cross.md3", "models/powerups/health/small_sphere.md3") = item_health_small : "Small medkit, +5 Health." [] +@PointClass base(Item) studio("models/powerups/health/medium_cross.md3", "models/powerups/health/medium_sphere.md3") = item_health : "Normal medkit, +25 Health." [] +@PointClass base(Item) studio("models/powerups/health/large_cross.md3", "models/powerups/health/large_sphere.md3") = item_health_large : "Large medkit, +50 Health." [] +@PointClass base(Item) studio("models/powerups/health/mega_cross.md3", "models/powerups/health/mega_sphere.md3") = item_health_mega : "Megahealth, +100 Health." [] + +// +// Misc entities +// + +@PointClass base(Angles) size(-16 -16 -16, 16 16 16) flags(Angle) studio() = misc_model : "Entity for arbitrary .md3 file to display. Model will be compiled into the BSP file." +[ + model(studio) : "Model" + modelscale(scale) : "Scale" + target(target_destination) : "Parent" : : "Parent entity to attach the model to." + spawnflags(flags) = + [ + 2 : "Solid" : 0 + 4 : "Meta" : 0 + ] +] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = misc_portal_surface : "The portal surface nearest this entity will show a view from the targeted misc_portal_camera, or a mirror view if untargeted. This must be within 64 world units of the surface!" [] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = misc_portal_camera : "The target for a misc_portal_director. You can set either angles or target another entity to determine the direction of view." +[ + roll(float) : "Angle modifier" : : "An angle modifier is used to orient the camera around the target vector." + spawnflags(flags) = + [ + 1 : "Slow Rotate" : 0 + 2 : "Fast Rotate" : 0 + ] +] +@PointClass base(Targetname) color(0 128 0) size(-16 -16 -24, 16 16 32) offset(0 0 24) = misc_teleporter_dest : "Point teleporters at these. Now that we don't have teleport destination pads, this is just an info_notnull." [] + +// +// Paths +// + +@PointClass base(Targetname, Target) flags(Path) color(247 181 82) size(-8 -8 -8, 8 8 8) = path_corner : "Train path corners." +[ + speed(float) : "Speed" : : "Speed to move to the next corner." + wait(float) : "Wait here (sec)" : : "Seconds to wait before beginning move to next corner." +] + +// +// Player spawn spots +// + +@BaseClass base(Target, Angles) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24) color(0 255 0) = PlayerClass [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Potential spawning position for deathmatch games. The first time a player enters the game, they will be at an 'initial' spot. Targets will be fired when someone spawns in on them." +[ + nobots(choices) : "No Bots" : 0 : "Set to yes to prevent bots from using this spot." = + [ + 0 : "No" + 1 : "Yes" + ] + nohumans(choices) : "No Humans" : 0 : "Set to yes to prevent non-bots from using this spot." = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(Flags) = + [ + 1 : "Initial" : 0 + ] +] +@PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] + +@PointClass base(PlayerClass) color(255 50 50) = team_CTF_redplayer : "Only in CTF games. Red players spawn here at game start." [] +@PointClass base(PlayerClass) color(255 50 50) = team_CTF_redspawn : "Potential spawning position for red team in CTF games. Targets will be fired when someone spawns in on them." [] +@PointClass base(PlayerClass) color(50 50 255) = team_CTF_blueplayer : "Only in CTF games. Blue players spawn here at game start." [] +@PointClass base(PlayerClass) color(50 50 255) = team_CTF_bluespawn : "Potential spawning position for blue team in CTF games. Targets will be fired when someone spawns in on them." [] + +// +// Lights +// + +@BaseClass = Light +[ + light(integer) : "Brightness" : 300 + _color(color1) : "RGB Color" : "1 1 0.5" + spawnflags(flags) = + [ + 1 : "Linear" : 0 : "Gives light linear falloff instead of inverse square." + ] +] +@PointClass iconsprite("sprites/light.spr") base(Target, Light) flags(Light) = light : "Non-displayed light. Lights pointed at a target will be spotlights." [] + +// +// Shooters +// + +@BaseClass base(Targetname, Target, Angles) flags(Angle) size(-16 -16 -16, 16 16 16) color(255 0 0) = BaseShooter : "Fires at either the target or the current direction." +[ + random(float) : "Target deviance (deg)" : 1.0 +] +@PointClass base(BaseShooter) = shooter_rocket [] +@PointClass base(BaseShooter) = shooter_plasma [] +@PointClass base(BaseShooter) = shooter_grenade [] + +// +// Target entities +// + +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = target_delay : "Delayed trigger." +[ + wait(float) : "Delay" : : "Seconds to pause before firing targets." + random(float) : "Wait variance" : : "Wait variance, default is 0." +] +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = target_give : "Gives the activator all the items pointed to." [] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = target_kill : "Kills the activator." [] +@PointClass base(Targetname, Target, Angles) color(0 128 210) size(-8 -8 -8, 8 8 8) flags(Angle) = target_laser : "When triggered, fires a laser. You can either set a target or a direction." +[ + spawnflags(flags) = + [ + 1 : "Start On" : 0 + ] +] +@PointClass base(Targetname) color(100 255 100) size(-8 -8 -8, 8 8 8) = target_location : "Closest target_location in sight used for the location, if none in site, closest in distance." +[ + message(string) : "Name of the location" + count(choices) : "Color" : 0 = + [ + 0 : "White" + 1 : "Red" + 2 : "Green" + 3 : "Yellow" + 4 : "Blue" + 5 : "Cyan" + 6 : "Magenta" + ] +] +@PointClass base(Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = target_position : "Used as a positional target for in-game calculation, like jumppad targets." [] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = target_print : "Text message. If private, only the activator gets the message. If no checks, all clients get the message." +[ + message(string) : "Message" : : "Text to print." + spawnflags(flags) = + [ + 1 : "Red Team" : 0 + 2 : "Blue Team" : 0 + 4 : "Private" : 0 + ] +] +@PointClass base(Targetname, Target, Angles) size(-8 -8 -8, 8 8 8) flags(Angle) = target_push : "Pushes the activator in the direction of angle, or towards a target apex." +[ + speed(integer) : "Push speed" + spawnflags(flags) = + [ + 1 : "Bouncepad" : 0 : "Play bounce noise instead of windfly." + ] +] +@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = target_relay : "This doesn't perform any actions except fire its targets. The activator can be forced to be from a certain team." +[ + spawnflags(flags) = + [ + 1 : "Red Only" : 0 : "Force activator be from the Red Team." + 2 : "Blue Only" : 0 : "Force activator be from the Blue Team." + 4 : "Random" : 0 : "Only one of the targets will be fired, not all of them." + ] +] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = target_remove_powerups : "Takes away all the activators powerups. Used to drop flight powerups into death puts." [] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = target_score : "The activator is given this many points." +[ + count(integer) : "Score" : 1 : "Number of points to add." +] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) iconsprite("sprites/speaker.spr") = target_speaker : "A global sound will play full volume throughout the level. Activator sounds will play on the player that activated the target. Global and activator sounds can't be combined with looping. Normal sounds play each time the target is used. Looped sounds will be toggled by use functions. Multiple identical looping sounds will just increase volume without any speed cost." +[ + noise(sound) : "Sound" : : "WAV file to play." + wait(choices) : "Wait (sec)" : 0 : "Seconds between auto-triggerings." = + [ + 0 : "Don't auto-retrigger" + ] + random(float) : "Wait variance" : : "Wait variance, default is 0." + spawnflags(flags) = + [ + 1 : "Looped (On)" : 0 + 2 : "Looped (Off)" : 0 + 4 : "Global" : 0 + 8 : "Activator" : 0 + ] +] +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = target_teleporter : "The activator will be teleported away." [] + + +// +// Triggers +// + +@PointClass base(Target) size(-8 -8 -8, 8 8 8) = trigger_always : "This trigger will always fire. It is activated by the world." [] + +@SolidClass base(Target) = trigger_multiple : "Variable sized repeatable trigger. Must be targeted at one or more entities. So, the basic time between firing is a random time between (wait - random) and (wait + random)" +[ + wait(float) : "Delay" : : "Seconds between triggerings, 0.5 default, -1 = one time only." + random(float) : "Wait variance" : : "Wait variance, default is 0" +] +@SolidClass base(Target) = trigger_push : "Must point at a target_position, which will be the apex of the leap. This will be client side predicted, unlike target_push." [] +@SolidClass base(Target) = trigger_teleport : "Allows client side prediction of teleportation events. Must point at a target_position, which will be the teleport destination." [] +@SolidClass base(Targetname) = trigger_hurt : "ny entity that touches this will be hurt. It does dmg points of damage each server frame. Targeting the trigger will toggle its on / off state." +[ + dmg(integer) : "Damage" : 5 + spawnflags(flags) = + [ + 1 : "Start Off" : 0 + 4 : "Silent" : 0 : "Supresses playing the sound." + 8 : "No Protection" : 0 : "Nothing stops the damage." + 16 : "Slow" : 0 : "Changes the damage rate to once per second." + ] +] + +// +// Weapons +// + +@BaseClass size(-16 -16 -16, 16 16 16) offset(0 0 16) color(0 0 200) base(Target, Targetname, Respawn, Modes, Angles) flags(EccentricFix) bobparms( 180 8 0 ) = Weapon [] +@PointClass base(Weapon) studio("models/weapons2/gauntlet/gauntlet.md3") = weapon_gauntlet : "Gauntlet." [] +@PointClass base(Weapon) studio("models/weapons2/machinegun/machinegun.md3") = weapon_machinegun : "Machinegun." [] +@PointClass base(Weapon) studio("models/weapons2/shotgun/shotgun.md3") = weapon_shotgun : "Shotgun." [] +@PointClass base(Weapon) studio("models/weapons2/grenadel/grenadel.md3") = weapon_grenadelauncher : "Grenade launcher." [] +@PointClass base(Weapon) studio("models/weapons2/rocketl/rocketl.md3") = weapon_rocketlauncher : "Rocket launcher." [] +@PointClass base(Weapon) studio("models/weapons2/plasma/plasma.md3") = weapon_plasmagun : "Plasma gun." [] +@PointClass base(Weapon) studio("models/weapons2/lightning/lightning.md3") = weapon_lightning : "Lightning gun." [] +@PointClass base(Weapon) studio("models/weapons2/railgun/railgun.md3") = weapon_railgun : "Railgun." [] +@PointClass base(Weapon) studio("models/weapons2/bfg/bfg.md3") = weapon_bfg : "BFG." [] +@PointClass base(Weapon) studio("models/weapons2/grapple/grapple.md3") = weapon_grapplinghook : "Grappling hook." [] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/jack/zhlt.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/zhlt.fgd new file mode 100644 index 0000000..2c9683f --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/jack/zhlt.fgd @@ -0,0 +1,237 @@ + +// light_shadow +// It creates toggleable shadow for func_door, func_breakable, ... +@PointClass color(255 255 0) = light_shadow : "Dynamic shadow control" +[ + // Control the shadow of this solid entity. + // The solid entity must have 'Opaque' set in its lightflags. + target(target_destination) : "Target solid entity" + // Switch the light_shadow on/off will cause shadow to disappear/appear. + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// light_bounce +// Use as complement for light_shadow. +@PointClass color(255 255 0) = light_bounce : "Bounce light control" +[ + // Control the light bounced from this solid entity. + target(target_destination) : "Target solid entity" + // When the targeted entity disappear, switch on the light_shadow and switch off the light_bounce at the same time. + targetname(target_source) : "Name" + style(choices) : "Appearance (no name allowed)" : "" = + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + pattern(string) : "Custom Appearance" + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// info_overview_point +// It makes all entities visible from this place. This is useful for overview mode (dev_overview 1). +// If "Reversed" is selected, this place will become visible from the entire map. This is useful for large skybox model. +@PointClass color(255 0 0) = info_overview_point : "Disable VIS here for overview" +[ + reverse(choices) : "Reversed" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_sunlight +// It generates a fake light_environment which defines sv_skycolor and sv_skyvec in game. +// If you are using multiple light_environments, you will probably need this entity. +@PointClass color(255 255 0) = info_sunlight : "light_environment information that affects model brightness" +[ + target(target_destination) : "Target" + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" + pitch(integer) : "Pitch" : -90 + _light(color255) : "Brightness" : "0 0 0 100" +] + +// func_group +// It is not a real entity. Brushes in this entity are still world brushes. +@SolidClass = func_group : "Solid brushes" +[ + zhlt_noclip(choices) : "Passable" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_texlights +// It defines texture lights. +// Add any texture name as a key and their brightness as the value. +// Don't need to set colors because hlrad knows texture colors. +@PointClass color(255 0 0) = info_texlights : "Texture name : Brightness" +[ +] + +// info_smoothvalue +// It specifies smoothing threshold angle for each texture. +@PointClass color(255 0 0) = info_smoothvalue : "Texture name : Threshold of smooth angle" +[ +] + +// info_translucent +// It defines translucent effect for textures. +// 0.0 = normal (only receive light from front), 1.0 = receive 100% light from back and 0% from front. +// Can be used to simulate materials like fabric, coarse glass, plastic. +// The thickness of brush with translucent textures can not exceed 2 units. +@PointClass color(255 0 0) = info_translucent : "Texture name : translucent amount (0.0-1.0)" +[ +] + +// info_angularfade +// It gives textures metal like look. +// 1.0 = normal; higher value = brightness decrease more quickly when the angle increases +// Do not use this effect too much, because it looks unnatural and exaggerated. +@PointClass color(255 0 0) = info_angularfade : "Texture name : the speed at which light fade as its direction becomes parellel to the texture (default 1.0)" +[ +] + +// light_surface +// It defines texture lights. +// It is recommended to replace lights.rad and info_texlights with this entity. +@PointClass color(255 255 0) = light_surface : "Advanced texture light" +[ + _tex(string) : "Texture name" : "" // texture name (not case sensitive) + _frange(string) : " Filter max distance" : "" // max distance from face center to this entity + _fdist(string) : " Filter max dist to plane" : "" // max distance from face plane to this entity + _fclass(string) : " Filter entity classname" : "" + _fname(string) : " Filter entity name" : "" + _light(string) : "Texture brightness" : "80" // value >= 80 will ensure full brightness. Colored brightness is not recommended. + _texcolor(color255) : " Color(replace texture color)" : "" // emit light as if the texture is in this color + // Note: + // If you want to set cone angle or any other value to 0, + // '0.0' should be used instead of '0'. + // This is a bug in Hammer. + _cone(string) : " Inner(bright) angle(90default)" : "" // should be 90 for conventional texlights + _cone2(string) : " Outer(fading) angle(90default)" : "" // should be 90 for conventional texlights + _scale(string) : " Adjust emit scale(1.0default)" : "" // 0.0 = no emitting + _chop(string) : " Grid size of sampling" : "" // in inch; not affected by texture scale + _fast(choices) : " Fast" : "" = + [ + "": "Auto" + 1: "Yes" + 2: "No" + ] + // 'light_surface' will not be recognized by the game if we don't change its classname. + convertto(choices) : "Classname in game" : "light" = + [ + "light" : "light" + "light_spot" : "light_spot" + ] + targetname(target_source) : " Name" : "" // create a new light style with this name + style(choices) : " Appearance (no name allowed)" : "" = // use predefined light styles which have predefined patterns + [ + "" : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + 12 : "Underwater mutation" + ] + // Light of the same style share the same pattern. + pattern(string) : " Custom Appearance" : "" // pattern defined by a sequence of letters + spawnflags(flags) = + [ + 1 : "Initially dark" : 0 + 2048 : "Not in Deathmatch" : 0 + ] +] + +// func_detail +// Similar in function to the func_detail in Source, though it is still subject to the bsp file format. +@SolidClass = func_detail : "Detail brushes" +[ + // You can leave the detail level to 1. For tiny objects, you might set to 2, so that they won't chop faces of other func_details. + zhlt_detaillevel(integer) : "Detail level" : 1 + // For large shapes such as terrain and walls, set this to no less than their detail level, so that they can chop the faces of adjacent world brushes. + zhlt_chopdown(integer) : "Lower its level to chop others" : 0 + // Usually you don't have to use this. + zhlt_chopup(integer) : "Raise its level to get chopped" : 0 + // Setting this to 0 will reduce clipnode count, but will lose the benefit of func_detail's better content deciding method which is designed to prevent "Ambiguous leafnode contents" problem. + zhlt_clipnodedetaillevel(integer) : "Detail level of cliphulls" : 1 + // Very useful option which can reduce clipnode count. + zhlt_noclip(choices) : "Passable" : "" = + [ + "": "No" + 1: "Yes" + ] +] + +// info_hullshape +// It replaces the default cuboid shape of the player when generating collision hulls for certain brushes. +@SolidClass = info_hullshape : "Hull shape definition" +[ + targetname(target_source) : "Name" + defaulthulls(choices) : "Set as default shape" : "" = + [ + "": "No" + 2: "for hull 1" + 4: "for hull 2" + 8: "for hull 3" + ] + disabled(choices) : "Disable this entity" : "" = + [ + "": "No" + 1: "Yes" + ] +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/source/base.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/source/base.fgd new file mode 100644 index 0000000..54d5ac0 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/source/base.fgd @@ -0,0 +1,6546 @@ +//====== Copyright 1996-2005, Valve Corporation, All rights reserved. ======= +// +// Purpose: General game definition file (.fgd) +// +//============================================================================= + +@mapsize(-16384, 16384) + + +//------------------------------------------------------------------------- +// +// Base Classes +// +//------------------------------------------------------------------------- + +@BaseClass = Angles +[ + angles(angle) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "This entity's orientation in the world. Pitch is rotation around the Y axis, " + + "yaw is the rotation around the Z axis, roll is the rotation around the X axis." +] + +@BaseClass = Origin +[ + origin(origin) : "Origin (X Y Z)" : : "The position of this entity's center in the world. Rotating entities typically rotate around their origin." +] + +@BaseClass = Studiomodel +[ + model(studio) : "World Model" + skin(integer) : "Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin instead of the default." + modelscale(float) : "Model Scale" : "1.0" : "A multiplier for the size of the model." + + disableshadows(choices) : "Disable Shadows" : 0 : "Used to disable dynamic shadows on this entity." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Skin(integer) : "Changes the model skin to the specified number." + input DisableShadow(void) : "Turn shadow off." + input EnableShadow(void) : "Turn shadow on." + input AlternativeSorting(bool) : "Used to attempt to fix sorting problems when rendering. True activates, false deactivates" + input SetModelScale(string) : "Takes two values separated by a space. The first is the target model scale. The second value is the number of seconds the change in scale will be spread over." + + // Outputs + output OnIgnite(void) : "Fired when this object catches fire." +] + +@BaseClass = BasePlat +[ + input Toggle(void) : "Toggles the platform's state." + input GoUp(void) : "Tells the platform to go up." + input GoDown(void) : "Tells the platform to go down." +] + +@BaseClass = Targetname +[ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + + // Inputs + input Kill(void) : "Removes this entity from the world." + input KillHierarchy(void) : "Removes this entity and all its children from the world." + input AddOutput(string) : "Adds an entity I/O connection to this entity. Format: ::::. Very dangerous, use with care." + input FireUser1(void) : "Causes this entity's OnUser1 output to be fired." + input FireUser2(void) : "Causes this entity's OnUser2 output to be fired." + input FireUser3(void) : "Causes this entity's OnUser3 output to be fired." + input FireUser4(void) : "Causes this entity's OnUser4 output to be fired." + + // Outputs + output OnUser1(void) : "Fired in response to FireUser1 input." + output OnUser2(void) : "Fired in response to FireUser2 input." + output OnUser3(void) : "Fired in response to FireUser3 input." + output OnUser4(void) : "Fired in response to FireUser4 input." +] + +@BaseClass = Parentname +[ + parentname(target_destination) : "Parent" : : "The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent." + + // Inputs + input SetParent(string) : "Changes the entity's parent in the movement hierarchy." + input SetParentAttachment(string) : "Change this entity to attach to a specific attachment point on its parent. Entities must be parented before being sent this input. The parameter passed in should be the name of the attachment." + input SetParentAttachmentMaintainOffset(string) : "Change this entity to attach to a specific attachment point on it's parent. Entities must be parented before being sent this input. The parameter passed in should be the name of the attachment. The entity will maintain it's position relative to the parent at the time it is attached." + input ClearParent(void) : "Removes this entity from the the movement hierarchy, leaving it free to move independently." +] + +@BaseClass = BaseBrush +[ + // Inputs + input SetTextureIndex(integer) : "Used by HL1Port. Sets the brush texture index. Use a material_modify_control entity instead." + input IncrementTextureIndex(void) : "Used by HL1Port. Increments the brush texture index. Use a material_modify_control entity instead." +] + +@BaseClass = EnableDisable +[ + StartDisabled(choices) : "Start Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Enable(void) : "Enable this entity." + input Disable(void) : "Disable this entity." +] + +@BaseClass = RenderFxChoices +[ + renderfx(choices) :"Render FX" : 0 = + [ + 0: "Normal" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Slow Wide Pulse" + 4: "Fast Wide Pulse" + 9: "Slow Strobe" + 10: "Fast Strobe" + 11: "Faster Strobe" + 12: "Slow Flicker" + 13: "Fast Flicker" + 5: "Slow Fade Away" + 6: "Fast Fade Away" + 7: "Slow Become Solid" + 8: "Fast Become Solid" + 14: "Constant Glow" + 15: "Distort" + 16: "Hologram (Distort + fade)" + 23: "Cull By Distance (TEST)" + 24: "Spotlight FX" + 26: "Fade Near" + ] +] + +@BaseClass = Shadow +[ + disableshadows(choices) : "Disable shadows" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + input DisableShadow(void) : "Turn shadow off." + input EnableShadow(void) : "Turn shadow on." +] + +@BaseClass base(RenderFxChoices) = RenderFields +[ + rendermode(choices) : "Render Mode" : 0 : "Used to set a non-standard rendering mode on this entity. See also 'FX Amount' and 'FX Color'." = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + 7: "Additive Fractional Frame" + 9: "World Space Glow" + 10: "Dont Render" + ] + renderamt(integer) : "FX Amount (0 - 255)" : 255 : "The FX amount is used by the selected Render Mode." + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" : "The FX color is used by the selected Render Mode." + + disablereceiveshadows(choices) : "Disable Receiving Shadows" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + input Alpha(integer) : "Set the sprite's alpha (0 - 255)." + input Color(color255) : "Set the sprite's color (R G B)." +] + + +// Inherit from this to get the ability to only include an object in a range of dx levels. +// NOTE!!: MAKE SURE THAT YOU DON'T USE THIS WITH ANYTHING THAT WILL BREAK SAVE-GAMES SWITCHING +// BETWEEN DXLEVELS!!!! +@BaseClass = DXLevelChoice +[ + mindxlevel(choices) : "Minimum DX Level" : 0 = + [ + 0 : "default (lowest)" + 70 : "dx7" + 80 : "dx8.0 (4600Ti)" + 81 : "dx8.1 (FX5200)" + 90 : "dx9 SM2.0" + 95 : "dx9 SM3.0" + ] + maxdxlevel(choices) : "Maximum DX Level" : 0 = + [ + 0 : "default (highest)" + 60 : "dx6" + 70 : "dx7" + 80 : "dx8.0 (4600Ti)" + 81 : "dx8.1 (FX5200)" + 90 : "dx9 SM2.0" + 95 : "dx9 SM3.0" + ] +] + +@BaseClass = Inputfilter +[ + InputFilter(choices) : "Input Filter" : 0 : "Used to specify which inputs this entity will accept." = + [ + 0 : "Allow all inputs" + 8 : "Ignore Touch/Untouch" + 16 : "Ignore Use" + 32 : "Ignore All" + ] +] + +@BaseClass = Global +[ + globalname(string) : "Global Entity Name" : "" : "Name by which this entity is linked to another entity in a different map. When the player transitions to a new map, entities in the new map with globalnames matching entities in the previous map will have the previous map's state copied over their state." +] + +// Base class for env_global +@BaseClass base(Targetname) = EnvGlobal : + "An entity to control a global game state, with an optional associated counter, that persists across level transitions." +[ + initialstate(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + 2 : "Dead" + ] + + counter(integer) : "Counter" : 0 : "An integer counter value associated with this global." + + spawnflags(flags) = + [ + 1 : "Set Initial State" : 0 + ] + + // Inputs + input TurnOn(void) : "Set state of global to ON." + input TurnOff(void) : "Set state of global to OFF." + input Toggle(void) : "Toggles state of global between ON and OFF." + input Remove(void) : "Set state of global to DEAD." + input SetCounter(integer) : "Sets the counter value of this global." + input AddToCounter(integer) : "Adds to the counter value of this global. Negative numbers subtract." + input GetCounter(void) : "Causes the Counter output to be fired, passing the current counter value for this global." + + // Outputs + output Counter(integer) : "Fired in response to the GetCounter input, passing the current value of the counter." +] + +@BaseClass = DamageFilter +[ + damagefilter(target_destination) : "Damage Filter" : "" : "Name of the filter entity that controls which entities can damage us." + input SetDamageFilter(string) : "Sets the entity to use as damage filter. Pass in an empty string to clear the damage filter." +] + +@BaseClass = ResponseContext +[ + // Inputs + input AddContext(string) : "Adds a context to this entity's list of response contexts. The format should be 'key:value'." + input RemoveContext(string) : "Remove a context from this entity's list of response contexts. The name should match the 'key' of a previously added context." + input ClearContext(void) : "Removes all contexts in this entity's list of response contexts." + + // Pre-defined contexts at server startup time (set by mapper) + ResponseContext(string) : "Response Contexts" : "" : "Response system context(s) for this entity. Format should be: 'key:value,key2:value2,etc'. When this entity speaks, the list of keys & values will be passed to the response rules system." +] + +@BaseClass base(Targetname, DamageFilter, Shadow) = Breakable +[ + ExplodeDamage(float) : "Explosion Damage" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage. See also 'Explosion Radius'." + ExplodeRadius(float) : "Explosion Radius" : 0 : "If non-zero, when this entity breaks it will create an explosion with a radius of the specified amount. See also 'Explosion Damage'." + PerformanceMode(choices) : "Performance Mode" : 0 : "Used to limit the amount of gibs produced when this entity breaks, for performance reasons." = + [ + 0 : "Normal" + 1 : "No Gibs" + 2 : "Full Gibs on All Platforms" + 3 : "Reduced gibs" + ] + + BreakModelMessage(string) : "Break Model Message" : "" : "If set, will use this break model message instead of the normal break behavior." + + // Inputs + input Break(void) : "Breaks the breakable." + input SetHealth(integer) : "Sets a new value for the breakable's health. If the breakable's health reaches zero it will break." + input AddHealth(integer) : "Adds health to the breakable. If the breakable's health reaches zero it will break." + input RemoveHealth(integer) : "Removes health from the breakable. If the breakable's health reaches zero it will break." + input EnablePhyscannonPickup(void) : "Makes the breakable able to picked up by the physcannon." + input DisablePhyscannonPickup(void) : "Makes the breakable not able to picked up by the physcannon." + input SetMass(float) : "Set mass of this object." + + // Outputs + output OnBreak(void) : "Fired when this breakable breaks." + output OnTakeDamage(void) : "Fired each time this breakable takes any damage." + output OnHealthChanged(float) : "Fired when the health of this breakable changes, passing the new value of health as a percentage of max health, from [0..1]." + output OnPhysCannonDetach(void) : "Fired when the physcannon has ripped this breakable off of the wall. Only fired if ACT_PHYSCANNON_DETACH is defined in the model this breakable is using." + output OnPhysCannonAnimatePreStarted(void) : "Fired when this prop starts playing the Pre physcannon-pull activity, caused by the player trying to grab this prop with the physcannon. Only fired if the ACT_PHYSCANNON_ANIMATE_PRE activity is defined in the model this breakable is using." + output OnPhysCannonAnimatePullStarted(void) : "Fired when this prop starts playing the physcannon-pull activity, caused by the player trying to grab this prop with the physcannon. Only fired if the ACT_PHYSCANNON_ANIMATE activity is defined in the model this breakable is using. If the prop has Pre pull anim, this will be fired after the Pre anim has finished playing." + output OnPhysCannonPullAnimFinished(void) : "Fired when this prop has finished playing the physcannon-pull activity, caused by the player trying to grab this prop with the physcannon. Only fired if the ACT_PHYSCANNON_ANIMATE activity is defined in the model this breakable is using. If the prop has Pre & Post pull anims, this will be fired after the Post anim has finished playing." + output OnPhysCannonAnimatePostStarted(void) : "Fired when this prop starts playing the Post physcannon-pull activity. Only fired if the ACT_PHYSCANNON_ANIMATE_POST activity is defined in the model this breakable is using." +] + +@BaseClass base(Breakable, Parentname, Global) = BreakableBrush +[ + spawnflags(flags) = + [ + 1 : "Only Break on Trigger" : 0 + 2 : "Break on Touch" : 0 + 4 : "Break on Pressure" : 0 + 512: "Break immediately on Physics" : 0 + 1024: "Don't take physics damage" : 0 + 2048: "Don't allow bullet penetration": 0 + ] + + propdata(choices) : "Prop Data" : 0 : "Set to the best approximation of the size and material of this entity's brushes. If set, it will override this entity's health and damage taken from various weapons. See the propdata.txt file in the scripts directory of your MOD to get a detailed list of what each entry specifies." = + [ + 0 : "None" + 1 : "Wooden.Tiny" + 2 : "Wooden.Small" + 3 : "Wooden.Medium" + 4 : "Wooden.Large" + 5 : "Wooden.Huge" + 6 : "Metal.Small" + 7 : "Metal.Medium" + 8 : "Metal.Large" + 9 : "Cardboard.Small" + 10 : "Cardboard.Medium" + 11 : "Cardboard.Large" + 12 : "Stone.Small" + 13 : "Stone.Medium" + 14 : "Stone.Large" + 15 : "Stone.Huge" + 16 : "Glass.Small" + 17 : "Plastic.Small" + 18 : "Plastic.Medium" + 19 : "Plastic.Large" + 20 : "Pottery.Small" + 21 : "Pottery.Medium" + 22 : "Pottery.Large" + 23 : "Pottery.Huge" + 24 : "Glass.Window" + ] + + health(integer) : "Strength" : 1 : "Number of points of damage to take before breaking. 0 means don't break." + material(choices) :"Material Type" : 0 : "Set to the material type of the brush. Used to decide what sounds to make when damaged, and what gibs to produce when broken." = + [ + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "CinderBlock" + 5: "Ceiling Tile" + 6: "Computer" + 7: "Unbreakable Glass" + 8: "Rocks" + // 9: "Web(defunct)" + 10: "None" + ] + explosion(choices) : "Gibs Direction" : 0 : "Used to decide which direction to throw gibs when broken." = + [ + 0: "Random" + 1: "Relative to Attack" + 2: "Use Precise Gib Dir" + ] + + gibdir(angle) : "Precise Gib Direction" : "0 0 0" : "Specifies the direction to throw gibs when this breakable breaks. Be sure to select Use Precise Gib Dir in the Gibs Direction field!" + + nodamageforces(choices) : "Damaging it Doesn't Push It" : 0 : "Used to determine whether or not damage should cause the brush to move." = + [ + 0: "No" + 1: "Yes" + ] + + // Inputs + input EnableDamageForces(void) : "Damaging the entity applies physics forces to it." + input DisableDamageForces(void) : "Damaging the entity does *not* apply physics forces to it." + + gibmodel(string) : "Gib Model" : "" : "Used by HL1Port to specify a custom gib model to break into, overriding the 'Material Type'." + spawnobject(choices) : "Spawn On Break" : 0 : "When broken, an entity of the selected type will be created." = + [ + 1: "item_battery" + 2: "item_healthkit" + 3: "item_ammo_pistol" + 4: "item_ammo_pistol_large" + 5: "item_ammo_smg1" + 6: "item_ammo_smg1_large" + 7: "item_ammo_ar2" + 8: "item_ammo_ar2_large" + 9: "item_box_buckshot" + 10: "item_flare_round" + 11: "item_box_flare_rounds" + 12: "item_ml_grenade" + 13: "item_smg1_grenade" + 14: "item_box_sniper_rounds" + 15: "unused1" + 16: "weapon_stunstick" + 17: "weapon_ar1" + 18: "weapon_ar2" + 19: "unused2" + 20: "weapon_ml" + 21: "weapon_smg1" + 22: "weapon_smg2" + 23: "weapon_slam" + 24: "weapon_shotgun" + 25: "weapon_molotov" + 26: "item_dynamic_resupply" + ] + explodemagnitude(integer) : "Explode Magnitude" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage." + pressuredelay(float) : "Pressure Delay" : 0 : "Delay, in seconds, after 'broken' by pressure before breaking apart (allows for sound to play before breaking apart)." +] + +@BaseClass base(Breakable) = BreakableProp +[ + spawnflags(flags) = + [ + 16 : "Break on Touch" : 0 + 32 : "Break on Pressure" : 0 + ] + pressuredelay(float) : "Pressure Delay" : 0 : "Delay, in seconds, after 'broken' by pressure before breaking apart (allows for sound to play before breaking apart)." +] + +@BaseClass base(Targetname, Angles, RenderFields, DamageFilter, ResponseContext, Shadow) color(0 200 200) = BaseNPC +[ + target(target_destination) : "Target Path Corner" : : "If set, the name of a path corner entity that this NPC will walk to, after spawning." + squadname(String) : "Squad Name" : : "NPCs that are in the same squad (i.e. have matching squad names) will share information about enemies, and will take turns attacking and covering each other." + hintgroup(String) : "Hint Group" : "" : "Hint groups are used by NPCs to restrict their hint-node searching to a subset of the map's hint nodes. Only hint nodes with matching hint group names will be considered by this NPC." + hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, but does not limit local navigation." = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 1 : "Wait Till Seen" : 0 + 2 : "Gag (No IDLE sounds until angry)" : 0 + 4 : "Fall to ground (unchecked means *teleport* to ground)" : 1 + 8 : "Drop Healthkit" : 0 + 16 : "Efficient - Don't acquire enemies or avoid obstacles" : 0 + 128: "Wait For Script" : 0 + 256: "Long Visibility/Shoot" : 0 + 512: "Fade Corpse" : 1 + 1024: "Think outside PVS" : 0 + 2048: "Template NPC (used by npc_maker, will not spawn)" : 0 + 4096: "Do Alternate collision for this NPC (player avoidance)" : 0 + 8192: "Don't drop weapons" : 0 + 16384 : "Ignore player push (dont give way to player)" : 0 + ] + + //initialidle(string) : "Initial Idle Activity" :: "Activity the NPC should use to idle until becomes alert" + sleepstate(choices) : "Sleep State" : 0 : "Holds the NPC in stasis until specified condition. See also 'Wake Radius' and 'Wake Squad'." = + [ + 0 : "None" + 1 : "Waiting for threat" + 2 : "Waiting for PVS" + 3 : "Waiting for input, ignore PVS" + 4 : "Auto PVS" + 5 : "Auto PVS after PVS" + ] + + wakeradius(float) : "Wake Radius" : 0 : "Auto-wake if player within this distance" + wakesquad(choices) : "Wake Squad" : 0 : "Wake all of the NPCs squadmates if the NPC is woken" = + [ + 0 : "No" + 1 : "Yes" + ] + + enemyfilter(target_destination) : "Enemy Filter" : "" : "Filter by which to filter potential enemies" + + ignoreunseenenemies(choices) : "Ignore unseen enemies" : 0 : "Prefer visible enemies, regardless of distance or relationship priority" = + [ + 0 : "No" + 1 : "Yes" + ] + + physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this character is hit by a physics object. With a value of 0 the NPC will take no damage from physics." + + // Outputs + output OnDamaged(void) : "Fired when this NPC takes damage." + output OnDeath(void) : "Fired when this NPC is killed." + output OnHalfHealth(void) : "Fired when this NPC reaches half of its maximum health." + output OnHearWorld(void) : "Fired when this NPC hears a sound (other than combat or the player)." + output OnHearPlayer(void) : "Fired when this NPC hears the player." + output OnHearCombat(void) : "Fired when this NPC hears combat sounds." + output OnFoundEnemy(string) : "Fired when this NPC establishes line of sight to its enemy (outputs entity)." + output OnLostEnemyLOS(void) : "Fired when this NPC loses line of sight to its enemy." + output OnLostEnemy(void) : "Fired when this NPC loses its enemy. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy." + output OnFoundPlayer(string) : "Fired when this NPC establishes line of sight to its enemy, and that enemy is a player (outputs player entity)." + output OnLostPlayerLOS(void) : "Fired when this NPC loses line of sight to its enemy, and that enemy is a player." + output OnLostPlayer(void) : "Fired when this NPC loses its enemy, and that enemy was a player. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy." + output OnDamagedByPlayer(void) : "Fired when this NPC is hurt by a player." + output OnDamagedByPlayerSquad(void) : "Fired when this NPC is hurt by a player OR by one of the player's squadmates." + output OnDenyCommanderUse(void) : "Fired when this NPC has refused to join the player's squad." + output OnSleep(void) : "Fired when this NPC enters a sleep state." + output OnWake(void) : "Fired when this NPC comes out of a sleep state." + output OnForcedInteractionStarted(void) : "Fired when the NPC starts a forced interaction." + output OnForcedInteractionAborted(void) : "Fired when the NPC aborts a forced interaction for some reason (target NPC died, couldn't be pathed to, etc)" + output OnForcedInteractionFinished(void) : "NPCs in actbusies can no longer perform dynamic interactions." + + // Inputs + input SetRelationship(string) : "Changes this entity's relationship with another entity or class. Format: " + input SetEnemyFilter(string) : "Changes this NPC's enemy filter to the named filter." + input SetHealth(integer) : "Set this NPC's health." + input SetBodyGroup(integer) : "HACK: Sets this NPC's body group (from 0 - n). You'd better know what you are doing!" + input physdamagescale(float) : "Sets the value that scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility." + input Ignite(void) : "Ignite, burst into flames" + input IgniteLifetime(float) : "Ignite, with a parameter lifetime." + input IgniteNumHitboxFires(integer) : "Ignite, with a parameter number of hitbox fires." + input IgniteHitboxFireScale(float) : "Ignite, with a parameter hitbox fire scale." + input Break(void) : "Break, smash into pieces" + input StartScripting(void) : "Enter scripting state. In this state, NPCs ignore a variety of stimulus that would make them break out of their scripts: They ignore danger sounds, ignore +USE, don't idle speak or respond to other NPC's idle speech, and so on." + input StopScripting(void) : "Exit scripting state." + input SetSquad(string) : "Set the name of this NPC's squad. It will be removed from any existing squad automatically. Leaving the parameter blank will remove the NPC from any existing squad." + input Wake(void) : "Wakes up the NPC if it is sleeping." + input ForgetEntity(string) : "Clears out the NPC's knowledge of a named entity." + input GagEnable(void) : "Turn on the NPC Gag flag. NPC won't speak outside of choreographed scenes." + input GagDisable(void) : "Turn off the NPC Gag flag." + input IgnoreDangerSounds(float) : "Ignore danger sounds for the specified number of seconds." + input HolsterWeapon(void) : "Force the NPC to holster their weapon. Ignored if the NPC is scripting, if the NPC's weapon is already holstered, or if the NPC doesn't use weapons." + input HolsterAndDestroyWeapon(void) : "Identical to HolsterWeapon, except the weapon is destroyed once it has been holstered and concealed." + input UnholsterWeapon(void) : "Force the NPC to draw their weapon. Ignored if the NPC is scripting, if the NPC's weapon is already drawn, or if the NPC doesn't use weapons." + input ForceInteractionWithNPC(string) : "Force the NPC to use a dynamic interaction with another NPC. Parameter format: " + input UpdateEnemyMemory(string) : "Update (or Create) this NPC's memory of an enemy and its location" + input BecomeRagdoll(void) : "This NPC will instantly become a ragdoll with ZERO force (just go limp). OnDeath, OnHalfHealth, etc. Outputs will **NOT** BE FIRED." +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/info_target.vmt") = info_npc_spawn_destination : + "NPC Spawn Destination. (Consult npc_template_maker help for more info)" +[ + ReuseDelay(float) : "Reuse Delay" : 1 : "After an NPC is spawned at this destination, the delay before this destination is eligible for selection again." + RenameNPC(string) : "New NPC Name" : "" : "If an NPC spawns at this destination, change that NPC's targetname to this." + + // Outputs + output OnSpawnNPC(void) : "Fired when an NPC spawns at this destination." +] + +@BaseClass base(Targetname, Angles, EnableDisable) iconsprite("editor/npc_maker.vmt") color(0 0 255) = BaseNPCMaker +[ + StartDisabled(choices) : "Start Disabled" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + // Only in npc__maker, npc_template_maker uses flag from template NPC + 16 : "Fade Corpse" : 0 + 32 : "Infinite Children" : 0 + 64 : "Do Not Drop" : 0 + 128 : "Don't Spawn While Visible" : 0 + ] + + MaxNPCCount(integer) : "Num. of NPCs" : 1 : "Number of NPCs that will spawn before this spawner is exhausted." + SpawnFrequency(string) : "Frequency" : "5" : "How often (in seconds) a new NPC will be spawned. If set to -1, a new NPC will be made when the last NPC dies." + MaxLiveChildren(integer) : "Max Live NPCs" : 5 : "Maximum number of live children allowed at any one time (new ones will not be made until one dies). If set to -1, no limit is applied." + + // Outputs + output OnSpawnNPC(string) : "Fired when an NPC is spawned. The activator is the NPC, and the string is the name of the NPC." + output OnAllSpawned(void) : "Fired when the spawned is exhausted (all children have been spawned)." + output OnAllSpawnedDead(void) : "Fired when the spawner is exhausted (all children have been spawned) and all spawned children have died." + output OnAllLiveChildrenDead(void) : "Fired when all spawned children have died. This does not mean the spawned is exhausted, so a new child may be spawned any time after this (unless the maker is disabled)." + + // Inputs + input Spawn(void) : "Spawns an NPC." + input Toggle(void) : "Toggles the spawner enabled/disabled state." + input Enable(void) : "Enables the spawner." + input Disable(void) : "Disables the spawner." + input AddMaxChildren(integer) : "Adds to the number of NPCs that can spawn before the spawner is exhausted. If an exhausted spawner is given some children to spawn, it still wont begin spawning until it is re-enabled with the Enable input." + input SetMaxChildren(integer) : "Sets the number of NPCs that can spawn before the spawner is exhausted. If an exhausted spawner is given some children to spawn, it still won't begin spawning until it is re-enabled with the Enable input." + input SetMaxLiveChildren(integer) : "Sets the maximum number of NPCs that can be alive at any one time from this spawner." + input SetSpawnFrequency(float) : "Sets how often (in seconds) a new NPC will be spawned." +] + +@PointClass base(BaseNPCMaker) iconsprite("editor/npc_maker.vmt") = npc_template_maker : + "An entity that creates NPCs. The NPCs it creates are clones of a template NPC. NPCs are spawned around this maker's origin, or at specified destination points." +[ + spawnflags(Flags) = + [ + 256 : "Always use radius spawn" : 0 + 512 : "Don't preload template models" : 0 + ] + + TemplateName(target_destination) : "Name of template NPC" : "" : "Template NPC that this maker should be creating clones of." + + Radius(float) : "Radius" : 256 : "Radius around this maker within which NPCs are to be placed. Spawned NPCs will try and find empty space within this radius to spawn." + + DestinationGroup(target_destination) : "Name of Destination Group" : : "If you'd like spawned NPCs to be created at an info_npc_spawn_destination entity, enter the name of that entity here. If you have more than one destination entity by that name, the Destination Criteria will be used to select one from the group." + CriterionVisibility(Choices) : "Dest. Criterion: Visible to player?" : 2 : "Should the NPC try to spawn at a destination that the player can see? Only applicable if a Destination Group is being used." = + [ + 0 : "Yes" + 1 : "No" + 2 : "Don't Care" + ] + CriterionDistance(Choices) : "Dest. Criterion: Distance to player?" : 2 : "Should the NPC try to spawn nearest to or farthest from the player's current location? Only applicable if a Destination Group is being used." = + [ + 0 : "Nearest" + 1 : "Farthest" + 2 : "Don't Care" + ] + + MinSpawnDistance(integer) : "Minimum spawn distance from player" : 0 : "The spawn destination node distance to the player will have to be further or equal than this value." + + //Inputs + input SpawnNPCInRadius(void) : "Spawn an NPC somewhere within the maker's radius." + input SpawnNPCInLine(void) : "Spawn an NPC somewhere within a line behind the maker." + input SpawnMultiple(integer) : "Spawn multiple NPCs (uses destination group, else radius)." + input ChangeDestinationGroup(string) : "Switch to a different set of Destination entities." + input SetMinimumSpawnDistance(integer) : "Set the minimum spawn distance from player to destination node." +] + +@BaseClass base( BaseNPC ) = BaseHelicopter +[ + InitialSpeed(string) : "Initial Speed" : "0" : "Sets the helicopter's desired speed that it should try to reach as soon as it's spawned." + target(target_destination) : "Target path_track" : : "(Optional) The name of a path_track entity that this NPC will fly to after spawning." + + // Inputs + input MoveTopSpeed(void) : "The helicopter will immediately move at top speed toward its current goal, or in its current orientation if it's on top of its goal." + input MoveSpecifiedSpeed(float): "The helicopter will immediately move at the specified speed (you provide this as parameter override in units per second) towards its current goal." + input ChangePathCorner(target_destination) : "Tell the helicopter to move to a path corner on a new path." + input SelfDestruct(void) : "Self Destruct." + input Activate(void) : "Activate. Use to wake up a helicopter that spawned with the 'Await Input' spawnflag on." + input SetTrack(target_destination) : "Set a track for the helicopter to adhere to. The helicopter will do nothing if he's on the same path, and will move to the closest point on the specified track if he's on a different path." + input FlyToSpecificTrackViaPath(target_destination) : "The helicopter will first fly to the closest point on the path if he's on a different path. Then he'll fly along the path to the specified track point." + input StartPatrol(void) : "Start patrolling back and forth along the current track." + input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which he's currently flying toward." + input ChooseFarthestPathPoint(void) : "When tracking an enemy, choose the point on the path furthest from the enemy, but still in firing range." + input ChooseNearestPathPoint(void) : "When tracking an enemy, choose the point on the path nearest from the enemy." + input StartBreakableMovement(void) : "The helicopter is now allowed to disobey direct commands to go to particular points if he senses an enemy. He will move to the closest point (or farthest point, if ChooseFarthestPathPoint is used), on the path if he senses an enemy." + input StopBreakableMovement(void) : "The helicopter can not disobey direct commands. He will continue to fly along his patrol path or to his specified target even if he senses an enemy." + + spawnflags(Flags) = + [ + // AWAIT INPUT will make the helicopter spawn disabled, awaiting + // the "Activate" input to start acting. + 32 : "No Rotorwash" : 0 + 64 : "Await Input" : 0 + ] +] + +@BaseClass color(0 255 0) = PlayerClass [] + +@BaseClass color(180 10 180) = Light +[ + _light(color255) : "Brightness" : "255 255 255 200" + _lightHDR(color255) : "BrightnessHDR" : "-1 -1 -1 1" + _lightscaleHDR(float) : "BrightnessScaleHDR" : "1" : "Amount to scale the light by when compiling for HDR." + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + pattern(string) : "Custom Appearance" : "" : "Set a custom pattern of light brightness for this light. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light." + _constant_attn(string) : "Constant" : "0" + _linear_attn(string) : "Linear" : "0" + _quadratic_attn(string) : "Quadratic" : "1" + _fifty_percent_distance(string) : "50 percent falloff distance" : "0": "Distance at which brightness should fall off to 50%. If set, overrides linear constant and quadratic paramaters." + _zero_percent_distance(string) : "0 percent falloff distance" : "0": "Distance at which brightness should fall off to negligible (1/256)%. Must set _fifty_percent_distance to use." + _hardfalloff(integer) : "hard falloff" : 0 : "If set, causes lights to fall to exactly zero beyond the zero percent distance. May cause unrealistic lightijng if not used carefully." + // Inputs + input TurnOn(void) : "Turn the light on." + input TurnOff(void) : "The the light off." + input Toggle(void) : "Toggle the light's current state." + input SetPattern(string) : "Set a custom pattern of light brightness for this light. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light." + input FadeToPattern(string) : "Fades from first value in old pattern, to first value in the new given pattern. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light." +] + +@BaseClass = Node +[ + nodeid(integer) readonly : "Node ID" +] + +@BaseClass base(Node) = HintNode +[ + spawnflags(flags) = + [ + 65536: "Allow jump up" : 0 + ] + + hinttype(choices) : "Hint" : 0 = + [ + 0 : "None" + + 2: "World: Window" + 12: "World: Act Busy Hint" + 13: "World: Visually Interesting" + 14: "World: Visually Interesting (Don't aim at)" + 15: "World: Inhibit Combine Mines within 15 feet" + 16: "World: Visually Interesting (Stealth mode)" + + 100: "Crouch Cover Medium" + 101: "Crouch Cover Low" + 102: "Waste Scanner Spawn" + 103: "Entrance / Exit Pinch" +// 104: "Guard Point" + 105: "Enemy Disadvantage Point" + 106: "Health Kit" + + 400: "Antlion: Burrow Point" + 401: "Antlion: Thumper Flee Point" + + 450: "Headcrab: Burrow Point" + 451: "Headcrab: Exit Pod Point" + + 500: "Roller: Patrol Point" + 501: "Roller: Cleanup Spot" + + 700: "Crow: Fly to point" + 701: "Crow: Perch point" + + 900: "Follower: Wait point" + 901: "Override jump permission" + 902: "Player squad transition point" + 903: "NPC exit point" + 904: "Strider node" + + 950: "Player Ally: Push away destination" + 951: "PLayer Ally: Fear withdrawal destination" + + 1000: "HL1 World: Machinery" + 1001: "HL1 World: Blinking Light" + 1002: "HL1 World: Human Blood" + 1003: "HL1 World: Alien Blood" + +// 1100: "CS Hostage: Escape Point" + ] + + hintactivity(string) : "Hint Activity" : "" : "Activity associated with this hint node. Various parts of the NPC AI play this activity at times. i.e. Actbusy nodes will play this activity when an NPC acts busy on the node." + + nodeFOV(choices) : "Node FOV" : 180 : "Imagine this node requires that an NPC be in the node's field of view in order to use this hint." = + [ + 45 : "45 Degrees" + 90 : "90 Degrees" + 180 : "180 Degrees" + 360 : "360 Degrees" + ] + + // Does not inherit from EnableDisable, as node itself will + // use that. This is enabling/disabling of the hint only + StartHintDisabled(choices) : "Start Hint Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + Group(string) : "Hint Group" : "" : "If specified, gives the hint a specific group name. Useful for hint nodes that need to be logically grouped together. NPCs may also refuse to use hint nodes that don't match their hint group." + + TargetNode(node_dest) : "Target node" : -1 : "The node ID of an associated target node, if any." + + IgnoreFacing(choices) : "Ignore Facing" : 2 : "Don't pay attention to the facing of the node. May not apply to a given hint type." = + [ + 0 : "No" + 1 : "Yes" + 2 : "Default" + ] + + MinimumState(choices) : "Minimum State" : 1 : "Require an NPC have a minimum state to use the hint." = + [ + 1 : "Idle" + 2 : "Alert" + 3 : "Combat" + ] + + MaximumState(choices) : "Maximum State" : 3 : "Require an NPC have a maximum state to use the hint." = + [ + 1 : "Idle" + 2 : "Alert" + 3 : "Combat" + ] + + // Inputs + input EnableHint(void) : "Enable hint." + input DisableHint(void) : "Disable hint." +] + +@BaseClass base(Targetname, Parentname, Origin, EnableDisable, Global) = TriggerOnce +[ + spawnflags(flags) = + [ + 1: "Clients" : 1 + 2: "NPCs" : 0 + 4: "Pushables": 0 + 8: "Physics Objects" : 0 + 16: "Only player ally NPCs" : 0 + 32: "Only clients in vehicles" : 0 + 64: "Everything (not including physics debris)" : 0 + 512: "Only clients *not* in vehicles" : 0 + 1024: "Physics debris" : 0 + 2048: "Only NPCs in vehicles (respects player ally flag)" : 0 + 4096: "Disallow Bots" : 0 + ] + + filtername(filterclass) : "Filter Name" : : "Filter to use to see if activator triggers me. See filter_activator_name for more explanation." + + // Inputs + input Toggle(void) : "Toggles this trigger between enabled and disabled states." + + // Outputs + output OnStartTouch(void) : "Fired when an entity starts touching this trigger. The touching entity must pass this trigger's filters to cause this output to fire." +] + +@BaseClass base(Targetname, Parentname, Origin, EnableDisable, TriggerOnce) = Trigger +[ + output OnStartTouchAll(void) : "Fired when an entity starts touching this trigger, and no other entities are touching it. Only entities that passed this trigger's filters are considered." + output OnEndTouch(void) : "Fired when an entity stops touching this trigger. Only entities that passed this trigger's filters will cause this output to fire." + output OnEndTouchAll(void) : "Fires when an entity stops touching this trigger, and no other entities are touching it. Only entities that passed this trigger's filters are considered." +] + +@BaseClass = worldbase +[ + message(string) : "Map Description / Title" + skyname(string) : "SkyBox Texture Name" : "sky_day01_01" + chaptertitle(string) : "Chapter Title Message" : "" : "Chapter Title that appears onscreen when this level starts." + startdark(choices) : "Level Fade In" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + gametitle(choices) : "Display Game Title" : 0 : "Game Title that appears onscreen when this level starts." = + [ + 0 : "No" + 1 : "Yes" + ] + newunit(choices) : "New Level Unit" : 0 : "Used to clear out savegame data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = + [ + 0 : "No, keep current" + 1 : "Yes, clear previous levels" + ] + maxoccludeearea(float) : "Max occludee area" : "0" : "[Used on PC] Prevents occlusion testing for entities that take up more than X% of the screen." + minoccluderarea(float) : "Min occluder area" : "0" : "[Used on PC] Prevents occluders from being used if they take up less than X% of the screen." + maxoccludeearea_x360(float) : "Max occludee area (Xbox)" : "0" : "[Used on 360] Prevents occlusion testing for entities that take up more than X% of the screen." + minoccluderarea_x360(float) : "Min occluder area (Xbox)" : "0" : "[Used on 360] Prevents occluders from being used if they take up less than X% of the screen." + maxpropscreenwidth(float) : "Start Fade Pixels" : -1 : "Number of pixels wide at which all props in the level start to fade (<0 = use fademaxdist). This number is ignored if the prop has a specific fade distance specified." + minpropscreenwidth(float) : "End Fade Pixels" : 0 : "Minimum number of pixels wide at which the prop is visible (0 = don't fade out). This number is ignored if the prop has a specific fade distance specified." + detailvbsp(string) : "Detail.vbsp file" : "detail.vbsp" : "Detail.vbsp file to use for emitting detail props (found in directory /modname)" + detailmaterial(string) : "Detail material file" : "detail/detailsprites" : "Material for detail sprites to use for drawing detail props" + coldworld(choices) : "World is cold" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +//------------------------------------------------------------------------- +// +// World +// +//------------------------------------------------------------------------- + +@SolidClass base(Targetname, worldbase, ResponseContext) = worldspawn : + "This is the world entity. Each map can only contain one, and it's automatically created for you." +[ +] + +@PointClass base(Targetname) iconsprite("editor/ambient_generic.vmt") sphere() = ambient_generic : "Universal ambient sound. Use it to play and control a single sound." +[ + message(sound) : "Sound Name" : "" : "Name of the GameSound entry for the sound to play. Also supports direct .wav filenames." + health(integer) : "Volume" : 10 : "Sound volume, expressed as a range from 0 to 10, where 10 is the loudest." + preset(choices) :"Dynamic Presets" : 0 = // NEEDHELP + [ + 0: "None" + 1: "Huge Machine" + 2: "Big Machine" + 3: "Machine" + 4: "Slow Fade in" + 5: "Fade in" + 6: "Quick Fade in" + 7: "Slow Pulse" + 8: "Pulse" + 9: "Quick pulse" + 10: "Slow Oscillator" + 11: "Oscillator" + 12: "Quick Oscillator" + 13: "Grunge pitch" + 14: "Very low pitch" + 15: "Low pitch" + 16: "High pitch" + 17: "Very high pitch" + 18: "Screaming pitch" + 19: "Oscillate spinup/down" + 20: "Pulse spinup/down" + 21: "Random pitch" + 22: "Random pitch fast" + 23: "Incremental Spinup" + 24: "Alien" + 25: "Bizzare" + 26: "Planet X" + 27: "Haunted" + ] + volstart(integer) : "Start Volume" : 0 // NEEDHELP + fadeinsecs(integer) : "Fade in time in seconds (0-100)" : 0 // NEEDHELP + fadeoutsecs(integer) : "Fade out time in seconds (0-100)" : 0 // NEEDHELP + pitch(integer) : "Pitch" : 100 : "Sound pitch, expressed as a range from 1 to 255, where 100 is the sound's default pitch." + pitchstart(integer) : "Start Pitch" : 100 // NEEDHELP + spinup(integer) : "Spin up time (0-100)" : 0 // NEEDHELP + spindown(integer) : "Spin down time (0-100)" : 0 // NEEDHELP + lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 // NEEDHELP + lforate(integer) : "LFO rate (0-1000)" : 0 // NEEDHELP + lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 // NEEDHELP + lfomodvol(integer) : "LFO mod vol (0-100)" : 0 // NEEDHELP + cspinup(integer) : "Incremental Spinup Count" : 0 // NEEDHELP + radius(string) : "Max Audible Distance" : "1250" : "Maximum distance at which this sound is audible." + spawnflags(flags) = + [ + 1: "Play everywhere" : 0 + 16:"Start Silent": 1 + 32:"Is NOT Looped": 1 + ] + SourceEntityName(target_destination) : "SourceEntityName" : : "If an entity is specified, sound will come from this named entity instead of the location of ambient_generic." + + // Inputs + input Pitch(integer) : "Sets the sound pitch, expressed as a range from 1 to 255, where 100 is the sound's default pitch." + input PlaySound(void) : "Starts the sound." + input StopSound(void) : "Stops the sound if it is playing." + input ToggleSound(void) : "Toggles the sound between playing and stopping." + input Volume(integer) : "Sets the sound volume, expressed as a range from 0 to 10, where 10 is the loudest." + input FadeIn(integer) : "Fades the sound up to full volume over a specified number of seconds, with a range from 0 to 100 seconds." + input FadeOut(integer) : "Fades the sound to silence over a specified number of seconds, with a range from 0 to 100 seconds." +] + +@SolidClass base(Targetname) sphere(DisappearDist) = func_lod : + "Brush-built model that fades out over a specified distance. Useful for creating world detail that doesn't need to be drawn far away, for performance reasons." +[ + DisappearDist(integer) : "Disappear Distance" : 2000 : "Distance at which these brushes should fade out." + Solid(choices) : "Solid" : 0 : "Set whether or not these brushes should collide with other entities." = + [ + 0: "Solid" + 1: "Nonsolid" + ] +] + +@PointClass base(Targetname) = env_zoom : + "An entity that can be used to control the player's FOV. Useful for scenes where the player's view is being controlled, or player-usable binoculars/telescopes, etc." +[ + Rate(float) : "Seconds to reach target" : "1.0" : "Amount of time it should take to reach the specified FOV." + FOV(integer) : "Target FOV" : 75 : "FOV that this entity should set the player's FOV to when active." + + // Inputs + input Zoom(void) : "Start controlling the player's FOV." + input UnZoom(void) : "Stop controlling the player's FOV." + + spawnflags(flags) = + [ + 1: "Allow Suit Zoom" : 0 + ] +] + +@PointClass base(Targetname) = env_screenoverlay: + "An entity that can display and control a set of screen overlays, to be displayed over the player's view. Useful for view effects like drunkenness, or teleporter afterimages, etc." +[ + OverlayName1(string) : "Overlay Name 1" : "" : "Name of the first overlay material to display." + OverlayTime1(float) : "Overlay Duration 1" : "1.0" : "Amount of time that the first overlay should be displayed for, after which it will begin showing the second overlay." + OverlayName2(string) : "Overlay Name 2" : "" : "Name of the second overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime2(float) : "Overlay Duration 2" : "1.0" : "Amount of time that the second overlay should be displayed for, after which it will begin showing the third overlay." + OverlayName3(string) : "Overlay Name 3" : "" : "Name of the third overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime3(float) : "Overlay Duration 3" : "1.0" : "Amount of time that the third overlay should be displayed for, after which it will begin showing the fourth overlay." + OverlayName4(string) : "Overlay Name 4" : "" : "Name of the fourth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime4(float) : "Overlay Duration 4" : "1.0" : "Amount of time that the fourth overlay should be displayed for, after which it will begin showing the fifth overlay." + OverlayName5(string) : "Overlay Name 5" : "" : "Name of the fifth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime5(float) : "Overlay Duration 5" : "1.0" : "Amount of time that the fifth overlay should be displayed for, after which it will begin showing the sixth overlay." + OverlayName6(string) : "Overlay Name 6" : "" : "Name of the sixth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime6(float) : "Overlay Duration 6" : "1.0" : "Amount of time that the sixth overlay should be displayed for, after which it will begin showing the seventh overlay." + OverlayName7(string) : "Overlay Name 7" : "" : "Name of the seventh overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime7(float) : "Overlay Duration 7" : "1.0" : "Amount of time that the seventh overlay should be displayed for, after which it will begin showing the eighth overlay." + OverlayName8(string) : "Overlay Name 8" : "" : "Name of the eighth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime8(float) : "Overlay Duration 8" : "1.0" : "Amount of time that the eighth overlay should be displayed for, after which it will begin showing the ninth overlay." + OverlayName9(string) : "Overlay Name 9" : "" : "Name of the ninth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime9(float) : "Overlay Duration 9" : "1.0" : "Amount of time that the ninth overlay should be displayed for, after which it will begin showing the tenth overlay." + OverlayName10(string) : "Overlay Name 10" : "" : "Name of the tenth overlay material to display. If left blank, overlay displaying will finish, and this entity will consider itself done." + OverlayTime10(float) : "Overlay Duration 10" : "1.0" : "Amount of time that the tenth overlay should be displayed for, after which this entity will stop displaying overlays." + + // Inputs + input StartOverlays(void) : "Start displaying the first overlay." + input StopOverlays(void) : "Stop displaying any overlays." + input SwitchOverlay(float) : "Switch to displaying a specific overlay. Pass in the desired overlay number in the parameter." +] + +@PointClass base(Targetname) = env_screeneffect : + "Allows screenspace effects to be played on the player's view." +[ + type(choices) : "Effect Type" : 0 : "Which effect to use." = + [ + 0 : "Advisor Stun" + 1 : "Intro Blur" + 2 : "Groggy Vision" + ] + + // Inputs + input StartEffect(float) : "Start the effect with the duration in seconds as the passed parameter." + input StopEffect(float) : "Stop the effect." +] + +@PointClass base(Targetname) = env_texturetoggle : + "An entity that allows you to change the textures on other brush-built entities." +[ + target(target_destination) : "Target Brush(es)." + + // Inputs + input IncrementTextureIndex(void) : "Increments target brush's current texture frame by one." + input SetTextureIndex(integer) : "Sets target brush's texture frame to the specified index." +] + +@PointClass base(Targetname, Angles) = env_splash : + "An entity that creates a splash effect at its origin. If the 'find water surface' spawnflag is set, it will instead trace down below itself to find the water surface on which to create splashes." +[ + scale(float) : "Scale of the splash" : "8.0" + + // Inputs + input Splash(void) : "Create a splash effect." + + spawnflags(flags) = + [ + 1: "Automatically find water surface (place entity above water)" : 0 + 2: "Diminish with depth (diminished completely in 10 feet of water)" : 1 + ] +] + +@PointClass base(Parentname) color(180 10 180) = env_particlelight : + "An entity that can be used to light the smoke particles emitted by env_smokestack entities. Does not light any other particle types." +[ + Color(color255) : "Color" : "255 0 0" : "Color emitted by this light." + Intensity(integer) : "Intensity" : 5000 + + directional(choices) : "Directional" : 0 : "If this is specified, then this light will use the bump map on the particles. Each particle system can have one ambient and one directional light." = + [ + 0 : "No" + 1 : "Yes" + ] + + PSName(string) : "Particle System Entity" : "" : "Set this to the name of the env_smokestack that you want this light to affect." +] + +@PointClass base(Targetname, Angles) color(255 0 0) = env_sun : + "An entity to control & draw a sun effect in the sky." +[ + target(target_destination) : "Viewer entity" : : "Name of an entity used to determine where the sun is in the skybox. The sun should be lined up on a line from this entity to the env_sun entity." + + use_angles(choices) : "UseAngles" : 0 : "The old way to orient env_sun is to point it at a target. The new way is to specify the angles. If you use the new way, set this property to YES." = + [ + 0 : "No" + 1 : "Yes" + ] + + pitch(integer) : "Pitch" : 0 + + rendercolor(color255) : "Sun Color (R G B)" : "100 80 80" + overlaycolor(color255) : "Overlay Color (R G B)" : "0 0 0" : "A value of 0 0 0 will act the old way." + + size(integer) : "Size" : 16 + overlaysize(integer) : "Overlay Size" : -1 : "A value of -1 means the overlay will act the old way." + + material(sprite) : "Material Name" : "sprites/light_glow02_add_noz" : "Material of the inner glow." + overlaymaterial(sprite) : "Overlay Material Name" : "sprites/light_glow02_add_noz" : "Material of the overlay glow." + + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input TurnOn(void) : "Enable sun rendering." + input TurnOff(void) : "Disable sun rendering." + input SetColor(color255) : "Change the sun's color. Format: " +] + +@PointClass base(Targetname) = game_ragdoll_manager : + "An entity to control the number of ragdolls in the world, for performance reasons." +[ + MaxRagdollCount(integer) : "Max Ragdoll Count" : -1 : "Sets the max number of ragdolls that can be in the world at a time (if they are flagged to fade). Set to -1 if you want to use the default value (g_ragdoll_maxcount)." + MaxRagdollCountDX8(integer) : "Max Ragdoll Count DX8" : -1 : "Sets the max number of ragdolls that can be in the world at a time on DX8 hardware (if they are flagged to fade). Set to -1 if you want to use the 'Max Ragdoll Count' value." + + SaveImportant(choices) : "Save Important Ragdolls" : 0 : "Should the ragdoll manager make sure ally ragdolls aren't deleted?" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input SetMaxRagdollCount(integer) : "Set the Max Ragdoll Count." + input SetMaxRagdollCountDX8(integer) : "Set the Max Ragdoll Count on DX8 hardware." +] + +@PointClass base(Targetname) = game_gib_manager : "An entity to control the number of gibs in the world, for performance reasons." +[ + maxpieces(integer) : "Max Gib Count" : -1 : "Sets the max number of gib that can be spawned at a time. (-1=no limit)" + maxpiecesdx8(integer) : "Max Gib Count On DX8" : -1 : "Sets the max number of gib that can be spawned at a time under DX8. (-1=use Max Gib Count setting)" + allownewgibs(choices) : "Allow New Gibs To Spawn" : 0 : "If true, when the max gib count is reached, oldest gibs are removed as new gibs spawn. If false, new gibs will not be spawned once the gib limit is reached." = + [ + 0 : "No" + 1 : "Yes" + ] + + input SetMaxPieces(integer) : "Set the max gib count." + input SetMaxPiecesDX8(integer) : "Set the max gib count under DX8." +] + +@PointClass base(Parentname, Targetname, Angles) color(255 128 0) studio("models/editor/axis_helper_thick.mdl") = env_lightglow : + "An entity that puts an additive glow in the world, mostly used over light sources." +[ + rendercolor(color255) : "Color (R G B)" : "255 255 255" + VerticalGlowSize(integer) : "Vertical Size" : 30 + HorizontalGlowSize(integer) : "Horizontal Size" : 30 + MinDist(integer) : "Minimum Distance" : 500 : "The distance at which this effect will be fully translucent." + MaxDist(integer) : "Maximum Distance" : 2000 : "The distance at which this effect will be at full intensity." + OuterMaxDist(integer) : "Outer Maximum Distance" : 0 : "If larger than the maximum distance, this is the length at which the glow will fade completely out, between the span of the maximum distance and this length." + GlowProxySize(float) : "Glow Proxy Geometry Size" : "2.0" : "Size of the glow to be rendered for visibility testing. Must be larger than the distance from the sprite center to empty space. So if this glow is inside geometry (like a light bulb), set this value to be bigger than the bulb's radius. Any time a sphere of this radius would be visible (poking through any nearby geometry), the glow will be rendered." + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input Color(color255) : "Change the render color of the glow. Format: " + + spawnflags(flags) = + [ + 1: "Visible only from front" : 0 + ] +] + +@PointClass base(Parentname, Angles) color(255 255 255) = env_smokestack : + "An entity that spits out a constant stream of smoke. See particlezoo.vmf for sample usage. You can place up to two env_particlelight entities near the smoke stack to add ambient light to its particles." +[ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + + InitialState(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + + BaseSpread(integer) : "Spread at the base" : 20 : "Amount of random spread in the origins of the smoke particles when they're spawned." + SpreadSpeed(integer) : "Spread Speed" : 15 : "Amount of random spread in the velocity of the smoke particles after they're spawned." + Speed(integer) : "Speed" : 30 : "The speed at which the smoke particles move after they're spawned." + StartSize(integer) : "Particle start size" : 20 : "Size of the smoke particles when they're first emitted." + EndSize(integer) : "Particle end size" : 30 : "Size of the smoke particles at the point they fade out completely." + Rate(integer) : "Emission rate" : 20 : "Rate at which to emit smoke particles (i.e. particles to emit per second)." + JetLength(integer) : "Length of smoke trail" : 180 : "Length of the smokestack. Lifetime of the smoke particles is derived from this & particle speed." + WindAngle(integer) : "Wind X/Y Angle" : 0 : "This specifies the wind direction. It is an angle in the XY plane. WindSpeed specifies the strength of the wind." + WindSpeed(integer) : "Wind Speed" : 0 : "The strength of the wind." + SmokeMaterial(string) : "Particle material" : "particle/SmokeStack.vmt" : "Material of the smoke particles emitted by this stack." + twist(integer) : "Twist" : 0 : "The amount, in degrees per second, that the smoke particles twist around the origin." + roll(float) : "Roll Speed": 0 : "Amount of roll in degrees per second." + + rendercolor(color255) : "Base Color (R G B)" : "255 255 255" + + renderamt(integer) : "Translucency" : 255 + + // Inputs + input TurnOn(void) : "Turn on the smokestack." + input TurnOff(void) : "Turn off the smokestack." + input Toggle(void) : "Toggles the smokestack between on and off state." + input JetLength(integer): "Set the length of the smoke trail." + input Rate(integer) : "Set the rate at which to emit smoke particles (particles per second)." + input Speed(integer) : "Set the speed at which the smoke particles move after they're spawned." + input SpreadSpeed(integer) : "Set the amount of random spread in the velocity of the smoke particles after they're spawned." +] + +@PointClass base(Targetname) iconsprite("editor/env_fade") = env_fade : + "An entity that controls screen fades." +[ + spawnflags(flags) = + [ + 1: "Fade From" : 0 + 2: "Modulate" : 0 + 8: "Stay Out" : 0 + ] + duration(string) : "Duration (seconds)" : "2" : "The time that it will take to fade the screen in or out." + holdtime(string) : "Hold Fade (seconds)" : "0" : "The time to hold the faded in/out state." + renderamt(integer) : "Fade Alpha" : 255 : "Alpha of the fade, where 0 = fully transparent and 255 = fully opaque." + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + + // Inputs + input Fade(void) : "Start the screen fade." + + // Outputs + output OnBeginFade(void) : "Fired when the fade has begun." +] + +@PointClass base(Targetname) = env_player_surface_trigger : + "An entity that monitors the material of the surface the player is standing on, and fires outputs whenever it changes to/from a specific material." +[ + gamematerial(choices) : "Game Material to Watch" : "0" : "The material to watch. When the player stands on/off this material, this entity's outputs will be fired." = + [ + 0 : "None (player's in the air)" + 67 : "Concrete" + 77 : "Metal" + 68 : "Dirt" + 86 : "Vent" + 71 : "Grate" + 84 : "Tile" + 83 : "Slosh" + 87 : "Wood" + 80 : "Computer" + 89 : "Glass" + 70 : "Flesh" + 73 : "Clip" + 79 : "Foliage" + 78 : "Sand" + ] + + // Inputs + input Enable(void) : "Start watching the player's surface." + input Disable(void) : "Stop watching the player's surface." + + // Outputs + output OnSurfaceChangedToTarget(void) : "Fired when the player moves onto the specified game material." + output OnSurfaceChangedFromTarget(void) : "Fired when the player moves off the specified game material." +] + +@PointClass base(Targetname) iconsprite("editor/env_tonemap_controller.vmt") = env_tonemap_controller : + "An entity that controls the HDR tonemapping for the player. Think of it as a method of controlling the exposure of the player's eyes." +[ + // Inputs + input SetTonemapScale(void) : "Set the player's tonemap scale. It should be a value between 0 and 2, where 0 is the eyes fully closed, 1 is use the unchanged autoexposure (default), and 2 is the eye fully wide open." + input BlendTonemapScale(string) : "Blend from the player's current tonemap scale to a new one. The parameter syntax is as follows: . For example: '0.5 10' would blend from the current tonemap scale to 0.5 over a period of 10 seconds. Tonemap scale is a value between 0 and 2, where 0 is the eyes fully closed, 1 is use the unchanged autoexposure (default), and 2 is the eye fully wide open." + input UseDefaultAutoExposure(void) : "Revert to using the default tonemap auto exposure." + input SetAutoExposureMin(float) : "Set a custom tonemap auto exposure minimum." + input SetAutoExposureMax(float) : "Set a custom tonemap auto exposure maximum." + input SetBloomScale(float) : "Set a custom bloom scale." + input SetTonemapRate(float) : "Set the rate for autoexposure adjustment." +] + +@PointClass base(Targetname, Parentname) sweptplayerhull() = func_useableladder : + "A Half-Life 2 ladder. Handles player auto mount/unmount, as well as +use to get onto the ladder. \n\n" + + "See also 'info_ladder_dismount', used to specify ladder auto-dismount points.\n\n" + + "Note: This entity is non-functional in Counter-Strike: Source. Use func_ladder instead." +[ + spawnflags(flags) = + [ + 1: "Fake Ladder" : 0 + ] + + point0(vector) : "Start" : : "Ladder end point." + point1(vector) : "End" : : "Ladder end point." + + StartDisabled(choices) : "Start Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Enable(void) : "Enable this ladder." + input Disable(void) : "Disable this ladder." + + output OnPlayerGotOnLadder(void) : "Fired whenever a player gets on this ladder." + output OnPlayerGotOffLadder(void) : "Fired whenever a player gets off this ladder." + ladderSurfaceProperties(string) : "Surface properties (optional)" +] + +@PointClass base(Targetname, Parentname, Angles) size( -16 -16 0, 16 16 72 ) color(127 127 127) = func_ladderendpoint : + "An entity used to specify the endpoints of a ladder. This entity is functional, but has been replaced by the " + + "easier-to-use func_useableladder entity. Left in only for backwards-compatibility!\n\n" + + "To be valid, a full sized player hull traced between the start and end points must not be obstructed at level " + + "activation time. The angle determines in which direction the player leaves the ladder if the player presses the " + + "+jump button.\n\n" + + "Note: This entity is non-functional in Counter-Strike: Source. In CS:S, use func_ladder instead." +[ + target(target_destination) : "Other" : : "A ladder goes between any two func_ladderendpoints pointing at each other." + // TODO: Allow individual ladder end points to be enabled, disabled + // TODO: Allow ladder to specify movement speed or a speed scale while on ladder + // TODO: Allow specifying radius within with you must be in order to +use to get on the ladder +] + +@PointClass base(Parentname) size( -16 -16 0, 16 16 4 ) color(255 128 255)= info_ladder_dismount : + "An entity to handle endpoints for multiple ladders that are too close to each other." +[ + target(target_destination) : "LadderName" : : "If multiple ladders are near multiple endpoints, use this to stop them from interfering with each other." +] + +@SolidClass base(Targetname) color(0 128 255) = func_areaportalwindow : + "An entity that can be used to optimize the visibility in a map. If you seal off an area with them, when the viewer moves the specified distance away from them, they will go opaque and the parts inside the area will not be drawn. The 'target' brush model should enclose the func_areaportal window so no parts of it are culled by the window. If you use the optional foreground brush model, then it should enclose the 'target' brush model." +[ + target(target_destination) : "Rendered Window" : : "The name of a brush model to render as the window." + FadeStartDist(integer) : "Fade Start Distance" : 128 : "When the viewer is closer than this distance, the alpha is set to 'TranslucencyLimit'." + FadeDist(integer) : "Fade End Distance" : 512 : "When the viewer is at this distance, the portal becomes solid and closes off." + TranslucencyLimit(string) : "Translucency limit" : "0.2" : "This value limits the translucency of the bmodel and prevents it from becoming invisible when the viewer is right on top of it." + BackgroundBModel(string) : "Foreground bmodel" : "" : "(Optional) brush model that is drawn after the fading brush model. This model should have alpha in its textures so you can see through it." + PortalVersion(integer) readonly : "Portal Version" : 1 : "(Don't change). Differentiates between shipping HL2 maps and maps using new engine features." + + // Inputs + input SetFadeStartDistance(integer) : "Set fade start distance." + input SetFadeEndDistance(integer) : "Set fade end distance." +] + +@SolidClass base(Targetname, RenderFields, Global, Shadow) = func_wall : + "Legacy support. Use func_brush instead." +[ + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@SolidClass base(Targetname, EnableDisable) = func_clip_vphysics : + "A brush entity that's considered solid to vphysics." +[ + filtername(filterclass) : "Filter Name" : : "Filter to use to see if activator collides with me. See filter_activator_name for more explanation. Allow means 'Allow to Block' for this entity." +] + +@SolidClass base(Targetname, Parentname, Origin, RenderFields, Global, Inputfilter, EnableDisable, Shadow) = func_brush : + "An brush built entity with various features." +[ + spawnflags(flags) = + [ + 2: "Ignore player +USE" : 1 + ] + + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + Solidity(choices) : "Solidity" : 0 : "Used to control the solidity/collision of these brushes." = + [ + 0 : "Toggle" + 1 : "Never Solid" + 2 : "Always Solid" + ] + excludednpc(string) : "NPC class excluded from collisions" : "" : "If an NPC classname is specified here, NPCs of that type won't collide with these brushes. In Episodic, you may also specify an individual entity's name." + invert_exclusion(choices) : "Invert NPC class exclusion" : 0 : "If set, then the excluded NPC class will consider this brush solid, and all other NPC classes will consider it non-solid." = + [ + 0 : "No" + 1 : "Yes" + ] + + solidbsp(choices) : "Solid BSP" : 0 : "Set this if this brush is in heirarchy with a moving object of some kind, and the player can stand on this brush." = + [ + 0 : "No" + 1 : "Yes" + ] + vrad_brush_cast_shadows(choices) : "Shadows" : 0 : "Set this if this brush casts lightmap shadows." = + [ + 0 : "No" + 1 : "Yes" + ] + + input Alpha(integer) : "Sets the brush's alpha value." + input SetExcluded( string ) : "Change the NPC class excluded from collisions" + input SetInvert( integer ) : "Set the state of invversion for NPC class exclusion (0 or 1)" +] + +//------------------------------------------------------------------------- +// +// A Vgui screen in 3D +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname, Parentname, Angles) = vgui_screen_base +[ + panelname(string) : "Panel Name" + overlaymaterial(string) : "Overlay Material" : "" : "Name of a material to overlay over the top of the VGUI screen. NOTE: This material must write Z for the VGUI screen to work." + width(integer) : "Panel Width in World" : 32 : "Width of the panel in units." + height(integer) : "Panel Height in World" : 32 : "Height of the panel in units." + + // Inputs + input SetActive(void) : "Make the vgui screen visible." + input SetInactive(void) : "Make the vgui screen invisible." +] + +@PointClass base(vgui_screen_base) size(-4 -4 -4, 4 4 4) = vgui_screen : + "A VGUI screen. Useful for in-world monitors." +[ +] + +@PointClass base(Targetname, Angles, Parentname) studio("models/editor/axis_helper_thick.mdl") = vgui_slideshow_display : "Slideshow Display" +[ + displaytext(string) : "Display Text" : "" + + directory(string) : "Image Directory (materials/vgui/...)" : "slideshow" + + minslidetime(float) : "Min Slide Time" : "0.5" : "Minimum amount of random time that a slide is displayed." + maxslidetime(float) : "Max Slide Time" : "0.5" : "Maximum amount of random time that a slide is displayed." + + cycletype(choices) : "Cycle Type" : 0 = + [ + 0 : "Random" + 1 : "Forward" + 2 : "Backward" + ] + + nolistrepeat(choices) : "No List Repeat" : 0 = + [ + 0 : "Allow List Repeats" + 1 : "No List Repeats" + ] + + width(integer) : "Panel width" : 256 : "Width of the panel in units." + height(integer) : "Panel height" : 128 : "Height of the panel in units." + + input Enable(void) : "Make slideshow visible." + input Disable(void) : "Make slideshow invisible." + + input SetDisplayText(string) : "Sets the display text." + + input RemoveAllSlides(void) : "Removes all slides from slideshow." + input AddSlides(string) : "Adds slides by keyword." + + input SetMinSlideTime(float) : "Sets min random time between slides." + input SetMaxSlideTime(float) : "Sets max random time between slides." + + input SetCycleType(integer) : "0 - random, 1 - forward, 2 - backward" + input SetNoListRepeat(bool) : "Sets if lists can be randomly picked twice in a row." +] + +//------------------------------------------------------------------------- +// +// Cyclers +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname, Parentname, Angles, RenderFxChoices, RenderFields) studio() = cycler : + "An entity used to display a model for testing purposes. Shooting it with cycle through the model's animations." +[ + spawnflags(flags) = + [ + 1: "Not Solid" : 0 + ] + model(studio) : "Model" + skin(integer) : "Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin instead of the default." + + sequence(integer) : "Sequence" : 0 : "Default animation sequence for the model to be playing after spawning." + + // Inputs + input SetSequence(string) : "Sets the cycler's sequence." +] + +//------------------------------------------------------------------------- +// +// Environmental effects +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname, Parentname) = gibshooterbase +[ + angles(string) : "Gib Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction the gibs will fly." + m_iGibs(integer) : "Number of Gibs" : 3 : "Total number of gibs to shoot each time it's activated." + delay(string) : "Delay between shots" : "0" : "Delay (in seconds) between shooting each gib. If 0, all gibs shoot at once." + gibangles(string) : "Gib Angles (Pitch Yaw Roll)" : "0 0 0" : "The orientation of the spawned gibs." + gibanglevelocity(string) : "Max angular velocity" : "0" : "How fast (degrees/sec) the gib pieces should spin. They will spin on x and y axis at between 10% and 100% of this speed." + m_flVelocity(integer) : "Gib Velocity" : 200 : "Speed of the fired gibs" + m_flVariance(string) : "Course Variance" : "0.15" : "How much variance in the direction gibs are fired." + m_flGibLife(string) : "Gib Life" : "4" : "Time in seconds for gibs to live +/- 5%" + lightingorigin(target_destination) : "Lighting Origin" : "" : "Select an info_lighting to specify a location to sample lighting from for all gibs spawned by this shooter, instead of their own origins." + + spawnflags(Flags) = + [ + 1 : "Repeatable" : 0 + ] + + // Inputs + input Shoot(void) : "Force the gibshooter to create and shoot a gib." +] + +@PointClass base(Targetname, Parentname, RenderFxChoices) size(-4 -4 -4, 4 4 4) line(255 255 255, targetname, LightningStart, targetname, LightningEnd) = env_beam : + "An entity that creates a visible beam between two points. The points can be attached to entities to make the beam move around." +[ + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + Radius(integer) : "Radius" : 256 : "If the 'Random Strike' spawnflag is set, this radius determines the area within which the endpoints will randomly strike." + life(string) : "Life (seconds 0 = infinite)" : "1" : "Amount of time before the beam dies. Setting to zero will make the beam stay forever." + BoltWidth(float) : "Width of beam" : 2 : "Pixel width of the beam." + NoiseAmplitude(float) : "Amount of noise (0-255)" : 0 : "The amount of noise in the beam. 0 is a perfectly straight beam." + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" : "The material used to draw the beam." + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 : "Rate at which the beam texture should scroll along the beam." + framerate(integer) : "Frames per 10 seconds" : 0 : "Framerate at which the beam texture should animate, if it has multiple frames." + framestart(integer) : "Starting Frame" : 0 : "The frame to start the beam texture on." + StrikeTime(string) : "Strike again time (secs)" : "1" : "Refire time between random strikes of the beam. Only used if the 'Random Strike' spawnflag is set." + damage(string) : "Damage / second" : "0" : "How much damage this beam does per second to things it hits when it is continually on, or instantaneously if it strikes. For continuous damage, the value should be greater than 10 or it may not work." + LightningStart(target_destination) : "Start Entity" : "" : "Entity that the beam starts at." + LightningEnd(target_destination) : "Ending Entity" : "" : "Entity that the beam ends at." + decalname(string) : "Decal Name" : "Bigshot" : "Decal to be applied at the end of the beam" + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Random Strike" : 0 + 8 : "Ring" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + 128: "Shade Start" : 0 + 256: "Shade End" : 0 + 512: "Taper Out" : 0 + ] + + TouchType(choices) : "Touch Type (tripwire)" : 0 : "If you want the beam to fire an output when touched by entities, choose the entity type here." = + [ + 0 : "Not a tripwire" + 1 : "Player Only" + 2 : "NPC Only" + 3 : "Player or NPC" + 4 : "Player or NPC or Physprop" + ] + + filtername(filterclass) : "Filter Name" : : "Filter to use to see if activator triggers me. See filter_activator_name for more explanation." + + // Inputs + input TurnOn(void) : "Turns the beam on." + input TurnOff(void) : "Turns the beam off." + input Toggle(void) : "Toggles the beam between on and off." + input StrikeOnce(void) : "Causes the beam to strike once. It will stay on for its set Life and then turn off (it will never turn off if Life is set to zero)." + input Alpha(integer) : "Sets the beam's alpha (0 - 255)." + input Color(color255) : "Sets the beam's render color (R G B)." + input ColorRedValue(float) : "Sets the red color channel's value (0 - 255)." + input ColorGreenValue(float) : "Sets the green color channel's value (0 - 255)." + input ColorBlueValue(float) : "Sets the blue color channel's value (0 - 255)." + input Amplitude(float) : "Set the amplitude of beam noise (0 - 255)." + input ScrollSpeed(float) : "Set the scroll speed in units per second (0 - 100)." + input Width(float) : "Set the width of the beam, in pixels." + + // Outputs + output OnTouchedByEntity(void) : "Fired when an entity touches the beam. Only fired if the entity passes the 'Touch Type' choice." +] + +@PointClass base(Targetname, Parentname) size(-4 -4 -4, 4 4 4) = env_beverage : + "HL1 Legacy: Beverage Dispenser." +[ + health(integer) : "Capacity" : 10 : "Number of cans in the dispenser." + beveragetype(choices) : "Beverage Type" : 0 = + [ + 0 : "Coca-Cola" + 1 : "Sprite" + 2 : "Diet Coke" + 3 : "Orange" + 4 : "Surge" + 5 : "Moxie" + 6 : "Random" + ] + + input Activate(void) : "Enable this dispenser." +] + +@SolidClass base(Targetname, Parentname, Angles) = env_embers : + "An entity used to create a volume in which to spawn fire embers." +[ + particletype(choices) : "Ember type" : 0 = + [ + 0 : "Normal" + 1 : "Smooth Fade" + 2 : "Pulled" + ] + + density(integer) : "Density (particles per second)" : 50 + lifetime(integer) : "Particle Lifetime (seconds)" : 4 + speed(integer) : "Particle Speed (units per second)" : 32 + rendercolor(color255) : "Ember Color (R G B)" : "255 255 255" + + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + ] +] + +@PointClass base(Targetname, Parentname) size(-16 -16 -16, 16 16 16) = env_funnel : + "HL1 Legacy: Large Portal Funnel" +[ + spawnflags(flags) = + [ + 1: "Reverse" : 0 + ] +] + +@PointClass base(Targetname, Parentname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : + "An entity used to spawn blood effects." +[ + spraydir(angle) : "Spray Direction (Pitch Yaw Roll)" : "0 0 0" : "The general direction that the blood should spray and the direction to trace to apply the decal." + color(choices) : "Blood Color" : 0 = + [ + 0 : "Red (Human)" + 1 : "Yellow (Alien)" + ] + amount(string) : "Amount of blood (damage to simulate)" : "100" + spawnflags(flags) = + [ + 1: "Random Direction" : 0 + 2: "Blood Stream" : 0 + 4: "On Player" : 0 + 8: "Spray decals" : 0 + // dvs: support these flags + //16: "Cloud" : 0 + //32: "Drops" : 0 + //64: "Gore" : 0 + ] + + // Inputs + input EmitBlood(void) : "Triggers the blood effect." +] + +@SolidClass base(Targetname, Parentname) = env_bubbles : + "An entity used to create a volume in which to spawn bubbles." +[ + density(integer) : "Bubble density" : 2 + frequency(integer) : "Bubble frequency" : 2 + current(integer) : "Speed of Current" : 0 : "The speed of the water current in the volume, used to move the bubbles." + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] + + // Inputs + input Activate(void) : "Activates the bubbles." + input Deactivate(void) : "Deactivates the bubbles." + input Toggle(void) : "Toggles the bubbles on and off." + input SetDensity(integer) : "Sets the bubble density." + input SetFrequency(integer) : "Sets bubble emission rate in bubbles per second." + input SetCurrent(integer) : "Sets current speed in inches per second." +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/env_explosion.vmt") = env_explosion : + "An entity that creates an explosion at its origin." +[ + iMagnitude(Integer) : "Magnitude" : 100 : "The amount of damage done by the explosion." + // If no radius override, magnitude will determine radius. + iRadiusOverride(Integer) : "Radius Override" : 0 : "If specified, the radius in which the explosion damages entities. If unspecified, the radius will be based on the magnitude." + fireballsprite(sprite) : "Fireball Sprite" : "sprites/zerogxplode.spr" + rendermode(choices) : "Render Mode" : 5 = + [ + 0: "Normal" + 4: "Solid" + 5: "Additive" + ] + spawnflags(flags) = + [ + 1: "No Damage" : 0 + 2: "Repeatable" : 0 + 4: "No Fireball" : 0 + 8: "No Smoke" : 0 + 16: "No Decal" : 0 + 32: "No Sparks" : 0 + 64: "No Sound" : 0 + 128: "Random Orientation" : 0 + 256: "No Fireball Smoke" : 0 + 512: "No particles" : 0 + 1024: "No DLights" : 0 + 2048: "Don't clamp Min" : 0 + 4096: "Don't clamp Max" : 0 + 8192: "Damage above surface only" : 0 + 16384: "Generic damage" : 0 + ] + + ignoredEntity(target_destination) : "Ignored Entity" : : "Do not harm or affect the named entity." + + // Inputs + input Explode(void) : "Triggers the explosion." +] + +@PointClass base(Targetname, Parentname) color(200 50 0) size(-8 -8 -8, 8 8 8) = env_smoketrail : + "An entity that creates a smoke trail." +[ + opacity(float) : "Sprite Opacity" : "0.75" : "Opacity of the sprites (range from 0 - 1)." + spawnrate(float) : "Spawn Rate" : "20" : "Number of particles to emit each second." + lifetime(float) : "Particle Life Time" : "5.0" : "Number of seconds until each particle dies." + startcolor(color255) : "Start Color" : "192 192 192" : "Starting color of the emitted particles." + endcolor(color255) : "End Color" : "160 160 160" : "Ending color of the emitted particles." + emittime(float) : "Emitter Life Time" : "0" : "Number of seconds until the env_smoketrail stops emitting particles. 0 means never stop emitting particles." + minspeed(float) : "Minimum Random Speed" : "10" : "Minimum randomly-directed speed to use for emitted particles." + maxspeed(float) : "Maximum Random Speed" : "20" : "Maximum randomly-directed speed to use for emitted particles." + mindirectedspeed(float) : "Minimum Directed Speed" : "0" : "Minimum speed along the env_smoketrail's forward direction (x axis) to use for emitted particles." + maxdirectedspeed(float) : "Maximum Directed Speed" : "0" : "Maximum speed along the env_smoketrail's forward direction (x axis) to use for emitted particles." + startsize(float) : "Starting particle size" : "15" : "Starting particle size." + endsize(float) : "Ending particle size" : "50" : "Ending particle size." + spawnradius(float) : "Spawn radius" : "15" : "Distance from env_smoketrail at which particles are emitted." + + firesprite(sprite) : "Fire Sprite" : "sprites/firetrail.spr" + smokesprite(sprite) : "Smoke Puff" : "sprites/whitepuff.spr" +] + +@PointClass base(Targetname, Parentname) sphere() sphere(inner_radius) iconsprite("editor/env_physexplosion.vmt") = env_physexplosion : + "An entity that creates an explosion at its origin. If the no-damage spawnflag is set, the explosion won't be visible, but will apply force to any physics objects within its radius." +[ + magnitude(string) : "Magnitude" : "100" : "Amount of physics force applied by the explosion." + radius(string) : "Clamp Radius (0 = auto)" : "0" : "If specified, the radius in which the explosion damages entities. If unspecified, the radius will be based on the magnitude." + targetentityname(target_destination) : "Limit to Entity" : "" : "If specified, the explosion will only affect the matching entity." + + spawnflags(flags) = + [ + 1 : "No Damage - Only Force" : 1 + 2 : "Push players" : 0 + 4 : "Push radially - not as a sphere" : 0 + 8 : "Test LOS before pushing" : 0 + 16 : "Disorient player if pushed" : 0 + ] + + inner_radius(float) : "Inner radius" : "0" : "If not zero, the LOS is calculated from a point intersecting this sphere." + + // Inputs + input Explode(void) : "Trigger the explosion." + + // Outputs + output OnPushedPlayer(void) : "Fires when the player is pushed by the explosion." +] + +@PointClass base(Targetname, Parentname) line(255 255 255, targetname, directionentityname) iconsprite("editor/env_physexplosion.vmt") = env_physimpact : + "An entity that will cause a physics impact on another entity." +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "Direction to project the impact." + magnitude(integer) : "Magnitude" : 100 : "Strength of the impact." + distance(integer) : "Distance" : 0 : "How far to project the impact (if 0 uses a default value)." + directionentityname(target_destination) : "Point to Entity" : "" : "If set, 'Distance' and Angle settings are ignored and the direction and distance to the target entity will be used." + + spawnflags(flags) = + [ + 1: "No fall-off" : 0 + 2: "Infinite Length" : 0 + 4: "Ignore Mass" : 0 + 8: "Ignore Surface Normal When Applying Force" : 1 + ] + + // Inputs + input Impact(void) : "Trigger the impact" +] + + +// This has been disabled until it can be reimplemented, destroyed, or renamed - jdw +//@PointClass base(Targetname, Parentname) size(-4 -4 -4, 4 4 4) = env_splash : +// "Can be used to create either a spash effect or a stream of falling or spurting liquid." + +// "Will create a splash decal on the collided surface the same color as the liquid" +//[ +// spawnrate(float) : "SpawnRate" : "10" : "How many particles some out" +// startcolor(color255) : "StartColor" : "100 100 100" : "Color of particles when the are emitted" +// endcolor(color255) : "EndColor" : "240 110 0" : "Color that particles approach" +// speed(float) : "Speed" : 3 : "Averate speed of an emitted particles" +// speedrange(float) : "SpeedRange" : 1 : "Speed range of an emitted particles" +// widthmin(float) : "WidthMin" : 2 : "Width of smallest particle emitted" +// widthmax(float) : "WidthMax" : 8 : "Width of largest particle emitted" +// noise(float) : "Noise" : "0.1" : "Amount of directional noise in stream" +// lifetime(float) : "Lifetime" : 5 : "Lifetime of particles (in secs)" +// numdecals(integer) : "Num Decals" : 1 : "Number of decals used (keep small)" +// startactive(choices) : "Start On" : 1 = +// [ +// 0 : "No" +// 1 : "Yes" +// ] +// +// // Inputs +// input SetSpawnRate(float) : "Sets how many particles come out" +// input SetSpeed(float) : "Sets speed of emitted particle" +// input SetNoise(float) : "Sets noise of emitted particle (0-1)" +// input SetLifetime(float) : "Sets lifetime of emitted particles (in seconds)" +// input TurnOn(void) : "Turns particles on" +// input TurnOff(void) : "Turns particles off" +//] + +@PointClass base(Targetname, Parentname, EnableDisable) iconsprite("editor/env_fire") color(0 180 0) = env_fire : + "An entity that handles a single flame at its origin. The flame causes heat 'damage' to other env_fire entities around it, and will eventually ignite non-flaming env_fire entities nearby, causing the fire to spread." +[ + health(integer) : "Duration" : 30 : "Amount of time the fire will burn." + firesize(integer) : "Size" : 64 : "Height (in world units) of the flame." + fireattack(integer) : "Attack" : 4 : "Amount of time the fire takes to grow to full strength." + firetype(choices) : "Type" : 0 = + [ + 0 : "Natural" + 1 : "Plasma" + ] + spawnflags(flags) = + [ + 1: "Infinite Duration" : 0 + 2: "Smokeless" : 0 + 4: "Start On" : 0 + 8: "Start Full" : 0 + 16: "Don't drop" : 0 + 32: "No glow" : 0 + 128: "Delete when out" : 0 + 256: "Visible from above" : 0 + ] + + ignitionpoint(float) : "Ignition Point" : 32 : "Amount of heat 'damage' to take before this flame should ignite." + damagescale(float) : "Damage Scale" : "1.0" : "Multiplier of the burn damage done by the flame." + + // Inputs + input StartFire(void) : "Start the fire." + input Extinguish(float) : "Puts out the fire permanently in the number of seconds specified." + input ExtinguishTemporary(float): "Puts out the fire temporarily in the number of seconds specified." + + // Outputs + output OnIgnited(void) : "Fires when the fire is first ignited." + output OnExtinguished(void) : "Fires when the fire is fully extinguished." +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/env_firesource") color(255 255 0) sphere(fireradius) = env_firesource : + "An entity that provides heat to all nearby env_fire entities. Cannot be extinguished." +[ + spawnflags(flags) = + [ + 1: "Start On" : 0 + ] + + fireradius(float) : "Radius" : 128 : "The radius around this entity in which to provide heat." + firedamage(float) : "Intensity / Damage" : 10 : "Amount of heat 'damage' to apply to env_fire entities within the radius." + + // Inputs + input Enable(void) : "Enable fire source." + input Disable(void) : "Disable fire source." +] + +@PointClass base(Targetname, Parentname) size(-4 -4 -4, 4 4 4) color(255 255 0) sphere(fireradius) = env_firesensor : + "An entity that detects changes in heat nearby." +[ + spawnflags(flags) = + [ + 1: "Start On" : 1 + ] + + fireradius(float) : "Radius" : 128 : "The radius around this entity in which to detect heat changes." + heatlevel(float) : "Heat level" : 32 : "The target heat level to check for. Outputs are fired when the heat moves over this target level (increasing or decreasing)." + heattime(float) : "Time at level" : 0 : "The amount of time the heat level must spend over the target level before the 'OnHeatLevelStart' output is fired." + + // Inputs + input Enable(void) : "Enable fire sensor." + input Disable(void) : "Disable fire sensor." + output OnHeatLevelStart(void) : "Fires when the heat level has been sustained for the specified length of time." + output OnHeatLevelEnd(void) : "Fires when the heat level drops below the target level." +] + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(0 180 0) = env_entity_igniter : + "An entity that catches a target entity on fire. If the entity is an animating model, it will have sprite flames attached to its skeleton. Otherwise the entity will emit particle flame puffs." +[ + target(target_destination) : "Entity to ignite" : : "Name of the entity to catch on fire." + lifetime(float) : "Lifetime in seconds" : 10 : "Duration of flames." + + // Inputs + input Ignite(void) : "Ignite the target entity." +] + +@PointClass base(Targetname, DXLevelChoice, Angles) iconsprite("editor/fog_controller.vmt") color(255 255 255) = env_fog_controller : + "An entity that controls the fog and view distance in the map." +[ + // Inputs + input SetStartDist(float) : "Set the fog start distance." + input SetEndDist(float) : "Set the fog end distance." + input TurnOn(void) : "Turn the fog on." + input TurnOff(void) : "Turn the fog off." + input SetColor(color255) : "Set the primary fog color." + input SetColorSecondary(color255) : "Set the secondary fog color." + input SetFarZ(integer): "Set the far clip plane distance." + input SetAngles(string) : "Set the angles to use for the secondary fog direction." + + input SetColorLerpTo(color255) : "Set the primary fog color." + input SetColorSecondaryLerpTo(color255) : "Set the secondary fog color." + input SetStartDistLerpTo(float) : "Set the fog start distance." + input SetEndDistLerpTo(float) : "Set the fog end distance." + input StartFogTransition(void) : "Start fog transition." + + // Starting fog parameters for the level. These are selectable per LOD. + fogenable(choices) : "Fog Enable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogblend(choices) : "Fog Blend" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + use_angles(choices) : "Use Angles for Fog Dir" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogcolor(color255) : "Primary Fog Color" : "255 255 255" + fogcolor2(color255) : "Secondary Fog Color" : "255 255 255" + fogdir(string) : "Primary Fog Direction" : "1 0 0" + fogstart(string) : "Fog Start" : "500.0" + fogend(string) : "Fog End" : "2000.0" + fogmaxdensity(float) : "Fog Max Density [0..1]" : "1" + + foglerptime(float) : "Interpolate time" : "0" + + farz(string) : "Far Z Clip Plane" : "-1" + + spawnflags(flags) = + [ + 1 : "Master (Has priority if multiple env_fog_controllers exist)" : 0 + ] +] + +@PointClass base(Targetname, Parentname, Angles) studioprop("models/editor/spot_cone.mdl") color(255 255 255) = env_steam : + "An entity used to create a jet of steam." +[ + spawnflags(flags) = + [ + 1 : "Emissive" : 0 + ] + + InitialState(choices) : "Initial State" : 0 = + [ + 0 : "Off" + 1 : "On" + ] + + //Type of particle to spew out + type(choices) : "Particle Type" : 0 = + [ + 0 : "Normal" + 1 : "Heat Wave" + ] + + SpreadSpeed(integer) : "Spread Speed" : 15 : "The amount of random spread in the particle's velocity after they spawn." + Speed(integer) : "Speed" : 120 : "The default speed at which the particles move after they spawn." + StartSize(integer) : "Particle start size" : 10 : "The initial size of the particles after they spawn." + EndSize(integer) : "Particle end size" : 25 : "The size of the particles at the point at which they are removed." + Rate(integer) : "Emission rate" : 26 : "The rate of particle emission. i.e. particles per second." + rendercolor(color255) : "Color (R G B)" : "255 255 255" + JetLength(integer) : "Length of steam jet" : 80 : "The length of the jet determines the lifetime of each particle." + renderamt(integer) : "Translucency" : 255 + rollspeed(float) : "How fast does the particles spin" : 8 + + // Inputs + input TurnOn(void) : "Turns the steam jet on." + input TurnOff(void) : "Turns the steam jet off." + input Toggle(void) : "Toggles the steam jet between on and off." + input JetLength(integer) : "Sets the length of steam jet." + input Rate(integer) : "Sets the particle emission rate in particles per second." + input Speed(integer) : "Sets the default speed of the particles in units per second." + input SpreadSpeed(integer) : "Sets the spread speed in units per second." +] + +@PointClass base(Targetname, Parentname, RenderFxChoices) size(-4 -4 -4, 4 4 4) line(255 255 255, targetname, LaserTarget) = env_laser : + "An entity that creates a laser beam between itself and a given target." +[ + LaserTarget(target_destination) : "Target of Laser" : : "Name of entity, or entities, to strike at. The target is randomly chosen if there are multiple entities matching the given name." + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam Color (R G B)" : "255 255 255" + width(float) : "Width of Beam" : 2 : "The width of the laser beam, in pixels." + NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 : "The amount of noise in the beam. 0 is a perfectly straight beam." + texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" : "The material used to draw the laser beam." + EndSprite(sprite) : "End Sprite" : "" : "If specified, this sprite will be drawn at the end of the laser beam." + TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 : "Rate at which the beam texture should scroll along the beam." + framestart(integer) : "Starting Frame" : 0 : "The frame to start the beam texture on." + damage(string) : "Damage / second" : "100" : "How much damage this laser does. per second. to things it hits." + dissolvetype(choices) : "Dissolve Type" : "None" = + [ + -1 : "None" + 0 : "Energy" + 1 : "Heavy electrical" + 2 : "Light electrical" + ] + spawnflags(flags) = + [ + 1 : "Start On" : 0 + 16: "StartSparks" : 0 + 32: "EndSparks" : 0 + 64: "Decal End" : 0 + ] + + // Inputs + input TurnOn(void) : "Turns the laser on." + input TurnOff(void) : "Turns the laser off." + input Toggle(void) : "Toggles the laser between on and off." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_message : + "An entity that draws a text message on player's HUDs." +[ + message(string) : "Message Text" + spawnflags(flags) = + [ + 1: "Play Once" : 0 + 2: "All Clients" : 0 + ] + messagesound(sound) : "Sound Effect" : "" : "When the message is shown, this sound effect will be played, originating from this entity." + messagevolume(string) : "Volume 0-10" : "10" : "Volume of the sound effect." + messageattenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] + + // Inputs + input ShowMessage(void) : "Shows the message and plays the sound." + + // Outputs + output OnShowMessage(void) : "Fired when the message is activated." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_hudhint : + "An entity to control the display of HUD hints. HUD hints are used to show the player what key is bound to a particular command." +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Hint Text (localized)" : "" : "This should be set to match the desired HUD hint entry in the hl2\resource\valve_english.txt." + + // Inputs + input ShowHudHint(void) : "Shows the hint message." + input HideHudHint(void) : "Hides the hint message." +] + +@PointClass sphere() iconsprite("editor/env_shake.vmt") base(Targetname, Parentname) = env_shake : + "An entity to control screen shake on players." +[ + spawnflags(flags) = + [ + 1: "GlobalShake" : 0 + //2: "Disrupt player control" : 0 // doesn't work + 4: "In Air" : 0 // shakes objects even if they are not onground + 8: "Physics" : 0 // shakes physically as well as the camera + 16: "Ropes" : 0 // shakes ropes too. + 32: "DON'T shake view (for shaking ropes or physics only)" : 0 + 64: "DON'T Rumble Controller" : 0 + ] + + amplitude(float) : "Amplitude (0-16)" : "4" : "The amount of noise in the screen shake. Should be a range between 0 and 16." + radius(float) : "Effect Radius" : "500" : "The radius around this entity in which to affect players." + duration(float) : "Duration (seconds)" : "1" : "The length of time in which to shake the player's screens." + frequency(float) : "Frequency" : "2.5" : "The frequency used to apply the screen shake. Should be a value between 0 and 255, where 0.1 = jerk, and 255.0 = rumble." + + // Inputs + input Amplitude(string) : "Set the amplitude (0-16)" + input Frequency(string) : "Set the frequence. Should be a value between 0 and 255, where 0.1 = jerk, and 255.0 = rumble." + input StartShake(void) : "Start the shake." + input StopShake(void) : "Stop the shake." +] + +@PointClass sphere() size(-4 -4 -4, 4 4 4) base(Targetname, Parentname) = env_viewpunch : + "Causes a view punch on players." +[ + spawnflags(flags) = + [ + 1: "Punch all players (ignore radius)" : 0 + 2: "Punch players in the air" : 0 + ] + + punchangle(angle) : "Punch angles" : "0 0 90" : "The punch angles to apply." + radius(float) : "Effect Radius" : "500" : "The radius around this entity in which to affect players." + + // Inputs + input ViewPunch(void) : "Performs the view punch." +] + +@PointClass base(Targetname, Parentname) = env_rotorwash_emitter : + "Creates rotorwash." +[ + altitude(float) : "Altitude" : "1024" : "Altitude the rotorwash will show up." +] + +@PointClass base(gibshooterbase) iconsprite("editor/gibshooter.vmt") = gibshooter : + "An entity that shoots out gibs. Style of body part depends on language type." +[ +] + +@PointClass base(gibshooterbase, RenderFields) iconsprite("editor/env_shooter.vmt") = env_shooter : + "An entity that shoots models, or sprites, out of its origin." +[ + shootmodel(studio) : "Model" : "" : "Thing to shoot out. Can be a .mdl or a .vmt." + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + simulation(choices) :"Simulate" : 0 = + [ + 0: "Point" + 1: "Physics" + 2: "Ragdoll" + ] + + skin(integer) : "Gib Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin on all gibs produced by this shooter." + + spawnflags(flags) = + [ + 2 : "On fire" : 0 + 4 : "strict remove after lifetime" : 0 + ] + + nogibshadows(choices) :"Disable Shadows on Gibs" : 0 = + [ + 0: "No" + 1: "Yes" + ] + + gibgravityscale(float) : "Gib gravity scale" : "1" : "ONLY WORKS FOR POINT GIBS. This field allows you to scale gravity so that gibs fall faster, slower, or not at all." + + massoverride(float) : "Mass override" : "0" : "EPISODIC ONLY. Specify an arbitrary mass for the gibs emitted by me." +] + +@PointClass base(gibshooterbase, RenderFields) iconsprite("editor/env_shooter.vmt") = env_rotorshooter : + "An entity that creates gibs when it's within the influence of a helicopter's rotor wash." +[ + shootmodel(studio) : "Model" : "" : "Thing to shoot out. Can be a .mdl or a .vmt." + shootsounds(choices) :"Material Sound" : -1 = + [ + -1: "None" + 0: "Glass" + 1: "Wood" + 2: "Metal" + 3: "Flesh" + 4: "Concrete" + ] + simulation(choices) :"Simulate" : 0 = + [ + 0: "Point" + 1: "Physics" + 2: "Ragdoll" + ] + + skin(integer) : "Gib Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin on all gibs produced by this shooter." + + spawnflags(flags) = + [ + 2 : "On fire" : 0 + ] + + rotortime(float) : "Time Under Rotor" : "1" : "The average time it has to be under the rotor before it shoots a gib." + rotortimevariance(float) : "Time variance" : "0.3" : "The random amount to vary the time it has to be under the rotor before it shoots a gib." +] + +@PointClass base(Targetname,Parentname) sphere() iconsprite("editor/env_soundscape.vmt") = env_soundscape_proxy : + "An entity that acts like a soundscape but gets all of its sound parameters from another env_soundscape entity." +[ + MainSoundscapeName(target_destination) : "Soundscape Entity" : "" : "The soundscape to get all sound parameters from." + + radius(integer) : "Radius" : 128 // NEEDHELP: The datadesc doesn't include this entry. Probably not used. +] + +@PointClass base(Targetname,Parentname,EnableDisable) sphere() iconsprite("editor/env_soundscape.vmt") line(255 255 255, targetname, position0) line(255 255 255, targetname, position1) line(255 255 255, targetname, position2) line(255 255 255, targetname, position3) line(255 255 255, targetname, position4) line(255 255 255, targetname, position5) line(255 255 255, targetname, position6) line(255 255 255, targetname, position7) = env_soundscape : + "An entity to control sound in an area. The active soundscape at any time is the last one that had line-of-sight to the player, and was within the radius." +[ + radius(integer) : "Radius" : 128 : "If set to -1, then the player can hear the soundscape as long as he can see it (regardless of distance to it)." + soundscape(choices) : "Soundscape" : "Nothing" : "The name of the soundscape to use. Corresponds to an entry in the soundscapes*.txt file in the hl2\scripts directory." = + [ + "Nothing" : "Nothing" + "Automatic" : "Automatic" + "Automatic_Dialog" : "Automatic (dialog)" + "GenericIndoor" : "Indoor" + "GenericOutdoor" : "Outdoor" + ] + position0(target_destination) : "Sound Position 0" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position1(target_destination) : "Sound Position 1" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position2(target_destination) : "Sound Position 2" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position3(target_destination) : "Sound Position 3" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position4(target_destination) : "Sound Position 4" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position5(target_destination) : "Sound Position 5" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position6(target_destination) : "Sound Position 6" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + position7(target_destination) : "Sound Position 7" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world." + + // Inputs + input Enable(void) : "Enable the soundscape." + input Disabled(void) : "Disable the soundscape." + input ToggleEnabled(void) : "Toggle the soundscape enabled state." + + // Outputs + output OnPlay(void) : "Fired when this soundscape becomes the active one." +] + +@PointClass base(env_soundscape) sphere() iconsprite("editor/env_soundscape.vmt") = env_soundscape_triggerable : + "An entity that works like env_soundscape except that it works in conjunction with trigger_soundscape to determine when a player hears it." +[ +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/env_spark.vmt") = env_spark : + "An entity used to create sparks at its origin." +[ + MaxDelay(string) : "Max Delay" : "0" : "The longest delay between sparks (in seconds)." + Magnitude(choices) : "Magnitude" : 1 : "The size of the sparks." = + [ + 1 : "Small" + 2 : "Medium" + 5 : "Large" + 8 : "Huge" + ] + + TrailLength(choices) : "Spark Trail Length" : 1 = + [ + 1 : "Short" + 2 : "Medium" + 3 : "Long" + ] + + spawnflags(flags) = + [ + 64: "Start ON" : 0 + 128: "Glow" : 0 + 256: "Silent" : 0 + 512: "Directional" : 0 + ] + + // Inputs + input StartSpark(void) : "Start the spark effect." + input StopSpark(void) : "Stop the spark effect." + input ToggleSpark(void) : "Toggle the on/off state of the spark effect." + input SparkOnce(void) : "Spark once." +] + +@PointClass base(Targetname, Parentname, RenderFields,DXLevelChoice) size(-2 -2 -2, 2 2 2) sprite() color(20 140 20) = env_sprite : + "An entity that controls the drawing of a sprite in the world." +[ + framerate(string) : "Framerate" : "10.0" : "Rate at which the sprite should animate, if at all." + model(sprite) : "Sprite Name" : "sprites/glow01.spr" : "Material of the sprite to be drawn." + scale(string) : "Scale" : "" : "Scale multiplier of the sprite." + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] + + GlowProxySize(float) : "Size of Glow Proxy Geometry." : "2.0" : "Size of the glow to be rendered for visibility testing. Must be larger than the distance from the sprite center to empty space. So if this glow is inside geometry (like a light bulb), set this value to be bigger than the bulb's radius. Any time a sphere of this radius would be visible (poking through any nearby geometry), the glow will be rendered." + + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input ColorRedValue(float) : "Sets the red color channel's value (0 - 255)." + input ColorGreenValue(float) : "Sets the green color channel's value (0 - 255)." + input ColorBlueValue(float) : "Sets the blue color channel's value (0 - 255)." + input SetScale(float) : "Set the sprite's scale (0 - 8.0)." + input HideSprite(void) : "Hide the sprite. Won't be drawn until the 'ShowSprite' input is received." + input ShowSprite(void) : "Show the sprite." + input ToggleSprite(void) : "Toggle the sprite between hidden and shown." +] + +@PointClass base(env_sprite, Angles) = env_sprite_oriented : + "A env_sprite that allows orientation." +[ + framerate(string) : "Framerate" : "10.0" : "Rate at which the sprite should animate, if at all." + model(sprite) : "Sprite Name" : "sprites/glow01.spr" : "Material of the sprite to be drawn." + scale(string) : "Scale" : "" : "Scale multiplier of the sprite." + spawnflags(flags) = + [ + 1: "Start on" : 0 + 2: "Play Once" : 0 + ] + + GlowProxySize(float) : "Size of Glow Proxy Geometry." : "2.0" : "Size of the glow to be rendered for visibility testing. Must be larger than the distance from the sprite center to empty space. So if this glow is inside geometry (like a light bulb), set this value to be bigger than the bulb's radius. Any time a sphere of this radius would be visible (poking through any nearby geometry), the glow will be rendered." + + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input ColorRedValue(float) : "Sets the red color channel's value (0 - 255)." + input ColorGreenValue(float) : "Sets the green color channel's value (0 - 255)." + input ColorBlueValue(float) : "Sets the blue color channel's value (0 - 255)." + input SetScale(float) : "Set the sprite's scale (0 - 8.0)." + input HideSprite(void) : "Hide the sprite. Won't be drawn until the 'ShowSprite' input is received." + input ShowSprite(void) : "Show the sprite." + input ToggleSprite(void) : "Toggle the sprite between hidden and shown." +] + + +@PointClass base(Targetname, Angles) iconsprite("editor/env_wind.vmt") = env_wind : + "An entity to control wind in the map. Partially functional." +[ + //gustsound(sound) : "Gust Sound Filename" : "" : "Sound to be played to simulate the gusting wind." + minwind(integer) : "Min normal speed" : 20 : "Minimum speed of the wind while idling." + maxwind(integer) : "Max normal speed" : 50 : "Maximum speed of the wind while idling." + + mingust(integer) : "Min gust speed" : 100 : "Minimum speed of wind gusts." + maxgust(integer) : "Max gust speed" : 250 : "Maximum speed of wind gusts." + + mingustdelay(integer) : "Min gust delay" : 10 : "Minimum time delay between random gusts." + maxgustdelay(integer) : "Max gust delay" : 20 : "Maximum time delay between random gusts." + + gustduration(integer) : "Gust Duration" : 5 : "How long will the wind gust for." + + gustdirchange(integer) : "Max gust dir change (degrees)" : 20 : "Maximum amount that the wind's direction changes due to a gust." + + output OnGustStart(void) : "Fired when a wind gust begins." + output OnGustEnd(void) : "Fired when a wind gust ends." +] + +@PointClass base(Angles) size(-16 -16 -16, 16 16 16) color(0 0 255) = sky_camera : + "An entity used to control the 3D Skybox. Its origin is used to determine the 3D Skybox's position relative to the map. Place this entity, in the 3D Skybox, at the point where the origin of the map should be." +[ + scale(integer) : "3D Skybox scale" : 16 : "Scale of the skybox." + fogenable(choices) : "Fog Enable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogblend(choices) : "Fog Blend" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + use_angles(choices) : "Use Angles for Fog Dir" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogcolor(color255) : "Primary Fog Color" : "255 255 255" + fogcolor2(color255) : "Secondary Fog Color" : "255 255 255" + fogdir(string) : "Primary Fog Dir" : "1 0 0" + fogstart(string) : "Fog Start" : "500.0" : "Distance at which the skybox fog should start." + fogend(string) : "Fog End" : "2000.0" : "Distance at which the skybox fog should be fully opaque." +] + +@BaseClass base(Targetname, ResponseContext) = BaseSpeaker +[ + delaymin(string) : "Min Delay Between Announcements" : "15" + delaymax(string) : "Max Delay Between Announcements" : "135" + spawnflags(flags) = + [ + 1: "Start Silent" : 0 + 2: "Play Everywhere" : 0 + ] + rulescript(string) : "Context rule script" : "" : "Script file containing rules for playing appropriate sounds." + concept(string) : "Concept name" : "" : "High level concept name used as primary search key." + + // Inputs + input TurnOn(void) : "Turn on the random announcements." + input TurnOff(void) : "Turn off the random announcements." + input Toggle(void) : "Toggle the random announcements off and on." +] + +//------------------------------------------------------------------------- +// +// Game Entities +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname) = game_weapon_manager : + "An entity used to limit the number of a particular weapon type in the world. Useful in places where NPCs are spawning rapidly, dying, and dropping weapons." +[ + weaponname(string) : "Weapon Classname" : "" : "Classname of the weapon type to limit." + maxpieces(integer) : "Max Allowed in Level" : 0 : "The maximum amount of the specified weapon type allowed in the world." + ammomod(float) : "Ammo modifier" : 1 : "Modifier for ammount of ammo dropped by a weapon." + + // Inputs + input SetAmmoModifier(float): "Adjust the ammo modifier." +] + +@PointClass base(Targetname) iconsprite("editor/game_end.vmt") = game_end : + "An entity that ends a multiplayer game." +[ + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + input EndGame(void) : "End the multiplayer game." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_player_equip : + "An entity that gives equipment to the player who activates it. To use, add new keys to this entity, where each key is the classname of a weapon/item, and the corresponding value is the number of those weapons/items to give to the player who uses this entity. If the 'Use Only' spawnflag isn't set, then players can just touch this entity to get the equipment." +[ + spawnflags(flags) = + [ + 1: "Use Only" : 0 + ] + master(string) : "Team Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_player_team : + "An entity that changes the team of the player who activates it." +[ + spawnflags(flags) = + [ + 1 : "Remove On fire" : 0 + 2 : "Kill Player" : 0 + 4 : "Gib Player" : 0 + ] + target(string) : "game_team_master to use" + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_score : + "An entity that awards/deducts points from the player who activates it." +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + + // Inputs + input ApplyScore(void) : "Add score to player." +] + +@PointClass base(Targetname) iconsprite("editor/game_text.vmt") = game_text : + "An entity that displays text on player's screens." +[ + spawnflags(flags) = + [ + 1: "All Players" : 0 + ] + + message(string) : "Message Text" : "" : "Message to display onscreen." + x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" : "Horizontal position on the player's screens to draw the text. The value should be between 0 and 1, where 0 is the far left of the screen and 1 is the far right. -1 centers the text." + y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" : "Vertical position on the player's screens to draw the text. The value should be between 0 and 1, where 0 is the top of the screen and 1 is the bottom. -1 centers the text." + effect(Choices) : "Text Effect" : 0 = + [ + 0 : "Fade In/Out" + 1 : "Credits" + 2 : "Scan Out" + ] + color(color255) : "Color1" : "100 100 100" + color2(color255) : "Color2" : "240 110 0" + fadein(string) : "Fade in Time (or character scan time)" : "1.5" : "The time it should take for the text to fully fade in." + fadeout(string) : "Fade Out Time" : "0.5" : "The time it should take for the text to fade out, after the hold time has expired." + holdtime(string) : "Hold Time" : "1.2" : "The time the text should stay onscreen, after fading in, before it begins to fade out." + fxtime(string) : "Scan time (scan effect only)" : "0.25" : "If the 'Text Effect' is set to Scan Out, this is the time it should take to scan out all the letters in the text." + channel(choices) : "Text Channel" : 1 : "You can have up to four individual game_text messages onscreen at once, stored in channels. Select which channel this text should be placed in, which will overwrite any active message already in that channel." = + [ + 1 : "Channel 1" + 2 : "Channel 2" + 3 : "Channel 3" + 4 : "Channel 4" + ] + master(string) : "Master" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + + // Inputs + input Display(void) : "Display the message text." +] + +@PointClass base(Parentname, Angles) size(-2 -2 -2, 2 2 2) = point_enable_motion_fixup : + "An entity used to move a motion-disabled prop when it enables motion. Parent this entity to the prop, and when the prop has its motion enabled, it will immediately teleport to the origin of this entity." +[ +] + +@PointClass base(Targetname, Parentname) size(-8 -8 -8, 8 8 8) = point_message : + "An entity that displays a text message in the world, at its origin." +[ + spawnflags(flags) = + [ + 1: "Start Disabled" : 0 + ] + + message(string) : "Entity Message" + radius(integer) : "Show message radius" : 128 : "Distance the player must be within to see this message." + developeronly(choices) : "Developer Only?" : 0 : "If set, this message will only be visible when developer mode is on." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Enable(void) : "Start displaying the message text, if the player is within the message radius." + input Disable(void) : "Stop displaying the message text." +] + +@PointClass base(Targetname, Parentname, RenderFields, Angles, DXLevelChoice) studio("models/editor/cone_helper.mdl") = point_spotlight : + "An entity to draw a spotlight. Will draw a beam when the player views it side on, and a halo when it's facing towards the player. "+ + "Unless the 'No Dynamic Light' spawnflag is checked, it will also create a dynamic light wherever the end of the spotlight rests." +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 1 + 2 : "No Dynamic Light" : 1 + ] + + spotlightlength(integer) : "Spotlight Length" : 500 : "Length of the spotlight beam." + spotlightwidth(integer) : "Spotlight Width" : 50 : "Width of the spotlight beam." + rendercolor(color255) : "Color (R G B)" : "255 255 255" + HDRColorScale(float) : "HDR color scale." : "1.0" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input LightOn(void) : "Turn the spotlight on." + input LightOff(void) : "Turn the spotlight off" + + // outputs + output OnLightOn(void) : "Fires when light turns on." + output OnLightOff(void) : "Fires when light turns off." + +] + +@PointClass base(Targetname, Parentname) size(-8 -8 -8, 8 8 8) = point_tesla : + "An entity that creates tesla lightning arcs around its origin." +[ + m_SourceEntityName(string) : "Source Entity" : "" : "If specified, tesla lightning will originate from the specified entity. Otherwise, they originate from this entity." + m_SoundName(string) : "Sound Name" : "DoSpark" : "Sound to be played whenever lightning is created." + + texture(sprite) : "Sprite Name" : "sprites/physbeam.vmt" : "Material to use for the tesla lightning beams." + + m_Color(color255) : "Color" : "255 255 255" + + m_flRadius(integer) : "Radius" : 200 : "Radius around the origin to find a point to strike with a tesla lightning beam." + + beamcount_min(integer) : "Min # of Beams" : 6 : "Minimum number of tesla lightning beams to create when creating an arc." + beamcount_max(integer) : "Max # of Beams" : 8 : "Maximum number of tesla lightning beams to create when creating an arc." + + thick_min(string) : "Min Beam Width" : "4" : "Minimum width of the tesla lightning beams." + thick_max(string) : "Max Beam Width" : "5" : "Maximum width of the tesla lightning beams." + + lifetime_min(string) : "Min Time Visible" : "0.3" : "Minimum lifetime of the tesla lightning beams." + lifetime_max(string) : "Max Time Visible" : "0.3" : "Maximum lifetime of the tesla lightning beams." + + interval_min(string) : "Min Time Between Arcs":"0.5" : "Minimum time delay between random arcing." + interval_max(string) : "Max Time Between Arcs":"2" : "Maximum time delay between random arcing." + + // Inputs + input TurnOn(void) : "Turn emitter on." + input TurnOff(void) : "Turn emitter off." + input DoSpark(void) : "Force a single arc." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_clientcommand : + "An entity that issues commands to the client console, as if it was typed in by the player (if activator is a player, or the local player in single player)." +[ + // Inputs + input Command(string) : "Command to execute." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_servercommand : + "An entity that issues commands to the server console." +[ + // Inputs + input Command(string) : "Command to execute." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_bonusmaps_accessor : + "An entity that relays bonus maps changes." +[ + filename(string) : "File Name" : "" + mapname(string) : "Map Name" : "" + + // Inputs + input Unlock(void) : "Unlocks the filename/map combination." + input Complete(void) : "Completes the filename/map combination." + input Save(void) : "Saves bonus map data." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_ui : + "An entity used to override player input when the player is looking at it." +[ + spawnflags(flags) = + [ + 32 : "Freeze Player" : 1 + 64 : "Hide Weapon" : 1 + 128 : "+Use Deactivates" : 1 + 256 : "Jump Deactivates" : 1 + ] + + FieldOfView(float) : "FieldOfView" : "-1.0" : "The amount of tolerance in the view checking when determining whether the player's input is still under control. 1.0 = straight ahead, 0.0 = +/- 90 degrees, -1.0 = all directions. If the player isn't within the tolerance, the player regains control." + + // Inputs + input Deactivate(void) : "Return Player Control." + input Activate(string) : "Take Player Control." + + // Outputs + output PlayerOn(void) : "Fired whenever this entity starts controlling the player's input." + output PlayerOff(void) : "Fired whenever this entity stops controlling the player's input." + output PressedMoveLeft(void) : "Fired whenever the player presses the moveleft key." + output PressedMoveRight(void) : "Fired whenever the player presses the moveright key." + output PressedForward(void) : "Fired whenever the player presses the forward key." + output PressedBack(void) : "Fired whenever the player presses the backward key." + output PressedAttack(void) : "Fired whenever the player presses the attack key." + output PressedAttack2(void) : "Fired whenever the player presses the secondary attack key." + + output UnpressedMoveLeft(void) : "Fired whenever the player releases the moveleft key." + output UnpressedMoveRight(void) : "Fired whenever the player releases the moveright key." + output UnpressedForward(void) : "Fired whenever the player releases the forward key." + output UnpressedBack(void) : "Fired whenever the player releases the backward key." + output UnpressedAttack(void) : "Fired whenever the player releases the attack key." + output UnpressedAttack2(void) : "Fired whenever the player releases the secondary attack key." + + output XAxis(string) : "An output that fires whenever the X axis of the player's input changes. i.e. -1 when the player has moveleft key down, 1 when the player has moveright key down, and 0 if neither." + output YAxis(string) : "An output that fires whenever the Y axis of the player's input changes. i.e. -1 when the player has backward key down, 1 when the player has forward key down, and 0 if neither." + output AttackAxis(string) : "An output that fires whenever the state of the player's attack key changes. i.e. 1 when the player has the attack key down, 0 otherwise." + output Attack2Axis(string) : "An output that fires whenever the state of the player's secondary attack key changes. i.e. 1 when the player has the secondary attack key down, 0 otherwise." +] + +@SolidClass base(Targetname, Parentname) = game_zone_player : + "An entity used to count the number of players within a zone." +[ + // Inputs + input CountPlayersInZone(void) : "Count the number of players in the zone, and fire the corresponding outputs." + + // Outputs + output OnPlayerInZone(void) : "Fired whenever a count finds a player inside the zone, with the player as the activator." + output OnPlayerOutZone(void) : "Fired whenever a count finds a player outside the zone, with the player as the activator." + output PlayersInCount(integer) : "Fired after a count, and contains the number of players found inside the zone." + output PlayersOutCount(integer) : "Fired after a count, and contains the number of players found outside the zone." +] + +//------------------------------------------------------------------------- +// +// Info Entities +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname) decal() studio("models/editor/axis_helper_thick.mdl") = infodecal : + "An entity that places a decal on the world. If the decal has no target name, it will immediately apply itself when the level is loaded. "+ + "If it has a name specified, it won't apply until it receives the 'Activate' input." +[ + texture(decal) + + LowPriority(choices) : "Low Priority (can be replaced)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Activate(void) : "Force the decal to apply itself to the world." +] + +// A decal to be applied to a prop or the world using specified origin and orientation and radius, uses an orientation angle and a radius to determine +// ray to cast for projection +@PointClass base(Angles,Targetname) decal() studio("models/editor/axis_helper_thick.mdl") = info_projecteddecal : + "An entity that projects a decal onto the world (or props). If the decal has no target name, it will immediately apply itself when "+ + "the level is loaded. If it has a name specified, it won't apply until it receives the 'Activate' input." +[ + texture(decal) + Distance(float) : "Distance" : 64 : "Distance from the origin to project the decal." + + // Inputs + input Activate(void) : "Force the decal to apply itself to the world." +] + +@PointClass = info_no_dynamic_shadow : + "Use this entity to mark surfaces that shouldn't receive dynamic shadows. Useful to apply to walls and floors "+ + "where shadows are drawn improperly, giving away the location of enemies." +[ + sides(sidelist) : "Brush faces" +] + +@PointClass base(PlayerClass, Angles) studio("models/editor/playerstart.mdl") = info_player_start : + "This entity indicates the position and facing direction at which the player will spawn. Any number of "+ + "info_player_start entities may be placed in a map for when working in cordoned-off portions of the map. "+ + "When multiple info_player_start entities are present in a map, set the 'Master' spawnflag on one of them "+ + "to indicate which one should be used when running the entire map." +[ + spawnflags(flags) = + [ + 1: "Master (Has priority if multiple info_player_starts exist)" : 0 + ] +] + +@PointClass base(Targetname) size(-1 -1 0, 1 1 1) color(80 150 225) studio("models/editor/overlay_helper.mdl") sphere(fademindist) sphere(fademaxdist) overlay() = info_overlay : + "An entity that places an overlay on the world." +[ + material(material) : "Material" + sides(sidelist) : "Brush faces" + RenderOrder(integer) : "Render Order" : 0 : "Higher values render after lower values. This value can be 0-3." + StartU(float) : "U Start" : "0.0" + EndU(float) : "U End" : "1.0" + StartV(float) : "V Start" : "0.0" + EndV(float) : "V End" : "1.0" + BasisOrigin(Vector) readonly : "Overlay Basis Origin(Read-Only)" + BasisU(Vector) readonly : "Overlay Basis U(Read-Only)" + BasisV(Vector) readonly : "Overlay Basis V(Read-Only)" + BasisNormal(Vector) readonly : "Overlay Basis Normal(Read-Only)" + uv0(vector) readonly : "Overlay Point 1(Read-Only)" + uv1(vector) readonly : "Overlay Point 2(Read-Only)" + uv2(vector) readonly : "Overlay Point 3(Read-Only)" + uv3(vector) readonly : "Overlay Point 4(Read-Only)" + fademindist(float) : "Start Fade Dist" : -1 : "Distance at which the overlay starts to fade (<0 = use fademaxdist)." + fademaxdist(float) : "End Fade Dist" : 0 : "Maximum distance at which the overlay is visible (0 = don't fade out)." +] + +@PointClass size(-8 -8 -8, 8 8 8) sidelist(sides) sidelist(sides2) overlay_transition() = info_overlay_transition : "Overlay Transition" +[ + material(material) : "Material" + sides(sidelist) : "Brush faces" + sides2(sidelist) : "Water faces" + LengthTexcoordStart(float) : "Texcoord Length Start" : "0.0" + LengthTexcoordEnd(float) : "Texcoord Length End" : "1.0" + WidthTexcoordStart(float) : "Texcoord Width Start" : "0.0" + WidthTexcoordEnd(float) : "Texcoord Width End" : "1.0" + Width1(float) : "Width Land" : "25.0" + Width2(float) : "Width Water" : "25.0" + DebugDraw(integer) : "Show Debug" : 0 : "Boolean value (0 or 1)." +] + +@PointClass size(-4 -4 -4, 4 4 4) color(0 180 0) = info_intermission : + "An entity that defines an intermission spot where dead players will float until they respawn." +[ + target(target_destination) : "Entity to look at" : : "Name of entity that dead players will face while in intermission at this spot." +] + +@PointClass base(Targetname) iconsprite("editor/info_landmark") = info_landmark : + "An entity that acts as a landmark for transitions to another level. There should be a corresponding info_landmark entity in the next map. Entities will be transitioned to the next level relative to the info_landmark entities." +[ +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_null : + "An entity that's immediately removed on spawning. Useful as a spotlight target." +[ +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/info_target.vmt") = info_target : + "An entity that does nothing. Very useful as a positioning entity for other entities to refer to (i.e. the endpoint of an env_beam)" +[ + spawnflags( Flags ) = + [ + 1 : "Transmit to client" : 0 + ] +] + +@PointClass base(Targetname, Parentname, Angles) studio("models/editor/cone_helper.mdl") line(255 255 255, targetname, cpoint1) line(255 255 255, targetname, cpoint2) line(255 255 255, targetname, cpoint3) line(255 255 255, targetname, cpoint4) line(255 255 255, targetname, cpoint5) line(255 255 255, targetname, cpoint6) line(255 255 255, targetname, cpoint7) line(255 255 255, targetname, cpoint8) line(255 255 255, targetname, cpoint9) line(255 255 255, targetname, cpoint10) line(255 255 255, targetname, cpoint11) line(255 255 255, targetname, cpoint12) line(255 255 255, targetname, cpoint13) line(255 255 255, targetname, cpoint14) line(255 255 255, targetname, cpoint15) line(255 255 255, targetname, cpoint16) line(255 255 255, targetname, cpoint17) line(255 255 255, targetname, cpoint18) line(255 255 255, targetname, cpoint19) line(255 255 255, targetname, cpoint20) line(255 255 255, targetname, cpoint21) line(255 255 255, targetname, cpoint22) line(255 255 255, targetname, cpoint23) line(255 255 255, targetname, cpoint24) line(255 255 255, targetname, cpoint25) line(255 255 255, targetname, cpoint26) line(255 255 255, targetname, cpoint27) line(255 255 255, targetname, cpoint28) line(255 255 255, targetname, cpoint29) line(255 255 255, targetname, cpoint30) line(255 255 255, targetname, cpoint31) line(255 255 255, targetname, cpoint32) line(255 255 255, targetname, cpoint33) line(255 255 255, targetname, cpoint34) line(255 255 255, targetname, cpoint35) line(255 255 255, targetname, cpoint36) line(255 255 255, targetname, cpoint37) line(255 255 255, targetname, cpoint38) line(255 255 255, targetname, cpoint39) line(255 255 255, targetname, cpoint40) line(255 255 255, targetname, cpoint41) line(255 255 255, targetname, cpoint42) line(255 255 255, targetname, cpoint43) line(255 255 255, targetname, cpoint44) line(255 255 255, targetname, cpoint45) line(255 255 255, targetname, cpoint46) line(255 255 255, targetname, cpoint47) line(255 255 255, targetname, cpoint48) line(255 255 255, targetname, cpoint49) line(255 255 255, targetname, cpoint50) line(255 255 255, targetname, cpoint51) line(255 255 255, targetname, cpoint52) line(255 255 255, targetname, cpoint53) line(255 255 255, targetname, cpoint54) line(255 255 255, targetname, cpoint55) line(255 255 255, targetname, cpoint56) line(255 255 255, targetname, cpoint57) line(255 255 255, targetname, cpoint58) line(255 255 255, targetname, cpoint59) line(255 255 255, targetname, cpoint60) line(255 255 255, targetname, cpoint61) line(255 255 255, targetname, cpoint62) line(255 255 255, targetname, cpoint63) = info_particle_system : + "An entity that spawns a particle system built using the particle editor." +[ + effect_name(string) : "Particle System Name" + start_active(choices) : "Start Active?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + flag_as_weather(choices) : "Flag as Weather?" : 0 : "Is this particle system going to be used as a weather effect?" = + [ + 0 : "No" + 1 : "Yes" + ] + + cpoint1(target_destination) : "Control Point 1" : : "If set, control point 1 of the effect will be at this entity's location." + cpoint2(target_destination) : "Control Point 2" : : "If set, control point 2 of the effect will be at this entity's location. If control point 1 is not set, this will be ignored." + cpoint3(target_destination) : "Control Point 3" : : "If set, control point 3 of the effect will be at this entity's location. If control point 2 is not set, this will be ignored." + cpoint4(target_destination) : "Control Point 4" : : "If set, control point 4 of the effect will be at this entity's location. If control point 3 is not set, this will be ignored." + cpoint5(target_destination) : "Control Point 5" : : "If set, control point 5 of the effect will be at this entity's location. If control point 4 is not set, this will be ignored." + cpoint6(target_destination) : "Control Point 6" : : "If set, control point 6 of the effect will be at this entity's location. If control point 5 is not set, this will be ignored." + cpoint7(target_destination) : "Control Point 7" : : "If set, control point 7 of the effect will be at this entity's location. If control point 6 is not set, this will be ignored." + cpoint8(target_destination) : "Control Point 8" : : "If set, control point 8 of the effect will be at this entity's location. If control point 7 is not set, this will be ignored." + cpoint9(target_destination) : "Control Point 9" : : "If set, control point 9 of the effect will be at this entity's location. If control point 8 is not set, this will be ignored." + cpoint10(target_destination) : "Control Point 10" : : "If set, control point 10 of the effect will be at this entity's location. If control point 9 is not set, this will be ignored." + cpoint11(target_destination) : "Control Point 11" : : "If set, control point 11 of the effect will be at this entity's location. If control point 10 is not set, this will be ignored." + cpoint12(target_destination) : "Control Point 12" : : "If set, control point 12 of the effect will be at this entity's location. If control point 11 is not set, this will be ignored." + cpoint13(target_destination) : "Control Point 13" : : "If set, control point 13 of the effect will be at this entity's location. If control point 12 is not set, this will be ignored." + cpoint14(target_destination) : "Control Point 14" : : "If set, control point 14 of the effect will be at this entity's location. If control point 13 is not set, this will be ignored." + cpoint15(target_destination) : "Control Point 15" : : "If set, control point 15 of the effect will be at this entity's location. If control point 14 is not set, this will be ignored." + cpoint16(target_destination) : "Control Point 16" : : "If set, control point 16 of the effect will be at this entity's location. If control point 15 is not set, this will be ignored." + cpoint17(target_destination) : "Control Point 17" : : "If set, control point 17 of the effect will be at this entity's location. If control point 16 is not set, this will be ignored." + cpoint18(target_destination) : "Control Point 18" : : "If set, control point 18 of the effect will be at this entity's location. If control point 17 is not set, this will be ignored." + cpoint19(target_destination) : "Control Point 19" : : "If set, control point 19 of the effect will be at this entity's location. If control point 18 is not set, this will be ignored." + cpoint20(target_destination) : "Control Point 20" : : "If set, control point 20 of the effect will be at this entity's location. If control point 19 is not set, this will be ignored." + cpoint21(target_destination) : "Control Point 21" : : "If set, control point 21 of the effect will be at this entity's location. If control point 10 is not set, this will be ignored." + cpoint22(target_destination) : "Control Point 22" : : "If set, control point 22 of the effect will be at this entity's location. If control point 21 is not set, this will be ignored." + cpoint23(target_destination) : "Control Point 23" : : "If set, control point 23 of the effect will be at this entity's location. If control point 22 is not set, this will be ignored." + cpoint24(target_destination) : "Control Point 24" : : "If set, control point 24 of the effect will be at this entity's location. If control point 23 is not set, this will be ignored." + cpoint25(target_destination) : "Control Point 25" : : "If set, control point 25 of the effect will be at this entity's location. If control point 24 is not set, this will be ignored." + cpoint26(target_destination) : "Control Point 26" : : "If set, control point 26 of the effect will be at this entity's location. If control point 25 is not set, this will be ignored." + cpoint27(target_destination) : "Control Point 27" : : "If set, control point 27 of the effect will be at this entity's location. If control point 26 is not set, this will be ignored." + cpoint28(target_destination) : "Control Point 28" : : "If set, control point 28 of the effect will be at this entity's location. If control point 27 is not set, this will be ignored." + cpoint29(target_destination) : "Control Point 29" : : "If set, control point 29 of the effect will be at this entity's location. If control point 28 is not set, this will be ignored." + cpoint30(target_destination) : "Control Point 30" : : "If set, control point 30 of the effect will be at this entity's location. If control point 29 is not set, this will be ignored." + cpoint31(target_destination) : "Control Point 31" : : "If set, control point 31 of the effect will be at this entity's location. If control point 30 is not set, this will be ignored." + cpoint32(target_destination) : "Control Point 32" : : "If set, control point 32 of the effect will be at this entity's location. If control point 31 is not set, this will be ignored." + cpoint33(target_destination) : "Control Point 33" : : "If set, control point 33 of the effect will be at this entity's location. If control point 32 is not set, this will be ignored." + cpoint34(target_destination) : "Control Point 34" : : "If set, control point 34 of the effect will be at this entity's location. If control point 33 is not set, this will be ignored." + cpoint35(target_destination) : "Control Point 35" : : "If set, control point 35 of the effect will be at this entity's location. If control point 34 is not set, this will be ignored." + cpoint36(target_destination) : "Control Point 36" : : "If set, control point 36 of the effect will be at this entity's location. If control point 35 is not set, this will be ignored." + cpoint37(target_destination) : "Control Point 37" : : "If set, control point 37 of the effect will be at this entity's location. If control point 36 is not set, this will be ignored." + cpoint38(target_destination) : "Control Point 38" : : "If set, control point 38 of the effect will be at this entity's location. If control point 37 is not set, this will be ignored." + cpoint39(target_destination) : "Control Point 39" : : "If set, control point 39 of the effect will be at this entity's location. If control point 38 is not set, this will be ignored." + cpoint40(target_destination) : "Control Point 40" : : "If set, control point 40 of the effect will be at this entity's location. If control point 39 is not set, this will be ignored." + cpoint41(target_destination) : "Control Point 41" : : "If set, control point 41 of the effect will be at this entity's location. If control point 40 is not set, this will be ignored." + cpoint42(target_destination) : "Control Point 42" : : "If set, control point 42 of the effect will be at this entity's location. If control point 41 is not set, this will be ignored." + cpoint43(target_destination) : "Control Point 43" : : "If set, control point 43 of the effect will be at this entity's location. If control point 42 is not set, this will be ignored." + cpoint44(target_destination) : "Control Point 44" : : "If set, control point 44 of the effect will be at this entity's location. If control point 43 is not set, this will be ignored." + cpoint45(target_destination) : "Control Point 45" : : "If set, control point 45 of the effect will be at this entity's location. If control point 44 is not set, this will be ignored." + cpoint46(target_destination) : "Control Point 46" : : "If set, control point 46 of the effect will be at this entity's location. If control point 45 is not set, this will be ignored." + cpoint47(target_destination) : "Control Point 47" : : "If set, control point 47 of the effect will be at this entity's location. If control point 46 is not set, this will be ignored." + cpoint48(target_destination) : "Control Point 48" : : "If set, control point 48 of the effect will be at this entity's location. If control point 47 is not set, this will be ignored." + cpoint49(target_destination) : "Control Point 49" : : "If set, control point 49 of the effect will be at this entity's location. If control point 48 is not set, this will be ignored." + cpoint50(target_destination) : "Control Point 50" : : "If set, control point 50 of the effect will be at this entity's location. If control point 49 is not set, this will be ignored." + cpoint51(target_destination) : "Control Point 51" : : "If set, control point 51 of the effect will be at this entity's location. If control point 50 is not set, this will be ignored." + cpoint52(target_destination) : "Control Point 52" : : "If set, control point 52 of the effect will be at this entity's location. If control point 51 is not set, this will be ignored." + cpoint53(target_destination) : "Control Point 53" : : "If set, control point 53 of the effect will be at this entity's location. If control point 52 is not set, this will be ignored." + cpoint54(target_destination) : "Control Point 54" : : "If set, control point 54 of the effect will be at this entity's location. If control point 53 is not set, this will be ignored." + cpoint55(target_destination) : "Control Point 55" : : "If set, control point 55 of the effect will be at this entity's location. If control point 54 is not set, this will be ignored." + cpoint56(target_destination) : "Control Point 56" : : "If set, control point 56 of the effect will be at this entity's location. If control point 55 is not set, this will be ignored." + cpoint57(target_destination) : "Control Point 57" : : "If set, control point 57 of the effect will be at this entity's location. If control point 56 is not set, this will be ignored." + cpoint58(target_destination) : "Control Point 58" : : "If set, control point 58 of the effect will be at this entity's location. If control point 57 is not set, this will be ignored." + cpoint59(target_destination) : "Control Point 59" : : "If set, control point 59 of the effect will be at this entity's location. If control point 58 is not set, this will be ignored." + cpoint60(target_destination) : "Control Point 60" : : "If set, control point 60 of the effect will be at this entity's location. If control point 59 is not set, this will be ignored." + cpoint61(target_destination) : "Control Point 61" : : "If set, control point 61 of the effect will be at this entity's location. If control point 60 is not set, this will be ignored." + cpoint62(target_destination) : "Control Point 62" : : "If set, control point 62 of the effect will be at this entity's location. If control point 61 is not set, this will be ignored." + cpoint63(target_destination) : "Control Point 63" : : "If set, control point 63 of the effect will be at this entity's location. If control point 62 is not set, this will be ignored." + + cpoint1_parent(integer) : "Control Point 1's Parent" : 0 : "If set and nonzero, control point 1 of the effect will use this point for its parent." + cpoint2_parent(integer) : "Control Point 2's Parent" : 0 : "If set and nonzero, control point 2 of the effect will use this point for its parent." + cpoint3_parent(integer) : "Control Point 3's Parent" : 0 : "If set and nonzero, control point 3 of the effect will use this point for its parent." + cpoint4_parent(integer) : "Control Point 4's Parent" : 0 : "If set and nonzero, control point 4 of the effect will use this point for its parent." + cpoint5_parent(integer) : "Control Point 5's Parent" : 0 : "If set and nonzero, control point 5 of the effect will use this point for its parent." + cpoint6_parent(integer) : "Control Point 6's Parent" : 0 : "If set and nonzero, control point 6 of the effect will use this point for its parent." + cpoint7_parent(integer) : "Control Point 7's Parent" : 0 : "If set and nonzero, control point 7 of the effect will use this point for its parent." + + // Inputs + input Start(void) : "Tell the particle system to start emitting." + input Stop(void) : "Tell the particle system to stop emitting." +] + + +@PointClass base(Targetname, EnableDisable, Parentname, Angles) iconsprite("editor/info_target.vmt") sphere(radius) = phys_ragdollmagnet : + "An entity that acts like a magnet for ragdolls. Useful for crafting exaggerated ragdoll behavior (i.e. guys falling over rails on death). If the "+ + "Bar Magnet spawnflag is set, the magnet works like it was a cylindrical magnet i.e. it attracts ragdolls to the nearest point on a line." +[ + axis(vecline) : "Bar Magnet Axis" + radius(float) : "Effective Radius" : "512" : "Radius in which ragdolls are affected around this entity's origin." + force(float) : "Force" : "5000" : "Magnetic force to apply to ragdolls within the radius. Expressed as kilograms per inch per second. So a force of 1000 will add 10 inches/second to a 100kg man. It will add 100 inches per second to a 10kg headcrab." + + target(string) : "Entity to affect" : "" : "If specified, the phys_ragdollmagnet will only affect the target entity." + + spawnflags( Flags ) = + [ + 2 : "Bar Magnet (use axis helper)" : 0 + ] +] + +@PointClass base(Targetname) iconsprite("editor/info_lighting.vmt") = info_lighting : + "An entity that can be used to change the lighting origin of a prop_static. Set the prop_static's Lighting Origin to point at this entity to "+ + "make the prop_static light as if it was at the info_lighting's origin. Good for prop_static entities that are embedded in world geometry (like rocks/windows/etc)." +[ +] + +// This is obsolete, info_target is all you need now. +@PointClass base(Targetname, Parentname, Angles, PlayerClass) studio("models/editor/playerstart.mdl") = info_teleport_destination : + "An entity that does nothing itself, but can be used to specify the destination for a trigger_teleport entity. An info_target can be used instead." +[ +] + + +//------------------------------------------------------------------------- +// +// Nodes and Hints +// +//------------------------------------------------------------------------- + +@PointClass base(Node) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node : + "A navigation node for ground moving NPCs. Navigation nodes are baked into the nodegraph so that NPCs can move " + + "to them. Ground nodes fall to the ground when they spawn." +[ + spawnflags(Flags) = + [ + 1 : "Force human permission" : 0 + 2 : "Force small_centered permission" : 0 + 4 : "Force wide_human permission" : 0 + 8 : "Force tiny permissiont" : 0 + 16 : "Force wide_short permission" : 0 + 32 : "Force medium permission" : 0 + 64 : "Force tiny_centered permission" : 0 + 128 : "Force large permission" : 0 + 256 : "Force large_centered permission" : 0 + 512 : "Keep editor position" : 0 + ] +] + +@PointClass base(Targetname, Angles, HintNode) studio("models/editor/ground_node_hint.mdl") color(232 219 8) = info_node_hint : + "A navigation node for ground moving NPCs that includes some context information for NPCs that are interested in it. The hint might " + + "indicate a window that could be looked out of, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " + + "so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " + + "the NPC should face to perform the hint behavior.\n\n" + + "It's important to understand the distinction between scripts, such as scripted_sequence and scripted_schedule, and info_hint entities. Scripts summon " + + "NPCs to specific cue points to play their parts, while hints provide context information to the AI that they use to perform their " + + "behaviors. Hints require code support in the NPC, while scripts are generic and may require only animations to play. Use a hint if the behavior is driven " + + "by the AI, use a script if the behavior is driven by the map." + +[ + // Outputs + output OnNPCStartedUsing(string) : "Fired when an NPC has reached this node and started using it. Passes along the NPC." + output OnNPCStoppedUsing(string) : "Fired when an NPC has stopped using this node. Passes along the NPC." +] + +@PointClass base(Node) studio("models/editor/air_node.mdl") color(232 171 8) = info_node_air : + "A navigation node for flying NPCs. Air navigation nodes are baked into the nodegraph so that NPCs can move " + + "to them. Air nodes do not fall to the ground when they spawn." +[ + nodeheight(integer) : "NodeHeight" : 0 +] + +@PointClass base(Angles, Targetname, HintNode) studio("models/editor/air_node_hint.mdl") color(232 171 8) line(255 255 255, nodeid, TargetNode) = info_node_air_hint : + "A navigation node for flying NPCs that includes some context information for NPCs that are interested in it. The hint might " + + "indicate a window that could be looked into, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " + + "so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " + + "the NPC should face to perform the hint behavior." + +[ + nodeheight(integer) : "NodeHeight" : 0 +] + +@PointClass base(Targetname, Angles, HintNode) studio("models/editor/node_hint.mdl") color(255 255 255) = info_hint : + "A hint that is not used for navigation. They don't go into the nodegraph, nor do they fall to the ground. Use these to provide " + + "some spatial context for NPCs, such as 'look here if you can't find the player' or 'throw rocks at this spot'." +[ +] + +@PointClass base(Targetname) color(220 180 0) size(-8 -8 -8, 8 8 8) line(255 255 255, nodeid, StartNode, nodeid, EndNode) = info_node_link : + "A dynamic connection between two navigation nodes. You specify the node IDs of the start and end nodes, and then you can use entity I/O " + + "to turn on and off the connection. This could be used to create or destroy a connection in the nodegraph because of some event in your map " + + "(a bridge being created/destroyed, etc)." +[ + StartNode(node_dest) : "Start node ID" : : "The node ID of one end of the node connection." + EndNode(node_dest) : "End node ID" : : "The node ID of one end of the node connection." + initialstate(choices) : "Initial State" : 1 = + [ + 0 : "Off" + 1 : "On" + ] + + linktype(choices) : "Type of Connection" : 1 = + [ + 1 : "Ground" + 2 : "Jump" + 4 : "Fly" + 8 : "Climb" + ] + AllowUse(string) : "Allow Pass When Off" : : "Entity or class to allow passage even when node is off" + InvertAllow(choices) : "Invert exclusion rules" : 0 : "Allowed entity is the only entity NOT allowed when this is set to 'yes'" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags( Flags ) = + [ + 1 : "Force human connect" : 0 + 2 : "Force small_centered connect" : 0 + 4 : "Force wide_human connect" : 0 + 8 : "Force tiny connect" : 0 + 16 : "Force wide_short connect" : 0 + 32 : "Force medium connect" : 0 + 64 : "Force tiny_centered connect" : 0 + 128 : "Force large connect" : 0 + 256 : "Force large_centered connect" : 0 + 512 : "Force medium_tall connect" : 0 + ] + + // Inputs + input TurnOn(void) : "Turn the link on." + input TurnOff(void) : "Turn the link off." +] + +@PointClass wirebox(mins, maxs) base(Targetname) = info_node_link_controller : + "An entity that controls all connections between nodes that intersect the controller's volume. "+ + "This allows for mass enabling/disabling of all node connections through a volume." +[ + mins(vector) : "Mins" : "-8 -32 -36" + maxs(vector) : "Maxs" : "8 32 36" + + initialstate(choices) : "Initial State" : 1 = + [ + 0 : "Off" + 1 : "On" + ] + useairlinkradius(choices) : "Use Larger Radius (for air links)" : 0 : "Set this to 'Yes' if this controller is intended to control air links. "+ + "Air links connect using a larger search radius so leaving this at 'No' might miss some air links." = + [ + 0 : "No" + 1 : "Yes" + ] + + AllowUse(string) : "Allow Pass When Off" : : "Entity or class to allow passage even when node is off" + InvertAllow(choices) : "Invert exclusion rules" : 0 : "Allowed entity is the only entity NOT allowed when this is set to 'yes'" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input TurnOn(void) : "Turn the link on." + input TurnOff(void) : "Turn the link off." + input SetAllowed(string) : "Change the allowed pass when off" + input SetInvert(integer) : "Change the invert exclusion rule" +] + +@PointClass sphere(radius) base(Targetname, Parentname) = info_radial_link_controller : + "This entity automatically severs node connections that pass through its radius. If it moves, it will restore those connections." +[ + radius(float) : "Radius (Use Helper!)" : 120 +] + +@PointClass base(Targetname, Angles, HintNode) studio("models/editor/climb_node.mdl") color(153 215 103) = info_node_climb : + "A climb-node for AI navigation. Only usable by NPCs that can climb." +[ +] + + +//------------------------------------------------------------------------- +// +// Lights +// +//------------------------------------------------------------------------- +@PointClass light() iconsprite("editor/light.vmt") base(Targetname, Light) sphere(_fifty_percent_distance) sphere(_zero_percent_distance) = light : + "An invisible omnidirectional lightsource." +[ + target(target_destination) : "Entity To Point At" : : "The name of an entity in the map that the spotlight will point at. This will override the spotlight's angles." + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] + _distance(integer) : "Maximum Distance" : 0 : "This is the distance that light is allowed to cast, in inches." +] + +@PointClass base(Angles) iconsprite("editor/light_env.vmt") = light_environment : + "Sets the color and angle of the light from the sun and sky." +[ + pitch(integer) : "Pitch" : 0 : "The downward pitch of the light from the sun. 0 is horizontal, -90 is straight down." + _light(color255) : "Brightness" : "255 255 255 200" + _ambient(color255) : "Ambient" : "255 255 255 20" + _lightHDR(color255) : "BrightnessHDR" : "-1 -1 -1 1" + _lightscaleHDR(float) : "BrightnessScaleHDR" : "1" : "Amount to scale the light by when compiling for HDR." + _ambientHDR(color255) : "AmbientHDR" : "-1 -1 -1 1" + _AmbientScaleHDR(float) : "AmbientScaleHDR" : "1" : "Amount to scale the ambient light by when compiling for hdr." + pitch(integer) : "Pitch" : 0 : "The downward pitch of the light from the sun. 0 is horizontal, -90 is straight down." + SunSpreadAngle(float) : "SunSpreadAngle" : 0 : "The angular extent of the sun for casting soft shadows. Higher numbers are more diffuse. 5 is a good starting value." +] + +@PointClass base(Targetname, Angles, Light) lightprop("models/editor/spot.mdl") lightcone() sphere(_fifty_percent_distance) sphere(_zero_percent_distance) = light_spot : + "An invisible and directional spotlight." +[ + target(target_destination) : "Entity to point at" : : "The name of an entity in the map that the spotlight will point at. This will override the spotlight's angles." + _inner_cone(integer) : "Inner (bright) angle" : 30 + _cone(integer) : "Outer (fading) angle" : 45 + _exponent(integer) : "Focus" : 1 + _distance(integer) : "Maximum distance" : 0 : "This is the distance that light is allowed to cast, in inches." + pitch(angle_negative_pitch) : "Pitch" : -90 + spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/light.vmt") sphere(distance) lightcone() size(-4 -4 -4, 4 4 4) = light_dynamic : + "An invisible lightsource that changes in some way over time." +[ + target(target_destination) : "Entity to point at" : : "The name of an entity in the map that the dynamic light will point at." + _light(color255) : "Light color" : "255 255 255 200" + brightness(integer) : "Light brightness" : 0 + _inner_cone(integer) : "Inner (bright) angle" : 30 + _cone(integer) : "Outer (fading) angle" : 45 + pitch(integer) : "Pitch" : -90 + distance(float) : "Maximum distance" : 120 : "This is the distance that light is allowed to cast, in inches." + spotlight_radius(float) : "Spotlight end radius" : 80 : "This is the radius of the light, in inches, at the object that it is hitting." + style(Choices) : "Appearance" : 0 = + [ + 0 : "Normal" + 10: "Fluorescent flicker" + 2 : "Slow, strong pulse" + 11: "Slow pulse, noblack" + 5 : "Gentle pulse" + 1 : "Flicker A" + 6 : "Flicker B" + 3 : "Candle A" + 7 : "Candle B" + 8 : "Candle C" + 4 : "Fast strobe" + 9 : "Slow strobe" + ] + spawnflags(Flags) = + [ + 1 : "Do not light world (better perf)" : 0 + 2 : "Do not light models" : 0 + 4 : "Add Displacement Alpha" : 0 + 8 : "Subtract Displacement Alpha" : 0 + ] + + // Inputs + input Color(color255) : "Set the light's render color (R G B)." + input brightness(integer) : "Set the light brightness." + input distance(float) : "Set the maximum light distance." + input _inner_cone(integer) : "Set the inner (bright) angle." + input _cone(integer) : "Set the outer (fading) angle." + input spotlight_radius(float) : "Set the radius of the spotlight at the end point." + input style(integer) : "Change the lightstyle (see Appearance field for possible values)." + + input TurnOn(void) : "Turn the light off." + input TurnOff(void) : "Turn the light on." + input Toggle(void) : "Toggle the light on/off." +] + + +//------------------------------------------------------------------------- +// Shadow control +//------------------------------------------------------------------------- + +@PointClass base(Targetname) iconsprite("editor/shadow_control.vmt") = shadow_control : + "An entity to control the shadows in the map." +[ + angles(string) : "Pitch Yaw Roll (Y Z X)" : "80 30 0" : "This is the shadow direction. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, and roll is the rotation around the X axis." + + color(color255) : "Shadow Color" : "128 128 128" : "This is the color of the shadows." + distance(float) : "Maximum Distance" : 75 : "This is the maximum distance the shadow is allowed to cast, in inches." + disableallshadows(Choices) : "All Shadows Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input color(color255) : "Set the shadow color." + input direction(vector) : "Set the shadow direction." + input SetDistance(float) : "Set the maximum shadow cast distance." + input SetAngles(string) : "Set the shadow direction." + input SetShadowsDisabled(integer) : "Set shadows disabled state." +] + + +//------------------------------------------------------------------------- +// Color correction control +//------------------------------------------------------------------------- + +@PointClass base(Targetname, EnableDisable) sphere(minfalloff) sphere(maxfalloff) iconsprite("editor/color_correction.vmt") = color_correction : + "An entity to control the color correction in the map." +[ + minfalloff(float) : "Lookup Falloff Start Distance" : "0.0" : "This is the distance to the start of the falloff region (-1 = everywhere)" + maxfalloff(float) : "Lookup Falloff End Distance" : "200.0" : "This is the distance to the end of the falloff region (-1 = everywhere)" + maxweight(float) : "Maximum Weight" : "1.0" : "This is the maximum weight for this lookup" + filename(string) : "Lookup Table Filename" : "" : "This is the lookup table filename" + fadeInDuration(float) : "Lookup Fade In Duration" : "0.0" : "Duration of fade in on when enabled." + fadeOutDuration(float) : "Lookup Fade out Duration" : "0.0" : "Dration of fade out on when disabled." + + // Inputs + input SetFadeInDuration(float) : "Sets the 'fadeInDuration' variable, used to fade cc lookup usage when entity is enabled." + input SetFadeOutDuration(float) : "Sets the 'fadeOutDuration' variable, used to fade cc lookup usage when entity is disabled." +] + + +//------------------------------------------------------------------------- +// Color correction volume control +//------------------------------------------------------------------------- + +@SolidClass base(Targetname, EnableDisable ) = color_correction_volume : + "An entity to control the color correction in the map." +[ + fadeDuration(float) : "Lookup Fade Duration" : "10.0" : "This is the duration for the lookup to fade in/out on extry/exit" + maxweight(float) : "Maximum Weight" : "1.0" : "This is the maximum weight for this lookup" + filename(string) : "Lookup Table Filename" : "" : "This is the lookup table filename" +] + + +//------------------------------------------------------------------------- +// +// Movement and Keyframing Entities +// +//------------------------------------------------------------------------- + +@BaseClass = KeyFrame +[ + NextKey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path." + +// TimeModifier(choices) : "Time Modifier" : 0 = +// [ +// 0 : "Linear" +// 1 : "Accel" +// 2 : "Deaccel" +// 2 : "Accel/Deaccel (sine)" +// ] + + MoveSpeed(integer) : "Speed (units per second)" : 64 // NEEDHELP +// NextTime(string) : "Time to get to next keyframe" +] + +@BaseClass = Mover +[ + PositionInterpolator(choices) : "Position Interpolator" : 0 = + [ + 0 : "Linear" + 1 : "Catmull-Rom Spline" + ] +] + +@SolidClass base(Targetname, Parentname, Origin, RenderFields) = func_movelinear : + "A brush entity that moves linearly along a given distance, in a given direction." +[ + movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction the brushes will move, when told to." + spawnflags(flags) = + [ + 8 : "Not Solid" : 0 + ] + + startposition(float) : "Start Position" : 0 : "Position of brush when spawned. The range is a value between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)." + speed(integer) : "Speed" : 100 : "The speed that the brush moves, in inches per second." + movedistance(float) : "Move Distance" : 100 : "The distance from the starting point that the brush should move, in inches." + blockdamage(float) : "Block Damage" : 0 : "The amount of damage to do to any entity that blocks the brushes, per frame." + startsound(sound) : "Sound played when the brush starts moving." + stopsound(sound) : "Sound played when the brush stops moving." + + // Inputs + input Open(void) : "Move the brush to the end position (starting position + (move direction * move distance))." + input Close(void) : "Move the brush to the starting position." + input SetPosition(string) : "Move the brush to a specific position between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)." + input SetSpeed(float) : "Set the speed and update immediately." + + // Outputs + output OnFullyOpen(void) : "Fired when the brush reaches the end position (starting position + (move direction * move distance))." + output OnFullyClosed(void) : "Fired when the brush reaches the starting position." +] + +@SolidClass base(Targetname, Parentname, Origin) = func_water_analog : + "A water brush entity that moves linearly along a given distance, in a given direction" +[ + movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction the water will move, when told to 'Open'." + startposition(float) : "Start Position" : 0 : "Position of the water brush when spawned. The range is a value between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)." + speed(integer) : "Speed" : 100 : "The speed that the water brush moves, in inches per second." + movedistance(float) : "Move Distance" : 100 : "The distance from the starting point that the water brush should move, in inches." + startsound(sound) : "Sound played when the water brush starts moving." + stopsound(sound) : "Sound played when the water brush stops moving." + WaveHeight(string) : "Wave Height" : "3.0" + + // Inputs + input Open(void) : "Move the water brush to the end position (starting position + (move direction * move distance))." + input Close(void) : "Move the water brush to the starting position." + input SetPosition(string) : "Move the water brush to a specific position between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)." + + // Outputs + output OnFullyOpen(void) : "Fired when the water brush reaches the end position (starting position + (move direction * move distance))." + output OnFullyClosed(void) : "Fired when the water brush reaches the starting position." +] + +@SolidClass base(Targetname, Parentname, Origin, Angles, RenderFields, Shadow) = func_rotating : + "A rotating brush entity." +[ + maxspeed(integer) : "Max Rotation Speed" : 100 : "The maximum rotation speed of the brushes, in degrees per second." + fanfriction(integer) : "Friction (0 - 100%)" : 20 : "The amount of rotational friction. Value must be between 0 and 100 %." + message(sound) : "Rotating sound WAV" : : "Sound to play while rotating." + volume(integer) : "Volume (10 = loudest)" : 10 : "The volume of the rotation sound." + spawnflags(flags) = + [ + 1 : "Start ON" : 0 + 2 : "Reverse Direction" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16: "Acc/Dcc" : 0 + 32: "Fan Pain" : 0 + 64: "Not Solid" : 0 + 128: "Small Sound Radius" : 0 + 256: "Medium Sound Radius" : 0 + 512: "Large Sound Radius" : 1 + ] + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + dmg(integer) : "Blocking Damage" : 0 : "Damage done to any entity that blocks the rotation, per frame." + + solidbsp(choices) : "Solid Type" : 0 = + [ + 0 : "VPhysics" + 1 : "BSP" + ] + + // Inputs + input SetSpeed(integer) : "Set the speed as a ratio of the specified Max Rotation Speed, where 0 is stopped and 1 is the Max Rotation Speed.." + input Start(void) : "Start the rotator rotating." + input Stop(void) : "Stop the rotator from rotating." + input StopAtStartPos(void) : "Stop the rotator from rotating when it gets around to the start position again (on its rotation axis)." + input StartForward(void) : "Start the rotator rotating forward." + input StartBackward(void) : "Start the rotator rotating backward." + input Toggle(void) : "Toggle the rotator between rotating and not rotating." + input Reverse(void) : "Reverse the direction of rotation of the rotator." +] + +@SolidClass base(Targetname, Parentname, Origin, Angles, RenderFields, BasePlat, Shadow) = func_platrot : + "A brush entity that moves vertically, and can rotate while doing so." +[ + spawnflags(Flags) = + [ + 1: "Toggle" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + noise1(sound) : "Movement Sound" : : "The sound to play when the brush moves." + noise2(sound) : "Stop Sound" : : "The sound to play when the brush stops moving." + speed(integer) : "Speed of Rotation" : 50 : "Speed at which the brush rotates, in degrees per second." + height(integer) : "Travel Altitude" : 0 : "The vertical distance from the starting position that this platform moves. If negative, the platform will lower." + rotation(integer) : "Spin amount" : 0 : "The amount this platform should rotate as it moves, in degrees." + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@KeyFrameClass base(Targetname, Parentname, Angles, KeyFrame) size(-6 -6 -6, 6 6 6) color(255 200 0) keyframe() = keyframe_track : + "Animation KeyFrame" +[ +] + +@MoveClass base(Targetname, Parentname, KeyFrame, Mover) size(-8 -8 -8, 8 8 8) color(255 170 0) animator() = move_keyframed : + "Keyframed Move Behavior" +[ +] + +@MoveClass base(Targetname, Parentname, Mover, KeyFrame) size(-8 -8 -8, 8 8 8) color(255 0 0) animator() = move_track : + "Track Move Behavior" +[ + WheelBaseLength(integer) : "Distance between the wheels" : 50 + Damage(integer) : "Damage done to blocking entities" : 0 + NoRotate(choices) : "Turn to face down path" : 0 = + [ + 0 : "Yes" + 1 : "No" + ] +] + +//------------------------------------------------------------------------- +// +// Ropes and Cables +// +//------------------------------------------------------------------------- +@BaseClass base(DXLevelChoice) = RopeKeyFrame +[ + spawnflags(Flags) = + [ + 1 : "Auto Resize" : 0 + ] + + Slack(integer) : "Slack" : 25 : "How much extra length the rope has (by default it has the length between its two endpoints in the editor)." + + Type(choices) : "Type" : 0 = + [ + 0 : "Rope" + 1 : "Semi-rigid" + 2 : "Rigid" + ] + + Subdiv(integer) : "Subdivision" : 2 : "Number of subdivisions between each rope segment. Maximum value is 8. Higher values make smoother ropes, but are slower to render." + + Barbed(choices) : "Barbed" : 0 : "Test effect that makes the rope look sharper and more barbed." = + [ + 0 : "No" + 1 : "Yes" + ] + + Width(string) : "Width (1-64)" : "2" : "Width of the rope." + + TextureScale(string) : "Texture Scale" : "1" : "This changes the texture resolution. The default resolution is 4 pixels per inch. Larger values stretch the texture and smaller values scrunch it up." + + Collide(choices) : "Collide with world" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + Dangling(choices) : "Start Dangling" : 0 : "When set to Yes, the rope starts out detached from its target endpoint." = + [ + 0 : "No" + 1 : "Yes" + ] + + Breakable(choices) : "Breakable" : 0 : "When set to yes, the rope can be detached from either endpoint when shot." = + [ + 0 : "No" + 1 : "Yes" + ] + + RopeMaterial(material) : "Rope Material" : "cable/cable.vmt" : "The material to use when rendering the rope." + + // Inputs + input SetScrollSpeed(float) : "Set the speed at which the texture scrolls." + input SetForce(string) : "Apply a force instantaneously to the rope. The parameter should be a vector containing the force to be applied (X Y Z)." + input Break(void) : "Break the rope, if it's marked to do so." + + NoWind(choices) : "Disable Wind" : 0 : "When set to Yes, the rope will no longer act as though it's being affected by wind." = + [ + 0 : "No" + 1 : "Yes" + ] + +] + +@KeyFrameClass base(Targetname, Parentname, KeyFrame, RopeKeyFrame) studio("models/editor/axis_helper_thick.mdl") keyframe() = keyframe_rope : + "A node entity that marks a point in a rope. The first node in the rope should be a move_rope, followed by 1 or more keyframe_ropes." +[ +] + +@MoveClass base(Targetname, Parentname, KeyFrame, RopeKeyFrame) studio("models/editor/axis_helper.mdl") animator() = move_rope : + "The first node in set of nodes that are used to place ropes in the world. It should connect to 1 or more keyframe_rope entities." +[ + PositionInterpolator(choices) : "Position Interpolator" : 2 : "Curve Type. Currently only type 2 (Rope) is fully supported." = + [ + 0 : "Linear" + 1 : "Catmull-Rom Spline" + 2 : "Rope" + ] +] + + +//------------------------------------------------------------------------- +// +// Buttons +// +//------------------------------------------------------------------------- + +@BaseClass = Button +[ + // Inputs + input Lock(void) : "Lock the button, preventing it from functioning." + input Unlock(void) : "Unlock the button, allowing it to function." + input Press(void) : "Activate the button as if it was pressed." + input PressIn(void) : "Activate the button as if it was pressed, sending it to the bottom position." + input PressOut(void) : "Unpress the button, sending it to the top position." + + // Outputs + output OnDamaged(void) : "Fired when the button is damaged." + output OnPressed(void) : "Fired when the button is pressed." + output OnUseLocked(void) : "Fired when the button is used while locked." + output OnIn(void) : "Fired when the button reaches the in/pressed position." + output OnOut(void) : "Fired when the button reaches the out/released position." +] + +@SolidClass base(Targetname, Parentname, Origin, RenderFields,DamageFilter, Button) = func_button : + "A brush entity that's designed to be used for a player-useable button. When used by the player, it moves to a pressed position." +[ + movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "Specifies the direction of motion to move when the button is used." + speed(integer) : "Speed" : 5 : "The speed that the button moves, in inches per second." + health(integer) : "Health (Obsolete)" : 0 : "Legacy method of specifying whether or not the button can be shot to activate it. Use the 'Damage Activates' spawnflag instead." + lip(integer) : "Lip" : 0 : "The amount, in inches, of the button to leave sticking out of the wall it recedes into when pressed. Negative values make the button recede even further into the wall." + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be pressed." + sounds(choices) : "Sounds" : 0 = + [ + 0: "None (Silent)" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 11: "Buzz Off" + 12: "latch locked" + 13: "Latch Unlocked" + 14: "Lightswitch" + 15: "small bleek" + 16: "small deny" + 17: "small doop" + 18: "small tech deny" + 19: "click and combine screen fuzz" + 20: "roomy beep" + 21: "lever or wheel: turn + move sqeek" + 22: "lever or wheel: latch + release gas" + 23: "lever or wheel: ratchet + sqeek" + 24: "lever or wheel: large ratchet" + 25: "lever or wheel: clanky + gas release" + 26: "lever or wheel: latch + large metal thud" + 27: "lever or wheel: smaller ratchet" + 28: "lever or wheel: smaller lever move" + 31: "shock buzz" + 32: "clickbeep" + 33: "tech blip" + 34: "clickbeepbeep open" + 35: "small high blip" + 36: "small tech fuzz blip" + 37: "small click bleep (change to lightswitch)" + 40: "combine door lock - locked" + 41: "combine blip growl" + 42: "combine squick growl" + 43: "combine whine purr" + 44: "combine click talk" + 45: "combine click growl fizz" + 46: "combine click fizz (deny)" + 47: "combine click talker" + ] + wait(integer) : "Delay Before Reset (-1 stay)" : 3 : "Amount of time, in seconds, after the button has been pressed before it returns to the starting position. Once it has returned, it can be used again. If the value is set to -1, the button never returns." + spawnflags(flags) = + [ + 1: "Don't move" : 0 + 32: "Toggle" : 0 + 256: "Touch Activates": 0 + 512: "Damage Activates": 0 + 1024: "Use Activates" : 1 + 2048: "Starts locked" : 0 + 4096: "Sparks" : 0 + ] + locked_sound(choices) : "Locked Sound" : 0 : "Sound played when the player tries to use the button, and fails because it's locked." = + [ + 0: "None" + 2: "Access Denied" + 8: "Small zap" + 10: "Buzz" + 11: "Buzz Off" + 12: "Latch Locked" + ] + unlocked_sound(choices) : "Unlocked Sound" : 0 : "Sound played when the button is unlocked." = + [ + 0: "None" + 1: "Big zap & Warmup" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 10: "Buzz" + 13: "Latch Unlocked" + 14: "Lightswitch" + ] + locked_sentence(choices) : "Locked Sentence" : 0 : "A sentence played when the player tries to use the button, and fails because it's locked." = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 : "A sentence played when the button is unlocked." = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@SolidClass base(Targetname, Parentname, Origin, Angles, Global, Button, EnableDisable) = func_rot_button : + "A brush entity that's designed to be used for a rotating player-useable button. When used by the player, it rotates to a pressed position." +[ + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used." + speed(integer) : "Speed" : 50 : "The speed that the button rotates, in degrees per second." + health(integer) : "Health (Obsolete)" : 0 : "Legacy method of specifying whether or not the button can be shot to activate it. Use the 'Damage Activates' spawnflag instead." + sounds(choices) : "Sounds" : 21 = + [ + 0: "None (Silent)" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + wait(integer) : "Delay Before Reset (-1 stay)" : 3 : "Amount of time, in seconds, after the button has been pressed before it returns to the starting position. Once it has returned, it can be used again. If the value is set to -1, the button never returns." + distance(integer) : "Distance (deg)" : 90 : "The amount, in degrees, that the button should rotate when it's pressed." + // TODO: move spawnflags into Button base class? + spawnflags(flags) = + [ + 1 : "Not solid" : 0 + 2 : "Reverse Dir" : 0 + 32: "Toggle" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 256: "Touch Activates": 0 + 512: "Damage Activates": 0 + 1024: "Use Activates": 0 + 2048: "Starts locked" : 0 + ] + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@SolidClass base(Targetname, Parentname, Origin, Angles, RenderFields) = momentary_rot_button : + "A brush entity that's designed to be used for rotating wheels, where the player can rotate them to arbitrary positions before stopping." +[ + speed(integer) : "Speed (deg/sec)" : 50 : "The amount, in degrees, that the wheel turns per second." + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used." + sounds(choices) : "Sounds" : 0 = + [ + 0: "None" + 1: "Big zap & Warmup" + 2: "Access Denied" + 3: "Access Granted" + 4: "Quick Combolock" + 5: "Power Deadbolt 1" + 6: "Power Deadbolt 2" + 7: "Plunger" + 8: "Small zap" + 9: "Keycard Sound" + 21: "Squeaky" + 22: "Squeaky Pneumatic" + 23: "Ratchet Groan" + 24: "Clean Ratchet" + 25: "Gas Clunk" + ] + distance(integer) : "Distance" : 90 : "The maximum amount, in degrees, that the wheel is allowed to rotate." + returnspeed(integer) : "Auto-return speed" : 0 : "If the 'Toggle' spawnflag is not set, the speed at which the wheel auto-returns when left alone, in degrees per second." + spawnflags(flags) = + [ + 1: "Not Solid" : 1 + 32: "Toggle (Disable Auto Return)" : 1 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 1024: "Use Activates" : 1 + 2048: "Starts locked" : 0 + 8192: "Jiggle when used while locked" : 0 + ] + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + startposition(float) : "Start Position" : 0 : "Postion when spawned. The value is a range between 0.0 and 1.0, where 0 is the unrotated position and 1 is the rotated position + 'Distance'." + startdirection(choices) : "Start Direction" : "Forward" = + [ + -1 : "Forward" // Reverses upon USE, so are + 1 : "Backward" // reversed here. + ] + solidbsp(choices) : "Solid BSP" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Lock(void) : "Lock the button, preventing it from functioning." + input Unlock(void) : "Unlock the button, allowing it to function." + input SetPosition(string) : "Move to a position. The parameter must be a value between 0 and 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'." + input SetPositionImmediately(string) : "Immediately teleport to a position. The parameter must be a value between 0 and 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'." + + // Outputs + output Position(integer) : "Fired whenever the button moves. The output is the position of button from 0 to 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'." + output OnPressed(integer) : "Fired when the button is first pressed." + output OnUnpressed(integer): "Fired when the button is first released from being pressed." + output OnFullyClosed(void) : "Fired when the button has reached position 1, the rotated position + 'Distance'." + output OnFullyOpen(void) : "Fired when the button has reached position 0, the unrotated starting position." + output OnReachedPosition(void) : "Fired whenever the button reaches a goal position: i.e. when it becomes open, becomes closed, or reaches the point specified by a 'SetPosition' input." +] + + +//------------------------------------------------------------------------- +// +// Doors +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname, Parentname, RenderFields, Global, Shadow) = Door +[ + speed(integer) : "Speed" : 100 : "The speed at which the door moves." + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used." + noise1(sound) : "Start Sound" : : "Sound to play when the door starts moving." + noise2(sound) : "Stop Sound" : : "Sound to play when the door stops moving." + startclosesound(sound) : "Start Close Sound" : : "(Optional) Sound to play when the door starts closing." + closesound(sound) : "Stop Close Sound" : : "(Optional) Sound to play when the door stops closing." + wait(integer) : "Delay Before Reset (-1 stay)" : 4 : "Amount of time, in seconds, after the door has opened before it closes. Once it has closed, it can be used again. If the value is set to -1, the door never closes itself." + lip(integer) : "Lip" : 0 : "The amount, in inches, of the button to leave sticking out of the wall it recedes into when pressed. Negative values make the button recede even further into the wall." + dmg(integer) : "Blocking Damage" : 0 : "Amount of damage done to entities that block the movement of this door, per frame." + forceclosed(choices) : "Force Closed" : 0 : "If set, this door will close no matter what. Useful for doors that have to close even if the player tries to block them with objects." = + [ + 0 : "No" + 1 : "Yes" + ] + ignoredebris(choices) : "Ignore Debris" : 0 : "If set this will change the door's collision group to one that ignore collisions with debris objects (note that this is not compatible with the non-solid-to-player spawnflag)." = + [ + 0 : "No" + 1 : "Yes" + ] + + message(string) : "Message If Triggered" // NEEDHELP: Looks like this was removed + health(integer) : "Health (shoot open)" : 0 // NEEDHELP: Looks like this was removed + + locked_sound(sound) : "Locked Sound" : : "Sound played when the player tries to use the door, and fails because it's locked." + unlocked_sound(sound) : "Unlocked Sound" : : "Sound played when the button is door." + + spawnpos(choices) : "Spawn Position" : 0 = + [ + 0 : "Closed" + 1 : "Open" + ] + + spawnflags(flags) = + [ + 1 : "Starts Open - OBSOLETE, use 'Spawn Position' key instead" : 0 + 4 : "Non-solid to Player" : 0 + 8: "Passable" : 0 + 32: "Toggle" : 0 + 256:"Use Opens" : 0 + 512: "NPCs Can't" : 0 + 1024: "Touch Opens" : 1 + 2048: "Starts locked" : 0 + 4096: "Door Silent" : 0 + ] + locked_sentence(choices) : "Locked Sentence" : 0 : "A sentence played when the player tries to use the door, and fails because it's locked." = + [ + 0: "None" + 1: "Gen. Access Denied" + 2: "Security Lockout" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance Door" + 9: "Broken Shut Door" + ] + unlocked_sentence(choices) : "Unlocked Sentence" : 0 : "A sentence played when the door is unlocked." = + [ + 0: "None" + 1: "Gen. Access Granted" + 2: "Security Disengaged" + 3: "Blast Door" + 4: "Fire Door" + 5: "Chemical Door" + 6: "Radiation Door" + 7: "Gen. Containment" + 8: "Maintenance area" + ] + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + loopmovesound(choices) : "Loop Moving Sound?" : 0 : "If set to true, the door's 'Start Sound' will be continually looped until the door finishes moving." = + [ + 0: "No" + 1: "Yes" + ] + + // Outputs + output OnClose(void) : "Fired when the door starts closing." + output OnOpen(void) : "Fired when the door starts opening." + output OnFullyOpen(void) : "Fired when the door reaches the fully open position. Reversed if 'Start Open' flag is set." + output OnFullyClosed(void) : "Fired when the door reaches the fully closed position. Reversed if 'Start Open' flag is set." + output OnBlockedClosing(void) : "Fired when the door is blocked while closing." + output OnBlockedOpening(void) : "Fired when the door is blocked while opening." + output OnUnblockedClosing(void) : "Fired when the door is unblocked while closing." + output OnUnblockedOpening(void) : "Fired when the door is unblocked while opening." + output OnLockedUse(void) : "Fired when the player uses the door, but it is locked." + + // Inputs + input Open(void) : "Open the door, if it is not fully open." + input Close(void) : "Close the door, if it is not fully closed." + input Toggle(void) : "Toggle the door between open and closed." + input Lock(void) : "Lock the door." + input Unlock(void) : "Unlock the door." + input SetSpeed(float) : "Set the door speed." +] + +@SolidClass base(Door, Origin) = func_door : + "A brush entity for use as a player-useable door." +[ + movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction the door will move, when it opens." + + filtername(filterclass) : "Block Filter Name" : : "Filter to use to determine entities that block the door. ( Half-Life: Source port only )" +] + +@SolidClass base(Door, Origin, Angles) = func_door_rotating : + "A brush entity for use as a rotating player-useable door." +[ + spawnflags(flags) = + [ + 2 : "Reverse Dir" : 0 + 16: "One-way" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + 65536: "New func_door +USE rules (NOT for prop_doors!!)" : 0 + ] + distance(integer) : "Distance" : 90 : "The amount, in degrees, that the button should rotate when it's pressed." + + solidbsp(choices) : "Solid Type" : 0 = + [ + 0 : "VPhysics" + 1 : "BSP" + ] +] + +@PointClass base(Targetname, Parentname, Angles, Global, Studiomodel) studioprop() = prop_door_rotating : + "An entity used to place a door in the world." +[ + slavename(target_destination) : "Slave Name" : : "The name of any doors that should be slaved to this door (i.e. should open when this one opens, and close when this one closes)." + hardware(choices) : "Hardware Type" : 1 = + [ + 0 : "" + 1 : "Lever" + 2 : "Push bar" + 3 : "Keypad" + ] + + ajarangles(angle) : "Ajar Angles (Pitch Yaw Roll)" : "0 0 0" : "If the door 'Spawn Position' is set to Ajar, these are the angles to spawn at, instead of being open or closed." + spawnpos(choices) : "Spawn Position" : 0 = + [ + 0 : "Closed" + 1 : "Open forward" + 2 : "Open back" + 3 : "Ajar (use Ajar Angles)" + ] + + axis(axis) : "Hinge Axis" + distance(float) : "Rotation Distance (deg)" : 90 : "The amount, in degrees, that the door should rotate when opened." + speed(integer) : "Speed" : 100 : "The speed at which the door moves." + soundopenoverride(sound) : "Fully Open Sound" : : "Sound played when the door has finished opening." + soundcloseoverride(sound) : "Fully Closed Sound" : : "Sound played when the door has finished closing." + soundmoveoverride(sound) : "Moving Sound" : : "Sound played when the door starts to move." + returndelay(integer) : "Delay Before close (-1 stay open)" : -1 : "Amount of time, in seconds, after the door has opened before it closes. If the value is set to -1, the door never closes itself." + dmg(integer) : "Damage Inflicted When Blocked" : 0 : "Amount of damage done to entities that block the movement of this door, per frame." + health(integer) : "Health (0 = Unbreakable)" : 0 // NEEDHELP: Doesn't look like this is hooked up anymore? + soundlockedoverride(sound) : "Locked Sound" : : "Sound played when the player tries to open the door, and fails because it's locked." + soundunlockedoverride(sound) : "Unlocked Sound" : : "Sound played when the door is unlocked." + + forceclosed(choices) : "Force Closed" : 0 : "If set, this door will close no matter what. Useful for doors that have to close even if the player tries to block them with objects." = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(flags) = + [ + 1 : "Starts Open" : 0 + //512: "NPCs Can't" : 0 + 2048: "Starts locked" : 0 + 4096: "Door silent (No sound, and does not alert NPCs)" : 0 + 8192: "Use closes" : 1 + 16384 : "Door silent to NPCS (Does not alert NPCs)" : 0 + 32768 : "Ignore player +USE" : 0 + ] + + opendir(choices) : "Open Direction" : 0 : "Force the door to open only forwards or only backwards. Both directions is the standard door behavior." = + [ + 0 : "Open Both Directions" + 1 : "Open Forward Only" + 2 : "Open Backward Only" + ] + + // Outputs + output OnClose(void) : "Fired when the door is told to close." + output OnOpen(void) : "Fired when the door is told to open." + output OnFullyOpen(void) : "Fired when the door reaches the fully open position." + output OnFullyClosed(void) : "Fired when the door reaches the fully closed position." + output OnBlockedClosing(void) : "Fired when the door is blocked while closing." + output OnBlockedOpening(void) : "Fired when the door is blocked while opening." + output OnUnblockedClosing(void) : "Fired when the door is unblocked while closing." + output OnUnblockedOpening(void) : "Fired when the door is unblocked while opening." + output OnLockedUse(void) : "Fired when the player uses the door, but it is locked." + + // Inputs + input Open(void) : "Open the door, if it is not fully open." + input OpenAwayFrom(string) : "Open the door away from the specified entity." + input Close(void) : "Close the door, if it is not fully closed." + input Toggle(void) : "Toggle the door between open and closed." + input Lock(void) : "Lock the door." + input Unlock(void) : "Unlock the door." + input SetRotationDistance(float) : "Set the distance (in degrees) between Open and Closed." + input SetSpeed(float) : "Set the speed at which the door rotates. 100 is default." +] + + +//------------------------------------------------------------------------- +// +// Cube map sample +// +//------------------------------------------------------------------------- + +@PointClass color(0 0 255) sidelist(sides) iconsprite("editor/env_cubemap.vmt") = env_cubemap : + "An entity that creates a sample point for the Cubic Environment Map." +[ + cubemapsize(choices) : "Cubemap Size" : 0 = + [ + 0 : "Default" + 1 : "1x1" + 2 : "2x2" + 3 : "4x4" + 4 : "8x8" + 5 : "16x16" + 6 : "32x32" + 7 : "64x64" + 8 : "128x128" + 9 : "256x256" + ] + sides(sidelist) : "Brush faces": : "(Optional) Brushes faces to directly attach to the env_cubemap. Press Pick then click on faces in the 3D View to select them. Use CTRL while clicking to add or remove from the selection." +] + +@BaseClass = BModelParticleSpawner +[ + StartDisabled(choices) : "Start Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + Color(color255) : "Particle Color (R G B)" : "255 255 255" + SpawnRate(integer) : "Particle Per Second" : 40 : "Number of particles to spawn, per second." + SpeedMax(string) : "Maximum Particle Speed" : 13 : "Maximum speed that the particles can move after spawning." + LifetimeMin(string) : "Minimum Particle Lifetime" : 3 : "Minimum number of seconds until each particle dies. Particles live for a random duration between this and 'Maximum Particle Lifetime'." + LifetimeMax(string) : "Maximum Particle Lifetime" : 5 : "Maximum number of seconds until each particle dies. Particles live for a random duration between 'Minimum Particle Lifetime' and this." + DistMax(integer) : "Maximum Visible Distance" : 1024 : "Maximum distance at which particles are visible. They fade to translucent at this distance." + + Frozen(choices) : "Frozen" : 0 : "When set, this entity spawns the number of particles in SpawnRate immediately, and then goes inactive." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input TurnOn(void) : "Turn on." + input TurnOff(void) : "Turn off." +] + +@SolidClass base(Targetname, BModelParticleSpawner) = func_dustmotes : + "A brush entity that spawns sparkling dust motes within its volume." +[ + SizeMin(string) : "Minimum Particle Size" : 10 + SizeMax(string) : "Maximum Particle Size" : 20 + + Alpha(integer) : "Alpha" : 255 +] + +@SolidClass base( Targetname ) = func_smokevolume : + "A brush entity that spawns smoke particles within its volume." +[ + spawnflags(flags) = + [ + 1 : "Emissive" : 0 + ] + + Color1(color255) : "Particle Color1 (R G B)" : "255 255 255" + Color2(color255) : "Particle Color2 (R G B)" : "255 255 255" + material(material) : "Material" : "particle/particle_smokegrenade" : "The material to use for the particles" + ParticleDrawWidth(float) : "Particle Draw Width (units)" : 120 : "The size of the particles, in units/inches." + ParticleSpacingDistance(float) : "Particle Spacing Distance (units)" : 80 : "The distance between the particles inside the volume. The lower the number, the denser the particles, and the more overdraw there will be. It is best to keep it as high as you can without it looking bad." + DensityRampSpeed(float) : "Density Ramp Speed (seconds)" : 1 : "Time to go from density 0 to density 1, in seconds." + + RotationSpeed(float) : "Rotation Speed (degrees/sec)" : 10 : "The speed that the particles should rotate, in degrees per second." + MovementSpeed(float) : "Movement Speed (units/sec)" : 10 : "The speed that the particles should move around, in units/inches per second." + Density(float) : "Density [0..1]" : 1 + + // Inputs + input SetRotationSpeed(float) : "Set the particle rotation speed (in degrees per second)." + input SetMovementSpeed(float) : "Set the particle movement speed (in inches per second)." + input SetDensity(float) : "Set the particle density. It should be a range from 0 to 1." +] + +@SolidClass base( Targetname, BModelParticleSpawner ) = func_dustcloud : + "A brush entity that spawns a translucent dust cloud within its volume." +[ + Alpha(integer) : "Alpha" : 30 + + SizeMin(string) : "Minimum Particle Size" : 100 + SizeMax(string) : "Maximum Particle Size" : 200 +] + +@PointClass base( Targetname, Parentname, Angles ) size( -8 -8 -8, 8 8 8 ) = env_dustpuff : + "An entity that can emit dust puffs." +[ + scale(float) : "Scale" : 8 : "Size of the dust puff." + speed(float) : "Speed" : 16 : "Speed at which the dust particles should move." + + color(color255) : "Dust color" : "128 128 128" + + // Inputs + input SpawnDust(void) : "Spawn a dust puff." +] + +@PointClass base( Targetname, Parentname, Angles ) size( -8 -8 -8, 8 8 8 ) = env_particlescript : + "An entity that has special animation events that can be fired by a model with an animation inside its .qc designed for"+ + "use by this entity." +[ + model(studio) : "Script Model" : "models/Ambient_citadel_paths.mdl" : "Model to use for animation sequences." + + // Inputs + input SetSequence(string) : "Sets the script model's sequence." +] + + +// NEEDHELP +@PointClass base( Targetname, Parentname, Angles ) size( -8 -8 -8, 8 8 8 ) = env_effectscript : + "An entity that allows you to script special visual effects via a script file." +[ + model(studio) : "Script Model" : "models/Effects/teleporttrail.mdl" : "Model to use for animation sequences." + scriptfile(string) : "Script File" : "scripts/effects/testeffect.txt" : "Name of the script to use for this model." + + // Inputs + input SetSequence(string) : "Sets the script model's sequence." +] + + +//------------------------------------------------------------------------- +// +// Logic Entities +// +//------------------------------------------------------------------------- + +@PointClass iconsprite("editor/logic_auto.vmt") = logic_auto : + "Fires outputs when a map spawns. " + + "If 'Remove on fire' flag is set the logic_auto is deleted after firing. " + + "It can be set to check a global state before firing. This allows you to only fire events based on "+ + "what took place in a previous map." +[ + spawnflags(Flags) = + [ + 1 : "Remove on fire" : 1 + ] + + globalstate(choices) : "Global State to Read" : : "If set, this specifies a global state to check before firing. The OnMapSpawn output will only fire if the global state is set." = + [ + "" : "--- None ---" + "gordon_precriminal" : "Gordon pre-criminal" + "antlion_allied" : "Antlions are player allies" +// "player_stealth" : "Player in APC is disguised as combine" + "suit_no_sprint" : "Suit sprint function not yet enabled" + "super_phys_gun" : "Super phys gun is enabled" + "friendly_encounter" : "Friendly encounter sequence (lower weapons, etc.)" +// "citizens_passive" : "Citizens are *not* player allies (cannot be commanded)" + "gordon_invulnerable" : "Gordon is invulnerable" + "no_seagulls_on_jeep" : "Don't spawn seagulls on the jeep" + "is_console" : "Game is running on a console" + "is_pc" : "Game is running on a PC" + ] + + // Outputs + output OnMapSpawn(void) : "Fired when the map is loaded for any reason." + output OnNewGame(void) : "Fired when the map is loaded to start a new game." + output OnLoadGame(void) : "Fired when the map is loaded from a saved game." + output OnMapTransition(void) : "Fired when the map is loaded due to a level transition." + output OnBackgroundMap(void) : "Fired when the map is loaded as a background to the main menu." + output OnMultiNewMap(void) : "Fired only in multiplayer, when a new map is loaded." + output OnMultiNewRound(void) : "Fired only in multiplayer, when a new round is started. Only fired in multiplayer games that use round-based gameplay." +] + +@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol : + "A camera entity that controls the player's view. While it's active, the player will see out of the camera." +[ + target(target_destination) : "Entity to Look At" : : "Name of the entity that the camera should point at and track while active." + targetattachment(string) : "Target Attachment Name" : : "If set, the camera will focus on the specified attachment on the 'Entity to Look At'." + wait(integer) : "Hold Time" : 10 : "The amount of time the camera should control the player's view for, after which it deactivates itself. If the camera should stay active until told to deactive, set the 'Infinite Hold Time' spawnflag." + moveto(target_destination) : "Path Corner" : : "The first path corner in a track that the camera should move along once it's activated. If not specified, the camera won't move." + interpolatepositiontoplayer(choices) : "Interpolate Position To Player" : 0 : "Gradually interpolate player's position to here on start. (Episodic only)" = + [ + 0 : "No" + 1 : "Yes" + ] + spawnflags(flags) = + [ + 1: "Start At Player" : 1 + 2: "Follow Player" : 1 + 4: "Freeze Player" : 0 + 8: "Infinite Hold Time" : 0 + 16:"Snap to goal angles" : 0 + 32:"Make Player non-solid" : 0 + 64:"Interruptable by Player" : 0 + ] + speed(string) : "Initial Speed" : "0" : "The starting speed that the camera moves at, if it's on a path track." + acceleration(string) : "Acceleration units/sec^2" : "500" : "The speed at which the camera accelerates to path corner's desired speeds." + deceleration(string) : "Stop Deceleration units/sec^2" : "500" : "The speed at which the camera decelerates to path corner's desired speeds." + + // Inputs + input Enable(void) : "Enable the point_viewcontrol, and start controlling the player's view." + input Disable(void) : "Disable the point_viewcontrol, and stop controlling the player's view." + + // Outputs + output OnEndFollow(void) : "Fired when the point_viewcontrol deactivates, due to the Disable input being received, the Entity to Look At being destroyed, or the Hold Time expiring." +] + +@PointClass base(Targetname) = point_posecontroller : + "An entity that controls a pose parameter of a prop and cycles the pose clientside." +[ + PropName(string) : "Prop Name" : : "Name of the prop to control." + PoseParameterName(string) : "Pose Parameter Name" : : "Name of the pose parameter to control." + PoseValue(float) : "Pose Parameter Value" : "0.0" : "Normalized value for the pose parameter from 0.0 and 1.0 (maps to min and max range)." + InterpolationTime(float) : "Interpolation Time" : "0.0" : "Number of seconds (0.0 to 10.0) for client to match absolue pose values." + InterpolationWrap(choices) : "Should wrap from 0.0 to 1.0 when interpolating." : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + CycleFrequency(float) : "Cycle Frequency" : "0.0" : "Base cycles per second from -10.0 to 10.0." + FModulationType(choices) : "Frequency Modulation Type" : 0 = + [ + 0: "None" + 1: "Sine" + 2: "Square" + 3: "Triangle" + 4: "Sawtooth" + 5: "Noise" + ] + FModTimeOffset(float) : "Frequency Modulation Time Offset" : "0.0" : "Modulation time offset from -1.0f to 1.0." + FModRate(float) : "Frequency Modulation Rate" : "0.0" : "Modulation cycles per second from -10.0f to 10.0." + FModAmplitude(float) : "Frequency Modulation Amplitude" : "0.0" : "Modulation extents from 0.0f to 10.0." + + // Inputs + input SetPoseParameterName(string) : "Sets the pose parameter to control." + input SetPoseValue(float) : "Set the pose parameter to a normalized value between 0.0 and 1.0 (maps to min and max range)." + input SetInterpolationTime(float) : "Set the interpolation time to a number of seconds between 0.0 and 10.0." + input SetCycleFrequency(float) : "Set the pose parameter's base cycles per second from -10.0f to 10.0." + input SetFModType(integer) : "Set the type of frequency modulation." + input SetFModTimeOffset(float) : "Set the modulation time offset from -1.0f to 1.0." + input SetFModRate(float) : "Set the modulation cycles per second from -10.0f to 10.0." + input SetFModAmplitude(float) : "Set the modulation extents from 0.0f to 10.0." + input RandomizeFMod(float) : "Randomize the frequency modulation by an extremeness of 0.0 to 1.0." +] + +@PointClass base(Targetname) iconsprite("editor/logic_compare.vmt") = logic_compare : + "Compares an input value to another value. " + + "If the input value is less than the compare value, the OnLessThan output is fired with the input value. " + + "If the input value is equal to the compare value, the OnEqualTo output is fired with the input value. " + + "If the input value is greater than the compare value, the OnGreaterThan output is fired with the input value." +[ + // Keys + InitialValue(integer) : "Initial value" : : "Initial value for the input value." + CompareValue(integer) : "Compare value" : : "The value to compare against." + + // Inputs + input SetValue(float) : "Set the value that will be compared against the compare value." + input SetValueCompare(float) : "Set the value that will be compared against the compare value and performs the comparison." + input SetCompareValue(float) : "Set the compare value." + input Compare(void) : "Force a compare of the input value with the compare value." + + // Outputs + output OnLessThan(float) : "Fired when the input value is less than the compare value. Sends the input value as data." + output OnEqualTo(float) : "Fired when the input value is equal to the compare value. Sends the input value as data." + output OnNotEqualTo(float) : "Fired when the input value is different from the compare value. Sends the input value as data." + output OnGreaterThan(float) : "Fired when the input value is greater than the compare value. Sends the input value as data." +] + +@PointClass base(Targetname) iconsprite("editor/logic_branch.vmt") = logic_branch : + "Tests a boolean value and fires an output based on whether the value is true or false. " + + "Use this entity to branch between two potential sets of events." +[ + // Keys + InitialValue(integer) : "Initial value" : : "Initial value for the boolean value (0 or 1)." + + // Inputs + input SetValue(bool) : "Set the boolean value without performing the comparison. Use this to hold a value for a future test." + input SetValueTest(bool) : "Set the boolean value and test it, firing OnTrue or OnFalse based on the new value." + input Toggle(void) : "Toggle the boolean value between true and false." + input ToggleTest(void) : "Toggle the boolean value and tests it, firing OnTrue or OnFalse based on the new value." + input Test(void) : "Test the input value and fire OnTrue or OnFalse based on the value." + + // Outputs + output OnTrue(bool) : "Fired when the input value is true (nonzero)." + output OnFalse(bool) : "Fired when the input value is false (zero)." +] + + +@PointClass base(Targetname) = logic_branch_listener : + "Contains a list of logic_branch entities and fires outputs when the state of any of the logic_branches changes.\n\n"+ + "This entity is used to fire an event when a set of conditions are all satisfied." +[ + Branch01(target_destination) : "Logic Branch 01" : : "The name of one or more logic_branches (wildcards allowed)." + Branch02(target_destination) : "Logic Branch 02" : : "The name of one or more logic_branches (wildcards allowed)." + Branch03(target_destination) : "Logic Branch 03" : : "The name of one or more logic_branches (wildcards allowed)." + Branch04(target_destination) : "Logic Branch 04" : : "The name of one or more logic_branches (wildcards allowed)." + Branch05(target_destination) : "Logic Branch 05" : : "The name of one or more logic_branches (wildcards allowed)." + Branch06(target_destination) : "Logic Branch 06" : : "The name of one or more logic_branches (wildcards allowed)." + Branch07(target_destination) : "Logic Branch 07" : : "The name of one or more logic_branches (wildcards allowed)." + Branch08(target_destination) : "Logic Branch 08" : : "The name of one or more logic_branches (wildcards allowed)." + Branch09(target_destination) : "Logic Branch 09" : : "The name of one or more logic_branches (wildcards allowed)." + Branch10(target_destination) : "Logic Branch 10" : : "The name of one or more logic_branches (wildcards allowed)." + Branch11(target_destination) : "Logic Branch 11" : : "The name of one or more logic_branches (wildcards allowed)." + Branch12(target_destination) : "Logic Branch 12" : : "The name of one or more logic_branches (wildcards allowed)." + Branch13(target_destination) : "Logic Branch 13" : : "The name of one or more logic_branches (wildcards allowed)." + Branch14(target_destination) : "Logic Branch 14" : : "The name of one or more logic_branches (wildcards allowed)." + Branch15(target_destination) : "Logic Branch 15" : : "The name of one or more logic_branches (wildcards allowed)." + Branch16(target_destination) : "Logic Branch 16" : : "The name of one or more logic_branches (wildcards allowed)." + + input Test(void) : "Tests the state of all the logic_branches in the list and fires the appropriate output." + + output OnAllTrue(void) : "Fired when all the logic_branches in the list become true." + output OnAllFalse(void) : "Fired when all the logic_branches in the list become false." + output OnMixed(void) : "Fired when one of the logic branches in the list changes, but some are true and some are false." +] + + +@PointClass base(Targetname) iconsprite("editor/logic_case.vmt") = logic_case : + "Compares an input to up to 16 preset values. If the input value is the same as " + + "any of the preset values, an output corresponding to that value is fired.\n\n" + + "For example: if Case01 is set to 2 and Case02 is set to 5, and the input value is 5, " + + "the OnCase02 output will be fired.\n\n" + + "This entity can also be used to select from a number of random targets via the " + + "PickRandom input. One of the OnCase outputs that is connected to another entity will " + + "be picked at random and fired." +[ + Case01(string) : "Case 01" + Case02(string) : "Case 02" + Case03(string) : "Case 03" + Case04(string) : "Case 04" + Case05(string) : "Case 05" + Case06(string) : "Case 06" + Case07(string) : "Case 07" + Case08(string) : "Case 08" + Case09(string) : "Case 09" + Case10(string) : "Case 10" + Case11(string) : "Case 11" + Case12(string) : "Case 12" + Case13(string) : "Case 13" + Case14(string) : "Case 14" + Case15(string) : "Case 15" + Case16(string) : "Case 16" + + // Inputs + input InValue(string) : "Compares the Input value to the case values, and fires the appropriate output, if any." + input PickRandom(void) : "Fires a random OnCase output with at least one connection." + input PickRandomShuffle(void) : "Fires a random OnCase output with at least one connection, with no repeats until all cases have been picked, at which point the shuffle starts over." + + // Outputs + output OnCase01(void) : "Fired when the input value equals the Case01 value." + output OnCase02(void) : "Fired when the input value equals the Case02 value." + output OnCase03(void) : "Fired when the input value equals the Case03 value." + output OnCase04(void) : "Fired when the input value equals the Case04 value." + output OnCase05(void) : "Fired when the input value equals the Case05 value." + output OnCase06(void) : "Fired when the input value equals the Case06 value." + output OnCase07(void) : "Fired when the input value equals the Case07 value." + output OnCase08(void) : "Fired when the input value equals the Case08 value." + output OnCase09(void) : "Fired when the input value equals the Case09 value." + output OnCase10(void) : "Fired when the input value equals the Case10 value." + output OnCase11(void) : "Fired when the input value equals the Case11 value." + output OnCase12(void) : "Fired when the input value equals the Case12 value." + output OnCase13(void) : "Fired when the input value equals the Case13 value." + output OnCase14(void) : "Fired when the input value equals the Case14 value." + output OnCase15(void) : "Fired when the input value equals the Case15 value." + output OnCase16(void) : "Fired when the input value equals the Case16 value." + output OnDefault(void) : "Fired when the input value does not equal any of the Case values." +] + +// NEEDHELP: Unused in HL2, not clear what it's useful for. +@PointClass base(Targetname) iconsprite("editor/logic_multicompare.vmt") = logic_multicompare : + "Compares a set of inputs to each other. If they are all the same, fires an OnEqual output. " + + "If any are different, fires the OnNotEqual output." +[ + // keys + IntegerValue(integer) : "Integer Value (optional)" + ShouldComparetoValue(choices) : "Should use Integer Value" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input InputValue(integer) : "Input value" + input CompareValues(void) : "Compares the values and fires appropriate outputs" + + // Outputs + output OnEqual(void) : "Fires if the values are equal" + output OnNotEqual(void) : "Fires if the values are not equal" +] + +@PointClass base(Targetname, EnableDisable) iconsprite("editor/logic_relay.vmt") = logic_relay : + "A message forwarder. Fires an OnTrigger output when triggered, and " + + "can be disabled to prevent forwarding outputs.\n\n" + + "Useful as an intermediary between one entity and another for turning " + + "on or off an I/O connection, or as a container for holding a set of " + + "outputs that can be triggered from multiple places." +[ + spawnflags(flags) = + [ + 1: "Only trigger once" : 0 + 2: "Allow fast retrigger" : 0 + ] + + // Inputs + input Trigger(void) : "Trigger the relay, causing its OnTrigger output to fire if it is enabled." + input Toggle(void) : "Toggle the relay between enabled and disabled." + input CancelPending(void) : "Cancel any events fired by this relay that are currently pending in the I/O event queue." + + // Outputs + output OnSpawn(void) : "Fired when the relay is spawned. If the relay is set to only trigger once, it will "+ + "delete itself after firing this output." + output OnTrigger(void) : "Fired when the relay is triggered. If the relay is set to only trigger once, it will "+ + "delete itself after firing this output." +] + +@PointClass base(Targetname, EnableDisable) iconsprite("editor/logic_timer.vmt") = logic_timer : + "An entity that fires a timer event at regular, or random, intervals. It can also be set to oscillate between" + + "a high and low end, in which case it will fire alternating high/low outputs each time it fires." +[ + // Keys + spawnflags(flags) = + [ + 1 : "Oscillator (alternates between OnTimerHigh and OnTimerLow outputs)" : 0 + ] + + UseRandomTime(choices) : "Use Random Time" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + LowerRandomBound(string) : "Minimum Random Interval" : : "If 'Use Random Time' is set, this is the minimum time between timer fires. The time will be a random number between this and the 'Maximum Random Interval'." + UpperRandomBound(string) : "Maximum Random Interval" : : "If 'Use Random Time' is set, this is the maximum time between timer fires. The time will be a random number between the 'Minimum Random Interval' and this." + RefireTime(string) : "Refire Interval" : : "If 'Use Random Time' isn't set, this is the time between timer fires, in seconds." + + // Inputs + input RefireTime(integer) : "Set a new Refire Interval." + input ResetTimer(void) : "Reset the timer. It will fire after the Refire Interval expires." + input FireTimer(void) : "Force the timer to fire immediately." + input Enable(void) : "Enable the timer." + input Disable(void) : "Disable the timer." + input Toggle(void) : "Toggle the timer on/off." + input LowerRandomBound(float) : "Set a new Minimum Random Interval." + input UpperRandomBound(float) : "Set a new Maximum Random Interval." + input AddToTimer(float) : "Add time to the timer if it is currently enabled. Does not change the Refire Interval." + input SubtractFromTimer(float) : "Subtract time from the timer if it is currently enabled. Does not change the Refire Interval." + + + // Outputs + output OnTimer(void) : "Fired when the timer expires." + output OnTimerHigh(void) : "Fired every other time for an oscillating timer." + output OnTimerLow(void) : "Fired every other time for an oscillating timer." +] + + +@PointClass base(Targetname) = hammer_updateignorelist : + "Specifies entities that are to be ignored by the hammer_update_safe_entities console command. " + + "Enter the targetnames of entities that you want to exclude into the list of fields here. " + + "Several of these may exist in a map." +[ + IgnoredName01(target_destination) : "IgnoredName 01" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName02(target_destination) : "IgnoredName 02" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName03(target_destination) : "IgnoredName 03" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName04(target_destination) : "IgnoredName 04" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName05(target_destination) : "IgnoredName 05" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName06(target_destination) : "IgnoredName 06" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName07(target_destination) : "IgnoredName 07" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName08(target_destination) : "IgnoredName 08" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName09(target_destination) : "IgnoredName 09" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName10(target_destination) : "IgnoredName 10" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName11(target_destination) : "IgnoredName 11" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName12(target_destination) : "IgnoredName 12" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName13(target_destination) : "IgnoredName 13" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName14(target_destination) : "IgnoredName 14" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName15(target_destination) : "IgnoredName 15" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" + IgnoredName16(target_destination) : "IgnoredName 16" : "" : "Do not send this entity's information back to hammer during hammer_update_safe_entities" +] + + +@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(0 255 0) = logic_collision_pair : + "An entity that can be used to enables/disable vphysics collisions between two target entities." +[ + attach1(target_destination) : "Attachment 1" : "" : "The first entity." + attach2(target_destination) : "Attachment 2" : "" : "The second entity." + + startdisabled(choices) : "Start with collisions disabled" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input EnableCollisions(void) : "Enable collisions between the first and second entity." + input DisableCollisions(void) : "Disable collisions between the first and second entity." +] + + +@PointClass base(Targetname, Parentname, EnableDisable) iconsprite("editor/env_microphone.vmt") sphere(MaxRange) color(0 0 255) = env_microphone : + "An entity that acts as a microphone. It works in one of two modes. If it has a 'Speaker' set, it picks up all sounds within the specified sound range, " + + "and rebroadcasts them through the Speaker entity. In this Speaker mode, it ignores the Hears X spawnflags and does not fire the SoundLevel output. " + + "If it has no Speaker set, it measures the sound level at a point, and outputs the sound level as a value between 0 and 1. In Measuring mode, it only hears sounds that match the Hear X spawnflags." +[ + target(target_destination) : "Measure target" : : "If the speaker is in Measuring mode, this is the name of the entity where the sound level is to be measured." + SpeakerName(target_destination) : "Speaker target" : "" : "The name of an info_target entity through which to play any sounds heard by this microphone. If specified, the microphone will consider itself in Speaker mode." + ListenFilter(filterclass) : "Listen Filter" : "" : "The name of an filter entity which specifies the only entities the microphone can hear. Sounds emitted by other entities will not be heard." + speaker_dsp_preset(choices) : "Speaker DSP Preset" : 0 : "Only useful in Speaker mode. If specified, when the microphone is enabled, it'll set the global dsp_speaker preset to this value. Sounds played back through speakers will then be affected by the selected DSP." = + [ + 0 : "Use Default" + 50 : "1 NO EFFECT" + 51 : "2 (DUPLICATE OF 1)" + 52 : "3 (DUPLICATE OF 1)" + 53 : "4 (DUPLICATE OF 1)" + 54 : "5 (DUPLICATE OF 1)" + 55 : "6 SPEAKER, LOUDER" + 56 : "7 SPEAKER VERY SMALL" + 57 : "8 LOUDSPEAKER, ECHO" + 58 : "9 SPEAKER SMALL" + 59 : "10 SPEAKER TINY" + ] + + spawnflags(flags) = + [ + 1 : "Hears combat sounds" : 1 + 2 : "Hears world sounds" : 1 + 4 : "Hears player sounds" : 1 + 8 : "Hears bullet impacts" : 1 + 16: "Swallows sounds routed through speakers" : 0 + 32: "Hears explosions" : 0 + 64: "Ignores non-attenuated sounds" : 0 + ] + + Sensitivity(float) : "Sensitivity (0 - 10)" : 1 : "Microphone sensitivity, 0=deaf, 1=default, 10=extremely sensitive). Only applicable in Measuring mode." + SmoothFactor(float) : "Smoothing (0 - 1)" : 0 : "Smoothing factor, 0=no smoothing, 1=maximum smoothing). Only applicable in Measuring mode." + MaxRange(float) : "Maximum hearing range (0=infinite)" : 240 : "Sounds beyond this range won't be heard, irrelevant of attenuation. "+ + "WARNING: setting this to zero (or a value > 1024) when the microphone is in Speaker mode can be very bad for performance!!" + + // Inputs + input SetSpeakerName(string) : "Set the microphone to output through a different speaker entity." + + // Outputs + output SoundLevel(float) : "Fired in Measuring mode whenever the sound level changes." + output OnRoutedSound(void) : "Fired whenever a sound is routed out through the specified speaker (if any)." + output OnHeardSound(void) : "Fired whenever this microphone hears any sound it cares about." +] + +@PointClass base(Targetname, EnableDisable ) = math_remap : + "An entity that remaps a range of input values to a given range of output values." +[ + spawnflags(flags) = + [ + 1 : "Ignore out of range input values" : 1 + 2 : "Clamp output to output range" : 2 + ] + + in1(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored." + in2(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored." + out1(integer) : "Output Value When Input Is Min." : : "When the input value is equal to 'Minimum Valid Input Value', this is the output value." + out2(integer) : "Output Value When Input Is Max." : : "When the input value is equal to 'Maximum Valid Input Value', this is the output value." + + // Inputs + input InValue(float) : "Input value and fire the output with the remapped value." + + // Outputs + output OutValue(float) : "Fired when the InValue input is received, with the remapped input value as the parameter." +] + +@PointClass base(Targetname) = math_colorblend : + "Used to create a blend between two colors for controlling the color of another entity." +[ + spawnflags(flags) = + [ + 1 : "Ignore out of range input values" : 1 + ] + + inmin(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored." + inmax(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored." + colormin(color255) : "Output RGB color when input is min." : "0 0 0" : "When the input value is equal to 'Minimum Valid Input Value', this is the output RGB color." + colormax(color255) : "Output RGB color when input is max." : "255 255 255" : "When the input value is equal to 'Maximum Valid Input Value', this is the output RGB color." + + // Inputs + input InValue(float) : "Input value and fire the output with the remapped value." + + // Outputs + output OutColor(color255) : "Fired when the InValue input is received, with the remapped RGB color as the parameter." +] + +@PointClass base(Targetname, EnableDisable) iconsprite("editor/math_counter.vmt") = math_counter : + "Holds a numeric value and performs arithmetic operations upon it. If either the minimum or maximum " + + "legal value is nonzero, OutValue will be clamped to the legal range, and the OnHitMin/OnHitMax " + + "outputs will be fired at the appropriate times. If both min and max are set to zero, no clamping is " + + "performed and only the OutValue output will be fired." +[ + // Keys + startvalue(integer) : "Initial Value" : 0 : "Starting value for the counter." + min(integer) : "Minimum Legal Value" : 0 : "Minimum legal value for the counter. If min=0 and max=0, no clamping is performed." + max(integer) : "Maximum Legal Value" : 0 : "Maximum legal value for the counter. If min=0 and max=0, no clamping is performed." + + // Inputs + input Add(integer) : "Add an amount to the counter and fire the OutValue output with the result." + input Divide(integer): "Divide the counter by an amount and fire the OutValue output with the result." + input Multiply(integer): "Multiply the counter by an amount and fire the OutValue output with the result." + input SetValue(integer): "Set the counter to a new value and fire the OutValue output with the result." + input SetValueNoFire(integer): "Set the counter to a new value without firing any outputs." + input Subtract(integer): "Subtract an amount from the counter and fire the OutValue output with the result." + input SetHitMax(integer): "Set the upper bound of the counter and fire the OutValue output with the current value." + input SetHitMin(integer): "Set the lower bound of the counter and fire the OutValue output with the current value." + input GetValue(void): "Causes the counter fire its OnGetValue output with the current value of the counter. Used for polling the counter when you don't want constant updates from the OutValue output." + + // Outputs + output OutValue(integer) : "Fired when the counter value changes." + output OnHitMin(void) : "Fired when the counter value meets or goes below the min value. The counter must go back above the min value before the output will fire again." + output OnHitMax(void) : "Fired when the counter value meets or exceeds the max value. The counter must go below the max value before the output will fire again." + output OnGetValue(integer) : "Fired in response to the GetValue input. Used for polling the counter when you don't want constant updates from the OutValue output." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_lineto : + "An entity that calculates and outputs a vector from one entity to another." +[ + source(target_destination) : "Start entity" : : "Name of the entity the line should start from." + target(target_destination) : "End entity" : : "Name of the entity that line should end at." + + // Outputs + output Line(vector) : "Fired when the vector, from the start entity to the end entity, changes. Passes along the vector as a parameter." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_navigation : + "An entity that is used to set navigation properties on other entities. Useful to make NPCs ignore physics props in their way that they can easily push." +[ + target(target_destination) : "Navigation Entity" : "Name of the entity to set navigation properties on." + spawnflags(flags) = + [ + 1 : "Start On" : 1 + ] + navprop(choices) : "Nav Property" : "Ignore" = + [ + "Ignore" : "NPCs Ignore this when navigating (they'll bump into it)" + ] + + // Inputs + input TurnOn(void) : "Turn on. The Navigation Entity will have its navigation properties set." + input TurnOff(void) : "Turn off. The Navigation Entity will have its navigation properties returned to the default settings." + input Toggle(void) : "Toggle on/off." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_autosave : + "An entity that is used to force an autosave." +[ + NewLevelUnit(choices) : "Force New Level Unit" : 0 : "If set, the save will discard any savedata from previous levels, for the purpose of keeping savegame filesizes down. Can only be safely used if there is no way for the player to return to previous levels." = + [ + 0 : "No" + 1 : "Yes" + ] + + MinimumHitPoints(integer): "Minimum Hit Points" : 0 : "Don't save dangerous when player has less than this many hitpoints." + MinHitPointsToCommit(integer) : "Minimum Hit Points to Commit" : 0 : "Minimum hitpoints required to commit to save. The save will be made if you have at least Minimum Hit Points, but when the autosave timer expires, the autosave is only kept if you have at least Min Hitpoints to Commit." + + // Inputs + input Save(void) : "Force an autosave." + input SaveDangerous(float) : "Force an autosave as autosavedangerous.sav. If the player is alive after the passed number of seconds it replaces the standard auto save." + input SetMinHitpointsThreshold(integer) : "Set MinimumHitPoints to this." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_active_autosave : + "An entity that is used to look for opportunities to autosave." +[ + MinimumHitPoints(integer): "Initiation Hit Points" : 30 : "Start looking for an opportunity to save if player drops below this hitpoint level." + TriggerHitPoints(integer): "Trigger Hit Points" : 75 : "If started looking for an opportunity, save when hitpoints reach this level." + TimeToTrigget(float): "Time to trigger" : 0 : "If > 0, how long to try and get a save off before giving up" + DangerousTime(float): "Dangerous time" : 10 : "If 0, just autosave. Otherwise, do an autosavedangerous with this time threshold" + + // Inputs + input Enable(void) : "Enable the entity" + input Disable(void) : "Enable the entity" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_template : + "Turns an entity, or set of entities, into a single template that can be instanced anywhere, and multiple times. "+ + "If there are interdependencies (entity I/O, hierarchy, or other name references) between the entities "+ + "in the template, the entities in the template will have their names changed and the interdependencies will "+ + "be reconnected to the changes names. The name change format is as follows: '&0000', where the 0000 "+ + "will be replaced with the current global template instance, so wildcard searches for '*' will still find them.\n"+ + "If you don't want the name fixup to happen, because you're only spawning the template once, or you want inputs to "+ + "trigger all instances of the template, check the 'Preserve entity names' spawnflag. \n"+ + "To spawn the template in other places, use an env_entity_maker." +[ + spawnflags(flags) = + [ + 1 : "Don't remove template entities" : 0 + 2 : "Preserve entity names (Don't do name fixup)" : 1 + ] + + Template01(target_destination) : "Template 1" + Template02(target_destination) : "Template 2" + Template03(target_destination) : "Template 3" + Template04(target_destination) : "Template 4" + Template05(target_destination) : "Template 5" + Template06(target_destination) : "Template 6" + Template07(target_destination) : "Template 7" + Template08(target_destination) : "Template 8" + Template09(target_destination) : "Template 9" + Template10(target_destination) : "Template 10" + Template11(target_destination) : "Template 11" + Template12(target_destination) : "Template 12" + Template13(target_destination) : "Template 13" + Template14(target_destination) : "Template 14" + Template15(target_destination) : "Template 15" + Template16(target_destination) : "Template 16" + + // Inputs + input ForceSpawn(void) : "Spawn an instance of the template at the original position." + + // Outputs + output OnEntitySpawned(void) : "Fired after spawning an instance of this template." +] + +@PointClass base(Targetname,Parentname,Angles) = env_entity_maker : + "Spawns the specified entity template at its origin. If set to auto-spawn, it will spawn the template whenever there's room and the player "+ + "is looking elsewhere." +[ + spawnflags(Flags) = + [ + 1 : "Enable AutoSpawn (will spawn whenever there's room)" : 0 + 2 : "AutoSpawn: Wait for entity destruction" : 0 + 4 : "AutoSpawn: Even if the player is looking" : 0 + 8 : "ForceSpawn: Only if there's room" : 0 + 16 : "ForceSpawn: Only if the player isn't looking" : 0 + ] + + EntityTemplate(target_destination) : "Point_template To Spawn" : "" : "Name of the point_template to spawn here." + + PostSpawnSpeed(float) : "PostSpawn Movement Speed" : "0" : "If specified, all the entities created in the template will move this fast in the specified PostSpawn Movement Direction." + PostSpawnDirection(angle) : "PostSpawn Movement Direction" : "0 0 0" : "If a PostSpawn Movement Speed is specified, all the entities created in the template will move in this direction." + PostSpawnDirectionVariance(float) : "PostSpawn Direction Variance" : "0.15" : "This variance is applied to the PostSpawn Movement Direction for each spawned entity in the template. Use it to apply some randomness to the directions." + PostSpawnInheritAngles(choices) : "PostSpawn Inherit Angles" : 0 : "If in hierarchy, is spawn direction in world space, or object local space of parent" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input ForceSpawn(void) : "Spawn an instance of the template at this origin and angle." + input ForceSpawnAtEntityOrigin(target_destination) : "Spawn an instance of the template that the same origin and angle as the specified entity (specify by targetname in parameters)" + + // Outputs + output OnEntitySpawned(void) : "Fired when an instance of the entity template has been spawned." + output OnEntityFailedSpawn(void) : "Fired when a ForceSpawn input failed to spawn the template, either due to lack of space or being in player's view, depending on the spawnflags." +] + + +//------------------------------------------------------------------------- +// +// Activator Filters +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname) = BaseFilter +[ + Negated(choices) : "Filter mode" : "Allow entities that match criteria" : "If set to Allow, only entities who match the criteria will pass the filter. "+ + "If set to Disallow, only entities who do NOT match the criteria will pass the filter." = + [ + 0 : "Allow entities that match criteria" + 1 : "Disallow entities that match criteria" + ] + + // Inputs + input TestActivator(void) : "Test the activator against the filter and fires OnPass or OnFail output." + + // Outputs + output OnPass(void) : "Fired in response to TestActivator input if the activator passes the filter." + output OnFail(void) : "Fired in response to TestActivator input if the activator fails to pass the filter." +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_multiple.vmt") = filter_multi : + "A filter that tests the activator against multiple filters. This allows you to build more complex filters, such as"+ + "'Allow anyone on Team 1 who is also class engineer', or 'Allow everyone except classes npc_zombie and npc_headcrab'." +[ + filtertype(choices) : "Logic Type" : 0 = + [ + 0 : "AND (all filters must pass)" + 1 : "OR (any filter must pass)" + ] + + Negated(choices) : "Negate Outcome" : 0 : "Whether to negate the result of the subfilters, after combining them using the Logic Type chosen.\n"+ + "Negating the outcome using the AND logic type means that any subfilter must fail for this filter to pass.\n"+ + "Negating the outcome using the OR logic type means that all subfilters must fail for this filter to pass." = + [ + 0 : "No" + 1 : "Yes" + ] + + Filter01(filterclass) : "Filter 1" : : "Activator filter to test." + Filter02(filterclass) : "Filter 2" : : "Activator filter to test." + Filter03(filterclass) : "Filter 3" : : "Activator filter to test." + Filter04(filterclass) : "Filter 4" : : "Activator filter to test." + Filter05(filterclass) : "Filter 5" : : "Activator filter to test." +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_name.vmt") = filter_activator_name : + "A filter that filters by the name of the activator." +[ + filtername(target_destination) : "Filter Name" : : "The name to filter by. If the filter mode is Allow, only entities whose "+ + "name matches the given string will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose name matches the string will pass the filter." +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_class.vmt") = filter_activator_class : + "A filter that filters by the class name of the activator." +[ + filterclass(string) : "Filter Classname" : : "The class name to filter by. If the filter mode is Allow, only entities whose "+ + "class name matches the given string will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose class name matches the given string will pass the filter." +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_class.vmt") = filter_activator_mass_greater : + "A filter that filters by the mass of the activator." +[ + filtermass(float) : "Filter Mass" : : "The mass to filter by. If the filter mode is Allow, only entities whose "+ + "mass is greater than the give float will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose mass is greater than the given float will pass the filter." +] + +@FilterClass base(BaseFilter) = filter_damage_type : + "A damage filter that filters by the type of damage inflicted. This can only be used as a damage filter, not as an activator filter." +[ + damagetype(choices) : "Damage type" : 64 : "The damage type to filter by. If the filter mode is Allow, only damage types that "+ + "match will pass the filter. If the filter mode is Disallow, all damage types EXCEPT those who match will pass the filter." = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_class.vmt") sphere(filter_radius) sphere(filter_outer_radius) = filter_enemy : + "A filter that filters a potential enemy entity by a set of criteria." +[ + filtername(string) : "Name/Classname" : : "The classname or entity name to filter by. If the filter mode is Allow, only entities whose "+ + "class name matches the given string will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose class name matches the given string will pass the filter." + + filter_radius(float) : "Radius" : 0 : "Radius by which to test the proximity of the enemy. If the filter mode is Allow, only entities whose "+ + "distance is equal to or closer than the radius will pass the filter. If the filter mode is Disallow, "+ + "all entities outside the radius will pass the filter." + + filter_outer_radius(float) : "Outer Radius" : 0 : "Enemies outside this radius are considered invalid if Allow is set and valid if Disallow is set." + + filter_max_per_enemy(integer) : "Max Squadmates Per Enemy" : 0 : "Maximum number of squadmates allowed to target any given entity." + + spawnflags(Flags) = + [ + 1 : "Do not lose target if already aquired but filter failed." : 0 + ] +] + +//------------------------------------------------------------------------- +// +// Point Entities +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname, Parentname, EnableDisable) = point_anglesensor : + "An entity that detects if another entity points in a given direction for a period of time." +[ + target(target_destination) : "Target Entity Name" : : "Name of the entity whose angles will be sensed." + lookatname(target_destination) : "Look At Entity" : : "The entity we want to check to see if the Target Entity is looking at." + duration(float) : "Duration" : : "The amount of time the Target Entity must look at the 'Look at Entity' to trigger this entity, in seconds." + tolerance(integer) : "Tolerance" : : "The tolerance, in degrees, in the checking to determine when the Target Entity is looking at the Look At Entity." + + spawnflags(Flags) = + [ + 1 : "Use target entity's angles (NOT position)" : 0 + ] + + // Inputs + input Toggle(void) : "Toggle the sensor between enabled and disabled." + input Test(void) : "Check to see if the Target Entity is facing the Look At Entity within the specified tolerance, firing either the OnFacingLookat or OnNotFacingLookat output based on the result." + + // Outputs + output TargetDir(vector) : "Fired when the forward direction of the Target Entity changes. Passes the new forward direction as a parameter." + output OnFacingLookat(void) : "Fired when the Target Entity points at the Look At Entity for more than the specified Duration, or in response to a Test input." + output OnNotFacingLookat(void) : "Fires in response to a Test input when the Target Entity is not pointing at the Look At Entity." + output FacingPercentage(float) : "Normalized value (0..1) where 1 is facing directly at target and 0 is at or beyond the angle of tolerance." +] + +@PointClass base(Targetname) = point_angularvelocitysensor : + "An entity that detects if another entity's angular velocity meets or exceeds a threshold value." +[ + target(target_destination) : "Target Entity Name" : : "Name of the entity whose angular velocity will be sensed." + threshold(float) : "Threshold Velocity" : 0 : "The threshold angular velocity to compare against, in degrees per second." + fireinterval(float) : "Fire Interval" : "0.2" : "Angular velocity must cross the threshold for at least this long to fire." + + axis(vecline) : "Axis" + + usehelper(choices) : "Use Axis Helper" : 0 : "Use axis helper to determine rotation values (clockwise/counter-clockwise)." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Test(void) : "Checks to see if the Target Entity's angular velocity meets or exceeds the Threshold Velocity, " + + "firing either the OnGreaterThanOrEqualTo or OnLessThan output based on the result." + + input TestWithInterval(void) : "Checks to see if the Target Entity's angular velocity meets or exceeds the Threshold Velocity. Once the Fire Interval expires, " + + "fires the appropriate test result output if the result is stable throughout the Fire Interval." + + // Outputs + output AngularVelocity(float) : "Fired when the Target's Angular Velocity changes, passing the new magnitude of the angular velocity." + output OnGreaterThan(void) : "Fired when the Target Entity goes from slower than the threshold angular velocity to faster than the threshold angular velocity." + output OnGreaterThanOrEqualTo(void) : "Fired when the Target Entity goes from slower than the threshold angular velocity to faster than the threshold angular velocity." + output OnLessThan(void) : "Fired when the Target Entity goes from faster than the threshold angular velocity to slower than the threshold angular velocity." + output OnLessThanOrEqualTo(void) : "Fired when the Target Entity goes from faster than the threshold angular velocity to slower than the threshold angular velocity." + output OnEqualTo(void) : "Fired when the Target Entity reaches the threshold angular velocity from a different velocity." +] + +@PointClass base(Targetname) = point_velocitysensor : + "An entity that detects and outputs an entity's velocity." +[ + target(target_destination) : "Target Entity Name" : : "Name of the entity whose velocity will be sensed." + axis(vecline) : "Measurement Axis" + enabled(choices) : "Start Enabled" : 1 : "Whether or not to start enabled and active." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Outputs + output Velocity(float) : "Fired when the Target's Velocity changes, passing the new magnitude of the velocity." + + input Enable(void) : "Enable the sensor." + input Disable(void) : "Disable the sensor." +] + +@PointClass base(Targetname, Parentname, EnableDisable, Angles) = point_proximity_sensor : + "An entity that detects another entity's proximity to a target position." +[ + target(target_destination) : "Target Entity Name" : : "Name of the entity whose angles will be sensed." + + spawnflags(Flags) = + [ + 1 : "Test the distance as measured along the axis specified by our direction." : 0 + ] + + // Inputs + input Toggle(void) : "Toggle the sensor between enabled and disabled." + + // Outputs + output Distance(float) : "Distance of the target entity away from this entity." +] + + +@PointClass base(Targetname, Angles) = point_teleport : + "An entity that teleports a target entity to this position and angles. "+ + "If 'Teleport Home' spawn flag is set, teleports the target entity to its spawn position instead." + + "If object is physically simulated, simulation is turned off when teleported." +[ + target(target_destination) : "Entity To Teleport" : : "Name of the entity that will be teleported." + spawnflags(flags) = + [ + 1 : "Teleport Home" : 0 + 2 : "Into Duck (episodic)" : 0 + ] + + // Inputs + input Teleport(void) : "Teleport the target entity." +] + +@PointClass base(Targetname) sphere(DamageRadius) = point_hurt : + "An entity that does damage to all entities in a radius around itself, with a specified delay." + + "If 'Target Entity' is specified, the damage is only done to that entity." +[ + DamageTarget(string) : "Target Entity" : "" : "If specified, only this entity will take damage. Otherwise, all entities within the Radius will take damage." + + DamageRadius(float) : "Radius" : 256 : "All entities within this radius of this entity will take damage. If a 'Target Entity' is specified, only that entity will take damage." + Damage(integer) : "Damage" : 5 : "Damage done to all affected entities each time this entity fires." + DamageDelay(float) : "Delay" : 1 : "Delay between refires, in seconds." + + DamageType(choices) : "Damage Type" : 0 : "Type of damage to inflict on entities damaged." = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + + // Inputs + input Hurt(void) : "Force a single fire, damaging either the Target Entity or all entities within the radius." + input TurnOn(void) : "Enable this entity. It will start damaging entities everytime it fires, and refire based upon the specified Delay." + input TurnOff(void) : "Disable this entity. It will stop damaging entities." + input Toggle(void) : "Toggle this entity between On/Off state." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_playermoveconstraint : + "An entity that constrains players to a radius around itself, slowing them down the closer they get to the edge of the radius." +[ + radius(float) : "Radius" : 256 : "Radius to constrain players to." + width(float) : "Constraint Width" : "75.0" : "Width of the constraint edge. This is the distance in which to start slowing players down as they approach the edge of the radius." + speedfactor(float) : "Speed Factor" : "0.15" : "Factor applied to the player's max speed as they approach the radius edge." + + // Inputs + input TurnOn(void) : "Start constraining any players within the radius." + input TurnOff(void) : "Stop constraining any players previously constrained." + + // Outputs + output OnConstraintBroken(void) : "Fired when a player breaks through the constraint." +] + +//------------------------------------------------------------------------- +// +// Physics entities +// +//------------------------------------------------------------------------- + +@SolidClass base(BreakableBrush,Targetname, Origin, RenderFields, Shadow) = func_physbox : + "A brush entity that's physically simulated." +[ + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + spawnflags(flags) = + [ + 4096 : "Start Asleep" : 0 + 8192 : "Ignore +USE for Pickup" : 0 + 16384 : "Debris - Don't collide with the player or other debris" : 0 + 32768 : "Motion Disabled" : 0 + 65536 : "Use Preferred Carry Angles" : 0 + 131072: "Enable motion on Physcannon grab" : 0 + 262144: "Not affected by rotor wash" : 0 + 524288: "Generate output on +USE " : 1 + 1048576 : "Physgun can ALWAYS pick up. No matter what." : 0 + 2097152 : "Physgun is NOT allowed to pick this up." : 0 + 4194304 : "Physgun is NOT allowed to punt this object." : 0 + 8388608: "Prevent motion enable on player bump" : 0 + ] + + Damagetype(choices) : "Impact Damage Type" : 0 = + [ + 0: "Blunt" + 1: "Sharp" + ] + + massScale(float) : "Mass Scale" : "0" : "A scale multiplier for the object's mass." + overridescript(string) : "Override Parameters" : "" : "A list of physics key/value pairs that are usually in a physics prop .qc file. Format is 'key,value,key,value,etc'." + damagetoenablemotion(integer) : "Health Level to Override Motion" : 0 : "If specified, this object will start motion disabled. Once its health has dropped below this specified amount, it will enable motion." + forcetoenablemotion(float) : "Physics Impact Force to Override Motion" : 0 : "If specified, this object will start motion disabled. Any impact that imparts a force greater than this value on the physbox will enable motion." + health(integer) : "Strength" : 0 : "Number of points of damage to take before breaking. 0 means don't break." + preferredcarryangles(vector) : "Preferred Player-carry Angles" : "0 0 0" : "If the 'Use Preferred Carry Angles' spawnflag is set, this angle is the angle which the object should orient to when the player picks it up, with the physgun or +USE." + notsolid(choices) : "Not solid to world" : 0 = + [ + 0: "Solid to World" + 1: "Passes through World" + ] + + // Inputs + input Wake(void) : "Wake up this physics object, if it is sleeping." + input Sleep(void) : "Put this physics object to sleep. It will wake if given the Wake input, or if force is applied to it. Note that physics objects go to sleep automatically after coming to rest for a while, so you don't really need to use this." + input EnableMotion(void) : "Enable physics motion/collision response." + input DisableMotion(void) : "Disable physics motion/collision response." + input ForceDrop(void) : "If this object is being carried by a player, with the physgun or +USE, force it to be dropped." + + // Outputs + output OnDamaged(void) : "Fired when this entity is damaged." + output OnAwakened(void) : "Fired when this entity becomes awake (collision/force is applied)." + output OnMotionEnabled(void) : "Fired when motion is enabled due to damage/physcannon/force." + output OnPhysGunPickup(void) : "Fired when a player picks this object up, either with the physgun or +USE." + output OnPhysGunPunt(void) : "Fired when a player punts this object with the physgun." + output OnPhysGunOnlyPickup(void) : "Fired when a player picks this object up WITH THE PHYSGUN. +USE pickups do not fire this output." + output OnPhysGunDrop(void) : "Fired when a player drops this object." + output OnPlayerUse(void) : "Fired when the player tries to +USE the physbox. This output will fire only if the Generate output on +USE spawnflag is set." +] + +@BaseClass base(Targetname) = TwoObjectPhysics +[ + spawnflags(flags) = + [ + 1: "No Collision until break" : 0 + // 2 is defined independently by subclasses, do not reuse + 4: "Start inactive" : 0 + 8: "Change mass to keep stable attachment to world" : 0 + 16: "Do not connect entities until turned on" : 0 + ] + attach1(target_destination) : "Entity 1" : "" + attach2(target_destination) : "Entity 2" : "" + constraintsystem(target_destination) : "Constraint System Manager" : "" : "The name of a phys_constraintsystem that this constraint should be a part of. All constraints on a set of entities should be placed in the same system, or they will fight each other during simulation." + + forcelimit(float) : "Force Limit to Break (lbs)" : "0" : "The amount of force an impact must apply to the constraint to break it. A way of calculating this is to set it to the mass of an object that would break this constraint if it were resting on the constrainted objects." + torquelimit(float) : "Torque Limit to Break (lbs * distance)" : "0" : "The amount of torque required to break the constraint. A way of calculating this is to multiply any reference mass by the resting distance (from the center of mass of the object) needed to break the constraint." + breaksound(sound) : "Play Sound on Break" : "" : "A sound played when the constraint is broken." + teleportfollowdistance(float) : "Follow teleport distance" : "0" : "If one object teleports more than this many units away it will cause the other constrained object to teleport to an appropriate relative position." + + // Inputs + input Break(void) : "Force the constraint to break." + input TurnOn(void) : "Enable the constraint. Do this when the objects don't exist when the constraint spawns - or when you have deactivated the constraint. Broken constraints can NOT be turned on. They have been deleted." + input TurnOff(void) : "Disable this constraint." + + // Outputs + output OnBreak(void) : "Fired when the constraint breaks." +] + +@PointClass base(Targetname) = phys_constraintsystem : + "An entity used to manage a group of interacting constraints and keep them stable. " + + "All constraints on a set of entities should be placed in the same system, or they will fight each other during simulation." +[ + additionaliterations(integer) : "Additional System Iterations" : 0 : "Adding iterations makes the interactions among constraints in a system tighter. It will not compensate for errors due to collision, but will help in cases where objects of disparate mass are constrained to each other." +] + +@PointClass base(Targetname,Angles) = phys_keepupright : "A controller that tries to keep an entity facing a particular direction." +[ + spawnflags(flags) = + [ + 1: "Start inactive" : 0 + ] + + attach1(target_destination) : "Target Entity" : "" : "The entity to align to the desired angles." + angularlimit(float) : "Angular Limit" : "15" : "The maximum angular velocity that this controller can compensate for, in degrees per second." + + // Inputs + input TurnOn(void) : "Enable the controller." + input TurnOff(void) : "Disable the controller." +] + +@PointClass base(Targetname, Angles) sphere(expradius) studioprop() = physics_cannister : + "A physically simulated gas cannister that can have its cap shot off, at which point gas will start escaping and cause the cannister to fly around. If it takes enough damage, it will explode." +[ + model(studio) : "World model" : "models/fire_equipment/w_weldtank.mdl" + spawnflags(flags) = + [ + 1 : "Start Asleep" : 0 + 2 : "Explodes" : 1 + ] + + expdamage(string) : "Explosion Damage" : "200.0" : "The amount of damage done by the explosion created when the cannister blows up." + expradius(string) : "Explosion Radius" : "250.0" : "The radius of the explosion to create when the cannister blows up." + health(integer) : "Health" : 25 : "The amount of damage the cannister takes before exploding." + + thrust(string) : "Thrust" : "3000.0" : "When the cap has been blown off, and the escaping gas is thrusting the cannister about, this is the amount of thrust generated." + fuel(string) : "Fuel Seconds" : "12.0" : "The amount of time that gas leaks from the cannister before being considered empty." + rendercolor(color255) : "Smoke Color (R G B)" : "255 255 255" + renderamt(integer) : "Smoke Alpha (0 - 255)" : 128 + gassound(sound) : "Thruster Sound" : "ambient/objects/cannister_loop.wav" : "The sound played when the gas is escaping from the cannister." + + // Inputs + input Activate(string) : "Start gas escaping from the cannister." + input Deactivate(string) : "Stop gas escaping from the cannister." + input Explode(string) : "Force the cannister to explode." + input Wake(void) : "Wakes up the cannister, if it is sleeping." + + // Outputs + output OnActivate(void) : "Fired when gas starts to escape from the cannister." + output OnAwakened(void) : "Fired when this entity becomes awake (collision/force is applied)." +] + +@PointClass base(Targetname, Parentname) size(-4 -4 -4, 4 4 4) = info_constraint_anchor : + "An entity used to attach constraints to a local position on an entity. Usually constraints will attach to the center of mass of an object. "+ + "Attach the desired constraint to this entity, and then parent this entity to the entity you want the constraint to apply to." +[ + massScale(float) : "Amount to scale the mass of this body in the constraint solver" : "1" +] + +@PointClass size(-4 -4 -4, 4 4 4) = info_mass_center : + "An entity that overrides the mass center of the target physics prop, or func_physbox, by moving it to the info_mass_center's location." +[ + target(target_destination) : "Target object" : "" : "The entity whose mass center will be overridden." +] + +@PointClass halfgridsnap base(Targetname) = phys_spring : + "A physically simulated spring. "+ + "'Length' is what's known as the 'natural spring length'. This is how long the spring would "+ + "be if it was at rest (nothing hanging on it or attached). When you attach something to the "+ + "spring, it will stretch longer than its 'natural length'. The amount of stretch is "+ + "determined by the 'Sprint Constant'. The larger the spring constant the less stretch the spring." +[ + spawnflags(flags) = + [ + 1 : "Force only on stretch" : 0 + ] + + attach1(target_destination) : "Entity 1" : "" + attach2(target_destination) : "Entity 2" : "" + + springaxis(vecline) : "Spring Axis" : "" : "Use the helper. Drag it out to match the virtual spring." + length(string) : "Spring Length" : "0" : "How long the spring would be if it was at rest (nothing hanging on it or attached). 0 means the length of the brush." + constant(string) : "Spring Constant" : "50" : "Stiffness of the spring. The larger the number the less the spring will stretch." + damping(string) : "Damping Constant" : "2.0" : "How much energy the spring loses. The larger the number, the less bouncy the spring." + relativedamping(string) : "Relative Damping Constant" : "0.1" : "The amount of energy the spring loses proportional to the relative velocity of the two objects the spring is attached to." + // UNDONE: add max tension and what event to fire when it breaks + breaklength(string) : "Break on Length" : "0" : "If the spring's length ever exceeds this length, the spring breaks." + + // Inputs + input SetSpringConstant(float) : "Set the Spring Constant." + input SetSpringLength(float) : "Set the Spring Length." + input SetSpringDamping(float) : "Set the Spring Damping." +] + +@PointClass halfgridsnap size(-8 -8 -8, 8 8 8) base(TwoObjectPhysics) = phys_hinge : + "A physically simulated hinge. Use the helper to define the axis of rotation." +[ + hingefriction(float) : "Friction" : "0" : "Resistance/friction in the hinge" + hingeaxis(vecline) : "Hinge Axis" + SystemLoadScale(float) : "Load Scale" : "1" : "Scale of the load connected to this hinge (1=just the objects directly connected)" + + // Inputs + input SetAngularVelocity(float) : "Set angular velocity around the hinge (motor) in deg/sec" + + + + //// Episodic only -- for now. + + minSoundThreshold(float) : "Minimum Sound Velocity" : "6" : "When travelling below this many units/sec, will not play any sound." + maxSoundThreshold(float) : "Full Sound Velocity" : "80" : "When travelling at this speed or above, will play sound at full volume." + slidesoundfwd(sound) : "Travel sound (forward)" : "" : "Play this sound when travelling forward on helper axis" + slidesoundback(sound) : "Travel sound (backward)" : "" : "Play this sound when travelling backward on helper axis" + + reversalsoundthresholdSmall(float) : "Reversal sound threshold (small)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the small reversal sound." + reversalsoundthresholdMedium(float) : "Reversal sound threshold (medium)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the medium reversal sound." + reversalsoundthresholdLarge(float) : "Reversal sound threshold (large)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the large reversal sound." + + reversalsoundSmall(sound) : "Reversal sound (small)" : "" : "Play this sound when making a hard reverse over the small threshold but less than medium" + reversalsoundMedium(sound) : "Reversal sound (medium)" : "" : "Play this sound when making a hard reverse over the medium threshold but less than large" + reversalsoundLarge(sound) : "Reversal sound (large)" : "" : "Play this sound when making a hard reverse over the large threshold" +] + +@PointClass base(TwoObjectPhysics) iconsprite("editor/phys_ballsocket.vmt") = phys_ballsocket : + "A constraint that keeps the position of two objects fixed, relative to the constraint's origin. It does not affect rotation." +[ + spawnflags(flags) = + [ + ] +] + +@PointClass base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_constraint : + "A constraint that keeps the relative position and orientation of two objects fixed." +[ +] + +@PointClass base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_pulleyconstraint : + "A constraint that is essentially two length constraints and two points. Imagine it as a virtual rope connected to two objects, each suspended from a pulley above them."+ + "The constraint keeps the sum of the distances between the pulley points and their suspended objects constant." +[ + addlength(float) : "Additional Length" : "0" : "Add (or subtract) this amount to the rest length of the pulley rope." + gearratio(float) : "Pulley Gear Ratio" : "1" : "Add (or subtract) this amount to the rest length of the pulley rope." + position2(vecline) : "Pulley Position 2" : : "The position of the pulley for Entity 2. The pulley for Entity 1 is the origin of this constraint entity. Entity 1 is always suspended from pulley point 1, and Entity 2 is always suspended from pulley point 2." + spawnflags(flags) = + [ + 1: "No Collision until break" : 1 + 2: "Keep Rigid" : 0 + ] +] + +@PointClass halfgridsnap base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_slideconstraint : + "A constraint that constrains an entity along a line segment." +[ + spawnflags(flags) = + [ + 1: "No Collision until break" : 1 + 2: "Limit Endpoints" : 0 + ] + slideaxis(vecline) : "Sliding Axis" + slidefriction(float) : "Friction" : "0" : "Resistance/friction in the constraint" + SystemLoadScale(float) : "Load Scale" : "1" : "Scale of the mass load connected to this constraint (1=just the objects directly connected)" + + // Inputs + input SetVelocity(float) : "Set linear velocity along the constraint" + + + //// Episodic only -- for now. + + minSoundThreshold(float) : "Minimum Sound Velocity" : "6" : "When travelling below this many units/sec, will not play any sound." + maxSoundThreshold(float) : "Full Sound Velocity" : "80" : "When travelling at this speed or above, will play sound at full volume." + slidesoundfwd(sound) : "Travel sound (forward)" : "" : "Play this sound when travelling forward on helper axis" + slidesoundback(sound) : "Travel sound (backward)" : "" : "Play this sound when travelling backward on helper axis" + + reversalsoundthresholdSmall(float) : "Reversal sound threshold (small)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the small reversal sound." + reversalsoundthresholdMedium(float) : "Reversal sound threshold (medium)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the medium reversal sound." + reversalsoundthresholdLarge(float) : "Reversal sound threshold (large)" : "0" : "When accelerating by more than this many units/sec^2 opposite to direction of travel, play the large reversal sound." + + reversalsoundSmall(sound) : "Reversal sound (small)" : "" : "Play this sound when making a hard reverse over the small threshold but less than medium" + reversalsoundMedium(sound) : "Reversal sound (medium)" : "" : "Play this sound when making a hard reverse over the medium threshold but less than large" + reversalsoundLarge(sound) : "Reversal sound (large)" : "" : "Play this sound when making a hard reverse over the large threshold" +] + +@PointClass base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_lengthconstraint : + "A constraint that preserves the distance between two entities. If the 'Keep Rigid' flag is set, think of it as a rod. If not, think off it as a virtual rope." +[ + addlength(float) : "Additional Length" : "0" : "Add (or subtract) this amount to the rest length of the rope." + minlength(float) : "Minimum Length" : "0" : "If the constraint is not rigid, this is the minimum length it can be." + attachpoint(vecline) : "Attached object 2 point" : "The position the rope attaches to object 2" + spawnflags(flags) = + [ + 1: "No Collision until break" : 1 + 2: "Keep Rigid" : 0 + ] +] + +@PointClass base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_ragdollconstraint : + "A constraint that fixes the position of two entities, relative to this constraint's origin. Also allows for limits on the rotation around each axis, in the space of this constraint." +[ + spawnflags(flags) = + [ + 1: "No Collision until break" : 1 + 2: "Only limit rotation (free movement)" : 0 + ] + + xmin(float) : "X axis min limit" : "-90" : "-180 min and 180 max = no constraint on this axis." + xmax(float) : "X axis max limit" : "90" : "-180 min and 180 max = no constraint on this axis." + ymin(float) : "Y axis min limit" : "0" : "-180 min and 180 max = no constraint on this axis." + ymax(float) : "Y axis max limit" : "0" : "-180 min and 180 max = no constraint on this axis." + zmin(float) : "Z axis min limit" : "0" : "-180 min and 180 max = no constraint on this axis." + zmax(float) : "Z axis max limit" : "0" : "-180 min and 180 max = no constraint on this axis." + xfriction(float) : "X axis friction" : "0" + yfriction(float) : "Y axis friction" : "0" + zfriction(float) : "Z axis friction" : "0" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) color(0 0 255) = phys_convert : + "Turns an arbitrary entity into a physically simulated entity. i.e. brush entities will behave like func_physbox, model entities behave like prop_physics." +[ + spawnflags(flags) = + [ + 1: "Convert Asleep" : 0 + 2: "Convert As Debris" : 0 + ] + target(target_destination) : "Entity to convert" : : "Name of the entity that will be converted to a physics object when the ConvertTarget input is fired." + swapmodel(string) : "Model Swap Entity" + massoverride(float) : "Mass Override" : "0" : "Sets the mass when the object(s) are converted (0 means auto-calculate)" + + // Outputs + output OnConvert(void) : "Fires after the conversion has taken place." + + // Inputs + input ConvertTarget(void) : "Converts this entity's target to a physically simulated object." +] + +@BaseClass base(Targetname) = ForceController +[ + spawnflags(flags) = + [ + // Thrust is on by default (will turn off in forcetime) + 1: "Start On" : 0 + // Apply linear force (if off, torque only) + 2: "Apply Force" : 1 + // Apply rotational force (torque - if off, linear only) + 4: "Apply Torque" : 1 + // Maintain local relationship with the attached object + 8: "Orient Locally" : 1 + // Impulse is independent of object's mass (impulse is acceleration NOT force) + 16: "Ignore Mass" : 0 + ] + attach1(target_destination) : "Attached Object" : "" : "Object to apply the force to." + + forcetime(string) : "Time of Force (0=inf)" : "0" : "Automatic shut-off after this time has passed (0 = stay on forever or until deactivated)" + + input Activate(void) : "Turn the force on" + input Deactivate(void) : "Turn the force off" + input Scale(string) : "Set Force Scale" +] + +@PointClass base(Angles, ForceController) = phys_thruster : + "An entity used to apply constant acceleration to a physics object. "+ + "The force and torque is calculated using the position and direction of the thruster as an impulse. So moving those off the object's center "+ + "will cause torque as well. Torque can be removed by unchecking the 'apply torque' flag. The position of the thruster can be forced to be "+ + "at the object's center by checking to 'ignore pos' flag." +[ + spawnflags(flags) = + [ + // Put the thrust at the object center + 32: "Ignore Pos" : 0 + ] + + force(string) : "Force" : "0" : "Force (will be integrated, units are force kg*in/s^2)" +] + +@PointClass halfgridsnap base(ForceController) = phys_torque : + "An angular thruster. Use it to apply angular force to an entity." +[ + // Angular acceleration (units are degress/s^2) + force(string) : "Angular Acceleration" : "0" + axis(vecline) : "Rotation Axis" : "" +] + +@PointClass base(Targetname) halfgridsnap size(-8 -8 -8, 8 8 8) = phys_motor : + "An entity that tries to spin a target entity at a particular speed." +[ + speed(string) : "Rotation Speed" : "0" : "Angular speed (units are degress/second)" + spinup(string) : "Spin up time" : "1" : "spin up time in seconds (also affects the rate at which speed changes happen)" + inertiafactor(float) : "System Interia Scale" : "1.0" : "Make this larger if the object being driven is constrained to a set of heavier objects." + axis(vecline) : "Rotation Axis" : "" + + spawnflags(flags) = + [ + // starts on by default + 1: "Start On" : 1 + // Disable world collisions on hinges + 2: "No world collision" : 0 + // motor also acts as a hinge constraining the object to this axis + 4: "Hinge Object" : 1 + // Maintain local relationship with the attached object (NOT WORKING YET) +// 8: "Orient Locally" : 1 + ] + attach1(target_destination) : "Attached Object" : "" : "Object to apply the force to" + + // Inputs + input SetSpeed(float) : "Sets target speed" + input TurnOn(void) : "Turns motor on" + input TurnOff(void) : "Turns motor off" +] + +@PointClass base(Targetname, Parentname, Angles, Studiomodel) studio() = phys_magnet : + "An entity that acts like a magnet, attaching metallic physics objects to itself when they touch it." +[ + spawnflags(flags) = + [ + 1 : "Start Asleep" : 0 + 2 : "Motion Disabled" : 0 + 4 : "Suck On Touch" : 0 + 8 : "Allow Attached Rotation" : 0 + 16: "Coast jeep pickup hack" : 0 + ] + + forcelimit(float) : "Force Limit to Break (lbs)" : "0" : "The amount of force necessary to break a stuck object off the magnet. A way of calculating this is to set it to the mass of an object that would break this constraint if it were resting on the magnet." + torquelimit(float) : "Torque Limit to Break (lbs * distance)" : "0" : "The amount of torque necessary to break a stuck object off the magnet. A way of calculating this is to multiply any reference mass by the resting distance (from the center of mass of the object) needed to break the constraint." + + massScale(float) : "Mass Scale" : "0" : "A scale multiplier for the object's mass." + overridescript(string) : "Override parameters" : "" : "A list of physics key/value pairs that are usually in a physics prop .qc file. Format is 'key,value,key,value,etc'." + maxobjects(integer) : "Maximum Attached Objects" : 0 : "The maximum number of physics objects that can be stuck to the magnet at once. 0 = no limit." + + // Inputs + input TurnOn(void) : "Turn the magnet on." + input TurnOff(void) : "The the magnet off. This will detach anything current stuck to the magnet." + + // Outputs + output OnAttach(void) : "Fired when an entity is grabbed by the magnet." + output OnDetach(void) : "Fired when an entity is released by the magnet." +] + + +//------------------------------------------------------------------------- +// +// Props +// +//------------------------------------------------------------------------- + +@BaseClass = prop_detail_base +[ + model(studio) : "World model" +] + +@BaseClass base(Angles, DXLevelChoice) = prop_static_base +[ + model(studio) : "World Model" + skin(integer) : "Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin instead of the default." + solid(choices) : "Collisions" : 6 = + [ + 0: "Not Solid" + 2: "Use Bounding Box" + 6: "Use VPhysics" + ] + disableshadows(choices) : "Disable Shadows" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + screenspacefade(choices) : "Screen Space Fade" : 0 : "The method by which the fading distance should be determined. If 'No', the fade distances is the distance from the player's view to the object, in inches. If 'Yes', the fade distance is the size of the object onscreen, in pixels." = + [ + 0 : "No" + 1 : "Yes" + ] + fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist). If 'Screen Space Fade' is selected, this represents the number of pixels wide covered by the prop when it starts to fade." + fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out). If 'Screen Space Fade' is selected, this represents the *minimum* number of pixels wide covered by the prop when it fades." + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under dx7 [hl2/ep1/portal] or dx8 [ep2/tf], then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." + + " This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." + + " Numbers smaller than 1 cause the prop to fade out at further distances, and greater than 1 cause it to fade out at closer distances." + lightingorigin(target_destination) : "Lighting Origin" : "" : "Select an info_lighting to specify a location to sample lighting from, instead of using this entity's origin." + disablevertexlighting(choices) : "Disable Vertex lighting" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + disableselfshadowing(choices) : "Disable Self-Shadowing with vertex lighting" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + ignorenormals(choices) : "Ignore surface normal for computing vertex lighting" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@BaseClass = BaseFadeProp +[ + fademindist(float) : "Start Fade Dist" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist)." + fademaxdist(float) : "End Fade Dist" : 0 : "Max fade distance at which the prop is visible (0 = don't fade out)" + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under dx7, then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." + + " This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." + + " Numbers smaller than 1 cause the prop to fade out at further distances, and greater than 1 cause it to fade out at closer distances." +] + +@BaseClass base(Parentname, Global, Angles, Studiomodel, BreakableProp, DXLevelChoice, BaseFadeProp, RenderFields) = prop_dynamic_base +[ + solid(choices) : "Collisions" : 6 = + [ + 0: "Not Solid" + 2: "Use Bounding Box" + 6: "Use VPhysics" + ] + + spawnflags(flags) = + [ + 64 : "Use Hitboxes for Renderbox" : 0 + 256 : "Start with collision disabled" : 0 + ] + + DefaultAnim(string) : "Default Animation" : "" : "The name of the idle animation that this prop will revert to whenever it finishes a random or forced animation." + + RandomAnimation(choices) : "Randomly Animate" : 0 : "If set, this prop will randomly choose and play animations, based upon the times specified in 'Min/Max Random Anim Time'. Inbetween the random animations, it will revert to playing the 'Default Animation'." = + [ + 0: "No" + 1: "Yes" + ] + MinAnimTime(float) : "Min Random Anim Time" : "5" : "Minimum time between random animations." + MaxAnimTime(float) : "Max Random Anim Time" : "10" : "Maximum time between random animations." + SetBodyGroup(integer) : "Body Group" : 0 // NEEDHELP + + DisableBoneFollowers(choices) : "Disable Bone Followers" : 0 : "If set, this prop won't generate bone followers, even if they're listed in the model's .qc" = + [ + 0: "No" + 1: "Yes" + ] + + // Inputs + input SetAnimation(string) : "Force the prop to play an animation. The parameter should be the name of the animation." + input SetDefaultAnimation(string) : "Set the Default Animation to the one specified in the parameter." + input SetPlaybackRate(float) : "Set the playback rate for the animation." + input SetBodyGroup(integer) : "Set the visible bodygroup, by index." + input TurnOn(void) : "Make the prop visible." + input TurnOff(void) : "Make the prop invisible." + input EnableCollision(void) : "Enable collision on the prop." + input DisableCollision(void) : "Disable collision on the prop." + + // Outputs + output OnAnimationBegun(void) : "Fired whenever a new animation has begun playing." + output OnAnimationDone(void) : "Fired whenever an animation is complete." + + lightingorigin(target_destination) : "Lighting Origin" : "" : "Select a path_corner entity to specify a location to sample lighting from, instead of using this entity's origin." +] + +@PointClass base(prop_detail_base) studioprop() = prop_detail : + "Detail Prop" +[ + model(studio) : "World model" +] + +@PointClass base(prop_static_base) color(255 255 0) sphere(fademindist) sphere(fademaxdist) studioprop() = prop_static : + "A prop that doesn't move and doesn't animate." +[ +] + +@PointClass base(prop_dynamic_base,EnableDisable) sphere(fademindist) sphere(fademaxdist) studioprop() = prop_dynamic : + "A prop that can be placed in hierarchy and can play animations. It can also be configured to break when it takes enough damage. "+ + "Note that the health of the object will be overridden by the health inside the model, to ensure consistent health game-wide. "+ + "If the model used by the prop is configured to be used as a prop_physics (i.e. it should be physically simulated) then it CANNOT be "+ + "used as a prop_dynamic. Upon level load it will display a warning in the console and remove itself. Use a prop_physics instead." +[ +] + +@PointClass base(prop_dynamic_base) studioprop() = prop_dynamic_override : + "A prop that can be placed in hierarchy and can play animations. It can also be configured to break when it takes enough damage.\n"+ + "prop_dynamic_override is a prototyping entity only. It will allow the use of models designed to be used as prop_physics." +[ + health(integer) : "Health" : 0 : "Number of points of damage to take before breaking. 0 means don't break." +] + +@BaseClass base(Targetname, Global, Angles, Studiomodel, BreakableProp, DXLevelChoice, BaseFadeProp) = BasePropPhysics +[ + spawnflags(flags) = + [ + 1 : "Start Asleep" : 0 + 2 : "Don't take physics damage" : 0 + 4 : "Debris - Don't collide with the player or other debris" : 0 + 8 : "Motion Disabled" : 0 + 64 : "Enable motion on Physcannon grab" : 0 + 128 : "Not affected by rotor wash" : 0 + 256 : "Generate output on +USE " : 1 + 512 : "Prevent pickup" : 0 + 1024: "Prevent motion enable on player bump" : 0 + 4096: "Debris with trigger interaction" : 0 + 8192: "Force server-side (Multiplayer only)" : 0 + 1048576: "Physgun can ALWAYS pick up. No matter what." : 0 + ] + + minhealthdmg(integer) : "Min Damage to Hurt" : 0 : "The prop will ignore any damage events if the damage is less than this amount." + shadowcastdist(integer) : "Shadow Cast Distance" : 0 : "Use this to override how far this object casts shadows. 0 = default distance." + physdamagescale(float) : "Physics Impact Damage Scale" : "0.1" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility.\nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials." + Damagetype(choices) : "Impact damage type" : 0 = + [ + 0: "Blunt" + 1: "Sharp" + ] + + nodamageforces(choices) : "Damaging it Doesn't Push It" : 0 : "Used to determine whether or not damage should cause the brush to move." = + [ + 0: "No" + 1: "Yes" + ] + + inertiaScale(float) : "Scale Factor For Inertia" : "1.0" : "Scales the angular mass of an object. Used to hack angular damage and collision response." + massScale(float) : "Mass Scale" : "0" : "A scale multiplier for the object's mass." + overridescript(string) : "Override Parameters" : "" : "A list of physics key/value pairs that are usually in a physics prop .qc file. Format is 'key,value,key,value,etc'." + damagetoenablemotion(integer) : "Health Level to Override Motion" : 0 : "If specified, this object will start motion disabled. Once its health has dropped below this specified amount, it will enable motion." + forcetoenablemotion(float) : "Physics Impact Force to Override Motion" : 0 : "If specified, this object will start motion disabled. Any impact that imparts a force greater than this value on the physbox will enable motion." + + puntsound(sound) : "Sound to make when punted" + + // Inputs + input Wake(void) : "Wake up this physics object, if it is sleeping." + input Sleep(void) : "Put this physics object to sleep. It will wake if given the Wake input, or if force is applied to it. Note that physics objects go to sleep automatically after coming to rest for a while, so you don't really need to use this." + input EnableMotion(void) : "Enable physics motion/collision response." + input DisableMotion(void) : "Disable physics motion/collision response." + input DisableFloating(void) : "Disable fluid/floating simulation to reduce cost." + input SetBodyGroup(integer) : "Set this prop's body group (from 0 - n)." + input physdamagescale(float) : "Set the Physics Impact Damage Scale for this character. NOTE: 0 means this feature is disabled for backwards compatibility." + input EnableDamageForces(void) : "Damaging the entity applies physics forces to it." + input DisableDamageForces(void) : "Damaging the entity does *not* apply physics forces to it." + input EnablePuntSound(void) : "Allow this prop to play its own sound when punted" + input DisablePuntSound(void) : "Prevent this prop from playing its own sound when punted" + + // Outputs + output OnMotionEnabled(void) : "Fired when motion is enabled on this prop, either via 'Health Level to Override Motion' or from the EnableMotion input." + output OnAwakened(void) : "Fired when this entity becomes awake (collision/force is applied to it while it's asleep)." + output OnPhysGunPickup(void) : "Fired when the player picks up the prop with the physcannon or +USE." + output OnPhysGunPunt(void) : "Fired when a player punts this object with the physgun." + output OnPhysGunOnlyPickup(void) : "Fired when a player picks this object up WITH THE PHYSGUN. +USE pickups do not fire this output." + output OnPhysGunDrop(void) : "Fired when the player drops the prop with the physcannon or USE." + output OnPlayerUse(void) : "Fired when the player tries to +USE the prop. This output will fire only if the Generate output on +USE spawnflag is set." + output OnPlayerPickup(void) : "Fired whenever the player picks up this prop (with the physcannon or with +USE)." + output OnOutOfWorld(void) : "Fired whenever the prop is out of the allowed world bounds." +] + +@PointClass base(BasePropPhysics) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_physics_override : + "A prop that physically simulates as a single rigid body. It can be constrained to other physics objects using hinges "+ + "or other constraints. It can also be configured to break when it takes enough damage. Health can be overridden on this version." +[ + health(integer) : "Health" : 0 : "Number of points of damage to take before breaking. 0 means don't break." + + // Inputs + input Ignite(void) : "Ignite, burst into flames." + input IgniteLifetime(float) : "Ignite, with a parameter lifetime." + input IgniteNumHitboxFires(integer) : "Ignite, with a parameternumber of hitbox fires." + input IgniteHitboxFireScale(float) : "Ignite, with a parameter hitbox fire scale." +] + +@PointClass base(BasePropPhysics, RenderFields) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_physics : + "A prop that physically simulates as a single rigid body. It can be constrained to other physics objects using hinges "+ + "or other constraints. It can also be configured to break when it takes enough damage. "+ + "Note that the health of the object will be overridden by the health inside the model, to ensure consistent health game-wide. "+ + "If the model used by the prop is configured to be used as a prop_dynamic (i.e. it should not be physically simulated) then it CANNOT be "+ + "used as a prop_physics. Upon level load it will display a warning in the console and remove itself. Use a prop_dynamic instead." +[ + // Inputs + input Ignite(void) : "Ignite, burst into flames." + input IgniteLifetime(float) : "Ignite, with a parameter lifetime." + input IgniteNumHitboxFires(integer) : "Ignite, with a parameternumber of hitbox fires." + input IgniteHitboxFireScale(float) : "Ignite, with a parameter hitbox fire scale." +] + +@PointClass base(prop_physics) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_physics_multiplayer : + "This class is the same as prop_physics, except the runtime collisions use a more bouncy method that avoids " + + "the prediction errors normal physics objects get." +[ + physicsmode(choices) : "Physics Mode" : 0 = + [ + 0: "Auto Detect" + 1: "Solid, Server-side" + 2: "Non-Solid, Server-side" + 3: "Non-Solid, Client-side" + ] +] + +@PointClass base(Angles, Targetname, Studiomodel, DXLevelChoice, BaseFadeProp, EnableDisable) sphere(fademindist) sphere(fademaxdist) studioprop() = prop_ragdoll : + "A prop that physically simulates and can be articulated with internal joints. The joint constraints are part of the physics model." +[ + spawnflags(flags) = + [ + 4 : "Debris - Don't collide with the player or other debris" : 1 + 8192 : "Allow Dissolve" : 0 + 16384 : "Motion Disabled" : 0 + 32768 : "Allow stretch" : 0 + 65536 : "Start asleep" : 0 + ] + angleOverride(string) : "Override Animation" : "" : "Filled in by the engine via wc_update_entity, do not edit by hand except to clear." + + input StartRagdollBoogie(void) : "Begins ragdoll boogie effect. Parameter override = number of seconds to boogie." + input EnableMotion(void) : "Enable physics motion/collision response." + input DisableMotion(void) : "Disable physics motion/collision response." + input FadeAndRemove(float) : "Fade out then remove (kill) self. Parameter override = duration of fade" +] + +@PointClass base(prop_dynamic_base) studioprop() = prop_dynamic_ornament : + "A way to attach one studio model to another as an ornament. It will render in the way that player/NPC weapons render." +[ + solid(choices) : "Collisions" : 0 = + [ + 0: "Not Solid" + ] + + InitialOwner(string) : "Target Entity" : : "Name of the entity that this ornament should attach to, at startup." + + // Inputs + input SetAttached(string) : "Attach the ornament to a different entity. Parameter should be the name of entity to attach to." + input Detach(string) : "Detach from the Target Entity and become invisible. The ornament can be re-attached with the SetAttached input." +] + +//------------------------------------------------------------------------- +// +// Solid Entities +// +//------------------------------------------------------------------------- + +@SolidClass base(Targetname) color(0 255 255) = func_areaportal : + "A portal brush used to manage visibility in maps. Portals define areas, which are spaces " + + "that are connected in the map. Both sides of a portal cannot touch the same area, for example, a " + + "doughnut shaped map would require at least two portals to divide the map into two areas. A linear map " + + "could be divided into two areas with a single area portal." +[ + target(target_destination) : "Name of Linked Door" : : "(Optional) The name of a door whose open/closed state controls the on/off state of this area portal." + StartOpen(choices) : "Initial State" : 1 = + [ + 0 : "Closed" + 1 : "Open" + ] + + PortalVersion(integer) readonly : "Portal Version" : 1 : "(Don't change). Differentiates between shipping HL2 maps and maps using new engine features." + + // Inputs + input Open(void) : "Open the portal. When the portal is open is can be seen through." + input Close(void) : "Close the portal. When the portal is closed it cannot be seen through." + input Toggle(void) : "Toggle the open/closed state of the portal." +] + +@SolidClass base(Targetname) color(0 255 255) = func_occluder : + "A occluder brush used to manage dynamic visibility in maps. Occluders are used to dynamically " + + "determine what things are behind them, to prevent trying to draw them at all." +[ + StartActive(choices) : "Initial State" : 1 = + [ + 0 : "Inactive" + 1 : "Active" + ] + + // Inputs + input Deactivate(void) : "Deactivate the occluder, When inactive, it can be seen through." + input Activate(void) : "Activate the occluder. When active, it cannot be seen through." + input Toggle(void) : "Toggle the active/inactive state of the occluder." +] + +@SolidClass base(BreakableBrush, Origin, RenderFields, Shadow) = func_breakable : + "A brush entity that can be broken from damage, or an input." +[ + minhealthdmg(integer) : "Min Damage to Hurt" : 0 : "The prop will ignore any damage events if the damage is less than this amount." + + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility.\nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials." +] + +@SolidClass quadbounds() base(BreakableBrush, RenderFields, Shadow) = func_breakable_surf : + "A breakable surface, for partially breakable glass / tile / etc. All faces but the desired visible one must be marked as NODRAW and that" + + "face must be 4 sided. The material applied to the visible face must be set up to be breakable." +[ + spawnflags(Flags) = + [ + 1 : "Physics damage decals" : 0 + 2 : "Take damage from held objects" : 0 + ] + health(integer) : "Health" : 5 : "The amount of damage the surface takes before breaking." + fragility(integer) : "Fragility" : 100 : "If the 'Surface Type' is set to Glass, this value sets how fragile the glass pieces are after the surface has been broken." + surfacetype(choices) : "Surface Type" : 0 = + [ + 0 : "Glass" + 1 : "Tile" + ] + + // Inputs + input Shatter(vector) : "Shatter the window. Input a vector. First two coordinates are the X,Y center of the shattering (as values from from 0-1). The third coordinate is the radius of the shatter, in inches." +] + +@SolidClass base(Targetname, Parentname, RenderFields, Shadow) = func_conveyor : + "Conveyor Belt" // NEEDHELP +[ + movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction conveyor moves." + spawnflags(flags) = + [ + 1 : "No Push" : 0 + 2 : "Not Solid" : 0 + ] + speed(string) : "Conveyor Speed" : "100" + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + + // Inputs + input ToggleDirection(void) : "ToggleDirection" + input SetSpeed(integer) : "SetSpeed" +] + +@SolidClass base(DXLevelChoice) color(0 180 0) = func_detail : + "An entity that turns its brushes into detail brushes. Detail brushes do NOT contribute to visibility in the PVS. World geometry "+ + "is not clipped to detail brushes, so if you have a small detail clump attached to a wall, the wall won't be cut up by the detail brush."+ + "func_detail is great for high-frequency brush geometry that's visual detail only. It is also ideal for reducing map VIS time." +[ +] + +@SolidClass color(180 180 0) = func_viscluster : + "Any leaves touching this brush will have their vis merged together into a single cluster. Use multiple func_viscluster entities to reduce vis time" +[ +] + +@SolidClass base(Targetname, Parentname, Origin, RenderFields, Shadow) = func_illusionary : + "Legacy support. Use func_brush instead." +[ + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@SolidClass base(Targetname, Parentname) = func_precipitation : + "A brush entity that creates rain and snow inside its volume." +[ + renderamt(integer) : "Density (0-100%)" : 5 + rendercolor(color255) : "Color (R G B)" : "100 100 100" + preciptype(choices) : "Precipitation Type" : 0 = + [ + 0 : "Rain" + 1 : "Snow" + 2 : "Ash" + 3 : "Snowfall" + ] +] + +@SolidClass base(func_wall) = func_wall_toggle : + "A brush entity that can be toggled on/off. When off, the brush will be non-solid and invisible. Does not cast lightmap shadows." +[ + spawnflags(flags) = + [ + 1 : "Starts Invisible" : 0 + ] + + // Inputs + input Toggle(void) : "Toggle the brush on/off. When off, the brush will be non-solid and invisible." +] + + +//@SolidClass base(Door) = func_water : +// "Liquid" // NEEDHELP +//[ +// spawnflags(flags) = +// [ +// 1 : "Starts Open" : 0 +// 256:"Use Only" : 0 +// ] +// movedir(angle) : "Move Direction (Pitch Yaw Roll)" : "0 0 0" : "The direction the water will move when it is told to 'Open'." +// WaveHeight(string) : "Wave Height" : "3.0" +//] + +@SolidClass base(Targetname, Parentname, RenderFields, Global) = func_guntarget : + "This is a moving target that moves along a path of path_tracks. It can be shot and killed." +[ + speed(integer) : "Speed (units per second)" : 100 : "The speed at which the target moves along its path." + target(target_destination) : "First stop target" : : "The name of the first path_track entity in the path that this target should follow." + health(integer) : "Damage to Take" : 0 : "The amount of damage taken before this target is killed." + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + + // Inputs + input Start(void) : "Start the target moving." + input Stop(void) : "Stop the target from moving." + input Toggle(void) : "Toggle the target between moving and stopped." + + // Outputs + output OnDeath(void) : "Fires when the target is killed." +] + +@PointClass = func_fish_pool : "Creates a school of interactive fish that swim near this entity." +[ + model(studio) : "World model" : "models/Junkola.mdl" + fish_count(integer) : "Fish Count" : 10 : "Number of Fish in this Pool" + max_range(float) : "Max Range" : 150 : "How far away a Fish can wander (max 255)" +] + + +//------------------------------------------------------------------------- +// +// Trains and Tracks +// +//------------------------------------------------------------------------- + +@BaseClass = PlatSounds +[ + movesnd(choices) : "Move Sound" : 0 : "The sound played whenever the platform starts moving." = + [ + 0: "No Sound" + 1: "big elev 1" + 2: "big elev 2" + 3: "tech elev 1" + 4: "tech elev 2" + 5: "tech elev 3" + 6: "freight elev 1" + 7: "freight elev 2" + 8: "heavy elev" + 9: "rack elev" + 10: "rail elev" + 11: "squeek elev" + 12: "odd elev 1" + 13: "odd elev 2" + ] + stopsnd(choices) : "Stop Sound" : 0 : "The sound played when the platform stops moving." = + [ + 0: "No Sound" + 1: "big elev stop1" + 2: "big elev stop2" + 3: "freight elev stop" + 4: "heavy elev stop" + 5: "rack stop" + 6: "rail stop" + 7: "squeek stop" + 8: "quick stop" + ] + volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" +] + +@BaseClass base(Targetname, Parentname, RenderFields, Global, PlatSounds) = Trackchange +[ + height(integer) : "Travel Altitude" : 0 : "The vertical height above the track that the train moves. Negative values moves the train below." + spawnflags(flags) = + [ + 1: "Auto Activate train" : 0 + 2: "Relink track" : 0 + 8: "Start at Bottom" : 0 + 16: "Rotate Only" : 0 + 64: "X Axis" : 0 + 128: "Y Axis" : 0 + ] + rotation(integer) : "Spin amount" : 0 : "The amount this platform should rotate as it moves, in degrees." + train(target_destination) : "Train to Switch" // NEEDHELP + toptrack(target_destination) : "Top Track" // NEEDHELP + bottomtrack(target_destination) : "Bottom Track" // NEEDHELP + speed(integer) : "Move/Rotate Speed" : 0 // NEEDHELP +] + +@BaseClass base(Targetname, Parentname, Origin, RenderFields, Global, Shadow) = BaseTrain +[ + spawnflags(flags) = + [ + 1 : "No Pitch (X-rot)" : 0 + 2 : "No User Control" : 0 + 8 : "Passable" : 0 + 16 : "Fixed Orientation" : 0 + 128 : "HL1 Train" : 0 + 256 : "Use max speed for pitch shifting move sound" : 0 + 512 : "Is unblockable by player" : 0 + ] + + target(target_destination) : "First Stop Target" : "" : "The name of the first path_track in the train's path. The train " + + "will spawn at this path_track. It will also turn to face direction indicated by the 'Orientation Type' setting." + + startspeed(integer) : "Max Speed (units / second)" : 100 : "The maximum speed that this train can move. "+ + "Any speeds applied to this train, such as by path_tracks or SetSpeed inputs, will be clipped to this maximum value." + + speed(integer) : "Initial Speed (units / second)" : 0 : "The speed that the train will move at after it spawns, 0 = stopped." + + velocitytype(choices) : "Change Velocity" : 0 : "The method through which this train changes its velocity as it moves along the path." = + [ + 0 : "Instantaneously" + 1 : "Linear blend" + 2 : "Ease in/ease out" + ] + + orientationtype(choices) : "Change angles" : 1 : "The method through which this train changes its orientation as it moves along the path." = + [ + 0 : "Never (fixed orientation)" + 1 : "Near path_tracks" + 2 : "Linear blend" + 3 : "Ease in/ease out" + ] + + wheels(integer) : "Distance Between the Wheels" : 50 : "Used for turning and stopping." + height(integer) : "Height above track" : 4 : "The height above the track that this train moves." + bank(string) : "Bank Angle on Turns" : "0" // NEEDHELP + + dmg(integer) : "Damage on Crush" : 0 : "The amount of damage this train does to entities that block it." + + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + + MoveSound(sound) : "Move Sound" : "" : "A sound that is played (and looped) while the train is moving." + MovePingSound(sound) : "Move Ping Sound" : "" : "A sound that is played more frequently as the train speeds up." + StartSound(sound) : "Start Sound" : "" : "A sound played when the train starts moving." + StopSound(sound) : "Stop Sound" : "" : "A sound played when the train stops moving." + volume(integer) : "Volume (10 = loudest)" : 10 + MoveSoundMinPitch(integer) : "Min pitch (1-255, > 100 = higher)" : 60 : "The sound pitch value that the train will approach as it comes to a stop." + MoveSoundMaxPitch(integer) : "Max pitch (1-255, > 100 = higher)" : 200 : "The sound pitch value that the train will approach as it approaches its "+ + "max speed (or 1000 inches/second if the 'Use max speed for pitch shifting move sound' flag is not set)." + MoveSoundMinTime(float) : "Min move sound interval" : 0 : "Minimum interval at which to play the move ping sound." + MoveSoundMaxTime(float) : "Max move sound interval" : 0 : "Maximum interval at which to play the move ping sound." + + // Inputs + input SetSpeed(float) : "Set the speed of the train, as a ratio of max speed [0, 1]" + input SetSpeedDir(float) : "Set the speed of the train, as a ratio of max speed. Negative values reverse the direction [-1, 1]" + input SetSpeedReal(float) : "Set the speed of the train. Must be a positive value from 0 to max speed." + input Stop(void) : "Stop the train." + input StartForward(void) : "Start the train moving forward." + input StartBackward(void) : "Start the train moving backward." + input Resume(void) : "Resume the train moving in the current direction after it was stopped via the 'Stop' or 'Toggle' input." + input Reverse(void) : "Reverse the direction of the train." + input Toggle(void) : "Toggle the train between start and stop." +] + +@SolidClass base(Trackchange) = func_trackautochange : + "An entity that works as a rotating/moving platform that will carry a train to a new track. "+ + "It must be larger in X-Y planar area than the train, since it must contain the train within "+ + "these dimensions in order to operate when the train is near it." +[ + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." + + // Inputs + input Trigger(void) : "Trigger the track change." +] + +@SolidClass base(Trackchange) = func_trackchange : + "An entity that works as a rotating/moving platform that will carry a train to a new track. "+ + "It must be larger in X-Y planar area than the train, since it must contain the train within "+ + "these dimensions in order to operate when the train is near it." +[ + _minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush." +] + +@SolidClass base(BaseTrain) = func_tracktrain : + "A moving platform that the player can ride. It follows a path of path_track entities.\n" + + "NOTE: Build your train so that the front of the train is facing down the X axis. " + + "When it spawns it will automatically rotate to face the next path_track on the path." +[ + + // Outputs + output OnStart(void) : "Fired when the train starts moving in either direction." + output OnNext(string) : "Fires when this train picks a new point to move towards (and just after OnStart)." + + ManualSpeedChanges(choices) : "Manual Train Speed" : 0 : "Train Speed is controlled through IO, handles accel, decel times." = + [ + 0 : "Off" + 1 : "On" + ] + + ManualAccelSpeed(float) : "Manual Accel Speed" : 0 : "Units per second to accelerate to target speed." + ManualDecelSpeed(float) : "Manual Decel Speed" : 0 : "Units per second to decelerate to target speed." + + input SetSpeedDirAccel(float) : "Accel/Decel to the specified speed, as a ratio of max speed. Negative values reverse the direction [-1, 1]" + input TeleportToPathTrack(string) : "Teleport train to the designated path track." + input SetSpeedForwardModifier(float) : "Applies the given modifier to all forward speeds. [0, 1]" +] + +@SolidClass base(BaseTrain) = func_tanktrain : + "A moving train that follows a path of path_track entities, shoots at the player, and can be killed.\n" + + "NOTE: Build your train so that the front of the train is facing down the X axis. " + + "When it spawns it will automatically rotate to face the next path_track on the path." +[ + health(integer) : "Health" : 100 + + // Outputs + output OnDeath(void) : "Fired when the tank is killed." +] + +@SolidClass base(Parentname,Global) = func_traincontrols : + "When used by the player, this entity overrides the player's controls to let them drive a train." +[ + target(target_destination) : "Train Name" : : "The target train to control when the player uses these controls." +] + +@PointClass base(Targetname) iconsprite("editor/tanktrain_aitarget.vmt") = tanktrain_aitarget : + "An entity that changes the target of a tanktrain_ai entity." +[ + target(target_destination) : "Tank AI Entity" : : "The tanktrain_ai entity to change the target of." + newtarget(target_destination) : "New Target Entity" : : "The entity to tell the tanktrain_ai to target." +] + +@PointClass base(Targetname) iconsprite("editor/tanktrain_ai.vmt") = tanktrain_ai : + "Train chase AI" // NEEDHELP +[ + target(target_destination) : "Train Name" + startsound(sound) : "Start Moving Sound" : "vehicles/diesel_start1.wav" + enginesound(sound) : "Engine Loop Sound" : "vehicles/diesel_turbo_loop1.wav" + movementsound(sound) : "Vehicle Movement Sound" : "vehicles/tank_treads_loop1.wav" +] + +@PointClass base(Targetname, Parentname, Angles) cylinder(255 255 255, targetname, target, radius, targetname, targetname, radius) color(255 192 0) size(16 16 16) = path_track : + "An entity used to build paths for other entities to follow. Each path_track is a node on the path, each holding the name of the next path_track in the path." +[ + spawnflags(Flags) = + [ + 1: "Disabled" : 0 + 2: "Fire once" : 0 + 4: "Branch Reverse" : 0 + 8: "Disable train" : 0 + 16: "Teleport to THIS path track" : 0 + 32: "Part of an uphill path" : 0 + 64: "Part of a downhill path" : 0 + ] + + target(target_destination) : "Next Stop Target" : : "The next path_track in the path." + altpath(target_destination) : "Branch Path" : : "An alternative path_track to be the next node in the path. Useful for making branching paths. Use the ToggleAlternatePath / EnableAlternatePath inputs to make the alternative path active." + speed(float) : "New Train Speed" : 0 : "When the train reaches this path_track, it will set its speed to this speed. "+ + "This speed must be a positive value that is less than the train's max speed. A value of 0 will cause no change in the train's speed." + radius(float) : "Path radius" : 0 : "Used by NPCs who follow track paths (attack chopper/gunship). This tells them the maximum distance they're allowed to be from the path at this node." + + orientationtype(choices) : "Orientation Type" : 1 : "The way that the path follower faces as it moves through this path track." = + [ + 0 : "No change" + 1 : "Face direction of motion" + 2 : "Face this path_track's angles" + ] + + // Inputs + input ToggleAlternatePath(void) : "Cause the track to toggle to/from its alternate path." + input EnableAlternatePath(void) : "Enable the alternate path of the track." + input DisableAlternatePath(void) : "Disable the alternate path of the track." + + input TogglePath(void) : "Cause the track to toggle on/off/" + input EnablePath(void) : "Enable the track." + input DisablePath(void) : "Disable the track." + + // Outputs + output OnPass(void) : "Fired when any entity following this path passes this path_track node." + output OnTeleport(void) : "Fired when any entity following this path teleports directly to this path_track node." +] + + +//------------------------------------------------------------------------- +// +// Test Entities +// +//------------------------------------------------------------------------- +@PointClass base(Angles) size(-16 -16 -16, 16 16 16) color(255 255 255) = test_traceline : + "A debugging tool for testing tracelines." +[ +] + + +//------------------------------------------------------------------------- +// +// Triggers +// +//------------------------------------------------------------------------- + +@SolidClass base(Targetname) = trigger_autosave : + "A trigger volume that autosaves when the player touches it." +[ + master(string) : "Master" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + NewLevelUnit(choices) : "Force New Level Unit" : 0 : "If set, the save will discard any savedata from previous levels, for the purpose of keeping savegame filesizes down. Can only be safely used if there is no way for the player to return to previous levels." = + [ + 0 : "No" + 1 : "Yes" + ] + DangerousTimer(float) : "Dangerous Timer" : 0 : "The number of seconds the player must survive before this autosave takes effect." + + MinimumHitPoints(integer): "Minumum Hit Points" : 0 : "Don't save dangerous when player has less than this many hitpoints." +] + +@SolidClass base(EnableDisable) = trigger_changelevel : + "An entity that triggers a level change.\n" + + "Place an info_landmark in both maps that marks the 'same' location in each map.\n"+ + "TIPS & TRICKS: To fire events in the next level, use the OnLevelChange output to turn on "+ + "an env_global in the current level. Create a logic_auto in the next level that checks "+ + "for the state set by the env_global.\n\n"+ + "To control which entities go through the level transition, create one or more trigger_transitions and "+ + "give them the same name as the landmark. Any entities within the trigger_transition(s) will go to the next map." +[ + targetname(target_source) : "Name" + map(string) : "New Map Name" + landmark(target_destination) : "Landmark Name" + spawnflags(flags) = + [ + 2: "Disable Touch" : 0 + 4: "To Previous Chapter" : 0 + ] + + // Inputs + input ChangeLevel(void) : "Cause the level change. Use this when triggering the level change with a button, etc." + + // Outputs + output OnChangeLevel(void) : "Fired when the level changes." +] + +@SolidClass base(Trigger) = trigger_gravity : + "A trigger volume that changes the gravity on any entity that touches it." +[ + gravity(integer) : "Gravity (0-1)" : 1 +] + +@SolidClass base(Trigger) = trigger_playermovement : + "An entity that can be used to disable player's automatic ducking/unducking when jumping." +[ + spawnflags(flags) = + [ + // Remove this after maps fixed up: + 16: "(OBSOLETE, Uncheck me)" : 0 + 128: "Disable auto player movement" : 1 + 2048: "Auto-duck while in trigger" : 0 + ] +] + + +// NEEDHELP +@SolidClass base(Trigger) = trigger_soundscape : + "Soundscape trigger. " + + "It is not necessary to create outputs for this trigger. It automatically will trigger the " + + "soundscape referred to by its 'Soundscape' property." +[ + soundscape(target_source) : "Soundscape" +] + +@SolidClass base(Trigger, Targetname) = trigger_hurt : + "A trigger volume that damages entities that touch it." +[ + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + damage(integer) : "Damage" : 10 : "The amount of damage done to entities that touch this trigger. The damage is done every half-second. See also 'Damage Model' for extra details on how damage can be dealt." + damagecap(integer) : "Damage Cap" : 20 : "Maximum damage dealt per second. This field is only used if you select the Doubling w/Forgiveness damage model, via the spawnflag." + damagetype(choices) : "Damage Type" : 0 = + [ + 0 : "GENERIC" + 1 : "CRUSH" + 2 : "BULLET" + 4 : "SLASH" + 8 : "BURN" + 16 : "FREEZE" + 32 : "FALL" + 64 : "BLAST" + 128 : "CLUB" + 256 : "SHOCK" + 512 : "SONIC" + 1024 : "ENERGYBEAM" + 16384: "DROWN" + 32768 : "PARALYSE" + 65536 : "NERVEGAS" + 131072 : "POISON" + 262144 : "RADIATION" + 524288 : "DROWNRECOVER" + 1048576 : "CHEMICAL" + 2097152 : "SLOWBURN" + 4194304 : "SLOWFREEZE" + ] + + damagemodel(choices) : "Damage Model" : 0 : "How damage is dealt. Normal always does the specified amount of damage each half second. Doubling starts with the specified amount and doubles it each time it hurts the toucher. Forgiveness means that if the toucher gets out of the trigger the damage will reset to the specified value. Good for making triggers that are deadly over time without having to cause massive damage on each touch." = + [ + 0 : "Normal" + 1 : "Doubling w/forgiveness" + ] + + nodmgforce(choices) : "Zero Damage Force" : 0 : "Should the damaged entity receive no physics force from this trigger." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input SetDamage(float) : "Set a new amount of damage for this trigger." + + // Outputs + output OnHurt(void) : "Fired whenever this trigger hurts something other than a player." + output OnHurtPlayer(void) : "Fired whenever this trigger hurts a player." +] + +@SolidClass base(Trigger, Targetname) = trigger_remove : + "A trigger volume that removes any entities that touch it. Be careful, removing some entities can cause instability. "+ + "This is not the same as killing entities. i.e. NPCs removed in this manner will not fire their OnKilled outputs." +[ + // Outputs + output OnRemove(void) : "Fired whenever an entity is removed." +] + +@SolidClass base(Trigger) = trigger_multiple : + "A trigger volume that can be triggered multiple times." +[ + wait(integer) : "Delay Before Reset" : 1 : "Amount of time, in seconds, after the trigger_multiple has triggered before it can be triggered again. If set to -1, it will never trigger again (in which case you should just use a trigger_once)." + + // Inputs + input TouchTest(void) : "Tests if the trigger is being touched and fires an output based on whether the value is true or false." + + + // Outputs + output OnTrigger(void) : "Fired whenever the trigger is activated." + output OnTouching(void) : "Fired when the TestTouch input is true (something is touching the trigger.)" + output OnNotTouching(void) : "Fired when the TestTouch input is not true (nothing is touching the trigger.)" +] + +@SolidClass base(TriggerOnce) = trigger_once : + "A trigger volume that removes itself after it is triggered once." +[ + // Outputs + output OnTrigger(void) : "Fired whenever the trigger is activated." +] + +@SolidClass base(Trigger) = trigger_look : + "An entity used to trigger something when the player looks at something. It fires 'OnTrigger' when the player "+ + "looks at a target entity for the given amount of time, while within the trigger volume. If the player leaves "+ + "the trigger or looks away from the target entity the clock resets. If the 'Use Velocity instead of facing' spawnflag " + + "is checked, the trigger uses the player's velocity instead of the player's view, so it determines whenever the player "+ + "is moving toward the target entity. Useful for triggering when players are driving a vehicle at something."+ + "NOTE: Only designed for single-player game. " +[ + spawnflags(flags) = + [ + 128: "Fire Once" : 1 + 256: "Use Velocity instead of facing" : 0 + ] + + target(target_destination) : "Look Target" : : "The name of the entity to be looked at." + LookTime(string) : "LookTime" : "0.5" : "The time, in seconds, that the player must look the target before firing the output. Resets if player leaves trigger, or looks outside the Field of View threshold." + FieldOfView(string) : "FieldOfView" : "0.9" : "How close the player has to be looking at the target. 1.0 = straight ahead\n 0.0 = +/- 90 degrees\n -1.0 = all directions)." + Timeout(float) : "Timeout" : "0" : "The time, in seconds, to wait after player enters the trigger before firing the OnTimeout output, 0 = never." + + // Output + output OnTrigger(void) : "Fired when the trigger is activated." + output OnTimeout(void) : "Fired after the timeout interval expires if the player never looked at the target." +] + +@SolidClass base(Trigger) = trigger_push : + "A trigger volume that pushes entities that touch it." +[ + pushdir(angle) : "Push Direction (Pitch Yaw Roll)" : "0 0 0" : "Angles indicating the direction to push touched entities." + + spawnflags(flags) = + [ + 128: "Once Only" : 0 + 256: "Affects Ladders (Half-Life 2)" : 0 + ] + + speed(integer) : "Speed of Push" : 40 : "The speed at which to push entities away, in inches / second." + alternateticksfix(float) : "Scale force for alternate ticks" : "0" : "If nonzero, scale the force by this amount when running with alternate ticks. This fixes problems with an overly large force due to the longer frametime on when running with sv_alternateticks 1." +] + +@SolidClass base(Trigger, Angles) = trigger_wind : + "A trigger volume that pushes physics objects that touch it." +[ + Speed(integer) : "Speed" : 200 : "The baseline for how hard the wind blows." + SpeedNoise(integer) : "Speed Noise" : 0 : "Noise added to wind speed +/-" + DirectionNoise(integer) : "Direction Noise" : 10 : "Noise added to wind direction." + HoldTime(integer) : "Hold Time" : 0 : "Baseline for how long to wait before changing wind." + HoldNoise(integer) : "Hold Noise" : 0 : "Noise added to how long to wait before changing wind." + + // Inputs + input SetSpeed(integer) : "Set the baseline for how hard the wind blows." +] + +@SolidClass base(Targetname, Origin, Angles) = trigger_impact : + "A trigger volume that can be told to push all physics objects that are inside of it in the direction specified by this trigger's angles.\n"+ + "Also outputs the force at the time of impact for anyone else that wants to use it." +[ + Magnitude(float) : "Magnitude" : 200 : "The strength of the impact. Negative values reverse the direction." + noise(float) : "Noise" : "0.1" : "The amount of directional noise (0-1). 0 = no noise, 1 = random direction." + viewkick(float) : "Viewkick" : "0.05" : "The amount to kick player's view if the player is in the trigger. Proportional to magnitude (0-1)." + + // Inputs + input Impact(float) : "Fire the impact, pushing all entities within the volume." + input SetMagnitude(float) : "Set the magnitude of the impact." + + // Outputs + output ImpactForce(string) : "Fired after an impact. The parameter passed along is the force of the impact that was generated." +] + +@SolidClass base(Trigger) = trigger_proximity : + "Measures the distance of the player within the trigger volume from a given point (and within " + + "a given radius). The NearestPlayerDistance output will be 0 when the player is at the center point, " + + "and 1 when the player is at the radius." +[ + measuretarget(target_destination) : "Point to Measure From" : : "The name of a target entity who's origin is the point to measure the player's distance from." + radius(string) : "Radius to measure within" : 256 : "The radius to which the distance should be mapped. If the player is outside the radius he will be ignored." + + // Outputs + output NearestEntityDistance(integer) : "Fired continuously when entities are touching the trigger volume. The output parameter is the distance from the "+ + "Point to Measure From to the nearest entity that passed the trigger filters. The distance is mapped to the radius distance, "+ + "so it will be 0 when the entity is on the point, and 1 when the entity is at the edge of the radius." +] + +@SolidClass base(Trigger) = trigger_teleport : + "A trigger volume that teleports entities that touch it. Entities are teleported to the Remote Destination, and have their angles "+ + "set to that of the Remote Destination's. If a Local Destination Landmark is specified, teleported entities are offset from the target "+ + "by their initial offset from the landmark, and their angles are left alone." +[ + target(target_destination) : "Remote Destination" : : "The entity specifying the point to which entities should be teleported." + landmark(target_destination) : "Local Destination Landmark" : : "If specified, then teleported entities are offset from the target by their initial offset from the landmark." + spawnflags(flags) = + [ + 32: "Preserve angles even when a local landmark is not specified" : 0 + ] +] + +@SolidClass base(Targetname) = trigger_transition : + "A volume that's used to control which entities go through the level transition. Create one or more trigger_transitions and "+ + "give them the same name as the changelevel landmark. Any entities within the trigger_transition(s) will go to the next map."+ + "See trigger_changelevel for more info." +[ +] + +@SolidClass base(Targetname) = trigger_serverragdoll : + "A volume that forces any NPC inside it to create a server side ragdoll instead of a client one." +[ +] + + + + + +//------------------------------------------------------------------------- +// +// AI +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname,ResponseContext,EnableDisable) = ai_speechfilter : + "An entity that can be used to control the idle speech patterns of a set of NPCs." +[ + subject(target_destination) : "Subject(s)" : "" : "This is the NPC(s) whose speech we're filtering. May be a targetname or a classname." + + IdleModifier(float) : "Idle modifier." : "1.0" : "Multiplier to the percentage chance that our NPC(s) will idle speak. Set to 0 to prevent all idle speech." + NeverSayHello(choices) : "Greet Player?" : 0 : "If set to Yes, our NPC(s) won't greet the player when they first meet him." = + [ + 0 : "Yes" + 1 : "No" + ] + + input SetIdleModifier(float) : "Allows designers to change the idle modifier at runtime" +] + +//------------------------------------------------------------------------- +// Water LOD control +//------------------------------------------------------------------------- + +@PointClass base(Targetname) iconsprite("editor/waterlodcontrol.vmt") = water_lod_control : + "An entity used to control the LOD behavior of any water in the map. If your map has water, this entity is required." +[ + cheapwaterstartdistance(float) : "Start Transition to Cheap Water" : 1000 : "This is the distance from the camera that water will start transitioning to cheap water, in inches." + cheapwaterenddistance(float) : "End Transition to Cheap Water" : 2000 : "This is the distance from the camera that water will finish transitioning to cheap water, in inches." + + // Inputs + input SetCheapWaterStartDistance(float) : "Set the distance that water starts transitioning to cheap water." + input SetCheapWaterEndDistance(float) : "Set the distance that water finishes transitioning to cheap water." +] + + +//------------------------------------------------------------------------- +// Used to allow entities to use point_cameras for their materials +//------------------------------------------------------------------------- + +@PointClass base(Targetname) = info_camera_link : + "An entity that can use point_cameras to render images for materials used by entities. "+ + "To author the material, use the special identifier _rt_Camera " + + "for the $baseTexture (or whatever texture you want, like envmap, etc.) in the .vmt " + + "then connect the 'target' field to the entity which uses that material, and the 'PointCamera' " + + "field to the point_camera you want to have appear on that entity's material" +[ + target(target_destination) : "Entity Whose Material Uses _rt_camera" + PointCamera(target_destination) : "Camera Name" : : "The name of a point_camera entity in the map that the material should be rendered from." + + // Inputs + input SetCamera(string) : "Set the camera to use. The parameter should be the name of a point_camera entity in the map." +] + + +//------------------------------------------------------------------------- +// Used to allow entities to mimic the motions of other entities +//------------------------------------------------------------------------- + +@PointClass base(Targetname) = logic_measure_movement : + "An entity that can measure the movement of an entity relative to another entity " + + "and apply that movement to a third entity." +[ + MeasureTarget(target_destination) : "Entity to Measure" : "" : "Entity whose movement you want to measure." + MeasureReference(target_destination) : "Measure Reference" : "" : "The movement of Entity to Measure will be measured relative to this entity." + Target(target_destination) : "Entity to Move" : "" : "This entity will be moved to mimic the motions of Entity to Measure." + TargetReference(target_destination) : "Movement Reference" : "" : "The Entity to Move will move relative to this entity." + TargetScale(float) : "Movement scale" : "1" : "A scale to divide the measured movements by, before applying those movements to the Entity to Move. 1 = target entity moves as much as the measured entity, 2 = target entity moves half as far as the measured entity, and 0.5 = target entity moves twice as far as the measured entity." + MeasureType(choices) : "Measurement Type" : 0 = + [ + 0 : "Position" + 1 : "Eye position" + ] + + // Inputs + input SetMeasureTarget(string) : "Set the Entity to Measure, whose movement should be measured." + input SetMeasureReference(string) : "Set the Measure Reference entity." + input Target(string) : "Set the Entity to Move, which will be moved to mimic the measured entity." + input SetTargetReference(string) : "Set the Movement Reference entity." + input SetTargetScale(float) : "Set the scale to divide the measured movements by." + input Enable(void) : "Enable the logic_measure_movement." + input Disable(void) : "Disable the logic_measure_movement." +] + + +//------------------------------------------------------------------------- +// Misc +//------------------------------------------------------------------------- + +@PointClass base(BaseNPC, Parentname) studio() = npc_furniture : + "An entity used for non-NPCs that need to synchronise their animation with an NPC in a scripted_sequence. Usually a piece"+ + "of furniture or door that an NPC needs to manipulate within a scripted_sequence." +[ + model(studio) : "Model" + input DisablePlayerCollision(void) : "Disable collisions against the player." + input EnablePlayerCollision(void) : "Enable collisions against the player." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_credits : + "An entity to control the rolling credits." +[ + // Inputs + input RollCredits(void) : "Start the intro credits rolling." + input RollOutroCredits(void) : "Start the outro credits rolling." + input ShowLogo(void) : "Show the HL2 logo." + + // Outputs + output OnCreditsDone(void) : "Fired when the credits having finished rolling." +] + +@PointClass base(Parentname, Targetname) size(-8 -8 -8, 8 8 8 ) = material_modify_control : + "An entity that can be used to directly control material vars. To use it, you need to read the .vmt of the material you "+ + "intend to change. Parent this entity to a brush model entity who's material you want to control." +[ + materialName(string) : "Material to modify." + materialVar(string) : "Material variable to modify." + + // Inputs + input SetMaterialVar(string) : "Fire to modify a material variable. The argument is the value to set the variable to." + input SetMaterialVarToCurrentTime(void) : "This sets the material variable to the current time on the server." + input StartAnimSequence(string) : "Force an animated material with the MaterialModifyAnimated proxy to play a set of animation frames. Format is: \nSetting to -1 uses the last frame of the texture. should be 1 or 0." + input StartFloatLerp(string) : "Force a material with the MaterialModifyAnimated proxy to lerp a material var between two floating point values. Format is: \n should be 1 or 0." +] + +//------------------------------------------------------------------------- +// Devshot camera +// - Used by the -makedevshots system, which automatically takes screenshots +// at the position of every devshot camera in the level. +//------------------------------------------------------------------------- + +@PointClass base(Angles) studioprop("models/editor/camera.mdl") = point_devshot_camera : + "An entity used by the -makedevshots system, which automatically takes screenshots at the position of every devshot camera in the level." +[ + cameraname(string) : "Camera Name" : "" : "Used as the name of the directory to store screenshots from this camera. Must be unique within the level." + FOV(integer) : "Camera FOV" : 75 : "FOV of this camera." +] + + +@PointClass base(Targetname, DamageFilter) size(-8 -8 -8, 8 8 8) = logic_playerproxy : + "An entity that is used to relay inputs/ouputs to the player and back to the world." +[ + // Outputs + output OnFlashlightOn(float) : "Fired when the player turns on his flashlight. This output has the value of how much energy the player had when this happened [0..1]." + output OnFlashlightOff(float) : "Fired when the player turns off his flashlight. This output has the value of how much energy the player had when this happened [0..1]." + input RequestPlayerHealth(void) : "Requests the current player's health from the proxy. This will fire the PlayerHealth output with the value." + output PlayerHealth(integer) : "The player's current health value." + output PlayerMissedAR2AltFire(void) : "Player fired an AR2 combine ball that didn't kill any enemies." + + input SetFlashlightSlowDrain(void) : "Puts the player's flashlight in slow-power-drain mode (for Episodic darkness)" + input SetFlashlightNormalDrain(void) : "Puts the player's flashlight to default power drain" + + input SetPlayerHealth(integer) : "Sets the player's health to this value." + + input RequestAmmoState(void) : "Request the ammo state of the player. It will fire PlayerHasAmmo or PlayerHasNoAmmo outputs." + output PlayerHasAmmo(void) : "Fired by request if the player has any ammo." + output PlayerHasNoAmmo(void) : "Fired by request if the player doesn't have any ammo." + + output PlayerDied(void) : "Fires when the player dies." + + input LowerWeapon(void) : "Lowers the players weapon." + + input EnableCappedPhysicsDamage(void) : "Cause player to take less damage from physics objects, and never more than 30 points from any individual strike." + input DisableCappedPhysicsDamage(void) : "Undo effects of EnableCappedPhysicsDamage" + input SetLocatorTargetEntity(string) : "Set the entity that the HUD locator should track. (Usually a vehicle)" + +] + +@PointClass base(Parentname, Targetname) size(-8 -8 -8, 8 8 8 ) = env_spritetrail : + "A magical trail you can parent to anything you heart desires." +[ + lifetime(float) : "Lifetime" : "0.5" + startwidth(float) : "Start Width" : "8.0" + endwidth(float) : "End Width" : "1.0" + spritename(string) : "Sprite Name" : "sprites/bluelaser1.vmt" + + renderamt(integer) : "FX Amount (0 - 255)" : 255 : "The FX amount is used by the selected Render Mode." + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" : "The FX color is used by the selected Render Mode." + + rendermode(choices) : "Render Mode" : 5 = + [ + 0: "Normal" + 4: "Solid" + 5: "Additive" + ] +] + +// lightprop("models/editor/spot.mdl") <---- use this once the orientation is unfucked +@PointClass base(Targetname, Parentname, Angles) size(-2 -2 -2, 2 2 2) frustum(lightfov,nearz,farz,lightcolor,-1) = env_projectedtexture : + "Projected texture entity." +[ + spawnflags(flags) = + [ + 1 : "Enabled" : 1 + ] + + target(target_destination) : "target" : : "target" + lightfov(float) : "FOV" : "90.0" : "FOV" + nearz(float) : "NearZ" : "4.0" : "Near Z for projected texture" + farz(float) : "FarZ" : "750.0" : "Far Z for projected texture" + + enableshadows(Choices) : "Enable Shadows" : 0 : "Enables/disables shadows from this projected texture." = + [ + 0 : "No" + 1 : "Yes" + ] + shadowquality(Choices) : "Shadow Quality" : 1 : "Quality of shadows." = + [ + 0 : "Low" + 1 : "High" + ] + lightonlytarget(Choices) : "Light Only Target" : 0 : "Limit flashlight effect to only effect target entity." = + [ + 0 : "No" + 1 : "Yes" + ] + lightworld(Choices) : "Light World" : 1 : "Control whether flashlight effects static world geometry." = + [ + 0 : "No" + 1 : "Yes" + ] + lightcolor(color255) : "Light Color" : "255 255 255 200" : "Light Color RGB-Intensity" + cameraspace(integer) : "Camera Space" : 0 : "Angles are interpreted as being relative to camera." + + // Inputs + input TurnOn(void) : "Turn on the texture" + input TurnOff(void) : "Turn off the texture" + input SetFOV(float) : "Set FOV" +] + + +@SolidClass base(func_brush) = func_reflective_glass : + "Used to produce perfectly reflective glass that renders world + entities. " + + "Typically, you want your glass brush to have nodraw on all non-reflective surfaces " + + "and you want to use a shader like lightmappedreflective in your material applied " + + "to the non-nodraw surfaces. See hl2/materials/glass/reflectiveglass001.vmt for an example. " + + "NOTE: currently, you cannot use reflective glass in scenes with water, and you can only " + + "have 1 reflective glass in your view frustum ( + pvs ) at a time." +[ +] + +@PointClass base(Targetname) = env_particle_performance_monitor : + "An entity for turning on and off measuring and display of particle throughput." +[ + // Inputs + input TurnOnDisplay(void) : "Turn on display of particle simulation benchmark" + input TurnOffDisplay(void) : "Turn off display of particle simulation benchmark" + input StartMeasuring(void) : "Start measuring particle simulation speed" + input StopMeasuring(void) : "Stop measuring particle simulation speed" +] + +@PointClass base(BaseNPC, Targetname, Parentname,Studiomodel) studioprop() = npc_puppet : "Puppet entity that mimics the animations of a target NPC." +[ + animationtarget(target_source) : "Animation target" : "" + attachmentname(string) : "Target attachment point name" : "" + + input SetAnimationTarget(string) : "Set the animation target to use. An empty string will disable the puppet." +] + +@PointClass base(Origin, Targetname, EnableDisable) size(-2 -2 -2, 2 2 2) color(0 255 0) = point_gamestats_counter : "Generic game statistics counter." +[ + Name(string) : "Name of statistic counter" + + input SetName(string) : "Changes name of statistic counter" + input Increment(float) : "Increments named statistic counter by specified value" +] + +@PointClass base(Angles) size( -8 -8 -8, 8 8 8 ) instance() = func_instance : + "An entity for placing an instance of a map file. You may translate and rotate this entity. " + + "You can use the replace keys to do parameter changes on the instance contents. In a $ at the " + + "beginning of a variable name. Then just use the $variable name inside of the instance contents on any "+ + "value portion of a key/value pair." +[ + targetname(target_source) : "Fix Up Name" : : "The name that all entities will be fixed up with based upon the fix up style." + file(instance_file) : "VMF Filename" : : "This indicates a map file relative to the map's file name" + fixup_style(Choices) : "Entity Name Fix Up" : 0 : "Fixup style for instanced entity names. Uses the 'Fix Up Name' field." = + [ + 0 : "Prefix" + 1 : "Postfix" + 2 : "None" + ] + + replace01(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace02(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace03(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace04(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace05(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace06(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace07(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace08(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace09(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" + replace10(instance_variable) : "Replace" : : "This is a replacement parameter. It goes in the form of $variable value. All entities inside of that instance that have $variable somewhere will be replaced with the value contents. Example: $color 255 0 0" +] + +@PointClass size( -8 -8 -8, 8 8 8 ) = func_instance_parms : + "Place one copy of this entity inside of an instance. Whenever you add a $parameter for the instance, get the properties " + + "of this entity. It will auto-populate it with the variables and allow you to indicate the variable type." +[ + parm1(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm2(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm3(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm4(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm5(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm6(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm7(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm8(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm9(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." + parm10(instance_parm) : "Parm" : : "This is a parameter. It goes in the form of $variable type." +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/source/csgo.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/source/csgo.fgd new file mode 100644 index 0000000..de6734a --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/source/csgo.fgd @@ -0,0 +1,690 @@ +//====== Copyright 1996-2005, Valve Corporation, All rights reserved. ======= +// +// Purpose: Counter-Strike: Source game definition file (.fgd) +// +//============================================================================= + +@include "base.fgd" + +//------------------------------------------------------------------------- +// +// Base Classes +// +//------------------------------------------------------------------------- + + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = TeamNum +[ + TeamNum(choices) : "Team Number (int)" : 0 = + [ + -1 : "None" + 0 : "All Teams" + 2 : "Terrorist" + 3 : "Counter-Terrorist" + ] + input SetTeam(integer) : "Changes the entity's team" +] + +@BaseClass color(0 0 200) base(Targetname, RenderFields, Angles) = Weapon +[ + spawnflags(Flags) = + [ + 1 : "Start constrained" : 0 + ] + + output OnPlayerUse(void) : "Fires when the player +uses this weapon" + output OnPlayerPickup(void) : "Fires when the player picks up this weapon" +] + +@FilterClass base(BaseFilter) size(-8 -8 -8, 8 8 8) = filter_activator_team : + "A filter that filters by the team of the activator." +[ + filterteam(choices) : "Filter Team Number" : 2 : "The team number to filter by. If the filter mode is Allow, only entities whose "+ + "team number matches the given team will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose team number matches the given team will pass the filter." = + [ + 2 : "Terrorist" + 3 : "Counter-Terrorist" + ] +] + +//------------------------------------------------------------------------- +// +// Point Classes +// +//------------------------------------------------------------------------- + +@PointClass base(prop_dynamic) studioprop() = prop_dynamic_glow : + "A prop that can be placed in hierarchy and can play animations. It can also be configured to break when it takes enough damage.\n"+ + "Works exactly like a prop_dynamic, but it can optionally have a custom glow around it." +[ + glowenabled(boolean) : "Does the prop glow by default?" : 1 + glowcolor(color255) : "Glow Color (R G B)" : "255 255 255" : "The color of the glow (if enabled)." + + input SetGlowEnabled(void) : "Starts the glow." + input SetGlowDisabled(void) : "Stops the glow." + input SetGlowColor(color255) : "Change the glow's color. Format: " + input GlowColorRedValue(float) : "Sets the glow red color channel's value (0 - 255)." + input GlowColorGreenValue(float) : "Sets the glow green color channel's value (0 - 255)." + input GlowColorBlueValue(float) : "Sets the glow blue color channel's value (0 - 255)." +] + +@PointClass base(Targetname, Angles) studio("models/player/ctm_st6.mdl") = info_player_counterterrorist : + "This entity marks the start point for counter-terrorists. One of these needs to be placed for each team member. " + + "20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls" +[ + priority(integer) : "Spawn Priority (int)" : 0 : "Determines which spawn points get used first. Smaller numbers are used before larger numbers." + enabled(boolean) : "Enabled by default?" : 1 + + input SetEnabled(void) : "Sets this spawn point as enabled." + input SetDisabled(void) : "Sets this spawn point as disabled." + input ToggleEnabled(void) : "Toggle the enabled/disabled state of this spawn point." +] + +@PointClass base(Targetname, Angles) studio("models/player/tm_phoenix.mdl") = info_player_terrorist : + "This entity marks the start point for terrorists. One of these needs to be placed for each team member. " + + "20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls." +[ + priority(integer) : "Spawn Priority (int)" : 0 : "Determines which spawn points get used first. Smaller numbers are used before larger numbers." + enabled(boolean) : "Enabled by default?" : 1 + + input SetEnabled(void) : "Sets this spawn point as enabled." + input SetDisabled(void) : "Sets this spawn point as disabled." + input ToggleEnabled(void) : "Toggle the enabled/disabled state of this spawn point." +] + +@PointClass base(Targetname, Angles) studio("models/player/tm_pirate.mdl") = info_deathmatch_spawn : + "This entity marks a deathmatch spawn point. This is the entity that populates the map when mp_random_spawn is used." + + "Manually adding them to the map will guarantee that these spawn points are included in the set" +[ + enabled(boolean) : "Enabled by default?" : 1 + + input SetEnabled(void) : "Sets this spawn point as enabled." + input SetDisabled(void) : "Sets this spawn point as disabled." + input ToggleEnabled(void) : "Toggle the enabled/disabled state of this spawn point." +] + +@PointClass base(Angles) studio("models/editor/playerstart.mdl") = info_player_logo : + "This is for logo maps for demos. All players will spawn here, and there will be no " + + "class menu, team menu, or HUD." +[ +] + +@PointClass base(Angles) studio("models/Characters/hostage_04.mdl") = hostage_entity : + "Hostage. A hostage NPC will spawn at this point.\n\n" + + "There are usually four hostages placed in each hostage rescue map. The model for each Hostage is randomly chosen." +[ + + HostageType(choices) : "Hostage Model (int)" : 0 : "Not used. Hostage models are chosen randomly by the game." = + [ + 0 : "A" + 1 : "B" + 1 : "C" + 1 : "D" + ] + + HostageSpawnRandomFactor(integer) : "Hostage Spawn Random Factor (int)" : 1 : "Allows to increase probability of this hostage being picked during random spawn selection process, essentially considering this spawn point specified number of times." + + HostageSpawnExclusionGroup1(choices) : "Hostage Spawn Exclusion Group 1" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup2(choices) : "Hostage Spawn Exclusion Group 2" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup3(choices) : "Hostage Spawn Exclusion Group 3" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup4(choices) : "Hostage Spawn Exclusion Group 4" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup5(choices) : "Hostage Spawn Exclusion Group 5" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup6(choices) : "Hostage Spawn Exclusion Group 6" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup7(choices) : "Hostage Spawn Exclusion Group 7" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup8(choices) : "Hostage Spawn Exclusion Group 8" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup9(choices) : "Hostage Spawn Exclusion Group 9" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup10(choices) : "Hostage Spawn Exclusion Group 10" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup11(choices) : "Hostage Spawn Exclusion Group 11" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup12(choices) : "Hostage Spawn Exclusion Group 12" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup13(choices) : "Hostage Spawn Exclusion Group 13" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup14(choices) : "Hostage Spawn Exclusion Group 14" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup15(choices) : "Hostage Spawn Exclusion Group 15" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup16(choices) : "Hostage Spawn Exclusion Group 16" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup17(choices) : "Hostage Spawn Exclusion Group 17" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup18(choices) : "Hostage Spawn Exclusion Group 18" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup19(choices) : "Hostage Spawn Exclusion Group 19" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup20(choices) : "Hostage Spawn Exclusion Group 20" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup21(choices) : "Hostage Spawn Exclusion Group 21" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup22(choices) : "Hostage Spawn Exclusion Group 22" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup23(choices) : "Hostage Spawn Exclusion Group 23" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup24(choices) : "Hostage Spawn Exclusion Group 24" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup25(choices) : "Hostage Spawn Exclusion Group 25" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup26(choices) : "Hostage Spawn Exclusion Group 26" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup27(choices) : "Hostage Spawn Exclusion Group 27" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup28(choices) : "Hostage Spawn Exclusion Group 28" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup29(choices) : "Hostage Spawn Exclusion Group 29" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] + + HostageSpawnExclusionGroup30(choices) : "Hostage Spawn Exclusion Group 30" : 0 : "Hostages sharing same spawn exclusion group will never spawn together." = + [ + 0 : "n/a" + 1 : "Do not spawn together" + ] +] + +@PointClass base(hostage_entity) studio("models/Characters/hostage_04.mdl") = info_hostage_spawn : + "Hostage. A hostage NPC will spawn at this point.\n\n" + + "There are usually four hostages placed in each hostage rescue map. The model for each Hostage is randomly chosen." +[ +] + +@PointClass base(Angles) studio("models/chicken/chicken.mdl") = pet_entity : + "Pet. A pet animal will spawn at this point.\n" +[ +] + +@PointClass base(Angles) = info_view_parameters : + "This entity selects whether or not this level uses the Half-Life 2 view parameters (eye height: 64, FOV: 75) " + + "or the old Counter-Strike settings (eye height: 53.5, FOV: 90)." +[ + ViewMode(choices) : "View Mode" : 0 = + [ + 0 : "Old" + 1 : "New" + ] +] + +@PointClass base(Targetname,Angles) = info_map_parameters : + "Map parameters. Used to set which teams can buys, and the C4 bomb detonation radius." +[ + buying(choices) : "Teams that can buy" : 0 = + [ + 0 : "Everyone" + 1 : "Only Counter-Terrorists" + 2 : "Only Terrorists" + 3 : "Nobody" + ] + + bombradius(float) : "C4 Explosion Radius" : 500 : "Overrides the default radius of the explosion when the C4 bomb explodes. Max range is 2048" + petpopulation(float) : "Pet Population" : 0 : "Determines the target population of pets." + usenormalspawnsfordm(boolean) : "Use Normal Spawns in Deathmatch?" : 0 : "Set to true if the map should use the mapper-placed spawn points instead of generating random ones." + disableautogenerateddmspawns(boolean) : "Disable Autogenerated DM Spawns?" : 0 : "Set to true if you want to manually place info_deathmatch_spawns and not have the engine generate them." + + input FireWinCondition(integer) : "Fires win conditions for the win." + +] + +@PointClass base(Angles) = env_detail_controller : "An entity that lets you control the fade distances for detail props." +[ + fademindist(float) : "Start Fade Dist/Pixels" : 400 : "Distance at which the prop starts to fade." + fademaxdist(float) : "End Fade Dist/Pixels" : 1200 : "Maximum distance at which the prop is visible." +] + +//------------------------------------------------------------------------- +// +// Weapons +// +//------------------------------------------------------------------------- + +@PointClass base(Weapon) studio("models/weapons/w_rif_ak47.mdl") = weapon_ak47 : "AK-47" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_aug.mdl") = weapon_aug : "AUG" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_awp.mdl") = weapon_awp : "AWP" [] +//@PointClass base(Weapon) studio("models/weapons/w_shot_m3super90.mdl") = weapon_autoshotgun : "Leone 12 Gauge Super" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_bizon.mdl") = weapon_bizon : "PP-Bizon" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_deagle.mdl") = weapon_deagle : "Desert Eagle" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_decoy.mdl") = weapon_decoy : "Decoy Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_elite_dropped.mdl") = weapon_elite : "Dual Berettas" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_famas.mdl") = weapon_famas : "FAMAS" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_fiveseven.mdl") = weapon_fiveseven : "Five-SeveN" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_flashbang.mdl") = weapon_flashbang : "Flashbang" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_g3sg1.mdl") = weapon_g3sg1 : "G3SG1 Sniper" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_galilar.mdl") = weapon_galilar : "Galil AR" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_glock18.mdl") = weapon_glock : "Glock-18" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_fraggrenade.mdl") = weapon_hegrenade : "HE Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_hkp2000.mdl") = weapon_hkp2000 : "P2000" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_incendiarygrenade.mdl") = weapon_incgrenade : "Incendiary Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_knife.mdl") = weapon_knife : "Knife" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_m4a1.mdl") = weapon_m4a1 : "M4A4" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_m4a1_s.mdl") = weapon_m4a1_silencer : "M4A1 Silenced" [] +@PointClass base(Weapon) studio("models/weapons/w_mach_m249para.mdl") = weapon_m249 : "M249 Para" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_mac10.mdl") = weapon_mac10 : "MAC-10" [] +@PointClass base(Weapon) studio("models/weapons/w_shot_mag7.mdl") = weapon_mag7 : "MAG-7" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_molotov.mdl") = weapon_molotov : "Molotov" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_mp7.mdl") = weapon_mp7 : "MP7" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_mp9.mdl") = weapon_mp9 : "MP9" [] +@PointClass base(Weapon) studio("models/weapons/w_mach_negev.mdl") = weapon_negev : "Negev" [] +@PointClass base(Weapon) studio("models/weapons/w_shot_nova.mdl") = weapon_nova : "Nova" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_p90.mdl") = weapon_p90 : "P90" [] +//@PointClass base(Weapon) studio("models/weapons/w_pist_p228.mdl") = weapon_p228 : "228 Compact" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_p250.mdl") = weapon_p250 : "P250" [] +@PointClass base(Weapon) studio("models/weapons/w_shot_sawedoff.mdl") = weapon_sawedoff : "Sawed-Off" [] +//@PointClass base(Weapon) studio("models/weapons/w_rif_scar17.mdl") = weapon_scar17 : "weapon_scar17" [] +//@PointClass base(Weapon) studio("models/weapons/w_snip_g3sg1.mdl") = weapon_scar20 : "weapon_scar20" [] +//@PointClass base(Weapon) studio("models/weapons/w_snip_scout.mdl") = weapon_ssg08 : "weapon_ssg08" [] +//@PointClass base(Weapon) studio("models/weapons/w_snip_sg550.mdl") = weapon_sg550 : "Krieg 550 Commando" [] +//@PointClass base(Weapon) studio("models/weapons/w_rif_sg552.mdl") = weapon_sg556 : "weapon_sg552" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_sg556.mdl") = weapon_sg556 : "SG 553" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_smokegrenade.mdl") = weapon_smokegrenade : "Smoke Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_ssg08.mdl") = weapon_ssg08 : "SSG 08" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_tec9.mdl") = weapon_tec9 : "Tec-9" [] +//@PointClass base(Weapon) studio("models/weapons/w_smg_tmp.mdl") = weapon_tmp : "Schmidt Machine Pistol" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_ump45.mdl") = weapon_ump45 : "UMP-45" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_223.mdl") = weapon_usp_silencer : "USP Silenced" [] +@PointClass base(Weapon) studio("models/weapons/w_shot_xm1014.mdl") = weapon_xm1014 : "XM1014" [] + +@PointClass base(Weapon) studio("models/weapons/w_eq_taser.mdl") = weapon_taser : "weapon_taser" [] + +@PointClass base(Weapon) studio("models/weapons/w_defuser.mdl") = item_defuser : "Defuse Kit" [] +@PointClass base(Weapon) studio("models/weapons/w_c4.mdl") = weapon_c4 : "C4 Bomb" [] + +//------------------------------------------------------------------------- +// Spawnable grenades for the training map +//------------------------------------------------------------------------- +@PointClass base(Targetname, Angles) studio("models/weapons/w_eq_flashbang_thrown.mdl") = flashbang_projectile : "Flashbang Projectile" +[ + //TimeToDetonate(float) : "Time to detonate" : 2 : "The time it takes to detonate from when the grenade spawns." + + //ParticleTrailLifetime(float) : "Particle Trail Lifetime" : 4 : "Lifetime of the particles to emit" + + input SetTimer(float) : "Specify how many seconds before it explodes." +] + +//------------------------------------------------------------------------- +// Spawnable C4 for the training map +//------------------------------------------------------------------------- +@PointClass base(Targetname, Angles) studio("models/weapons/w_c4_planted.mdl") = planted_c4_training : "Training C4" +[ + input ActivateSetTimerLength(float) : "Activate the bomb and specify how many seconds before it explodes." + + output OnBombExploded(void): "Fires when C4 explodes" + output OnBombDefused(void): "Fired when C4 is defused by a player" + output OnBombBeginDefuse(void): "Fired when a player successfully begins to defuse the bomb" + output OnBombDefuseAborted(void): "Fired when a player starts defusing and then stops" +] + + +@PointClass base(BaseNPC, Parentname, RenderFields, Shadow) studio() = generic_actor : "Generic Actor NPC" +[ + model(studio) : "Model" + + hull_name(choices) : "Hull type" : "Human" = + [ + "HUMAN_HULL" : "Human" + "WIDE_HUMAN_HULL" : "Wide" + "TINY_HULL" : "Tiny" + "MEDIUM_HULL" : "Medium" + "LARGE_HULL" : "Large" + ] +] + +//------------------------------------------------------------------------- +// +// Solid Classes +// +//------------------------------------------------------------------------- + +@SolidClass = func_ladder : + "Ladder. Players will be able to freely along this brush, as if it was a ladder. If you are using a model prop " + + "for the visual representation of the ladder in the map, apply the toolsinvisibleladder material to the " + + "func_ladder brush." +[ +] + +@SolidClass base(func_physbox) = func_physbox_multiplayer : + "This class is the same as func_physbox, except the runtime collisions use a more bouncy method that avoids " + + "the prediction errors normal physics objects get." +[ +] + +@SolidClass base(Targetname, TeamNum) = func_buyzone: + "Buy Zone. Players can buy equipment while standing in this zone, if the zone matches their current team.\n\n" + + "A single Buy Zone entity must be either terrorist or counter-terrorist, it cannot be both. Should have " + + "the toolstrigger material applied to all sides" +[ + input SetTeam_TerroristOnly(void) : "Make it so only terrorist can buy from this buyzone." + input SetTeam_CTOnly(void) : "Make it so only CT's can buy from this buyzone." + input SetTeam_AllTeams(void) : "Make it so all teams can buy from this buyzone." + input SetTeam_None(void) : "Make it so no teams can buy from this buyzone (this essentially disables the buyzone)." +] + +@SolidClass base(Targetname, Parentname ) = func_bomb_target: + "Bomb Target. The terrorists can place C4 explosives while standing in this zone.\n\n" + + "When the bomb is planted and explodes inside this area, the BombExplode outputs are fired. The game handles " + + "all of the bomb planting and scoring logic the BombExplode outputs are provided to add visual and damage effects." +[ + output BombExplode(void): "Fires when C4 explodes" + output BombPlanted(void): "Fires when a C4 is planted" + output BombDefused(void): "Fires when a C4 is defused" + + heistbomb(boolean) : "Heist Mode bomb target" : 0 : "This is a Bomb Target designed for the Heist game mode." + + bomb_mount_target(string) : "Bomb Mount Target" +] + +@SolidClass base(Targetname, Parentname ) = func_no_defuse: + "No Defuse Area. The counter-terrorists will not be able to defuse bombs while they are touching this trigger volume.\n\n" + + "This is used in map design to prevent players from defusing bombs through walls or floors." +[ +] + +@SolidClass base(Targetname) = func_hostage_rescue: + "Hostage Rescue Zone. When a hostage is led into this zone, it is marked as rescued." +[ +] + +//------------------------------------------------------------------------- +// +// Sound Test Map Entities +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_surroundtest + : "Surround Sound Test" +[ + input FireCorrectOutput(void) : "Fire output based on snd_surround_speaker cvar value" + output On2Speakers(void) : "Fired if player is using 2 speakers." + output On4Speakers(void) : "Fired if player is using 4 speakers." + output On51Speakers(void) : "Fired if player is using 5.1 speakers." +] + + +@BaseClass base(Targetname, Angles) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = Territory +[ + respawn_area(string) : "Respawn area name" + buyzone(string) : "Buy Zone name" +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_hospital : "Hospital Territory Control Point" +[ + + +] + + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_terrorist : "Terrorists' Base Territory Point (Non-Capturable)" +[ + + +] + + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_counterterrorist : "Counter-Terrorists' Base Territory Point (Non-Capturable)" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_barracks : "Barracks Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_bank : "Bank Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_encryption : "Encryption Center Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_surveillance : "Surveillance Center Territory Control Point" +[ + + +] + + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_territory_control_rules + : "The Territory Control rules entity (VERY IMPORTANT!)" +[ + respawntime(float) : "Wave Respawn Time" : 30 : "Respawn time in seconds." +] + +@SolidClass base(Targetname) = func_territory_respawn_area: + "Players will respawn inside this area." +[ +] + +@PointClass base(Targetname) iconsprite("editor/game_end.vmt") = game_round_end : + "An entity that ends a multiplayer game ROUND." +[ + input EndRound_Draw(float) : "End the round in a draw after x seconds." + input EndRound_TerroristsWin(float) : "End the round, terrorists win after x seconds." + input EndRound_CounterTerroristsWin(float) : "End the round, CTs win after x seconds." + + output OnRoundEnded(void) : "Fires when the round ends regardless of it ended via input to this entity or not." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_score : + "An entity that awards/deducts points from the player who activates it or to a specific team." +[ + spawnflags(flags) = + [ + 1: "Allow Negative" : 0 + 2: "Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + + // Inputs + input ApplyScore(void) : "Add score to player." + input AddScoreTerrorist(void) : "Add score to team TERRORIST." + input AddScoreCT(void) : "Add score to team COUNTER TERRORIST." +] + +@PointClass base(Targetname) iconsprite("editor/game_money.vmt") = game_money : + "An entity that awards money to a specific team." +[ + Money(integer) : "Amount of money to add (+/-)" : 1000 + AwardText(string) : "Award Text" : : "The text that will print in the chat next to the award amount. Will look like this: '1000: '" + + // Inputs + input SetMoneyAmount(void) : "Set the money value that will be awarded. (without awarding it)" + input AddTeamMoneyTerrorist(void) : "Add money to players on team TERRORIST." + input AddTeamMoneyCT(void) : "Add money to players on team COUNTER TERRORIST." + input AddMoneyPlayer(void) : "Add money directly to the player activating this entity. (no chat description)" +] + +//------------------------------------------------------------------------- +// +// Vehicles. +// +//------------------------------------------------------------------------- +@BaseClass base(Targetname, Origin, Global, prop_static_base) = BaseVehicle +[ + vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/jeep_test.txt" + actionScale(float) : "Scale of action input / framerate" : "1" + + // Inputs + input Action(float) : "Set the speed of the action animation" + + input TurnOn(void) : "Turn on: Start engine & enable throttle" + input TurnOff(void) : "Turn off: Stop engine, disable throttle, engage brakes." + + input Lock(void) : "Prevent the player from entering or exiting the vehicle." + input Unlock(void) : "Re-allow the player to enter or exit the vehicle." +] + + +@BaseClass base(BaseVehicle) = BaseDriveableVehicle +[ + VehicleLocked(boolean) : "Start locked" : 0 + + // Outputs + output PlayerOn(void) : "Player entered the vehicle" + output PlayerOff(void) : "Player exited the vehicle" + + output PressedAttack(void) : "Player Pressed attack key" + output PressedAttack2(void) : "Player Pressed attack2 key" + + output AttackAxis(string) : "State of attack button [0,1]" + output Attack2Axis(string) : "State of attack2 button [0,1]" + + // Inputs + input HandBrakeOn(void) : "Turns the handbrake on" + input HandBrakeOff(void): "Releases the handbrake" +] + +@PointClass base(BaseVehicle) studioprop() = prop_vehicle : + "Studiomodel vehicle that can be driven via inputs." +[ + // Inputs + input Steer(float) : "Steer the vehicle +/-1" + input Throttle(float) : "Throttle +/-1" + + spawnflags(flags) = + [ + 1 : "Always Think (Run physics every frame)" : 0 + ] +] + + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_driveable : + "Generic driveable studiomodel vehicle." +[ +] \ No newline at end of file diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/source/cstrike.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/source/cstrike.fgd new file mode 100644 index 0000000..b58d5c1 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/source/cstrike.fgd @@ -0,0 +1,297 @@ +//====== Copyright 1996-2005, Valve Corporation, All rights reserved. ======= +// +// Purpose: Counter-Strike: Source game definition file (.fgd) +// +//============================================================================= + +@include "base.fgd" + +//------------------------------------------------------------------------- +// +// Base Classes +// +//------------------------------------------------------------------------- + + +@BaseClass = Target +[ + target(target_destination) : "Target" +] + +@BaseClass = TeamNum +[ + TeamNum(choices) : "Team Number (int)" : 0 = + [ + 2 : "Terrorist" + 3 : "Counter-Terrorist" + ] + input SetTeam(integer) : "Changes the entity's team" +] + +@BaseClass color(0 0 200) base(Targetname, Angles) = Weapon +[ + spawnflags(Flags) = + [ + 1 : "Start constrained" : 0 + ] + + output OnPlayerUse(void) : "Fires when the player +uses this weapon" + output OnPlayerPickup(void) : "Fires when the player picks up this weapon" +] + +@FilterClass base(BaseFilter) size(-8 -8 -8, 8 8 8) = filter_activator_team : + "A filter that filters by the team of the activator." +[ + filterteam(choices) : "Filter Team Number" : 2 : "The team number to filter by. If the filter mode is Allow, only entities whose "+ + "team number matches the given team will pass the filter. If the filter mode is Disallow, "+ + "all entities EXCEPT those whose team number matches the given team will pass the filter." = + [ + 2 : "Terrorist" + 3 : "Counter-Terrorist" + ] +] + +//------------------------------------------------------------------------- +// +// Point Classes +// +//------------------------------------------------------------------------- + +@PointClass base(Angles) studio("models/player/ct_urban.mdl") = info_player_counterterrorist : + "This entity marks the start point for counter-terrorists. One of these needs to be placed for each team member. " + + "20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls" +[ +] + +@PointClass base(Angles) studio("models/player/t_phoenix.mdl") = info_player_terrorist : + "This entity marks the start point for terrorists. One of these needs to be placed for each team member. " + + "20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls." +[ +] + +@PointClass base(Angles) studio("models/editor/playerstart.mdl") = info_player_logo : + "This is for logo maps for demos. All players will spawn here, and there will be no " + + "class menu, team menu, or HUD." +[ +] + +@PointClass base(Angles) studio("models/Characters/hostage_04.mdl") = hostage_entity : + "Hostage. A hostage NPC will spawn at this point.\n\n" + + "There are usually four hostages placed in each hostage rescue map. The model for each Hostage is randomly chosen." +[ + + HostageType(choices) : "Hostage Model (int)" : 0 : "Not used. Hostage models are chosen randomly by the game." = + [ + 0 : "A" + 1 : "B" + 1 : "C" + 1 : "D" + ] +] + +@PointClass base(Angles) = info_view_parameters : + "This entity selects whether or not this level uses the Half-Life 2 view parameters (eye height: 64, FOV: 75) " + + "or the old Counter-Strike settings (eye height: 53.5, FOV: 90)." +[ + ViewMode(choices) : "View Mode" : 0 = + [ + 0 : "Old" + 1 : "New" + ] +] + +@PointClass base(Targetname,Angles) = info_map_parameters : + "Map parameters. Used to set which teams can buys, and the C4 bomb detonation radius." +[ + buying(choices) : "Teams that can buy" : 0 = + [ + 0 : "Everyone" + 1 : "Only Counter-Terrorists" + 2 : "Only Terrorists" + 3 : "Nobody" + ] + + bombradius(float) : "C4 Explosion Radius" : 500 : "Overrides the default radius of the explosion when the C4 bomb explodes. Max range is 2048" + input FireWinCondition(integer) : "Fires win conditions for the win." +] + +@PointClass base(Angles) = env_detail_controller : "An entity that lets you control the fade distances for detail props." +[ + fademindist(float) : "Start Fade Dist/Pixels" : 400 : "Distance at which the prop starts to fade." + fademaxdist(float) : "End Fade Dist/Pixels" : 1200 : "Maximum distance at which the prop is visible." +] + +//------------------------------------------------------------------------- +// +// Weapons +// +//------------------------------------------------------------------------- + +@PointClass base(Weapon) studio("models/weapons/w_knife_t.mdl") = weapon_knife : "Knife" [] + +@PointClass base(Weapon) studio("models/weapons/w_eq_fraggrenade.mdl") = weapon_flashbang : "Flashbang" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_fraggrenade.mdl") = weapon_hegrenade : "HE Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_eq_smokegrenade.mdl") = weapon_smokegrenade : "Smoke Grenade" [] + +@PointClass base(Weapon) studio("models/weapons/w_defuser.mdl") = item_defuser : "Defuse Kit" [] +@PointClass base(Weapon) studio("models/weapons/w_c4.mdl") = weapon_c4 : "C4 Bomb" [] + +@PointClass base(Weapon) studio("models/weapons/w_pist_glock18.mdl") = weapon_glock : "9X19mm Sidearm" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_usp.mdl") = weapon_usp : "K&M .45 Tactical" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_p228.mdl") = weapon_p228 : "228 Compact" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_deagle.mdl") = weapon_deagle : "Night Hawk .50C" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_fiveseven.mdl") = weapon_fiveseven : "ES Five-Seven" [] +@PointClass base(Weapon) studio("models/weapons/w_pist_elite.mdl") = weapon_elite : ".40 Dual Elites" [] + +@PointClass base(Weapon) studio("models/weapons/w_shot_m3super90.mdl") = weapon_m3 : "Leone 12 Gauge Super" [] +@PointClass base(Weapon) studio("models/weapons/w_shot_xm1014.mdl") = weapon_xm1014 : "Leone YG1265 Auto Shotgun" [] + +@PointClass base(Weapon) studio("models/weapons/w_smg_tmp.mdl") = weapon_tmp : "Schmidt Machine Pistol" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_mp5.mdl") = weapon_mp5navy : "K&M Sub-Machine Gun" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_ump45.mdl") = weapon_ump45 : "K&M UMP45" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_p90.mdl") = weapon_p90 : "ES C90" [] +@PointClass base(Weapon) studio("models/weapons/w_smg_mac10.mdl") = weapon_mac10 : "Ingram MAC-10" [] + +@PointClass base(Weapon) studio("models/weapons/w_rif_galil.mdl") = weapon_galil : "IDF Defender" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_ak47.mdl") = weapon_ak47 : "CV-47" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_sg552.mdl") = weapon_sg552 : "Krieg 552 Commando" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_famas.mdl") = weapon_famas : "Clarion 5.56" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_m4a1.mdl") = weapon_m4a1 : "Maverick M4A1 Carbine" [] +@PointClass base(Weapon) studio("models/weapons/w_rif_aug.mdl") = weapon_aug : "Bullpup" [] + +@PointClass base(Weapon) studio("models/weapons/w_snip_scout.mdl") = weapon_scout : "Schmidt Scout" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_g3sg1.mdl") = weapon_g3sg1 : "D3/AU-1 Semi-Auto Sniper Rifle" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_sg550.mdl") = weapon_sg550 : "Krieg 550 Commando" [] +@PointClass base(Weapon) studio("models/weapons/w_snip_awp.mdl") = weapon_awp : "Magnum Sniper Rifle" [] + +@PointClass base(Weapon) studio("models/weapons/w_mach_m249para.mdl") = weapon_m249 : "ES M249 Para" [] + +//------------------------------------------------------------------------- +// +// Solid Classes +// +//------------------------------------------------------------------------- + +@SolidClass = func_ladder : + "Ladder. Players will be able to freely along this brush, as if it was a ladder. If you are using a model prop " + + "for the visual representation of the ladder in the map, apply the toolsinvisibleladder material to the " + + "func_ladder brush." +[ +] + +@SolidClass base(func_physbox) = func_physbox_multiplayer : + "This class is the same as func_physbox, except the runtime collisions use a more bouncy method that avoids " + + "the prediction errors normal physics objects get." +[ +] + +@SolidClass base(Targetname, TeamNum) = func_buyzone: + "Buy Zone. Players can buy equipment while standing in this zone, if the zone matches their current team.\n\n" + + "A single Buy Zone entity must be either terrorist or counter-terrorist, it cannot be both. Should have " + + "the toolstrigger material applied to all sides" +[ +] + +@SolidClass base(Targetname, Parentname ) = func_bomb_target: + "Bomb Target. The terrorists can place C4 explosives while standing in this zone.\n\n" + + "When the bomb is planted and explodes inside this area, the BombExplode outputs are fired. The game handles " + + "all of the bomb planting and scoring logic the BombExplode outputs are provided to add visual and damage effects." +[ + output BombExplode(void): "Fires when C4 explodes" + output BombPlanted(void): "Fires when a C4 is planted" + output BombDefused(void): "Fires when a C4 is defused" + + heistbomb(choices) : "Heist Mode bomb target" : 0 : "This is a Bomb Target designed for the Heist game mode." = + [ + 0 : "No" + 1 : "Yes" + ] + + bomb_mount_target(string) : "Bomb Mount Target" +] + +@SolidClass base(Targetname) = func_hostage_rescue: + "Hostage Rescue Zone. When a hostage is led into this zone, it is marked as rescued." +[ +] + +//------------------------------------------------------------------------- +// +// Sound Test Map Entities +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_surroundtest + : "Surround Sound Test" +[ + input FireCorrectOutput(void) : "Fire output based on snd_surround_speaker cvar value" + output On2Speakers(void) : "Fired if player is using 2 speakers." + output On4Speakers(void) : "Fired if player is using 4 speakers." + output On51Speakers(void) : "Fired if player is using 5.1 speakers." +] + + +@BaseClass base(Targetname, Angles) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = Territory +[ + respawn_area(string) : "Respawn area name" + buyzone(string) : "Buy Zone name" +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_hospital : "Hospital Territory Control Point" +[ + + +] + + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_terrorist : "Terrorists' Base Territory Point (Non-Capturable)" +[ + + +] + + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_counterterrorist : "Counter-Terrorists' Base Territory Point (Non-Capturable)" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_barracks : "Barracks Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_bank : "Bank Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_encryption : "Encryption Center Territory Control Point" +[ + + +] + +@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_surveillance : "Surveillance Center Territory Control Point" +[ + + +] + + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_territory_control_rules + : "The Territory Control rules entity (VERY IMPORTANT!)" +[ + respawntime(float) : "Wave Respawn Time" : 30 : "Respawn time in seconds." +] + +@SolidClass base(Targetname) = func_territory_respawn_area: + "Players will respawn inside this area." +[ +] + + + diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/source/garrysmod.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/source/garrysmod.fgd new file mode 100644 index 0000000..ce19784 --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/source/garrysmod.fgd @@ -0,0 +1,137 @@ + +@include "base.fgd" +@include "halflife2.fgd" + +@SolidClass = func_ladder : + "Ladder. Players will be able to move freely along this brush, as if it was a ladder." + + "Apply the toolsinvisibleladder material to a func_ladder brush." +[ +] + +@SolidClass base(Targetname, Parentname) = func_detail_blocker : + "A brush entity that prevents detail sprites from being placed inside its volume." +[ +] + +@PointClass base(Targetname) iconsprite("editor/lua_run.vmt") = lua_run : "Runs Lua Code" +[ + Code(string) : "Code" : "" : "Lua code to run when triggered" + + spawnflags(flags) = + [ + 1 : "Run code on spawn": 0 + ] + + input RunCode(void) : "Run Code that was defined in the entity" + input RunPassedCode(string) : "Run code that was passed as a variable" +] + +@PointClass base(Targetname, Parentname, Angles) studioprop( "models/editor/spot.mdl" ) frustum(lightfov,nearz,farz,lightcolor,-1) = env_projectedtexture : "Projected texture entity." +[ + spawnflags(flags) = + [ + 1 : "Enabled" : 1 + ] + + target(target_destination) : "target" : : "target" + lightfov(float) : "FOV" : "90.0" : "FOV" + nearz(float) : "NearZ" : "4.0" : "Near Z for projected texture" + farz(float) : "FarZ" : "750.0" : "Far Z for projected texture" + + enableshadows(Choices) : "Enable Shadows" : 1 : "Enables/disables shadows from this projected texture." = + [ + 0 : "No" + 1 : "Yes" + ] + lightonlytarget(Choices) : "Light Only Target" : 0 : "Limit flashlight effect to only effect target entity." = + [ + 0 : "No" + 1 : "Yes" + ] + lightworld(Choices) : "Light World" : 1 : "Control whether flashlight effects static world geometry." = + [ + 0 : "No" + 1 : "Yes" + ] + lightcolor(color255) : "Light Color" : "255 255 255" : "Light Color RGB-Intensity" + lightstrength(float) : "Light Strength" : "1.0" : "How bright the light appears" + cameraspace(integer) : "Camera Space" : 0 : "Angles are interpreted as being relative to camera." + + texturename(string) : "Texture Name" : "effects/flashlight001" : "The name of the texture to use" + textureframe(integer) : "Texture Frame" : 0 : "The frame of the texture" + + // Inputs + input TurnOn(void) : "Turn on the texture" + input TurnOff(void) : "Turn off the texture" + input SetFOV(float) : "Set FOV" + input SpotlightTexture(string) : "Set Spotlight Texture" + input Ambient(float) : "Set Spotlight Ambient" + +] + +@PointClass base(Targetname) iconsprite("editor/env_skypaint.vmt") = env_skypaint : "Control the sky colours" +[ + topcolor(color1) : "Sky Top Color" : "0.2 0.5 1.0" : "The colour of the top of the sky" + bottomcolor(color1) : "Sky Bottom Color" : "0.8 1.0 1.0" : "The colour of the bottom of the sky" + fadebias(float) : "Sky Fade Bias" : "1.0" : "Controls the bias of the fade between top/bottom (1.0 is even)" + + sunsize(float) : "Sun Size" : "2.0" : "Controls the size of the sun glow" + sunnormal(vector ) : "Sun Normal" : "0.4 0.0 0.01" : "The position of the sun, expressed as a normal from the center of the world" + sunposmethod(choices) : "Sun Position Method" : 0 : "How should we determine the position of the sun?" = + [ + 0 : "Custom - Use the Sun Normal to position the sun" + 1 : "Automatic - Find a env_sun entity and use that" + ] + suncolor(color1) : "Sun Color" : "0.2 0.1 0.0" : "The color of the sun glow (this is additive)" + + duskscale(float) : "Dusk Scale" : "1.0" : "The size of the dusk effect (colouring of the horizon)" + duskintensity(float) : "Dusk Intensity" : "1.0" : "How powerful the dusk effect is" + duskcolor(color1) : "Dusk Color" : "1.0 0.2 0.0" : "The color of the dusk effect" + + drawstars(choices) : "Draw Stars" : 0 : "" = + [ + 0 : "No - Don't draw stars" + 1 : "Yes - Draw the stars please" + ] + + startexture(string) : "Star Texture" : "skybox/starfield" : "The star texture" + starscale(float) : "Star Scale" : "0.5" : "How big the star texture should be" + starfade(float) : "Star Fade" : "1.0" : "Fade the star texture towards the horizon" + starspeed(float) : "Star Speed" : "0.01" : "How fast the star texture should scroll across the sky" + + hdrscale(float) : "HDR Scale" : "0.66" : "When rendering your skybox in HDR mode, output will be scaled by this amount." +] + +@PointClass base(Targetname, Parentname, RenderFields, Angles, DXLevelChoice) studio("models/editor/cone_helper.mdl") = beam_spotlight : + "An entity to draw a spotlight. Will draw a beam when the player views it side on, and a halo when it's facing towards the player. "+ + "Unless the 'No Dynamic Light' spawnflag is checked, it will also create a dynamic light wherever the end of the spotlight rests." + + "This spotlight is entirely client side, it is not sync'd across clients." +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 1 + 2 : "No Dynamic Light" : 0 + 4 : "Start rotation on" : 0 + 8 : "Reverse Direction" : 0 + 16 : "X Axis" : 0 + 32 : "Y Axis" : 0 + ] + + maxspeed(integer) : "Max Rotation Speed" : 100 : "The maximum rotation speed of the spotlight, in degrees per second." + + spotlightlength(integer) : "Spotlight Length" : 500 : "Length of the spotlight beam." + spotlightwidth(integer) : "Spotlight Width" : 50 : "Width of the spotlight beam." + rendercolor(color255) : "Color (R G B)" : "255 255 255" + HDRColorScale(float) : "HDR color scale." : "0.7" : "float value to multiply sprite color by when running in HDR mode." + + // Inputs + input LightOn(void) : "Turn the spotlight on." + input LightOff(void) : "Turn the spotlight off" + input Start(void) : "Start the rotator rotating." + input Stop(void) : "Stop the rotator from rotating." + input Reverse(void) : "Reverse the direction of rotation of the rotator." + + // outputs + output OnLightOn(void) : "Fires when light turns on." + output OnLightOff(void) : "Fires when light turns off." +] diff --git a/Sledge.Formats.GameData.Tests/Resources/fgd/source/halflife2.fgd b/Sledge.Formats.GameData.Tests/Resources/fgd/source/halflife2.fgd new file mode 100644 index 0000000..bf2512d --- /dev/null +++ b/Sledge.Formats.GameData.Tests/Resources/fgd/source/halflife2.fgd @@ -0,0 +1,4671 @@ +//====== Copyright 1996-2005, Valve Corporation, All rights reserved. ======= +// +// Purpose: Half-Life 2 game definition file (.fgd) +// +//============================================================================= + +@include "base.fgd" + +//------------------------------------------------------------------------- +// +// NPCs +// +//------------------------------------------------------------------------- +@BaseClass base(BaseNPC) = TalkNPC +[ + UseSentence(string) : "Use Sentence" + UnUseSentence(string) : "Un-Use Sentence" + + DontUseSpeechSemaphore(choices) : "Don't Use Speech Semaphore" : 0 : "Friendly NPCs are not allowed to speak if another friendly NPC is speaking. In some cases we don't want speaking NPCs to prevent other NPCs from speaking (for instance, if there is a friendly NPC speaking for a long time on a monitor). To make this NPC not prevent other NPCs from talking, make it not grab the semaphore when it speaks." = + [ + 0 : "No (Use speech semaphore)" + 1 : "Yes (Don't use speech semaphore)" + ] + + input SpeakResponseConcept(string) : "Speak the specified response concept." +] + +@BaseClass base(BaseNPC) = PlayerCompanion +[ + input OutsideTransition(void) : "Use this input to teleport the NPC to a hintnode with the Player Squad Transition Point hint type." + input EnableAlwaysTransition(void) : "Enable the 'always transition' behavior" + input DisableAlwaysTransition(void) : "Disable the 'always transition' behavior" + + input EnableSpeakWhileScripting(void) : "Allow this NPC to speak responses while in a scripted sequence or while StartScripting is active." + input DisableSpeakWhileScripting(void) : "Cancels this NPC's ability to speak responses while in a scripted sequence or while StartScripting is active if it was previously enabled by EnableSpeakWhileScripting." + + AlwaysTransition(choices) : "Always transition" : "No" : "If yes, this NPC will always teleport to a Player Squad Transition Point if they're not within the trigger_transition volume." = + [ + 0 : "No" + 1 : "Yes" + ] + + DontPickupWeapons(choices) : "Prevent picking up weapons?" : "No" : "If yes, this NPC will NOT be allowed to pick up weapons they find on the ground." = + [ + 0 : "No" + 1 : "Yes" + ] + + GameEndAlly(choices) : "Is this a vital ally?" : "No" : "If yes, this NPC will cause the game to end if killed." = + [ + 0 : "No" + 1 : "Yes" + ] + + input MakeGameEndAlly(void) : "Make this NPC a game end ally." + input MakeRegularAlly(void) : "Make this NPC a regular ally." + + input EnableWeaponPickup(void) : "Enable Weapon Pickup" + input DisableWeaponPickup(void) : "Disable Weapon Pickup" + + input GiveWeapon(string) : "Gives the NPC a weapon of the specified entity name." + + input SetReadinessPanic(void) : "Set readiness to panic state (Special)" + input SetReadinessLow(void) : "Set readiness to calmest state (Bored)" + input SetReadinessMedium(void) : "Set readiness to moderate (Alert)" + input SetReadinessHigh(void) : "Set readiness to highest. (Combat imminent)" + input LockReadiness(float) : "Lock readiness at current setting for x seconds -1 = forever, 0 = unlock now" + + input ClearAllOutputs(void) : "Obliterate every output that this NPC has." + + output OnWeaponPickup(void) : "Fires when this NPC picks a weapon off the ground or a gun rack." +] + +@BaseClass base(BaseNPC ) = RappelNPC +[ + waitingtorappel(choices) : "Waiting to Rappel?" : "No" : "If yes, this NPC spawns suspended in air and awaits a BeginRappel input. It will then spawn a zipline and slide down. When it hits the ground, NPC will cut away the line and try to move forward a few feet to make room for the next NPC. The NPC will not attempt to clear its landing space if it cannot do so by taking a few steps forward" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input BeginRappel(void) : "BeginRappel" + + // Outputs + output OnRappelTouchdown(void) : "Fires when done rappeling" +] + +@BaseClass = AlyxInteractable +[ + // Outputs + output OnAlyxStartedInteraction(void) : "Fired when Alyx begins to interact with this entity." + output OnAlyxFinishedInteraction(void) : "Fired when Alyx has finished interacting with this entity." + + input InteractivePowerDown(void) : "Shutdown this target." +] + +@BaseClass base(Targetname, Origin, Angles, Global) = CombineBallSpawners +[ + spawnflags(Flags) = + [ + 4096 : "Start inactive" : 1 + 8192 : "Combine power supply" : 0 + ] + + ballcount(integer) : "Ball count" : 3 : "This is how many balls will be bouncing around inside the spawner" + minspeed(float) : "Min ball speed" : "300.0" : "The minimum speed of balls that fly in the spawner" + maxspeed(float) : "Max ball speed" : "600.0" : "The maximum speed of balls that fly in the spawner" + ballradius(float) : "Ball radius" : "20.0" : "The radius of the energy balls" + balltype(choices) : "Ball Type" : "Combine Energy Ball 1" = + [ + 0 : "Combine Energy Ball 1" + 1 : "Combine Energy Ball 2" + 2 : "Combine Energy Ball 3" + ] + ballrespawntime(float) : "Ball Respawn Time" : "4.0f" : "The energy balls respawn time" + + input Enable(void) : "Enable spawning of combine balls" + input Disable(void) : "Disable spawning of combine balls" + + output OnBallGrabbed(void) : "Fired when a combine ball is grabbed from the field by a mega physcannon" + output OnBallReinserted(void) : "Fired when a combine ball is reinserted into the field (only gets triggered when Combine Power supply is checked)" + output OnBallHitTopSide(void) : "Fired when a combine ball in hits the top side of the field (only gets triggered when Combine Power supply is checked)" + output OnBallHitBottomSide(void) : "Fired when a combine ball in hits the bottom side of the field (only gets triggered when Combine Power supply is checked)" + output OnLastBallGrabbed(void) : "Fired when the last combine ball is grabbed from the field by a mega physcannon" + output OnFirstBallReinserted(void) : "Fired when the first combine ball is reinserted into the field (only gets triggered when Combine Power supply is checked)" +] + +@PointClass base(BasePropPhysics) studioprop() = prop_combine_ball : + "A prop that physically simulates as a single rigid body. It can be constrained to other physics objects using hinges "+ + "or other constraints. It can also be configured to break when it takes enough damage." +[ + // Inputs + input Explode(void) : "Explode" +] + +@SolidClass base(Trigger, Angles) = trigger_physics_trap : + "A volumetric trigger that disintegrates enemies" +[ + dissolvetype(choices) : "Dissolve Type" : "Energy" = + [ + 0 : "Energy" + 1 : "Heavy electrical" + 2 : "Light electrical" + ] +] + +@SolidClass base(Trigger) = trigger_weapon_dissolve : + "A volumetric trigger that dissolves all weapons within it" +[ + emittername(target_destination) : "Emitter Name" : "" : "Name of a single or multiple entities to use as the basis for the emitted effects." + + // Outputs + output OnDissolveWeapon(void) : "Fires when one weapon is starting to dissolve in the trigger volume." + output OnChargingPhyscannon(void) : "Fires when the trigger begins to charge the physcannon." + + // Inputs + input StopSound(void) : "Stops all sounds." +] + +@SolidClass base(Trigger) = trigger_weapon_strip : + "A volumetric trigger that strips combat characters of all weapons" +[ + KillWeapons(choices) : "Kill Weapons" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@SolidClass base(CombineBallSpawners) = func_combine_ball_spawner : + "Spawns Combine balls." +[ + output OnBallReinserted(void) : "Fired when a combine ball is reinserted into the field (only gets triggered when Combine Power supply is checked)" + output OnLastBallGrabbed(void) : "Fired when the last combine ball is grabbed from the field by a mega physcannon" +] + +@PointClass base(CombineBallSpawners) = point_combine_ball_launcher : + "Launches Combine balls." +[ + launchconenoise(float) : "Noise to launch direction" : "0.0" : "Noise in degrees added to the launch direction." + bullseyename(string) : "Name of bullseye" : "" : "If you select the Attach Bullseye spawnflag, you may specify a name here which will be given to the bullseye." + maxballbounces(integer) : "Max number of bounces" : 8 : "Maximum number of bounces the balls are allowed to do before they are removed." + + spawnflags(Flags) = + [ + 1 : "Attach Bullseye" : 0 + 2 : "Balls should collide against player" : 0 + ] + + // Inputs + input LaunchBall(void) : "Launch a ball from the spawner." +] + +@NPCClass base(BaseNPC) studio("models/combine_soldier.mdl") = npc_blob : "Blob" +[ + input FormPathShape(string) : "Tells the group to go distribute themselves along a shape defined by path corner entities" + + input SetRadius(float) : "Force the group to change the radius (density)" +] + + +@NPCClass base(BaseNPC) studio("models/Weapons/w_grenade.mdl") = npc_grenade_frag : "Hand Grenade" +[ + input SetTimer(float) : "This input makes the grenade live, and specifies how many seconds before it explodes." +] + + +@NPCClass base(BaseNPC) sphere(sightdist) studio("models/combine_soldier.mdl") = npc_combine_cannon : "Combine Cannon" +[ + sightdist(float) : "Sight radius" : 1024 : "Radius distance at which the cannon is able to aquire enemies." +] + +@NPCClass base(BaseNPC) sphere(innerradius) sphere(outerradius) studio("models/combine_camera/combine_camera.mdl") = npc_combine_camera : + "Combine security camera" +[ + spawnflags(Flags) = + [ + 32 : "Always Become Angry On New Enemy" : 1 + 64 : "Ignore Enemies (Scripted Targets Only)" : 0 + 128 : "Start Inactive" : 0 + ] + + innerradius(integer) : "Inner radius" : 300 : "The camera will only lock onto enemies that are within the inner radius." + outerradius(integer) : "Outer radius" : 450 : "The camera will flash amber when enemies are within the outer radius, but outside the inner radius." + + minhealthdmg(integer) : "Min req'd damage for hurting camera" : 0 + defaulttarget(target_destination) : "Default target" : "" : "The default target is the entity that the camera follows when it has no other target to track." + + // Inputs + input Disable(void) : "Disables the camera. If open, the camera closes." + input Enable(void) : "Enables the camera. If closed, the camera opens." + input Toggle(void) : "Toggle - If open, close. If closed, open." + input SetDefaultTargetEntity(string) : "Sets the entity for the camera to track when it has nothing better to track, by name." + input SetTargetEntity(string) : "Sets the entity for the camera to track now, by name." + input SetAngry(void) : "Causes the camera to become angry as if it has seen something upsetting." + input SetIdle(void) : "Causes the camera to calm down if it is angry." + + output OnFoundPlayer(string) : "Fired when the player is spotted within the inner radius" + output OnFoundEnemy(void) : "Fired when a non-player enemy is spotted within the inner radius." +] + + +@PointClass base(BaseNPC, Parentname, AlyxInteractable) studio( "models/combine_turrets/ground_turret.mdl" ) = npc_turret_ground : "Combine ground turret" +[ + input Enable(void) : "Turn turret on." + input Disable(void) : "Turn turret off." + + output OnAreaClear(void) : "Fires when the turret can't find any more enemies (7 second delay)" +] + +@PointClass base(Targetname, Angles, Studiomodel) studio( "models/combine_turrets/ceiling_turret.mdl" ) = npc_turret_ceiling : "Combine Ceiling Turret" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 1 + 64 : "Start Inactive" : 0 + 128 : "Never Retire" : 0 + 256 : "Out of Ammo" : 0 + ] + + minhealthdmg(integer) : "Min req'd damage for hurting turret" : 0 + + // Inputs + input Enable(void) : "If closed, open." + input Disable(void) : "If open, close." + input Toggle(void) : "Toggle - If open, close. If closed, open." + + // Outputs + output OnDeploy(void) : "Turret is becoming active and dangerous." + output OnRetire(void) : "Turret is becoming inactive and harmless." + output OnTipped(void) : "Turret has been tipped over and is inactive." +] + + +@PointClass base(Targetname, Angles) studio( "models/combine_turrets/floor_turret.mdl" ) = npc_turret_floor : "Combine Floor Turret" +[ + spawnflags(Flags) = + [ + 32 : "Autostart" : 0 + 64 : "Start Inactive" : 0 + 128 : "Fast Retire" : 0 + 256 : "Out of Ammo" : 0 + 512 : "Citizen modified (Friendly)" : 0 + ] + + SkinNumber(integer) : "Skin Number" : 0 : "Which skin to use for this turret. Set to 0 to select randomly." + + // Inputs + input Toggle(void) : "Toggle - If open, close. If closed, open." + input Enable(void) : "Enable the turret." + input Disable(void) : "Disable the turret." + input DepleteAmmo(void) : "Depletes all the ammo from a turret, causing it to dry-fire." + input RestoreAmmo(void) : "Restores ammo to a turret, allowing it to fire live rounds again." + input SelfDestruct(void) : "Causes the turret to warn and then explode." + + // Outputs + output OnDeploy(void) : "Turret is becoming active and dangerous." + output OnRetire(void) : "Turret is becoming inactive and harmless." + output OnTipped(void) : "Turret has been tipped over and is inactive." + output OnPhysGunPickup(void) : "Picked up with physgun" + output OnPhysGunDrop(void) : "Released by physgun" +] + +@BaseClass base(BaseNPC) = VehicleDriverNPC +[ + vehicle(target_destination) : "Vehicle to drive" + + spawnflags(Flags) = + [ + 65536 : "Start Inactive" : 1 + ] + + input StartFiring(void) : "Tell the driver to attack nearby enemies with the vehicle's weaponry (if any)" + input StopFiring(void) : "Tell the driver to stop attacking nearby enemies with the vehicle's weaponry." + input GotoPathCorner(string) : "Tell the driver to go to a specific path corner and continue from there." +] + +@NPCClass base(VehicleDriverNPC) studio("models/roller.mdl") = npc_vehicledriver : + "NPC used to drive a target vehicle." +[ + drivermaxspeed(float) : "Maxspeed (percentage of vehicle's maxspeed)." : 1 + driverminspeed(float) : "MinSpeed (percentage of vehicle's maxspeed)." : 0 + + input SetDriversMaxSpeed(float) : "Set the Maxspeed (percentage of vehicle's maxspeed)." + input SetDriversMinSpeed(float) : "Set the Minspeed (percentage of vehicle's maxspeed)." + input StartForward(void) : "Tell the driver to start driving." + input Stop(void) : "Tell the driver to stop driving." +] + +@NPCClass base(VehicleDriverNPC) studio("models/roller.mdl") = npc_cranedriver : + "NPC used to drive cranes." +[ + releasepause(float) : "Pause time before dropping a ForceDrop specified object." : 0 + + // Inputs + input ForcePickup(string) : "Force the driver to pickup the specified entity (by targetname)" + input ForceDrop(string) : "Force the driver to drop the currently held object at the specified entity's location." + + // Outputs + output OnPickedUpObject(void) : "Fired when the ForcePickup specified object has been picked up." + output OnDroppedObject(void) : "Fired when the ForceDrop specified object has been dropped." + output OnPausingBeforeDrop(void): "Fired at the start of the pause before dropping the ForceDrop specified object." +] + +@NPCClass base(VehicleDriverNPC) studio("models/roller.mdl") = npc_apcdriver : + "NPC used to drive an APC vehicle." +[ + spawnflags(Flags) = + [ + 65536 : "No Rocket Attacks" : 0 + 131072 : "No Gun Attacks" : 0 + ] + + drivermaxspeed(float) : "Maxspeed (percentage of vehicle's maxspeed)." : 1 + driverminspeed(float) : "MinSpeed (percentage of vehicle's maxspeed)." : 0 + + input SetDriversMaxSpeed(float) : "Set the Maxspeed (percentage of vehicle's maxspeed)." + input SetDriversMinSpeed(float) : "Set the Minspeed (percentage of vehicle's maxspeed)." + input StartForward(void) : "Tell the driver to start driving." + input Stop(void) : "Tell the driver to stop driving." + + input DisableFiring(float) : "Disables firing from happening" + input EnableFiring(float) : "Enables firing to start. Firing is enabled by default" +] + + +@NPCClass base(BaseNPC,AlyxInteractable) studio("models/roller.mdl") = npc_rollermine : "Roller Mine" +[ + spawnflags(Flags) = + [ + 65536 : "Friendly" : 0 + 131072 : "Use prop_physics collision rules" : 0 + ] + + startburied(choices) : "Start Buried" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + uniformsightdist(choices) : "Sight Distance" : 0 = + [ + 0 : "Ignore distant targets not in a vehicle (default)." + 1 : "Equal visibility for all targets." + ] + + input TurnOn(void) : "Restore this rollermine to normal functionality." + input TurnOff(void) : "Make this rollermine completely inert. Does not run AI and NPCs will ignore it." + + output OnPhysGunPickup(void) : "Picked up with physgun" + output OnPhysGunDrop(void) : "Released by physgun" +] + +@NPCClass base(BaseNPC) studio("models/missile_defense.mdl") = npc_missiledefense : "Missile Defense" +[ +] + +@NPCClass base(BaseNPC) studio("models/combine_soldier.mdl") = npc_sniper : "Sniper" +[ + radius(integer) : "Patience Radius" : 0 : "Sniper will hold fire until the target is within this radius. After that, sniper will always attack, even if the target retreats outside of this radius" + misses(integer) : "Initial Misses" : 0 : "How many times to miss a target on purpose before beginning to fire accurately." + beambrightness(integer) : "Beam Brightness (0 to 255)" : 100 : "How bright the laser sight beam should be. (0 - 255)" + shootZombiesInChest(choices) : "Shoot zombies in chest" : 0 : "If true, aim for chest instead of headcrab. Useful when at great distance and height." = + [ + 0 : "No" + 1 : "Yes" + ] + + shielddistance(float) : "Bullet shield distance" : 64 : "Obsolete" + shieldradius(float) : "Bullet shield radius" : 48 : "Obsolete" + + PaintInterval(float): "Paint interval" : 1 : "Sniper will keep a target painted for this many seconds before shooting. 'Faster Shooting' sniper flag multiplies this by 0.75." + PaintIntervalVariance(float): "Paint interval variance" : "0.75" : "When shooting at NPCs, a random number between 0 and this is added to PaintInterval for every shot." + + + // Inputs + input EnableSniper(void) : "Enable Shooting" + input DisableSniper(void) : "Disable Shooting" + input SetDecoyRadius(integer) : "Set Decoy Radius" + input SweepTarget(string) : "Sweep a Target" + input SweepTargetHighestPriority(string) : "Drop everything and sweep this target!" + input SweepGroupRandomly(string) : "Randomly Sweep a Group" + input StopSweeping(void) : "Stop any target sweeping operation started by entity I/O" + input ProtectTarget(target_destination) : "Protect the specified enemy. The sniper will attempt to shoot the enemy nearest the protect target at all times." + input SetPaintInterval(float) : "Set PaintInterval field." + input SetPaintIntervalVariance(float) : "Set PaintIntervalVariance field." + + output OnShotFired(void) : "Fires when sniper fires a shot" + + spawnflags(Flags) = + [ + 65536 : "Hidden" : 0 + 131072 : "Laser Viewcone" : 0 + 262144 : "No Corpse" : 0 + 524288 : "Start Disabled" : 0 + 1048576 : "Faster shooting (Episodic)" : 0 + 2097152 : "No sweep away from target (Episodic)" : 0 + ] +] + + +@PointClass base(Targetname, Parentname, EnableDisable) iconsprite("editor/info_target.vmt") sphere(radius) = info_radar_target : "Jalopy Radar Beacon" +[ + radius(float) : "Effective Radius" : 6000 : "How close the Jalopy must be to detect this beacon. If this radius is -1, the range is infinite" + + type(choices) : "Type of target" : 0 = + [ + 0 : "Generic Citizen Beacon" + 1 : "Magnussen RDU Beacon" + 2 : "Dog" + 3 : "Ally Installation" + ] + + mode(choices) : "Mode" : 0 = + [ + 0 : "Default" + 1 : "Sticky - once detected, ignore effective radius." + ] +] + + +@PointClass base(Targetname, Angles, EnableDisable) iconsprite("editor/info_target.vmt") = info_target_vehicle_transition : "Vehicle Transition Point" +[ +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = info_snipertarget : "Sniper Target" +[ + speed(integer) : "Sweep to speed" : 2 + groupname(string) : "Group Name" + spawnflags(Flags) = + [ + 1 : "Shoot Me" : 0 + 2 : "No Interruptions" : 0 + // 4 : "Snap Shot" : 0 OBSOLETE NOW but don't overwrite, in case some levels need legacy support. + 8 : "Resume if Interrupted" : 0 + 16: "Snap to me" : 0 + ] +] + +@PointClass base(Targetname, Angles) studio() = prop_thumper : "Thumper" +[ + model(studio) : "World model" : "models/props_combine/CombineThumper002.mdl" + + dustscale(choices) : "Dust Scale" : "Small Thumper" = + [ + 128 : "Small Thumper" + 256 : "Large Thumper" + ] + + input Enable(void) : "Enable Thumper" + input Disable(void) : "Disable Thumper" + + output OnThumped(void) : "Fires when thumper impacts the ground." + + EffectRadius(integer) : "Effect Radius" : 1000 : "Radius of the thumper's sound. EPISODIC ONLY." +] + +@NPCClass base(BaseNPC) studio("models/antlion.mdl") sphere() = npc_antlion : + "Antlions will run away from ai_sound, type: Thumper." +[ + startburrowed(choices) : "Start Burrowed" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 65536 : "Burrow when eluded" : 0 + 131072 : "Use Ground Checks" : 0 + 262144 : "Worker Type" : 0 + ] + + radius(integer) : "Alert Radius" : 256 + eludedist(integer) : "Distance until eluded" : 1024 : "Only available when Burrow When Eluded is flagged" + + ignorebugbait(choices) : "Ignore Bugbait" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + unburroweffects(choices) : "Suppress unburrow effects" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + input Unburrow(void) : "Unburrow from the ground" + input Burrow(void) : "Burrow into the ground" + input BurrowAway(void) : "Burrow into the ground and remove the antlion" + input FightToPosition(string) : "Fight to position" + input EnableJump(void) : "Allow non-navigational jumping" + input DisableJump(void) : "Disallow non-navigational jumping" + input IgnoreBugbait(void) : "Ignore bugbait" + input HearBugbait(void) : "Hear bugbait" + + output OnReachedFightGoal(void) : "Fires when the antlion reaches his specified fight-to location" + output OnUnBurrowed(void) : "Fires when the antlion unburrows" + +] + +@NPCClass base(BaseNPC) studio("models/antlion_guard.mdl") = npc_antlionguard : "Antlion Guard" +[ + spawnflags(Flags) = + [ + 65536 : "Create server-side ragdoll on death" : 0 + 131072 : "Use inside footsteps" : 0 + ] + + startburrowed(choices) : "Start Burrowed" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + allowbark(choices) : "Allow Bark" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + cavernbreed(choices) : "Cavern Guard Model and Texture" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + incavern(choices) : "Use inside-Cavern Behavior" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + shovetargets(string) : "Shove Targets" : "" + + // Inputs + input Unburrow(void) : "Unburrow from the ground" + input SetShoveTarget(string) : "Sets a shove target to attack" + input SetChargeTarget(string) : "Sets a charge target to attack. Parameters are the name of the entity to start at and the name of the entity to charge towards, separated by a space (i.e. start target)" + input ClearChargeTarget(void) : "Clear the charge target" + input SetCoverFromAttack(integer) : "Sets whether or not the creature will protect itself from attacks" + input Ragdoll(void) : "Causes the antlion guard to die, regardless of health" + input EnableBark(void) : "Allow the antlion guard to try and summon antlions" + input DisableBark(void) : "Stop the antlion guard from trying to summon antlions" + input InvestigateHint(string) : "Sniff around at a hint group until told otherwise" + input StopInvestigating(void) : "Stop trying to sniff out the player" + + input EnablePreferPhysicsAttack(void) : "Prefer to use physics attacks if at all possible, even when inside a cavern." + input DisablePreferPhysicsAttack(void) : "Do not prefer to use physics attacks if at all possible, even when inside a cavern." + + + // Outputs + output OnSeeHiddenPlayer(void) : "Fires when the current enemy is seen while trying to hide" + output OnSmellHiddenPlayer(void) : "Fires when the current enemy is smelled while trying to hide" + output OnSummon(void) : "Antlion guard is attempting to summon antlions" +] + + +@NPCClass base(BaseNPC) studio("models/crow.mdl") = npc_crow : "Crow" +[ + input FlyAway( string ) : "Forces the crow to fly to the nearest crow flyto hint node." + + deaf(choices) : "Deaf?" : 0 = + [ + 0 : "No." + 1 : "Yes. Ignore sounds." + ] +] + +@NPCClass base(BaseNPC) studio("models/seagull.mdl") = npc_seagull : "Seagull" +[ + input FlyAway( string ) : "Forces the seagull to fly to the nearest crow flyto hint node." + + deaf(choices) : "Deaf?" : 0 = + [ + 0 : "No." + 1 : "Yes. Ignore sounds." + ] +] + +@NPCClass base(BaseNPC) studio("models/pigeon.mdl") = npc_pigeon : "Pigeon" +[ + input FlyAway( string ) : "Forces the pigeon to fly to the nearest crow flyto hint node." + + deaf(choices) : "Deaf?" : 0 = + [ + 0 : "No." + 1 : "Yes. Ignore sounds." + ] +] + +@NPCClass base(BaseNPC) studio("models/ichthyosaur.mdl") = npc_ichthyosaur : "Ichthyosaur. Not fully functional" +[ +] + +@BaseClass base(BaseNPC) = BaseHeadcrab +[ + startburrowed(choices) : "Start burrowed" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(flags) = + [ + 65536 : "Start hidden" : 0 + 131072 : "Start hanging from ceiling" : 0 + ] + + + input StartHangingFromCeiling(void) : "Start hanging from ceiling." + input DropFromCeiling(void) : "Drop if hanging from ceiling." +] + +@NPCClass base(BaseHeadcrab, Parentname) studio("models/Headcrabclassic.mdl") = npc_headcrab : "Headcrab" +[ +] +@NPCClass base(BaseHeadcrab) studio("models/Headcrab.mdl") = npc_headcrab_fast : "Fast Headcrab" +[ +] +@NPCClass base(BaseHeadcrab) studio("models/Headcrabblack.mdl") = npc_headcrab_black : "Black Headcrab" +[ +] + +@NPCClass base(BaseNPC) studio("models/Stalker.mdl") = npc_stalker : "Stalker" +[ + BeamPower(choices) : "Beam Power" : "Low" = + [ + 0 : "Low" + 1 : "Medium" + 2 : "High" + ] +] + + +@NPCClass base(Parentname, BaseNPC) iconsprite("editor/bullseye.vmt") color(255 0 0) = npc_bullseye : "Bullseye" +[ + // Unlike other NPCs level designers are allowed to set the health on bullseyes + health(Integer) : "Health" : 35 + + minangle(string) : "Minimum Angle" : "360" : "Angle from the bullseye required for bullseye to be a valid enemy" + mindist(string) : "Minimum Distance" : "0" : "Distance from the bullseye required for bullseye to be a valid enemy" + + autoaimradius(float) : "Autoaim Radius" : "0" : "Radius of autoaim influence. Use ent_autoaim to visualize." + + spawnflags(Flags) = + [ + 65536 : "Not Solid" : 0 + 131072 : "Take No Damage" : 0 + 262144 : "Enemy Damage Only" : 0 + 524288 : "Bleed" : 0 + 1048576 : "Perfect Accuracy" : 0 + 2097152 : "Collide against physics objects (Creates VPhysics Shadow)" : 0 + ] + output OnTargeted(void) : "Fires when targeted" + output OnReleased(void) : "Fires when no longer targeted" +] + + +@NPCClass base(Parentname, BaseNPC) size(-16 -16 -16, 16 16 16) color(255 150 0) = npc_enemyfinder : "EnemyFinder" +[ + spawnflags(flags) = + [ + 65536 : "Check Visibility" : 1 + 131072 : "APC Visibility checks" : 0 + 262144 : "Short memory" : 0 + 524288 : "Can be an enemy" : 0 + ] + FieldOfView(string) : "FieldOfView" : "0.2" : "How far to look (1.0 = straight ahead, 0.0 = +/- 90 degrees, -1.0 = all directions)" + MinSearchDist(integer) : "Min Search Dist" : 0 + MaxSearchDist(integer) : "Max Search Dist" : 2048 + + freepass_timetotrigger(float) : "Player pass issue time" : 0 : "Amount of time an enemy is hidden after which a 'free pass' on reaquire is granted" + freepass_duration(float) : "Player pass duration" : 0 : "After granted 'free pass', the amount of time a target is allowed before reaquire" + freepass_movetolerance(float) : "Player pass move tolerance" : 120 : "After granted 'free pass', the distance the target is allowed to move before reaquire" + freepass_refillrate(float) : "Player pass refill rate" : "0.5" : "After free pass begins expiring, how much the time the target gets back for every second they hide again" + freepass_peektime(float) : "Player pass peek time" : 0 : "How long targets in cover are allowed to peek without penalty" + + StartOn(choices) : "Start On" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input TurnOn(void) : "Turn on: Look for enemies" + input TurnOff(void) : "Turn off: Stop looking for enemies" + + output OnLostEnemies(void) : "Fires when the enemy finder has no enemies." + output OnAcquireEnemies(void) : "Fires when the enemy finder acquires enemies." +] + +@NPCClass base(Parentname, BaseNPC) size(-16 -16 -16, 16 16 16) color(255 150 0) = npc_enemyfinder_combinecannon : "EnemyFinder Specifically for use with func_tank_combine_cannon" +[ + spawnflags(flags) = + [ + 65536 : "Check Visibility" : 1 + 131072 : "APC Visibility checks" : 0 + 262144 : "Short memory" : 0 + 524288 : "Can be an enemy" : 0 + ] + FieldOfView(string) : "FieldOfView" : "0.2" : "How far to look (1.0 = straight ahead, 0.0 = +/- 90 degrees, -1.0 = all directions)" + MinSearchDist(integer) : "Min Search Dist" : 0 + MaxSearchDist(integer) : "Max Search Dist" : 2048 + + SnapToEnt(target_destination) : "Name of entity to snap to" : "" : "Since it can be hard to position these entities with respect to the func_tank brushwork, you can specify an entity name here and this enemyfinder will position itself at the center of that entity." + + freepass_timetotrigger(float) : "Player pass issue time" : 0 : "Amount of time an enemy is hidden after which a 'free pass' on reaquire is granted" + freepass_duration(float) : "Player pass duration" : 0 : "After granted 'free pass', the amount of time a target is allowed before reaquire" + freepass_movetolerance(float) : "Player pass move tolerance" : 120 : "After granted 'free pass', the distance the target is allowed to move before reaquire" + freepass_refillrate(float) : "Player pass refill rate" : "0.5" : "After free pass begins expiring, how much the time the target gets back for every second they hide again" + freepass_peektime(float) : "Player pass peek time" : 0 : "How long targets in cover are allowed to peek without penalty" + + StartOn(choices) : "Start On" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input TurnOn(void) : "Turn on: Look for enemies" + input TurnOff(void) : "Turn off: Stop looking for enemies" + input SetWideFOVForSeconds(float) : "Gives this enemyfinder a 180 degree viewcone for the number of seconds specified in the parameter override" + + output OnLostEnemies(void) : "Fires when the enemy finder has no enemies." + output OnAcquireEnemies(void) : "Fires when the enemy finder acquires enemies." +] + + + +@NPCClass base(BaseNPC,Parentname, TalkNPC, PlayerCompanion ) studio() = npc_citizen : "Citizen" +[ + + spawnflags(Flags) = + [ + 65536 : "Follow player on spawn" : 0 + 131072 : "Medic" : 0 + 262144 : "Random Head" : 1 + 524288 : "Ammo Resupplier" : 0 + 1048576 : "Not Commandable" : 0 + 2097152 : "Don't use Speech Semaphore - OBSOLETE" : 0 + 4194304 : "Random male head" : 0 + 8388608 : "Random female head" : 0 + 16777216 : "Use RenderBox in ActBusies" : 0 + ] + + additionalequipment(choices) : "Weapons" : "0" = + [ + "weapon_smg1" : "SMG1" + "weapon_ar2" : "AR2" + "weapon_stunstick" : "Stun Stick" + "weapon_crowbar" : "Crow Bar" + "weapon_shotgun" : "Shotgun" + "weapon_beerbottle" : "Beer Bottle" + "weapon_beerbottle2" : "Beer Bottle2" + "weapon_rpg" : "RPG" + "0" : "Nothing" + ] + + ammosupply(choices) : "Ammo to Resupply (if spawnflag set)" : "SMG1" = + [ + "Pistol" : "Pistol" + "SMG1" : "SMG1" + "SMG1_Grenade" : "SMG1 Grenade" + "AR2" : "AR2" + "Buckshot" : "Shotgun" + "RPG_Round" : "RPG" + "Grenade" : "Grenade" + "XBowBolt" : "Crossbow Bolt" + ] + ammoamount(integer) : "Amount of ammo to give" : 1 + + citizentype(choices) : "Type" : "Default" = + [ + 0 : "Default" + 1 : "Downtrodden" + 2 : "Refugee" + 3 : "Rebel" + 4 : "Unique" + ] + + expressiontype(choices) : "Expression Type" : "Random" = + [ + 0 : "Random" + 1 : "Scared" + 2 : "Normal" + 3 : "Angry" + ] + + //!!!BUGBUG - don't ship with these names + //!!!FIXME - don't ship with these names + model(choices) : "Model" : "models/humans/group01/male_01.mdl" = + [ + "models/humans/group01/male_01.mdl" : "Male 1" + "models/humans/group01/male_02.mdl" : "Male 2" + "models/humans/group01/male_03.mdl" : "Male 3" + "models/humans/group01/male_04.mdl" : "Male 4" + "models/humans/group01/male_05.mdl" : "Male 5" + "models/humans/group01/male_06.mdl" : "Male 6" + "models/humans/group01/male_07.mdl" : "Male 7" + "models/humans/group01/male_08.mdl" : "Male 8" + "models/humans/group01/male_09.mdl" : "Male 9" + "models/humans/group01/female_01.mdl" : "Female 1" + "models/humans/group01/female_02.mdl" : "Female 2" + "models/humans/group01/female_03.mdl" : "Female 3" + "models/humans/group01/female_04.mdl" : "Female 4" + "models/humans/group01/female_06.mdl" : "Female 5" + "models/humans/group01/female_07.mdl" : "Female 6" + "models/humans/male_cheaple.mdl" : "Cheaple Male 1" + "models/odessa.mdl" : "Odessa. DO NOT USE." + ] + + ExpressionOverride(string) : "Facial expression override" + + notifynavfailblocked(choices) : "Fire output when Nav is blocked?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + neverleaveplayersquad(choices) : "Permanent squad member?" : 0 : "A permanent squad member cannot leave the player's squad unless killed or explicity removed by entity I/O. Only use this if you're sure you want to override the default AI." = + [ + 0 : "No. This is default behavior." + 1 : "Yes, stay in squad until death." + ] + + denycommandconcept(string) : "Deny command speech concept" : "" : "If you want your citizens to squad with the player but not obey commands the player gives to move the squad, put a concept here and this citizen will speak the concept instead of obeying the order." + + //Inputs + input RemoveFromPlayerSquad(void) : "Remove from player squad, instantly." + input SetExpressionOverride(string) : "Set facial expression override" + + input StartPatrolling(void) : "Patrol whenever I'm idle or alert." + input StopPatrolling(void) : "Stop patrolling when I'm idle or alert." + input SetCommandable(void) : "Make a previously uncommandable citizen commandable" + input SetMedicOn(void) : "Set the medic flag on. Will not change the model or skin of the citizen." + input SetMedicOff(void) : "Set the medic flag off. Will not change the model or skin of the citizen." + input SetAmmoResupplierOn(void) : "Set the ammo-resupplier flag on. Will not change the model or skin of the citizen." + input SetAmmoResupplierOff(void) : "Set the ammo-resupplier flag off. Will not change the model or skin of the citizen." + + // Outputs + output OnJoinedPlayerSquad(void) : "Fires when joins player squad" + output OnLeftPlayerSquad(void) : "Fires when leaves player squad" + output OnFollowOrder(void) : "Fires when ordered to follow player" + output OnStationOrder(void) : "Fires when ordered to a location by player" + output OnPlayerUse(void) : "Fires when a player +USEs the citizen" + output OnNavFailBlocked(void) : "Fires when this Citizen's movement fails because he/she is blocked." +] + +@NPCClass base(BaseNPC) studio("models/Barney.mdl") = npc_fisherman : "Fisherman" +[ + ExpressionOverride(string) : "Facial expression override" + input SetExpressionOverride(string) : "Set facial expression override" +] + +@NPCClass base(TalkNPC, BaseNPC, PlayerCompanion) studio("models/Barney.mdl") = npc_barney : "Barney" +[ + additionalequipment(choices) : "Weapons" : "weapon_pistol" = + [ + "weapon_pistol" : "Pistol" + "weapon_smg1" : "SMG1" + "weapon_stunstick" : "Stun Stick" + "weapon_shotgun" : "Shotgun" + "weapon_ar2" : "AR2" + "0" : "Nothing" + ] + + ExpressionOverride(string) : "Facial expression override" + input SetExpressionOverride(string) : "Set facial expression override" + + // Outputs + output OnPlayerUse(void) : "Fires when a player +USEs Barney" +] + +@BaseClass base(BaseNPC, RappelNPC) = BaseCombine +[ + additionalequipment(choices) : "Weapons" : "weapon_smg1" = + [ + "weapon_ar2" : "AR2" + "weapon_shotgun" : "Shotgun" + "weapon_smg1" : "SMG1" + "weapon_stunstick" : "Stun Stick" + "0" : "Nothing" + ] + + spawnflags(Flags) = + [ + 65536 : "Start LookOff" : 0 + 131072 : "Don't drop grenades" : 0 + 262144 : "Don't drop ar2 alt fire (elite only) " : 0 + ] + + NumGrenades(choices) : "Number of Grenades" : "5" = + [ + "0" : "None" + "1" : "1" + "2" : "2" + "3" : "3" + "4" : "4" + "5" : "5" + "999999" : "Unlimited" + ] + + // Inputs + input LookOn(void) : "Look normally" + input LookOff(void) : "Don't look for myself, use other squad member's eyes" + input StartPatrolling(void) : "Patrol whenever I'm idle or alert." + input StopPatrolling(void) : "Stop patrolling when I'm idle or alert." + input ThrowGrenadeAtTarget(target_destination) : "Throw a grenade at the specified target." +] + + +@NPCClass base(BaseCombine) studio("models/Combine_Soldier.mdl") = npc_combine_s : "Combine Soldier" +[ + input Assault(string) : "Start an assault. Parameter passed in should be the name of the rally point." + + model(choices) : "Model" : "models/combine_soldier.mdl" : "Regular Soldier" = + [ + "models/combine_soldier.mdl" : "Regular Soldier" + "models/combine_soldier_prisonguard.mdl" : "Nova Prospekt Soldier" + "models/combine_super_soldier.mdl" : "Elite Soldier" + ] + + tacticalvariant(choices) : "Tactical Variant" : "0" = + [ + "0" : "Normal Tactics" + "1" : "Pressure the enemy (Keep advancing)" + "2" : "Pressure until within 30ft, then normal" + ] + + usemarch(choices) : "Walk Easy" : "0" : "When true, will use a variety of more casual walking animations instead of the standard walk. For use in crowds. WARNING: this animation only has a north component. For use under very special circumstances only." = + [ + "0" : "No" + "2" : "Yes" + ] +] + + +@PointClass base(Parentname, BaseNPC) studio("models/junk/w_traffcone.mdl") = npc_launcher : "Launcher" +[ + + spawnflags(Flags) = + [ + 65536 : "Check LOS" : 1 + ] + + StartOn(choices) : "Start On" : 0 = + [ + 0: "Off" + 1: "On" + ] + MissileModel(studio) : "Missile Model" : "models/Weapons/wscanner_grenade.mdl" + LaunchSound(sound) : "Launch Sound" : "npc/waste_scanner/grenade_fire.wav" + FlySound(sound) : "Fly Sound": "ambient/objects/machine2.wav" + + SmokeTrail(choices) : "Smoke Trail" : 1 = + [ + 0: "Off" + 1: "On" + 2: "On Homing" + ] + LaunchSmoke(choices) : "Launch Smoke" : 1 = + [ + 0: "Off" + 1: "On" + ] + LaunchDelay(integer) : "Launch Delay" : 8 : "When ON, how long to wait between each launch" + LaunchSpeed(string) : "Launch Speed" : 200 : "Initial launch speed of missile (in up direction)" + PathCornerName(target_destination) : "Path Corner Name" : "" : "Name of a path corner. If set launches a pathfollowing missing, rather than a homing missile" + HomingSpeed(string) : "Homing Speed" : 0 : "Speed to reach when homing" + HomingStrength(integer) : "Homing Strength" : 10 : "How strong in homing effect (0-100)" + HomingDelay(string) : "Homing Delay" : 0 : "Number of seconds to delay before homing starts" + HomingRampUp(string) : "Homing Ramp Up" : "0.5" : "Number of seconds it takes to reach full homing strength after homing delay" + HomingDuration(string) : "Homing Duration" : 5 : "Number of seconds the homing effect lasts" + HomingRampDown(string) : "Homing Ramp Down" : "1.0" : "Number of seconds it takes homing effect to decay after homing duration" + Gravity(string) : "Gravity" : "1.0" : "Scale for effect of gravity. (1.0 = normal gravity)" + MinRange(integer) : "Min Range" : 100 : "Minimun distance a target can be to be attacked" + MaxRange(integer) : "Max Range" : 2048 : "Maximum distance a target can be to be attacked" + SpinMagnitude(string) : "Spin Magnitude" : 0 : "Strength of spin in missile trajectory" + SpinSpeed(string) : "Spin Speed" : 0 : "How fast does the spin rotate through 360" + Damage(string) : "Damage" : 50 : "How much damage does each missile do" + DamageRadius(string) : "DamageRadius" : 200 : "How far away from impact does the missle do damage" + + // Outputs + output OnLaunch(void) : "Fires when missile is launched" + + // Inputs + input TurnOn(void) : "Turn on Launcher" + input TurnOff(void) : "Turn off Launcher" + input LOSCheckOn(void) : "Start checking line of sight before firing" + input LOSCheckOff(void) : "Stop checking line of sight before firing" + input SetEnemyEntity(string) : "Set entity I should attack. Ignores visibility. (output from other entity only)" + input ClearEnemyEntity(void) : "Clear set enemy enemy" + input FireOnce(void) : "Fire Once (if have enemy)" +] + + +@NPCClass base(BaseNPC) studio("models/hunter.mdl") = npc_hunter : + "A smaller, faster, strider that can pursue the player into buildings." +[ + FollowTarget(target_destination) : "Strider to Follow" : "" : "The name of the strider that this hunter should follow." + + // Inputs + input FollowStrider(target_destination) : "Sets the name of the strider that this hunter should follow." + + input SetMinigunTime(float) : "Time to shoot at any set minigun target." + input SetMinigunTarget(string) : "Hunter will shoot minigun at the named target." + + input DisableShooting(void) : "Forces the hunter to be melee-only." + input EnableShooting(void) : "Allows the hunter to use range attacks or melee attacks." + + input DisableSquadShootDelay(void) : "Disables the delay between range attacks for squads of hunters, allowing them to shoot as frequently as they wish." + input EnableSquadShootDelay(void) : "Enables the delay between range attacks for squads of hunters." + + input EnableUnplantedShooting(void) : "Used mainly for scripted attacks against bullseyes. Enables the hunter to shoot without having to plant first." + input DisableUnplantedShooting(void) : "Returns the hunter to normal after a call to EnableUnplantedShooting." + + input DoPhysicsBlast(void) : "Hunter will instantly do the defensive physics blast." + + input Crouch(void) : "Crouch down." + input Stand(void) : "Stand up from crouch." + input DisableCrouchWalk(void) : "UNUSED: Prevents the hunter from crouch walking." + input EnableCrouchWalk(void) : "UNUSED: Allows the hunter to crouch walk." + + input UseSiegeTargets(string) : "Pass in the name of info_targets to shoot at when I can't shoot at the player." +] + + +@PointClass base(npc_template_maker) iconsprite("editor/npc_maker.vmt") = npc_hunter_maker : + "An entity that creates hunters. The NPCs it creates are clones of a template NPC." +[ +] + + +@NPCClass base(BaseNPC) studio() = npc_advisor : + "An adorable sluglike alien with benevolent psychic powers." +[ + model(studio) : "World model" : "models/advisor.mdl" + + levitationarea(string) : "Levitation Area" : "" : "Trigger volume inside which levitated objects reside" + + levitategoal_bottom(target_destination) : "Levitation Goal Bottom" : "" : "Objects will levitate at least this high" + levitategoal_top(target_destination) : "Levitation Goal Top" : "" : "Objects will levitate at least this high" + + staging_ent_names(string) : "Staging Position Names" : "" : "All entities with this name will be considered staging positions for the throw behavior." + priority_grab_name(string) : "Priority Name For Grabbing" : "" : "If any entities named this are present, the advisor will preferentially pick them up for throwing at the player." + + + + output OnPickingThrowable(void) : "Fires just before I pick something to hurl" + output OnThrowWarn(void) : "Fires when I trigger the warning green glow before tossing" + output OnThrow(void) : "Fires just after I throw something" + output OnHealthIsNow(integer) : "When I am damaged, my hitpoints thereafter" + + input SetThrowRate(float) : "Advisor will throw an object once per this many seconds (plus a little more)" + input WrenchImmediate(string) : "Advisor will immediately start levitating all objects with this name" + input SetStagingNum(integer): "Advisor will stage this many objects at once, then barrage the player." + input PinPlayer(string) : "Advisor will wrench the player to this point in the air. Use a null param to let go." + input BeamOn(string) : "Start a psychic-TK effect beam from the advisor to the specified object. You must remember to turn it off later." + input BeamOff(string) : "Turn off a psychic-TK effect beam from the advisor to the specified object." + + input ELightOn(void) : "Turn on an entity light at my location. Please remember to turn this off." + input ELightOff(void) : "Turn off my entity light." + + input DoNothing(void) : "" +] + + +@PointClass base(Targetname, Parentname, EnableDisable) = env_sporeexplosion : "Bugbait Spore Effect" +[ + spawnrate(float) : "Spawn Rate (as percentage)" : "25" : "How dense the spore effect is" +] + +@PointClass base(Targetname, Parentname, Targetname, EnableDisable) = env_gunfire : "Gunfire Effect" +[ + target(target_destination) : "Target" : "" : "Shoot at this target. REMEMBER - this is an effect only! It does not do damage!" + + minburstsize(integer) : "Min Burst Size" : 2 : "Minimum number of rounds in a burst." + maxburstsize(integer) : "Max Burst Size" : 7 : "Maximum number of rounds in a burst." + + minburstdelay(float) : "Min Delay Between Bursts" : 2 : "Minimum delay between bursts. (seconds)" + maxburstdelay(float) : "Max Delay Between Bursts" : 5 : "Maximum delay between bursts. (seconds)" + + rateoffire(float) : "Rate of fire" : 10 : "Expressed as rounds per second" + + spread(choices) : "Bullet spread" : 5 : "The 'cone of inaccuracy' of the shots fired by this entity." = + [ + 1 : "1 Degree" + 5 : "5 Degrees" + 10 : "10 Degrees" + 15 : "15 Degrees" + ] + + bias(choices) : "Bullet distribution should be..." : 1 : "How to distribute bullets within the spread. Even distribution is a true scatter throughout the spread. Biased towards the outside makes the shots 'miss' the target by tending towards the outside of the spread." = + [ + 1 : "Evenly distributed" + -1 : "Biased towards the outside" + ] + + collisions(choices) : "Collision detection" : 0 : "Whether/how to handle bullet collision detection. NOTE: If you select NONE, this entity will be very cheap to use, but all bullets will stop short at their target's position in space and there will be no impact effects. Normal collision detection does the same things NPCs do when they fire their guns (except harm anything)." = + [ + 0 : "None. Cheap for performance." + 1 : "Normal collision detection." + ] + + shootsound(choices) : "Shoot Sound" : "Weapon_AR2.NPC_Single" : "Gunfire sound to make" = + [ + "Weapon_AR2.NPC_Single" : "AR2" + "Weapon_SMG1.NPC_Single" : "SMG1" + ] + + tracertype(choices) : "Tracer" : "AR2TRACER" : "Type of tracer to display" = + [ + "Tracer" : "Default" + "AR2TRACER" : "AR2" + ] +] + +@PointClass base(Parentname,Angles,Targetname) sphere(DamageRadius) studio("models/props_combine/headcrabcannister01b.mdl") = env_headcrabcanister : "Headcrab canister" +[ + spawnflags(Flags) = + [ + 1 : "No Impact Sound" : 0 + 2 : "No Launch Sound" : 0 + 4096 : "Start Impacted" : 0 + 8192 : "Land at initial position" : 0 + 16384 : "Wait for input to open" : 0 + 32768 : "Wait for input to spawn headcrabs" : 0 + 65536 : "No smoke" : 0 + 131072 : "No shake" : 0 + 262144 : "Remove on impact" : 0 + 524288 : "No impact effects" : 0 + ] + HeadcrabType(choices) : "Which headcrab to spawn?" : 0 = + [ + 0 : "Normal headcrabs" + 1 : "Fast Headcrabs" + 2 : "Poison Headcrabs" + ] + HeadcrabCount(integer) : "Headcrab count" : 6 : "Number of headcrabs to spawn on impact" + FlightSpeed(float) : "Flight Speed" : 3000 : "Speed to fly through the air" + FlightTime(float) : "Flight Time" : 5 : "Time to fly through the air in seconds" + StartingHeight(float) : "Starting Height" : 0 : "Relative height from the landing position at which the canister should be launched. Positive values mean launch it above the impact point, negative values mean launch it below." + MinSkyboxRefireTime(float) : "Min Refire Time" : 0 : "Min number of seconds before the cannister is refired. This will only work for cannisters placed in the skybox." + MaxSkyboxRefireTime(float) : "Max Refire Time" : 0 : "Max number of seconds before the cannister is refired. This will only work for cannisters placed in the skybox." + SkyboxCannisterCount(integer) : "Cannister count" : 1 : "Number of cannisters to fire in the skybox (0 means fire continuously, forever)." + Damage(float) : "Impact damage" : 150 : "Max damage the canister applies on impact" + DamageRadius(float) : "Impact damage radius": 750 : "Max radius of the impact damage for the canister" + SmokeLifetime(float) : "Smoke Duration" : 30 : "Duration that the canister smokes. -1 means always smoke." + LaunchPositionName(target_destination) : "Launch Position Name" : "" : "If the canister should launch to it's origin from another point within the world, this should specify an info_target at the launch origin." + + // Inputs + input FireCanister(void) : "Fire the canister" + input OpenCanister(void) : "Opens the canister (must be called after the OnImpacted output is fired)" + input SpawnHeadcrabs(void) : "Spawns headcrabs (must be called after the OnImpacted output is fired and after OpenCanister is triggered, if the Wait for Input to open spawnflag is checked.)" + input StopSmoke(void) : "Stops the smoke if it's on" + + // Outputs + output OnLaunched(string) : "Fired when the canister is launched" + output OnImpacted(void) : "Fires when canister hits the ground" + output OnOpened(void) : "Fires when canister has finished opening" +] + +@NPCClass base(BaseNPC, TalkNPC, PlayerCompanion) studio() = npc_vortigaunt : "Vortigaunt" +[ + model(studio) : "World model" : "models/vortigaunt.mdl" + + ArmorRechargeEnabled(choices) : "Allow Armor Recharging" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + HealthRegenerateEnabled(choices) : "Regenerate Health" : 0 : "Whether or not the vortigaunt will recover his own health over time like vital allies, while in combat" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input EnableArmorRecharge(void) : "Allow armor recharging on players" + input DisableArmorRecharge(void) : "Do not allow armor recharging on players" + input ExtractBugbait(string) : "Causes the vortigaunt to extract bugbait from the named target passed in." + input ChargeTarget(string) : "Force the vortigaunt to charge the named target." + input EnableHealthRegeneration(void) : "Allow the vortigaunt to start regenerating his health over time, like vital allies." + input DisableHealthRegeneration(void) : "Stop the vortigaunt from regenerating his health. (Default behavior)" + input TurnBlue(bool) : "If true, turn blue. If false, turn green. (Episodic)." + input TurnBlack(bool) : "If true, turn black. If false, be seen. (Episodic)." + input BeginCarryNPC(void) : "Begin to override our animations for 'carrying' an NPC. (Episodic)" + input EndCarryNPC(void) : "Stop overriding our animations for 'carrying' an NPC. (Episodic)" + + // Outputs + output OnFinishedExtractingBugbait(void) : "Fires when the vortigaunt's finished extracting bugbait from a target." + output OnFinishedExtractingTauCannon(void) : "Fires when the vortigaunt's finished extracting the tau cannon from the jeep." + output OnFinishedChargingTarget(void) : "Fires when the vortigaunt has finished charging a target." + output OnPlayerUse(void) : "Fires when a player +USEs the vortigaunt." +] + +@NPCClass base(BaseNPC) = npc_spotlight : "Spotlight" +[ + spawnflags(Flags) = + [ + 65536 : "Start Track On" : 1 + 131072 : "Start Light On" : 1 + 262144 : "No Dynamic Light" : 0 + 524288 : "Never Move" : 0 + ] + + health(Integer) : "Health" : 100 + YawRange(integer) : "YawRange" : 90 + PitchMin(integer) : "PitchMin" : 35 + PitchMax(integer) : "PitchMax" : 50 + IdleSpeed(integer) : "IdleSpeed" : 2 + AlertSpeed(integer) : "AlertSpeed" : 5 + spotlightlength(integer) : "SpotlightLength" : 500 + spotlightwidth(integer) : "SpotlightWidth" : 50 + rendercolor(color255) : "Color (R G B)" : "255 255 255" + + // Inputs + input LightOn(void) : "LightOn" + input LightOff(void) : "LightOff" + input TrackOn(void) : "TrackOn" + input TrackOff(void) : "TrackOff" + + // Outputs + output OnAlert(void) : "Fires when the spotlight alerted by sound" + output DetectedEnemy(string) : "Outputs enemy entity when spotlight finds and starts tracking enemy" + output LostEnemy(string) : "Outputs enemy entity when spotlight loses enemy that it's tracking, if enemy still exists" + output SquadDetectedEnemy(string) : "Outputs enemy entity when squad finds and starts tracking enemy" + output SquadLostEnemy(string) : "Outputs enemy entity when squad loses enemy that it's tracking, if entity still exists" + output LightPosition(string) : "Position of the end of the spotlight beam" +] + +@NPCClass base(BaseNPC) studio() = npc_strider : "Strider" +[ + model(choices) : "Model" : "models/combine_strider.mdl" : "Standard strider" = + [ + "models/combine_strider.mdl" : "Standard strider" + "models/combine_strider_vsdog.mdl" : "The Strider that fights Dog" + ] + + spawnflags(Flags) = + [ + 65536 : "Can Stomp Player" : 0 + 131072 : "Minimal damage taken from NPCs (1 point per missile)" : 0 + ] + + //Inputs + input SetMinigunTime(float) : "Time to shoot at any set minigun target" + input SetMinigunTarget(string) : "Strider will shoot minigun at this" + input DisableMinigun(void) : "Disables the minigun until further notice by the EnableMinigun input." + input EnableMinigun(void) : "Enables the minigun if it was disabled by the DisableMinigun input." + input SetCannonTarget(string) : "Strider will shoot cannon at this" + input FlickRagdoll(void) : "Strider will flick anyone he's skewered" + + input StartPatrol(void) : "Start patrolling back and forth along the current track." + input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which he's currently flying toward." + input ChooseFarthestPathPoint(void) : "When tracking an enemy, choose the point on the path furthest from the enemy, but still in firing range" + input ChooseNearestPathPoint(void) : "When tracking an enemy, choose the point on the path nearest from the enemy" + input Crouch(void) : "Crouch down" + input CrouchInstantly(void) : "Crouch instantly. This makes the Strider pop to a crouch. Do not do this where players can observe." + input Stand(void) : "Stand up from crouch" + input DisableCrouchWalk(void) + input EnableCrouchWalk(void) + + input SetTargetPath(string) : "Set a path for the strider to patrol. The strider will first move to the closest point on the path" + input ClearTargetPath(void) : "Clear the strider patrol path" + + input EnableAggressiveBehavior(void) : "Use aggressive behavior. Fire faster, more frequently" + input DisableAggressiveBehavior(void) : "Stop using aggressive behavior. (Revert to normal)" + + input StopShootingMinigunForSeconds(float) : "Stop shooting the minigun for a period of time (specify seconds as parameter)" + + input DisableCrouch(void) : "Prevent the Strider from crouching" + input DisableMoveToLOS(void) : "Prevent the Strider from seeking Line of Sight to target. (Hold position)" + + input DisableCollisionWith(string) : "Disable collision with a given object." + input EnableCollisionWith(string) : "Reenable collision with a given object." + + input ScaleGroundSpeed(float) : "Scale the movement speed of the strider" + + disablephysics(choices) : "Disable physics (reduce CPU)" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@NPCClass base(BaseNPC, BaseFadeProp) studio("models/Barnacle.mdl") sphere(fademindist) sphere(fademaxdist) = npc_barnacle : "Barnacle" +[ + spawnflags(Flags) = + [ + 65536 : "Cheap death" : 0 + 131072 : "Ambush Mode" : 0 + ] + + RestDist(float) : "Rest Distance" : 16 : "Distance above the ground that the tongue should lie when the barnacle is at rest" + + input DropTongue(void) : "Drop tongue" + input SetDropTongueSpeed(integer) : "Set Drop Tongue speed" + + input LetGo(void) : "Let go of anything I am holding." + + output OnGrab(string) : "When I attach my tongue to something" + output OnRelease(string) : "When I let go of something" +] + +@NPCClass base(BaseHelicopter) studio("models/gunship.mdl" ) = npc_combinegunship : "Combine Gunship" +[ + + // Inputs + input OmniscientOn(void) : "Gunship knows target's location even when target is out of sight or behind cover" + input OmniscientOff(void) : "Gunship relies on normal sight functions to locate target" + input BlindfireOn(void ) : "Gunship will fire at an unseen target, attempting to punch through to them" + input BlindfireOff(void ) : "Gunship only fires at viusible target" + input SetPenetrationDepth( float ) : "Set penetration depth of bullets" + + input SetDockingBBox( void ) : "Shrink Bounding Box" + input SetNormalBBox( void ) : "Set Bounding Box to normal size" + + input EnableGroundAttack( void ) : "Allow the gunship to use its ground attack" + input DisableGroundAttack( void ) : "Don't allow the gunship to use its ground attack" + input DoGroundAttack( string ) : "Causes the gunship to execute its ground attack" + + input BecomeInvulnerable( void ): "Stops the gunship from taking damage, but still makes sounds effects" + input BecomeVulnerable( void ): "Makes the gunship act normally to damage" + + input EnableRotorSound(void) : "Turns on rotor sounds" + input DisableRotorSound(void) : "Turns off rotor sounds" + + // Outputs + output OnFireCannon(void) : "Fires when the gunship fires a cannon round" + output OnFirstDamage( void ) : "Fired when the first damage is done to the gunship." + output OnSecondDamage( void ) : "Fired when the second damage is done to the gunship." + output OnThirdDamage( void ) : "Fired when the third damage is done to the gunship." + output OnFourthDamage( void ) : "Fired when the fourth damage is done to the gunship." + + spawnflags(Flags) = + [ + 4096 : "No ground attack" : 0 + ] +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = info_target_helicopter_crash : "Helicopter Crash Target" +[ +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = info_target_gunshipcrash : "Gunship Crash Target" +[ + input Enable(void) : "Enable the crash target." + input Disable(void) : "Disable the crash target." +] + +@NPCClass base(BaseHelicopter) studio("models/combine_dropship.mdl" ) = npc_combinedropship : "Combine Dropship" +[ + spawnflags(Flags) = + [ + 32768 : "Wait for input before dropoff" : 0 + ] + + LandTarget(target_destination) : "Land target name" + GunRange(float) : "Crate Gun Range" : 2048 : "If the dropship's carrying a crate with a gun on it, it'll only shoot targets within this range." + + RollermineTemplate(target_destination) : "Name of Rollermine Template" : "" : "If this dropship drops any rollermines due to the 'DropMines' input being fired, it will use this template for the rollermines it creates. If left blank, ordinary rollermines will be dropped." + + NPCTemplate(target_destination) : "Name of Template NPC 1" + NPCTemplate2(target_destination) : "Name of Template NPC 2" + NPCTemplate3(target_destination) : "Name of Template NPC 3" + NPCTemplate4(target_destination) : "Name of Template NPC 4" + NPCTemplate5(target_destination) : "Name of Template NPC 5" + NPCTemplate6(target_destination) : "Name of Template NPC 6" + + Dustoff1(target_destination) : "Name of dustoff point for NPC 1" + Dustoff2(target_destination) : "Name of dustoff point for NPC 2" + Dustoff3(target_destination) : "Name of dustoff point for NPC 3" + Dustoff4(target_destination) : "Name of dustoff point for NPC 4" + Dustoff5(target_destination) : "Name of dustoff point for NPC 5" + Dustoff6(target_destination) : "Name of dustoff point for NPC 6" + + APCVehicleName(target_destination) : "Name of the APC to drop" + Invulnerable(Choices) : "Invulnerable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + CrateType(Choices) : "Crate Type" : 2 = + [ + -3 : "Jeep (No crate)" + -2 : "APC (No crate)" + -1 : "Strider (No crate)" + 0 : "Roller Hopper" + 1 : "Soldier Crate" + 2 : "None" + ] + + // Inputs + input LandLeaveCrate(integer) : "Land, drop soldiers, and leave the crate behind. Specify the number of troops to drop off in the parameter." + input LandTakeCrate(integer) : "Land, drop soldiers, but don't leave the crate behind. Specify the number of troops to drop off in the parameter." + input DropMines(integer) : "Drop Rollermines. Specify the number of mines to drop in the parameter." + input DropStrider(void) : "Drop the Strider you're carrying. Now." + input DropAPC(void) : "Drop the APC you're carrying. Now." + input Hover(target_destination) : "Hover over a named target entity until told to fly to a path." + input Pickup(string) : "Pickup an entity." + input SetLandTarget(string) : "Set my land target name." + input SetGunRange(float) : "Set my crate gun's range." + + input EnableRotorSound(void) : "Turns on rotor sounds" + input DisableRotorSound(void) : "Turns off rotor sounds" + + input StopWaitingForDropoff(void) : "Stop waiting for the dropoff. Dropoff as soon as possible." + + + // Outputs + output OnFinishedDropoff(void) : "Fires when the dropship has finished a dropoff." + output OnFinishedPickup(void) : "Fires when the dropship has finished a pickup." + + output OnCrateShotDownBeforeDropoff(float) : "Fires when the container was shot down before it dropped off soldiers. The parameter contains the number of soldiers that weren't successfully dropped off." + output OnCrateShotDownAfterDropoff(void) : "Fires when the container was shot down after it dropped off soldiers." + +] + +@NPCClass base(BaseHelicopter) studio("models/combine_helicopter.mdl" ) = npc_helicopter : "Helicopter" +[ + spawnflags(Flags) = + [ + 65536 : "Loud rotor wash sound" : 0 + 131072 : "Electrical drone" : 0 + 262144 : "Helicopter lights" : 0 + 524288 : "Ignore avoid spheres+boxes" : 0 + 1048576 : "More aggressive attacks" : 0 + 2097152 : "Cast long shadow" : 0 + ] + + InitialSpeed(string) : "Initial Speed" : "0" + GracePeriod(float) : "Grace Period" : "2.0" : "Time in seconds the helicopter has to see the player before he starts shooting" + PatrolSpeed(float) : "Patrol Speed" : "0" : "Speed at which the helicopter moves if he has no enemy." + + noncombat(choices) : "Non-combat (Do not precache gibs)" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input GunOn(void) : "GunOn" + input GunOff(void) : "GunOff" + input MissileOn(void) : "MissileOn" + input MissileOff(void) : "MissileOff" + input EnableRotorWash(void) : "Turns on rotor wash effects" + input DisableRotorWash(void) : "Turns off rotor wash effects" + input EnableRotorSound(void) : "Turns on rotor sounds" + input DisableRotorSound(void) : "Turns off rotor sounds" + input StartBombingVehicle(void) : "Starts the chopper leading enemy vehicles and dropping bombs on them." + input StartTrailingVehicle(void) : "Starts the chopper trailing enemy vehicles and shooting at them." + input StartDefaultBehavior(void) : "Starts the chopper in the mode where he always stops at nav points instead of stopping anywhere in between nav points." + input StartAlwaysLeadingVehicle(void) : "Starts the chopper *always* leading enemy vehicles (regardless of how they are moving w/respect to the path) and dropping bombs on them. This mode is different from StartBombingVehicle in that it never uses the machine gun." + input StartSprinkleBehavior(void) : "Starts the chopper dropping bombs randomly + shooting at the player." + input StartBullrushBehavior(void) : "Starts the chopper bullrushing the player." + input SetHealthFraction(float) : "Sets the chopper health as a percentage of max health" + + input EnableDeadlyShooting(void) : "Starts the chopper being deadly to on-foot players" + input DisableDeadlyShooting(void) : "Stops the chopper being deadly to on-foot players" + + input StartNormalShooting(void) : "The chopper will fire in short bursts. Good for on-foot experiences" + input StartLongCycleShooting(void) : "The chopper fires in long bursts" + input StartContinuousShooting(void) : "The chopper fires continuously." + input StartFastShooting(void) : "The chopper fires normal bursts, but does not 'charge up' the gun. Fires immediately." + + input ResetIdleTime(void) : "Allows the helicopter to fire immediately if he's not in the middle of charging or firing" + input SetAngles(string) : "Instantly snaps the orientation of the helicopter (Pitch Yaw Roll)" + input DropBomb(void) : "Immediately drops a bomb based on normal bomb dropping rules" + input DropBombStraightDown(void) : "Immediately drops a bomb directly downwards" + input DropBombAtTarget(target_destination) : "Immediately drops a bomb directly at the target destination, but only if the player isn't right there" + input DropBombAtTargetAlways(target_destination) : "Immediately drops a bomb directly at the target destination, no matter whether it's fair or not." + input DropBombDelay(float) : "Add a delay before the next bomb is dropped" + input BecomeIndestructible(void) : "Makes the helicopter take no more damage" + + input DisablePathVisibilityTests(void) : "When the helicopter moves, he will not check for visibility from the path_track to the enemy to cull out path_tracks" + input EnablePathVisibilityTests(void) : "When the helicopter moves, he will only move to path_tracks that have line-of-sight to the enemy" + + input StartCarpetBombing(void) : "Starts the helicopter constantly dropping megabombs until StopCarpetBombing input" + input StopCarpetBombing(void) : "Stop the carpet bombing behavior" + + // Outputs + output OnHealthChanged(integer) : "Fires when the helicopter health changes. The integer is the percentage of health the chopper has from 0-100." + output OnShotDown(void) : "Fires the instant the helicopter is killed" +] + +@PointClass base(Targetname, Parentname) studio("models/combine_helicopter/helicopter_bomb01.mdl") = grenade_helicopter : "Helicopter bomb" +[ + spawnflags(Flags) = + [ + 65536 : "Is a dud" : 0 + ] + + // Inputs + input ExplodeIn(float) : "Tells the bomb to explode in X seconds." + + // Outputs + output OnPhysGunOnlyPickup(void) : "Fired when a player picks this object up WITH THE PHYSGUN. +USE pickups do not fire this output." +] + + +@PointClass base(Targetname, Parentname) iconsprite("editor/env_firesource") color(255 255 0) sphere(radius) = npc_heli_avoidsphere : "Helicopter avoidance sphere" +[ + spawnflags(Flags) = + [ + 65536 : "Avoid the sphere above and below" : 0 + ] + radius(float) : "Radius" : 128 +] + +@SolidClass base(Origin, Angles, Parentname) color(255 255 0) = npc_heli_avoidbox : "Helicopter avoidance box" +[ + spawnflags(Flags) = + [ + 65536 : "Avoid the box above and below" : 0 + ] +] + +@SolidClass base(Origin, Angles, Parentname) color(255 255 0) = npc_heli_nobomb : "Helicopter bombing suppressor" +[ +] + +@NPCClass base(BaseNPC) studio("models/Zombie/fast.mdl") = npc_fastzombie : "Fast Zombie" +[ + input AttachToVehicle(string) : "Attach to a specified vehicle entity" +] + +@NPCClass base(BaseNPC) studio("models/Zombie/Fast_torso.mdl") = npc_fastzombie_torso : "Fast Zombie Torso" +[ + +] + +@NPCClass base(BaseNPC) studio("models/Zombie/Classic.mdl") = npc_zombie : "Zombie" +[ +] + +@NPCClass base(BaseNPC) studio("models/Zombie/Classic_torso.mdl") = npc_zombie_torso : "Zombie Torso" +[ +] + +@NPCClass base(BaseNPC) studio("models/Zombie/zombie_soldier.mdl") = npc_zombine : "Combine Soldier Zombie" +[ + input StartSprint(void) : "Forces the zombine to sprint." + input PullGrenade(void) : "Forces the zombine to pull a grenade." +] +@NPCClass base(BaseNPC) studio("models/Zombie/Poison.mdl") = npc_poisonzombie : + "A bloated, disgusting, fluid-spurting zombie created by a poison headcrab." +[ + crabcount(choices) : "Crabs in nest" : 3 = + [ + 1 : "1 Crab" + 2 : "2 Crabs" + 3 : "3 Crabs" + ] +] + +@NPCClass base(BaseNPC) studio("models/combine_scanner.mdl") = npc_cscanner : "City Scanner" +[ + spawnflags(Flags) = + [ + 65536 : "No Dynamic Light" : 0 + 131072: "Strider Scout Scanner" : 0 + ] + + spotlightlength(integer) : "SpotlightLength" : 500 + spotlightwidth(integer) : "SpotlightWidth" : 50 + + spotlightdisabled(choices) : "SpotlightDisabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + ShouldInspect(choices) : "Should inspect" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + OnlyInspectPlayers(choices) : "Only Inspect Players" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + NeverInspectPlayers(choices) : "Never Inspect Players" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + // Inputs + input DisableSpotlight(void) : "DisableSpotlight" + input InspectTargetPhoto(string) : "Tells the scanner to photograph the given entity, named by classname or by target name. !activator or !player works here also." + input InspectTargetSpotlight(string) : "Tells the scanner to spotlight the given entity, named by classname or by target name. !activator or !player works here also." + input InputSetFlightSpeed(integer) : "Sets the flight speed of the scanner" + input InputShouldInspect(integer) : "Set whether should inspect or not" + input SetFollowTarget(string) : "Set target to follow until told otherwise" + input ClearFollowTarget(void) : "Stop following our target" + input SetDistanceOverride(float) : "Override the distance the scanner will attempt to keep between inspection targets and itself" + + input DeployMine(void) : "Drop landmine (if carrying one)" + input EquipMine(void) : "Equip with landmine" + + // Outputs + output OnPhotographPlayer(void) : "Fired any time the scanner takes a picture of the player." + output OnPhotographNPC(void) : "Fired any time the scanner takes a picture of an NPC." +] + + +@NPCClass base(BaseNPC) studio("models/shield_scanner.mdl") = npc_clawscanner : "Claw Scanner" +[ + spawnflags(Flags) = + [ + 65536 : "No Dynamic Light" : 0 + 131072: "Strider Scout Scanner" : 0 + ] + + spotlightlength(integer) : "SpotlightLength" : 500 + spotlightwidth(integer) : "SpotlightWidth" : 50 + + spotlightdisabled(choices) : "SpotlightDisabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + ShouldInspect(choices) : "Should inspect" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + OnlyInspectPlayers(choices) : "Only Inspect Players" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + NeverInspectPlayers(choices) : "Never Inspect Players" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + // Inputs + input DisableSpotlight(void) : "DisableSpotlight" + input InspectTargetPhoto(string) : "Tells the scanner to photograph the given entity, named by classname or by target name. !activator or !player works here also." + input InspectTargetSpotlight(string) : "Tells the scanner to spotlight the given entity, named by classname or by target name. !activator or !player works here also." + input InputSetFlightSpeed(integer) : "Sets the flight speed of the scanner" + input InputShouldInspect(integer) : "Set whether should inspect or not" + input SetFollowTarget(string) : "Set target to follow until told otherwise" + input ClearFollowTarget(void) : "Stop following our target" + input SetDistanceOverride(float) : "Override the distance the scanner will attempt to keep between inspection targets and itself" + + input DeployMine(void) : "Drop landmine (if carrying one)" + input EquipMine(void) : "Equip with landmine" + + // Outputs + output OnPhotographPlayer(void) : "Fired any time the scanner takes a picture of the player." + output OnPhotographNPC(void) : "Fired any time the scanner takes a picture of an NPC." +] + +@NPCClass base(BaseNPC,AlyxInteractable) studio("models/manhack.mdl") = npc_manhack : "Manhack" +[ + spawnflags(Flags) = + [ + 65536 : "Start packed up (folded and engine off)" : 0 + 131072 : "Don't use any damage effects" : 0 + 262144 : "Use Air Nodes" : 0 + 1048576 : "No Danger Sounds" : 0 + ] + + input DisableSwarm(void) : "Disable the manhack swarm behavior." + input Unpack(void) : "Causes the manhack to stop being packed up." + ignoreclipbrushes(choices): "Ignore NPC Clip brushes" : "0" = + [ + 0 : "No" + 1 : "Yes" + ] +] + + +@NPCClass base(BaseNPC) studio("models/mortarsynth.mdl") = npc_mortarsynth : "Mortar Synth" +[ +] + + +@NPCClass base(BaseNPC,RappelNPC) studio("models/Police.mdl") = npc_metropolice : "MetroPolice" +[ + additionalequipment(choices) : "Weapons" : "weapon_pistol" = + [ + "weapon_pistol" : "Pistol" + "weapon_smg1" : "SMG1" + "weapon_stunstick" : "Stun Stick" + "weapon_shotgun" : "Shotgun" + "0" : "Nothing" + ] + + manhacks(Choices) : "Number of Manhacks" : 0 = + [ + 0 : "None" + 1 : "1" + 2 : "2" + ] + + weapondrawn(Choices) : "Pistol starts drawn" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 131072 : "Simple cops" : 0 + 262144 : "Rappel (UNCHECK THIS IF IT IS CHECKED!)" : 0 + 524288 : "Always stitch" : 0 + 1048576 : "No chatter" : 0 + 2097152 : "Arrest enemies" : 0 + 4194304 : "No far stitching" : 0 + 8388608 : "Prevent manhack toss" : 0 + 16777216: "Allowed to respond to thrown objects" : 0 + 33554432: "Mid-range attacks (halfway between normal + long-range)" : 0 + ] + + // Inputs + input EnableManhackToss(void) : "Enables manhack toss (which had been disabled by the spawnflag)" + input SetPoliceGoal(string) : "Causes the NPC to police the area defined by an ai_goal_police" + input ActivateBaton(void) : "Set the baton to active" + + // Outputs + output OnStunnedPlayer(void) : "Fires when the player is hit by a stunstick by this NPC." + output OnCupCopped(void) : "Fires if the player hits me with the cupcop can. ONLY use for x360 achievement." +] + +@NPCClass base(BaseNPC) studio("models/Synth.mdl") = npc_crabsynth : "Crab Synth" +[ +] + +@NPCClass base(TalkNPC) studio("models/Monk.mdl") = npc_monk : "Monk" +[ + additionalequipment(choices) : "Weapons" : "weapon_annabelle" = + [ + "weapon_annabelle" : "Annabelle" + "weapon_smg1" : "SMG1" + "weapon_ar2" : "AR2" + "weapon_stunstick" : "Stun Stick" + "weapon_crowbar" : "Crow Bar" + "weapon_shotgun" : "Shotgun" + "weapon_beerbottle" : "Beer Bottle" + "weapon_beerbottle2" : "Beer Bottle2" + "weapon_rpg" : "RPG" + "0" : "Nothing" + ] + + HasGun(choices) : "Has Gun" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input PerfectAccuracyOn(void) : "Make every shot at a zombie a headshot" + input PerfectAccuracyOff(void) : "Return to normal accuracy" +] + + +@NPCClass base(TalkNPC,Parentname, PlayerCompanion) studio() = npc_alyx : "Alyx" +[ + model(studio) : "World model" : "models/alyx.mdl" + + additionalequipment(choices) : "Weapons" : "weapon_alyxgun" = + [ + "weapon_alyxgun" : "Alyx Gun" + "weapon_shotgun" : "Shotgun" + "0" : "Nothing" + ] + + DontPickupWeapons(choices) : "Prevent picking up weapons?" : "1" : "If yes, this NPC will NOT be allowed to pick up weapons they find on the ground." = + [ + 0 : "No" + 1 : "Yes" + ] + + ShouldHaveEMP(choices) : "Should alyx have her EMP?" : "1" = + [ + 0 : "No" + 1 : "Yes" + ] + + + // Inputs + input AllowInteraction(void) : "Allow Alyx's 'hacking' AI to run." + input DisallowInteraction(void) : "Disallow Alyx's 'hacking' AI." + input AllowDarknessSpeech(bool) : "Enables or disables Alyx's darkness speech ('where are you', etc)." + input SetAnimLockedEntity(string) : "Sets Alyx to take her animation and cycle position from another entity." + input ClearAnimLockedEntity(void) : "Stops Alyx from taking her animation locking from another character." + input GiveEMP(bool): "Gives or removes the EMP tool." + + //Outputs + output OnFinishInteractWithObject(void) : "Fires when Alyx finishes interacting with an object (usually hacking it)." + output OnPlayerUse(void) : "Fires when a player +USEs Alyx." + + // Vehicle entry/exit input (ultimately will reside in TalkNPC) + input EnterVehicle(string) : "Make Alyx enter the vehicle specified by name." + input EnterVehicleImmediately(string) : "Make Alyx enter the vehicle specified by name immediately via teleportation." + input ExitVehicle(void) : "Make Alyx exit the vehicle she's in." + input CancelEnterVehicle(void) : "Stops Alyx from trying to enter the vehicle if she's outside of it." + + // Outputs + output OnPlayerUse(void) : "Fires when a player +USEs Alyx" +] + +@PointClass base(Targetname, EnableDisable) = ai_goal_operator : "Indicates items in the world that some NPCs may operate upon" +[ + actor(target_name_or_class) : "Actor to affect" : "" : "NPC that should perform this operation" + + target(target_destination) : "Position entity" : "" : "Name of the entity that the NPC should move to in order to perform the operation." + + contexttarget(target_destination) :"Context target" : "" : "(Optional) Name of an entity that the operator will use within context." + + state(choices) : "Initial State" : 0 = + [ + 0 : "Not ready (closed, locked, etc)" + 1 : "Ready (open and accessible)" + ] + + moveto(choices) : "How should NPC approach?" : 1 = + [ + 0 : "DO NOT USE THIS SETTING" + 1 : "Walk" + 2 : "Run" + ] + + input Activate( void ) : "Begin operating on the object" +// input Deactivate( void ) : "Cease contesting position" + input SetStateReady(void) : "Set the object's state to READY. Fire this input when the object has been unlocked/opened or otherwise made ready for interaction." + input SetStateFinished(void) : "Fire this input when the NPC has completed the interaction with this object." + + output OnBeginApproach(void) : "Fired when the NPC begins to approach the position" + output OnMakeReady(void) : "Make the item ready to operate" + output OnBeginOperating(void) : "Fired when the NPC is ready to operate" + output OnFinished(void) : "The item is done" +] + +@PointClass base(Targetname, EnableDisable) sphere(LightRadius) = info_darknessmode_lightsource +[ + LightRadius(float) : "Light Radius" : "256.0" : "The radius around this lightsource in which Alyx will be able to see enemies." +] + +@NPCClass base(TalkNPC) studio() = npc_kleiner : "Kleiner" +[ + model(studio) : "World model" : "models/kleiner.mdl" +] + +@NPCClass base(TalkNPC,Parentname) studio() = npc_eli : "Eli Vance" +[ + model(studio) : "World model" : "models/eli.mdl" +] + +@NPCClass base(TalkNPC) studio() = npc_magnusson : "Magnusson" +[ + model(studio) : "World model" : "models/magnusson.mdl" +] + +@NPCClass base(TalkNPC) studio() = npc_breen : "Dr Breen" +[ + model(studio) : "World model" : "models/breen.mdl" + + spawnflags(Flags) = + [ + 65536 : "Ignore speech semaphore" : 0 + ] +] + +@NPCClass base(TalkNPC) studio("models/mossman.mdl") = npc_mossman : "Dr Mossman" +[ +] + +@NPCClass base(TalkNPC) studio("models/gman.mdl") = npc_gman : "The G-Man" +[ +] + +@NPCClass base(BaseNPC) studio("models/dog.mdl") = npc_dog : "d0g" +[ + //Inputs + input SetPickupTarget(string) : "Sets the target entity for dog to pickup." + input StartCatchThrowBehavior(string) : "Tells d0g to start playing with the player. You can pass in the name of the object you want him to play with otherwise he'll find the closes phys_object." + input StopCatchThrowBehavior(string) : "Stop the catch and throw behavior." + input PlayerPickupObject(void) : "Tells d0g the physgun just picked up an object." + input StartWaitAndCatch(void) : "Tells d0g to wait for the player to throw an object at him." + input StopWaitAndCatch(void) : "Tells d0g to stop waiting for the player." + input SetThrowArcModifier(float) : "Used to pass in a modifier for d0g's object flight arc." + input SetThrowTarget(string) : "Set d0g's throw target (pass in !player if you want the player)" + input TurnBoneFollowersOff(void) : "Turn dog's bone followers off" + input TurnBoneFollowersOn(void) : "Turn dog's bone followers on" + + // Outputs + output OnDogThrow(void) : "Fires when dog throws an object." + output OnDogPickup(void) : "Fires when dog picks up an object." + output OnDogCatch(void) : "Fires when dog catches an object." +] + +@PointClass base(BaseNPC, RenderFields, Shadow) studio() = monster_generic : "Generic Script NPC" +[ + spawnflags(Flags) = + [ + 65536 : "Not solid" : 0 + ] + model(studio) : "Model" + body(Integer) : "Body" : 0 +] + + +@PointClass base(BaseNPC, Parentname, RenderFields, Shadow) studio() = generic_actor : "Generic Actor NPC" +[ + model(studio) : "Model" + + hull_name(choices) : "Hull type" : "Human" = + [ + "HUMAN_HULL" : "Human" + "WIDE_HUMAN_HULL" : "Wide" + "TINY_HULL" : "Tiny" + "MEDIUM_HULL" : "Medium" + "LARGE_HULL" : "Large" + ] +] + +@PointClass base(BaseNPC, RenderFields, Shadow) studio() = cycler_actor : "Actor Cycler" +[ + model(studio) : "Model" + Sentence(string) : "Sentence Group" : "" + + input Alpha(integer) : "Set Alpha Value" +] + +@PointClass base(Angles, BaseNPCMaker) iconsprite("editor/npc_maker.vmt") = npc_maker : "NPC Maker" +[ + spawnflags(Flags) = + [ + 16 : "Fade Corpse" : 0 + ] + + NPCType(npcclass) : "Class name of spawned NPC" + NPCTargetname(string) : "Childrens' Name" + NPCSquadname(string) : "Childrens' Squad Name" + NPCHintGroup(string) : "Childrens' Hint Group" + + additionalequipment(choices) : "Weapons" : "0" = + [ + "weapon_pistol" : "Pistol" + "weapon_ar2" : "AR2" + "weapon_shotgun" : "Shotgun" + "weapon_smg1" : "SMG1" + "weapon_stunstick" : "Stun Stick" + "weapon_annabelle" :"Grigori's Shotgun" + "0" : "Nothing" + ] +] + +@PointClass base(Angles, BaseNPCMaker) size(-8 -8 -8, 8 8 8) color(0 0 255) = npc_antlion_template_maker : "Antlion Template Maker" +[ + spawnflags(Flags) = + [ + 1024 : "Random spawn node" : 0 + 2048 : "Try to spawn close to the current target" : 0 + 4096 : "Pick a random fight target" : 0 + 8192 : "Try to play blocked effects near the player" : 0 + ] + + TemplateName(target_destination) : "Name of template NPC" + + spawngroup(string) : "Spawn on Hint Group" : "" : "If specified, children will spawn on a hint node from this group, nearest the target." + spawnradius(float) : "Spawn radius" : 512 : "Target must be within this distance of any node in the hint group specified above. If the target is outside the radius, no NPC will spawn." + spawntarget(string): "Spawn target" : "" : "Targetname of the entity to try and spawn near." + fighttarget(string): "Fight target" : "" : "Targetname of an entity used as a goal for the children to fight to." + followtarget(string): "Follow target" : "" : "Targetname of an entity used as a goal for the children to follow." + vehicledistance(float): "Vehicle Spawn Distance" : "1" : "This is a modifier of the current spawn distance. Spawn distance on a vehicle is based on speed, so this is just a modifier for it." + workerspawnrate(float): "Random Worker Spawn Rate" : "0" : "Percentage chance that a spawned antlion will be a worker. (0 = no chance, 1 = 100% chance)" + + ignorebugbait(choices): "Ignore Bugbait" : "0" = + [ + 0 : "No" + 1 : "Yes" + ] + + pool_start(integer) : "Initial antlions in the pool." : 0 : "Number of antlions in the pool at map start." + pool_max(integer) : "Max antlions in the pool." : 0 : "Maximum number of antlions allowed in the pool. If 0, pool behavior is turned off." + pool_regen_amount(integer) : "Pool regen amount." : 0 : "This is the number of antlions added to the pool every time it regenerates." + pool_regen_time(float) : "Pool regen time." : 0 : "Time interval between pool regeneration ticks." + + // Inputs + input SetFightTarget(string) : "Sets the target entity for children to fight to." + input ClearFightTarget(void) : "Clears the fight target goal for this spawner." + input SetFollowTarget(string) : "Sets the target entity for children to follow." + input ClearFollowTarget(void) : "Clears the follow target goal for this spawner." + input SetSpawnRadius(float) : "Sets the Spawn Radius." + input AddToPool(integer) : "Add the number of antlions specified in the parameter to the pool." + input SetMaxPool(integer) : "Set the maximum number of antlions allowed in the pool at any time. Setting it to 0 turns off the pool behavior." + input SetPoolRegenAmount(integer) : "Set the number of antlions added to the pool every time it regenerates." + input SetPoolRegenTime(float) : "Set the time interval between pool regeneration ticks." + input ChangeDestinationGroup(string) : "Change the spawn group for this spawner." + + // Outputs + output OnAllBlocked(void) : "Fires when all the hint nodes are blocked." + + createspores(choices): "Create Spore effect" : "0" = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@PointClass base(Targetname) sphere(repelradius) color(0 0 255) = point_antlion_repellant : "Antlion Repellant" +[ + repelradius(float): "Repell radius" : 512 : "Antlions aren't allowed to be inside this radius" + input Enable(void) : "Enable" + input Disable(void) : "Disable" +] + +//------------------------------------------------------------------------- +// +// Player Control Entities +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname) size(-10 -10 -10, 10 10 10) color(255 0 255) = player_control +[ + // Inputs + input Activate(void) : "Turns on" + input Deactivate(void) : "Turns off" + input SetThrust(string) : "Set Thrust" + input SetSideThrust(string) : "Set Side Thrust" +] + + +//------------------------------------------------------------------------- +// +// Scripted Events +// +//------------------------------------------------------------------------- + +@BaseClass base(Targetname, Parentname, Angles) color(255 0 255) sphere(m_flRadius) = BaseScripted +[ + m_iszEntity(target_destination) : "Target NPC" : : "The name or class name (such as 'npc_zombie') of an NPC to use for this script." + m_iszIdle(string) : "Pre Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play before the action animation if the NPC must wait for the script to be triggered. Use 'Start on Spawn' flag or MoveToPosition input to play this idle animation." + m_iszEntry(string) : "Entry Animation" : "" : "The name of the sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play when the sequence starts, before transitioning to play the main action sequence." + m_iszPlay(string) : "Action Animation" : "" : "The name of the main sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play." + m_iszPostIdle(string) : "Post Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play after the action animation." + m_iszCustomMove(string) : "Custom Move Animation" : "" : "Used in conjunction with the 'Custom movement' setting for the 'Move to Position' property, specifies the sequence (such as 'crouch_run01') or activity (such as 'ACT_RUN') to use while moving to the scripted position." + m_bLoopActionSequence(Choices) : "Loop Action Animation?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + m_bSynchPostIdles(Choices) : "Synch Post Idles?" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere." + m_flRepeat(integer) : "Repeat Rate ms" : 0 + m_fMoveTo(Choices) : "Move to Position" : 1 = + [ + 0 : "No" + 1 : "Walk" + 2 : "Run" + 3 : "Custom movement" + 4 : "Instantaneous" + 5 : "No - Turn to Face" + ] + m_iszNextScript(target_destination) : "Next Script" : : "The name of the script to run immediately after this script completes. The NPC will not return to AI between the two scripts." + m_bIgnoreGravity(choices) : "Ignore Gravity on NPC during script" : 0 : "If this is set to 'Yes', the NPC will not be subject to gravity while playing this script." = + [ + 0 : "No" + 1 : "Yes" + ] + m_bDisableNPCCollisions(choices) : "Disable NPC collisions during script" : 0 : "Useful for when NPCs playing scripts must interpenetrate while riding on trains, elevators, etc. This only disables collisions between the NPCs in the script and must be enabled on BOTH scripted_sequences." = + [ + 0 : "No" + 1 : "Yes" + ] + + + // Inputs + input BeginSequence(void) : "Summons an NPC to act out the scripted sequence." + input MoveToPosition(void) : "Summons an NPC to the script location. They will play their scripted idle (or ACT_IDLE if none is specified) until BeginSequence is triggered." + input CancelSequence(void) : "Stops the scripted sequence. If fired after a sequence starts, this input will not take effect until the NPC finishes playing the scripted action animation." + + // Outputs + output OnBeginSequence(void) : "Fires when the action animation begins playing." + output OnEndSequence(void) : "Fires when the action animation completes." + output OnCancelSequence(void) : "Fires when the sequence is cancelled." + output OnCancelFailedSequence(void) : "Fires when the sequence is cancelled without ever playing (OnCancelSequence will also fire)." + output OnScriptEvent01(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 1 } in the QC." + output OnScriptEvent02(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 2 } in the QC." + output OnScriptEvent03(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 3 } in the QC." + output OnScriptEvent04(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 4 } in the QC." + output OnScriptEvent05(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 5 } in the QC." + output OnScriptEvent06(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 6 } in the QC." + output OnScriptEvent07(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 7 } in the QC." + output OnScriptEvent08(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 8 } in the QC." +] + +@PointClass sphere() iconsprite("editor/scripted_sentence.vmt") base(Targetname) = scripted_sentence : "Scripted Sentence" +[ + spawnflags(Flags) = + [ + 1 : "Fire Once" : 1 + 2 : "Followers Only" : 0 + 4 : "Interrupt Speech" : 1 + 8 : "Concurrent" : 0 + 16 : "Speak to Activator" : 1 + ] + + sentence(string) : "Sentence Name" : "" + entity(string) : "Speaker Type" + delay(string) : "Additional Sentence Time" : "0" + radius(integer) : "Search Radius" : 512 + refire(string) : "Delay Before Refire" : "3" + listener(string) : "Listener Type" + volume(string) : "Volume 0-10" : "10" + attenuation(Choices) : "Sound Radius" : 0 = + [ + 0 : "Small Radius" + 1 : "Medium Radius" + 2 : "Large Radius" + 3 : "Play Everywhere" + ] + + // Inputs + input BeginSentence(void) : "Starts the scripted sentence." + + // Outputs + output OnBeginSentence(void) : "Fires when the sentence begins" + output OnEndSentence(void) : "Fires when the sentence ends" +] + +@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = scripted_target : "Scripted Target" +[ + StartDisabled(choices) : "Start Disabled" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + m_iszEntity(npcclass) : "Target NPC" + m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere." + + MoveSpeed(integer) : "Move Speed" : 5 // How quickly should target move between scripted targets + PauseDuration(integer) : "Pause Duration" : 0 // How long should target pause at scripted target + EffectDuration(integer) : "Effect Duration" : 2 // How long should any associated effect last + + target(target_destination) : "Next Target" // Next scripted target + + // Inputs + input Enable(void) : "Enable this entity" + input Disable(void) : "Disable this entity" + + // Outputs + output AtTarget(void) : "Fires when NPC reaches this target" + output LeaveTarget(void) : "Fires when NPC leaves this target" +] + +@PointClass base(Targetname) iconsprite("editor/ai_relationship.vmt") sphere() = ai_relationship : + "AI Relationship - Sets relationships between groups of NPCs in the AI." +[ + subject(target_name_or_class) : "Subject(s)" : "" : "This is the NPC(s) whose disposition will change. May be a targetname or a classname." + target(target_name_or_class) : "Target(s)" : "" : "This is the NPC(s) about whom the Subject(s) will change their disposition. May be a tarGetname or a classname." + disposition(choices) : "Disposition" : 3 : "Choose the way the Subject(s) should feel about the Target(s)" = + [ + // These MUST match the enum in the code! (basecombatcharacter.h) + 1 : "Hate" + 2 : "Fear" + 3 : "Like" + 4 : "Neutral" + ] + + radius(float) : "Radius for subject" : 0 + + rank(integer) : "Disposition Priority" : 0 : "How much the Subject(s) should Like/Hate/Fear the Target(s). Higher priority = stronger feeling." + + StartActive(choices) : "Start Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + Reciprocal(choices) : "Reciprocal" : 0 : "Set this to YES to have the new relationship mirrored by Target" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(flags) = + [ + 1 : "Notify subject of target's location" : 0 + 2 : "Notify target of subject's location" : 0 + ] + + // Inputs + input ApplyRelationship(void) : "Apply relationship changes. This will change all Subject entities' relationships to all Target entities. \n\nIMPORTANT: Once you ApplyRelationships, this entity is then 'ALWAYS ON' until you send a Disable input or RevertRelationship input. During the time this entity is 'ON', any entities that spawn who match the Subject or Target names will be affected. \n\nIMPORTANT: Unpredictable results may occur when two ai_relationship entities refer to the same set or subset of target or subject entities. This situation should be avoided." + + input RevertRelationship(void) : "Revert relationship changes. This will return the relationship to what it was at the time the ApplyRelationship input was called (or when this ai_relationship was spawned if StartActive is set)." + input RevertToDefaultRelationship(void) : "Revert relationship changes to the default relationship, which may have changed since this ai_relationship was applied. This returns control of the entity relationship to the code." +] + +@PointClass base(Targetname) = ai_ally_manager : "AI Ally Manager" +[ + maxallies(integer) : "Maximum number of allies" : 5 + maxmedics(integer) : "Maximum number of medics" : 1 + + // Inputs + input SetMaxAllies(integer) : "Set maximum number of allies" + input SetMaxMedics(integer) : "Set maximum number of medic allies" + input Replenish(void) : "Replenish player allies" + + // Outputs + output SpawnMedicAlly(void) : "Spawn Medic Ally" + output SpawnAlly0(void) : "Spawn Ally 0" + output SpawnAlly1(void) : "Spawn Ally 1" + output SpawnAlly2(void) : "Spawn Ally 2" + output SpawnAlly3(void) : "Spawn Ally 3" + output SpawnAlly4(void) : "Spawn Ally 4" + output SpawnAlly5(void) : "Spawn Ally 5" + output SpawnAlly6(void) : "Spawn Ally 6" + output SpawnAlly7(void) : "Spawn Ally 7" + output SpawnAlly8(void) : "Spawn Ally 8" + output SpawnAlly9(void) : "Spawn Ally 9" + + output OnZeroAllies(void) : "Fires when there are no more allies" + output OnZeroMedicAllies(void) : "Fires when there are no more allies" +] + +@BaseClass base(Targetname) = LeadGoalBase +[ + actor(target_name_or_class) : "Actor(s) to affect" + goal(string) : "Target Entity" + WaitPointName(target_destination) : "Point to wait at if the target's not visible" + WaitDistance(float) : "Wait until player gets this close" + LeadDistance(float) : "Lead Distance" : "64" : "The player is considered to be lagging if he's beyond this distance. The Actor will consider retrieving when the player is 4x 'Lead Distance' away." + RetrieveDistance(float) : "Retrieve Distance" : "96" : "The distance from the player that the NPC should return to when retrieving a lagging player. Must be between ('Lead Distance' + 24) and ('Lead Distance' * 4) to avoid the leader ping-ponging." + SuccessDistance(float) : "Success Distance" : "0" : "The distance from the player (to the NPC) that the player must be within for the Lead to succeed, once the NPC has reached the goal. If set to 0, it'll use the lead distance instead (for legacy support)." + Run(choices) : "Run instead of Walk" : "0" = + [ + "0" : "No" + "1" : "Yes" + ] + + Retrieve(choices) : "Retrieve player?" : 1 = + [ + 0 : "No, just idle and wait" + 1 : "Yes, move to retrieve" + ] + ComingBackWaitForSpeak(choices) : "Before Coming Back, Wait for speech?" : 1 = + [ + 0 : "No, come back while speaking" + 1 : "Yes, wait for speech to finish" + ] + RetrieveWaitForSpeak(choices) : "On Retrieve, Wait for speech?" : 1 = + [ + 0 : "No, start leading while speaking" + 1 : "Yes, wait for speech to finish" + ] + DontSpeakStart(choices) : "Speak start greeting?" : 0 = + [ + 0 : "Yes, speak the start greeting" + 1 : "No, don't speak the greeting" + ] + LeadDuringCombat(choices) : "Lead during combat?" : 0 = + [ + 0 : "No. Stop to fight, resume leading when safe." + 1 : "Yes, lead while fighting." + ] + GagLeader(choices) : "Gag Leader?" : 0 = + [ + 0 : "No. Speak lead concepts normally, respecting other lead speech settings." + 1 : "Yes, don't speak any lead concepts at all, overriding all other lead speech settings." + ] + + AttractPlayerConceptModifier(string) : "Attract player concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_ATTRACTPLAYER' concept is spoken." + WaitOverConceptModifier(string) : "Player wait over concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_WAITOVER' concept is spoken." + ArrivalConceptModifier(string) : "Arrival concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_ARRIVAL' concept is spoken." + PostArrivalConceptModifier(string) : "Post-arrival concepts modifier" + SuccessConceptModifier(string) : "Success concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_SUCCESS' concept is spoken." + FailureConceptModifier(string) : "Failure concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'lead_fail' concept is spoken." + ComingBackConceptModifier(string) : "Coming Back concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_RETRIEVE' concept is spoken. Spoken as the NPC starts returning to the player to retrieve him." + RetrieveConceptModifier(string) : "Retrieve concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_COMINGBACK' concept is spoken. Spoken when NPC has finally reached the player to retrieve him." + + // Spawnflags + spawnflags(Flags) = + [ + 1 : "No def success" : 0 + 2 : "No def failure" : 0 + 4 : "Use goal facing" : 1 + ] + + // Inputs + input Activate( void ) : "Begin the leading behavior" + input Deactivate( void ) : "Stop the leading behavior" + + input SetSuccess( void ) : "Notify success of leading" + input SetFailure( void ) : "Notify failure of leading" + + // Outputs + output OnArrival( void ) : "Fires when NPC reaches the lead point" + output OnArrivalDone( void ) : "Fires when NPC has played out any arrival speech" + output OnSuccess( void ) : "Fires when NPC achieves the goal" + output OnFailure( void ) : "Fires when NPC fails to achieves the goal" + output OnDone( void ) : "Fires when NPC completes behavior (any post-success or fail acting is complete)" +] + +@PointClass base(LeadGoalBase) iconsprite("editor/ai_goal_lead.vmt") = ai_goal_lead : "AI Goal Lead" +[ + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] +] + +@PointClass base(LeadGoalBase) iconsprite("editor/ai_goal_lead.vmt") = ai_goal_lead_weapon : + "AI Goal Lead (Weapon). A version of the ai_goal_lead entity that requires the player to have the specified weapon before the Actor(s) will lead the player to their target." +[ + WeaponName(choices) : "Weapon" : "weapon_bugbait" = + [ + "weapon_bugbait" : "Bugbait" + "weapon_smg1" : "SMG1" + "weapon_ar2" : "AR2" + ] + + MissingWeaponConceptModifier(string) : "Missing weapon concept modifier" + + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] +] + +@BaseClass base(Targetname) = FollowGoal +[ + actor(target_name_or_class) : "Actor(s) to affect" + goal(string) : "Target Entity" : : "The name of the entity to follow. If blank, and the actor likes the player, then defaults to player" + + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] + + StartActive(choices) : "Start Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + MaximumState(choices) : "Maximum state" : 1 = + [ + 1 : "Idle" + 2 : "Alert" + 3 : "Combat" + ] + + Formation(choices) : "Formation" : 0 = + [ + 0 : "Close circle" + 1 : "Wide circle" + 5 : "Medium circle" + 6 : "Sidekick" + 8 : "Vortigaunt" + ] + + // Inputs + input Activate( void ) : "Begin the follow behavior" + input Deactivate( void ) : "Cease the follow behavior" +] + +@PointClass base(FollowGoal) iconsprite("editor/ai_goal_follow.vmt") = ai_goal_follow : "AI Goal Follow" +[ +] + +@PointClass base(FollowGoal) iconsprite("editor/ai_goal_follow.vmt") = ai_goal_injured_follow : "AI Goal Injured Follow" +[ +] + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Angles, Parentname) studio("models/pigeon.mdl") = ai_battle_line : "Battle line" +[ + // Spawnflags + spawnflags(Flags) = + [ + 1 : "Use parent's orientation" : 0 + ] + + actor(target_name_or_class) : "Actor(s) or squad to affect" + + Active(choices) : "Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + Strict(choices) : "Strict" : 1 : "Player orders can override, applies to allies only" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Activate(void) + input Deactivate(void) +] + +@PointClass base(Targetname) iconsprite("editor/ai_goal_standoff.vmt") = ai_goal_standoff : "AI Goal Standoff" +[ + actor(target_name_or_class) : "Actor(s) to affect" +// goal(string) : "Target Entity (self by default) [NOT IMPLEMENTED]" + + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] + + StartActive(choices) : "Start Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + HintGroupChangeReaction(Choices) : "Reaction to tactical change" : 1 : "What to do if leader moves, threat is neutralized, hint group changes, etc" = + [ + 0 : "Move when ready (default AI)" + 1 : "Move when seek cover" + 2 : "Move immediately" + ] + + Aggressiveness(Choices) : "Aggressiveness" : 2 = + [ + 0 : "Very low" + 1 : "Low" + 2 : "Medium" + 3 : "High" + 4 : "Very High" + // Custom agression disabled + // 100 : "Custom" + ] + + PlayerBattleline(choices) : "Player battleline" : 1 : "Player defines a battle line, applies to allies only" = + [ + 0 : "No" + 1 : "Yes" + ] + + StayAtCover(choices) : "Stay at cover location" : 0 : "When have suitable cover, don't change it (disables advancing to battle line)" = + [ + 0 : "No" + 1 : "Yes" + ] + + AbandonIfEnemyHides(choices) : "Abandon if enemies hide" : 0 : "If no enemy detected recently, stop the standoff" = + [ + 0 : "No" + 1 : "Yes" + ] + + // Custom aggression +// CustomCoverOnReload(choices) : "Custom: Take cover to reload" : 1 = +// [ +// 0 : "No" +// 1 : "Yes" +// ] +// CustomMinTimeShots(float) : "Custom: Min time wait to shoot" : 2 : "Minimum duration of time after a burst of shooting before trying again" +// CustomMaxTimeShots(float) : "Custom: Max time wait to shoot" : 4 : "Minimum duration of time after a burst of shooting before trying again" +// CustomMinShots(integer) : "Custom: Min shots in a burst" : 1 +// CustomMaxShots(integer) : "Custom: Max shots in a burst" : 4 +// CustomOddsCover(integer) : "Custom: Odds cover on damage" : 25 : "If damaged, the chances react by taking immediate cover" + + // Inputs + input Activate( void ) : "Begin contesting position" + input Deactivate( void ) : "Cease contesting position" + input SetAggressiveness(integer) : "Set aggressiveness" +] + +@PointClass base(Targetname, Parentname, Angles) sphere(policeradius) iconsprite("editor/ai_goal_police.vmt") = ai_goal_police : "AI Goal Police" +[ + spawnflags(Flags) = + [ + 2 : "Knock-out target past crossing plane" : 0 + 4 : "Do not leave post" : 0 + ] + + policeradius(float) : "Radius" : 512 : "Radius to police" + policetarget(string) : "Target" : "" : "Target to police" + + // Inputs + input EnableKnockOut(void) : "Tells the goal to make the active policing NPC knock out its target" + input DisableKnockOut(void) : "Stop the active policing NPC from trying to knock out its target" + + // Outputs + output OnFirstWarning(void) : "Fires the first time a policing cop warns a target" + output OnSecondWarning(void) : "Fires the second time a policing cop warns a target" + output OnLastWarning(void) : "Fires when a policing cop warns a target for the last time" + output OnSupressingTarget(void) : "Fires when a policing cop starts to suppress (ie. beat) a target" + output OnKnockOut(void) : "Fires when a target has been knocked out" +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/assault_rally.vmt") line(255 255 255, targetname, assaultpoint) = assault_rallypoint : + "(Assault) rally point" +[ + assaultpoint(target_destination) : "Assault Point" : "" : "Location to move to as assault begins" + assaultdelay(float) : "Assault Delay" : 0 : "How long to wait after cue is given before assault begins." + rallysequence(string) : "Rally Sequence" : "" : "Override the NPC's wait activity by entering a sequence name." + priority(integer) : "Priority" : 1 : "Higher priority rally points get selected first." + + forcecrouch(choices) : "Force Crouch" : 0 : "NPCs using this assault point are forced into crouching while holding it." = + [ + 0 : "No" + 1 : "Yes" + ] + + urgent(choices) : "Urgent" : 0 : "If true, NPCs will consider movement to this rally point as Urgent Navigation." = + [ + 0 : "No" + 1 : "Yes" + ] + + output OnArrival(void) : "Fires when the NPC reaches this rally point" +] + +@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/assault_point.vmt") line(255 255 255, targetname, nextassaultpoint) = assault_assaultpoint : + "(Assault) assault point" +[ + assaultgroup(string) : "Assault Hint Group" : "" : "NPC's movements are constrained to this hint group once assault has begun" + nextassaultpoint(target_destination) : "Next assault point (optional)" + assaulttimeout(float) : "Assault time out" : "3.0" : "This point is cleared when no enemies are seen for this long (seconds)" + clearoncontact(choices) : "Clear on contact with enemies" : 0 : "If you come in contact with enemies while approaching the assault point, clear our assault point" = + [ + 0 : "No" + 1 : "Yes" + ] + allowdiversion(choices) : "Allow diversion" : 0 : "If you come in contact with enemies while approaching the assault point, divert to kill them. Resume the assault once contact is lost." = + [ + 0 : "No" + 1 : "Yes" + ] + + allowdiversionradius(float) : "Diversion Proximity" : 0 : "If Allow Diversion is set, NPC will only divert from assault to attack an enemy that is within this distance of the assault point. 0 = No limit." + + nevertimeout(choices) : "Never Timeout" : 0 : "If set, the assault never ends for NPCs assaulting this point. Useful for forcing NPCs back to a point." = + [ + 0 : "No" + 1 : "Yes" + ] + + strict(choices) : "Strict?" : 0 = + [ + 0 : "No, NPC may move from point to attack" + 1 : "Yes, NPC may not move to attack" + ] + + spawnflags(Flags) = + [ + 1 : "Clear this point upon arrival, UNCONDITIONALLY" : 0 + ] + + forcecrouch(choices) : "Force Crouch" : 0 : "NPCs using this assault point are forced into crouching while holding it." = + [ + 0 : "No" + 1 : "Yes" + ] + + urgent(choices) : "Urgent" : 0 : "If true, NPCs will consider movement to this assault point as Urgent Navigation." = + [ + 0 : "No" + 1 : "Yes" + ] + + assaulttolerance(choices) : "Attack Tolerance" : 36 : "How far this NPC may move from the assault point to try to attack an enemy." = + [ + 36 : "Tight (3ft)" + 72 : "Medium (6ft)" + 120 : "Large (10ft)" + ] + + + // Inputs + input SetClearOnContact(integer) : "Set the clear on contact flag. NPCs who spot enemies while running to the assault point, or while waiting at it, will immediately Clear it." + input SetAllowDiversion(integer) : "Set the allow diversion flag. NPCs who spot enemies whil running to the assault point, or while waiting on it, will divert away (leave Assault mode) to deal with the enemies. Upon losing enemies, they'll go back to Assault mode, and return to this assault point." + input SetForceClear(integer) : "Set the Force Clear flag. NPCs who are currently running to the assault point will Clear it immediately. NPCs who acquire it in the future will Clear it automatically." + + // Outputs + output OnArrival(void) : "Fires when the NPC reaches this assault point" + output OnAssaultClear(void) : "Fires when this assault point is cleared of enemies" +] + +@PointClass base(Targetname) = ai_goal_assault : + "AI Goal Assault" +[ + actor(target_name_or_class) : "Actor(s) to affect" : "" : "NPC's that should perform this assault" + rallypoint(target_destination) : "Rally Point Set" : "" : "Root name of rally points for this assault. Use an asterisk '*' after the root name to match all with the same root." + + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] + + StartActive(choices) : "Start Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + AssaultCue(choices) : "Assault Cue" : 1 = + [ + 1 : "Entity System Input" + 2 : "Gunfire" + 3 : "Don't wait for a cue." + ] + + RallySelectMethod(choices) : "Rally Point Selection Method" : 0 = + [ + 0 : "Priority, Distance (default)" + 1 : "Random" + ] + + + // Inputs + input Activate( void ) : "Begin the assault behavior" + input Deactivate( void ) : "Cease the assault behavior" + input BeginAssault( void ) : "Begin assault phase" +] + +@BaseClass base(Targetname) = BaseActBusy +[ + actor(target_name_or_class) : "Actor(s) to affect" : "" : "NPC's that should act busy" + + StartActive(choices) : "Start Active" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0 : "Entity Name" + 1 : "Classname" + ] + + busysearchrange(float) : "Search Range for Busy Hints" : 2048 + visibleonly(choices) : "Visible Busy Hints Only" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input Activate( void ) : "Begin acting busy" + input Deactivate( void ) : "Cease acting busy" + input SetBusySearchRange( float ) : "Update the busy search range for all actors." + input ForceNPCToActBusy( string ) : "Force an NPC to act busy. Takes parameters, separated by spaces: . If no hint node targetname is specified, it'll search for a random one. If no max time is specified, it'll use the default. Specifying 0 as the max time will make the NPC act busy until disturbed. If the optional teleport parameter is specified, the NPC will teleport to the act busy point. A custom move animation can be specified by prepending $ to the name of it. i.e. $ACT_RUN will make the NPC Run. Sequence names can be used instead of activities." + input ForceThisNPCToActBusy( string ) : "Force an NPC outputted from another entity to act busy. (only usable from an output that specifies an entity)" + input ForceThisNPCToLeave( string ) : "Force an NPC outputted from another entity to find a HINT_NPC_EXIT_POINT hintnode and vanish." + + // Outputs + output OnNPCStartedBusy(string) : "Fired when an NPC targeted by this goal starts an ActBusy animation." + output OnNPCFinishedBusy(string) : "Fired when an NPC targeted by this goal finishes an ActBusy." + output OnNPCLeft(string) : "Fired when an NPC target by this goal finishes a forced Leave." +] + +@PointClass base(BaseActBusy) = ai_goal_actbusy : "AI Goal Act Busy" +[ + seeentity(target_name_or_class) : "Sight Entity" : "" : "The Sight Entity (if you provide one) is an entity that will leave the current ActBusy if the Actor playing the ActBusy loses sight of it for the amount of time specified in 'Sight Entity Timeout'. THIS MAY ONLY BE A TARGET NAME. NO CLASSNAMES." + + seeentitytimeout(string) : "Sight Entity Timeout" : "1" : "If you provide a Sight Entity, the Actor will leave the current ActBusy if the Actor has lost sight of Sight Entity for this many seconds." + + sightmethod(choices) : "Sight Enemy Method" : 0 : "The method to use to determine whether the Sight enemy is visible." = + [ + 0 : "Default. LOS -and- Viewcone" + 1 : "LOS Only. Disregard Viewcone" + ] + + + type(choices) : "Actbusy Type" : 0 = + [ + 0 : "Default (Standard)" + 1 : "Combat" + ] + + safezone(target_destination) : "Combat Safe Zone" : "" : "Only for combat actbusy. Lets you specify a volume which is the 'safe zone'. The Combat ActBusy will cancel if any enemies are seen in the safe zone." + + + allowteleport(choices) : "Allow actor to teleport?" : 0 = + [ + 0 : "No" + 1 : "Yes (Only for Combat Actbusy)" + ] + + output OnNPCLostSeeEntity(void) : "Fired when the NPC loses sight of the see entity (if one is specified)." + output OnNPCSeeEnemy(void) : "Fired when this NPC leaves his actbusy because of sighting an enemy." +] + +@PointClass base(BaseActBusy) = ai_goal_actbusy_queue : "AI Goal Act Busy Queue" +[ + node_exit(target_destination) : "Exit Node" : "" : "The name of the node the first NPC in the queue should move to when he leaves the head of the queue." + node01(target_destination) : "Node 1" : "" : "The name of the first actbusy hint node in the queue." + node02(target_destination) : "Node 2" : "" : "The name of the second actbusy hint node in the queue." + node03(target_destination) : "Node 3" : "" : "The name of the third actbusy hint node in the queue." + node04(target_destination) : "Node 4" : "" : "The name of the fourth actbusy hint node in the queue." + node05(target_destination) : "Node 5" : "" : "The name of the fifth actbusy hint node in the queue." + node06(target_destination) : "Node 6" : "" : "The name of the sixth actbusy hint node in the queue." + node07(target_destination) : "Node 7" : "" : "The name of the seventh actbusy hint node in the queue." + node08(target_destination) : "Node 8" : "" : "The name of the eighth actbusy hint node in the queue." + node09(target_destination) : "Node 9" : "" : "The name of the ninth actbusy hint node in the queue." + node10(target_destination) : "Node 10" : "" : "The name of the tenth actbusy hint node in the queue." + node11(target_destination) : "Node 11" : "" : "The name of the eleventh actbusy hint node in the queue." + node12(target_destination) : "Node 12" : "" : "The name of the twelfth actbusy hint node in the queue." + node13(target_destination) : "Node 13" : "" : "The name of the thirteenth actbusy hint node in the queue." + node14(target_destination) : "Node 14" : "" : "The name of the fourteenth actbusy hint node in the queue." + node15(target_destination) : "Node 15" : "" : "The name of the fifteenth actbusy hint node in the queue." + node16(target_destination) : "Node 16" : "" : "The name of the sixteenth actbusy hint node in the queue." + node17(target_destination) : "Node 17" : "" : "The name of the seventeenth actbusy hint node in the queue." + node18(target_destination) : "Node 18" : "" : "The name of the eighteenth actbusy hint node in the queue." + node19(target_destination) : "Node 19" : "" : "The name of the nineteenth actbusy hint node in the queue." + node20(target_destination) : "Node 20" : "" : "The name of the twentieth actbusy hint node in the queue." + + mustreachfront(choices) : "Must Reach Front" : 0 : "If true, NPCs much reach the front node in the queue before they're allowed to leave the queue." = + [ + 0 : "No" + 1 : "Yes" + ] + + // Inputs + input PlayerStartedBlocking(float) : "Tell the queue manager that the player has started blocking a spot in the queue." + input PlayerStoppedBlocking(float) : "Tell the queue manager that the player has stopped blocking a spot in the queue." + input MoveQueueUp(void) : "Force the queue to move up, sending the front-most NPC out of the queue." + + // Outputs + output OnQueueMoved(float) : "Fired when the queue moves. Outputs the number of NPCs left in the queue." + output OnNPCStartedLeavingQueue(string) : "Fired when the NPC at the head of the queue starts to leave. The activator is the NPC, and the string is the name of the NPC." + output OnNPCLeftQueue(string) : "Fired when the NPC at the head of the queue leaves. The activator is the NPC, and the string is the name of the NPC." +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = ai_changetarget : "Change Target" +[ + target(target_destination) : "Target entity" : : "Name of entity whose target will be changed." + m_iszNewTarget(string) : "New Target" + + // Inputs + input Kill( void ) : "Removes this entity from the world" + input Activate( void ) : "Changes the entities target" +] + +@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = ai_npc_eventresponsesystem : "An entity that allows you to generate events for nearby friendly NPCs to respond to." +[ + input TriggerResponseEvent(string) : "Fire an NPC Response Event. The parameter should match the response rules concept that any nearby friendly NPCs will try to speak." + input ForceTriggerResponseEvent(string) : "Fire an NPC Response Event, and force the first available NPC to speak the response (breaking them out of any scene they're in). The parameter should match the response rules concept that any nearby friendly NPCs will try to speak." + input ForceTriggerResponseEventNoCancel(string) : "Fire an NPC Response Event, and force the first available NPC to speak the response (but don't break them out of any scene they're in). The parameter should match the response rules concept that any nearby friendly NPCs will try to speak." +] +@PointClass base(Targetname) sphere(Radius) size(-8 -8 -8, 8 8 8) = ai_changehintgroup : "Change Hint Group" +[ + SearchType(choices) : "Search Type" : 0 : "How to search for the entities to change." = + [ + 0 : "Entity Name" + 1 : "Classname" + 2 : "Old Hint Group" + ] + SearchName(string) : "Name to search for" + NewHintGroup(string) : "New Hint Group" + Radius(string) : "Search Radius" : "0.0" : "Radius to search (0 for all of map)" + hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." = + [ + 0 : "No" + 1 : "Yes" + ] + + input Kill( void ) : "Removes this entity from the world" + input Activate( void ) : "Change the Hint Group" +] + + + +@PointClass base(Targetname) = ai_script_conditions : "AI Script Conditions" +[ + Actor(target_destination) : "Actor" : : "NPC Target" + + StartDisabled(choices) : "Start Disabled" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + MinimumState(choices) : "Minimum state" : 1 = + [ + 1 : "Idle" + 2 : "Alert" + 3 : "Combat" + ] + + MaximumState(choices) : "Maximum state" : 3 = + [ + 1 : "Idle" + 2 : "Alert" + 3 : "Combat" + ] + + ScriptStatus(choices) : "Actor is running a script?" : 2 = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + RequiredTime(float) : "Required Time" : 0 : "Duration of time that all the conditions must be true" + MinTimeout(float) : "Minimum time out" : 0 : "Minimum time before OnConditionsTimeout is fired. 0 = never expire." + MaxTimeout(float) : "Maximum time out" : 0 : "Maximum time before OnConditionsTimeout is fired. 0 = ignore (If you don't specify a Maximum timeout, conditions will time out at exactly Minimum Time Out. If you DO specify a Maximum time out, timeout will occur randomly between Minimum and Maximum time out values.)" + + ActorSeePlayer(choices) : "Actor Sees Player" : 2 = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + PlayerActorProximity(float) : "Player distance" : 0 : "The distance the player must/must not be to the actor. Negative values for NOT, 0 for ignore." + PlayerActorFOV(float) : "Player FOV for Actor " : 360 : "Specify angle of view cone in degrees. Negative value = NOT" + PlayerActorFOVTrueCone(choices ) : "Play FOV to Actor is a true view cone" : 0 : "Player's view cone is evaluated as a true cone, not pie slice " = + [ + 0 : "No - Tall pie slice" + 1 : "Yes - True view cone" + ] + + PlayerActorLOS(choices) : "Player has LOS to Actor" : 2 : "Checks that the player has clear Line of Sight to the Actor" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + + target(target_destination) : "Target (Optional)" : : "Optional entity to include in conditions" + ActorSeeTarget(choices) : "Actor Sees Target" : 2 = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + ActorTargetProximity(float) : "Target distance" : 0 : "The distance the actor must/must not be to the Target. Negative values for NOT, 0 for ignore." + PlayerTargetProximity(float) : "Player distance from Target" : 0 : "The distance the player must/must not be to the Target. Negative values for NOT, 0 for ignore." + PlayerTargetFOV(float) : "Player FOV for Target" : 360 : "Specify angle of view cone in degrees. Negative value = NOT" + PlayerTargetFOVTrueCone(choices ) : "Play FOV to Target is a true view cone" : 0 : "Player's view cone is evaluated as a true cone, not pie slice " = + [ + 0 : "No - Tall pie slice" + 1 : "Yes - True view cone" + ] + + PlayerTargetLOS(choices) : "Player has LOS to Target" : 2 : "Checks that the player has clear Line of Sight to the Target" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + PlayerBlockingActor(choices) : "Player blocking Actor" : 2 : "Checks that the player is blocking the Actor's path" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + ActorInPVS(choices) : "Actor in Player's PVS" : 2 : "Checks that the actor is in the player's PVS" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + ActorInVehicle(choices) : "Actor in a vehicle" : 2 : "Checks the actor's state in a vehicle" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + PlayerInVehicle(choices) : "Player in a vehicle" : 2 : "Checks the player's state in a vehicle" = + [ + 0 : "No" + 1 : "Yes" + 2 : "Don't care" + ] + + spawnflags(Flags) = + [ + 1 : "Fire outputs with the Actor as Activator" : 0 + ] + + // Inputs + input Enable(void) : "Enable this entity" + input Disable(void) : "Disable this entity" + + // Outputs + output OnConditionsSatisfied(void) : "Fires when AI conditions satisfied" + output OnConditionsTimeout(void) : "Fires when AI conditions timed out" + output NoValidActor(void) : "Fires if/when there are no matching actors in the map." +] + +@PointClass base(BaseScripted, Angles, DXLevelChoice) studio("models/editor/scriptedsequence.mdl") sphere(m_flRadius) = scripted_sequence : + "Grabs an NPC and makes them play a specified set of animations. The NPC can be told to move to the scripted sequence position or can "+ + "be told to play the script wherever they currently are. "+ + "Multiple scripted sequences of the same name will frame-synchronize in the action animation once all the actors have moved to position. "+ + "This allows tight interaction between actors (one actor grabbing another, hitting them, etc.) The flow is as follows:\n\n"+ + "1) Move to position using the specified movement animation. If 'Move to Position' is set to NONE, skip to step 2.\n"+ + "2) If forced to wait for another actor to move to position, play the pre-action idle animation, otherwise skip to step 3. If there is no pre-action idle specified, ACT_IDLE is used.\n"+ + "3) Fire the OnBeginSequence output.\n"+ + "4) Play the action animation. If no action animation is specified, skip to step 5.\n"+ + "5) Play the post-action idle animation. If none is specified, skip to step 6. If the 'Loop in Post Idle' spawnflag is set, keep playing the post-action idle until the script is cancelled. If no post-action idle animation is specified, ACT_IDLE is used.\n"+ + "6) Fire the OnEndSequence output.\n"+ + "7) If a next script to play is specified, hand the NPC to the next script and repeat this process for that script.\n\n"+ + "The MoveToPosition input runs steps 1 and 2, then waits while playing the pre-action idle animation until the BeginSequence input is received.\n\n"+ + "If the sequence has motion extraction in it, set the 'Don't Teleport NPC On End' spawnflag." +[ + spawnflags(Flags) = + [ + 4 : "Repeatable" : 0 + 8 : "Leave Corpse" : 0 + 16 : "Start on Spawn" : 0 + 32: "No Interruptions" : 0 + 64: "Override AI" : 0 + 128: "Don't Teleport NPC On End" : 0 + 256: "Loop in Post Idle" : 0 + 512: "Priority Script" : 0 + 4096: "Allow actor death" : 0 + ] + + + onplayerdeath(choices) : "On player death" : 0 : "What should this entity do if the player dies" = + [ + 0 : "Do Nothing" + 1 : "Cancel Script and return to AI" + ] +] + + +@PointClass base(Targetname) sphere(m_flRadius) color(255 0 255) iconsprite("editor/aiscripted_schedule") = aiscripted_schedule : + "Issues a command to an NPC without taking the NPC out of its AI. This does not seize control of the NPC as " + + "a scripted_sequence does" +[ + m_iszEntity(target_destination) : "Target NPC" : : "The name or classname of an NPC to use." + m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere." + + graball(choices) : "All in radius" : 0: "Whether to grab all matching NPCs in the specified radius, instead of just one" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 4 : "Repeatable" : 1 + 1024 : "Search Cyclically" : 0 + 2048 : "Don't Complain" : 0 + ] + + forcestate(choices) : "AI state to set" : 0 = + [ + 0 : "" + 1 : "Set state to IDLE" + 2 : "Set state to ALERT" + 3 : "Set state to COMBAT" + ] + + schedule(choices) : "Schedule to run" : 1 = + [ + 0 : "" + 1 : "Walk to Goal Entity" + 2 : "Run to Goal Entity" + 3 : "Set enemy to Goal Entity" + 4 : "Walk Goal Path" + 5 : "Run Goal Path" + 6 : "Set enemy to Goal Entity AND Run to Goal Entity" + ] + + interruptability(choices) : "Interruptability" : 0 = + [ + 0 : "General" + 1 : "Damage or Death" + 2 : "Death" + ] + + goalent(target_destination) : "Goal entity" : : "Provides the name of a schedule-specific goal entity (see 'Schedule to run')" + + // Inputs + input StartSchedule(void) : "Starts the scripted schedule. This will first locate an NPC that " + + "matches the given target, then tell the NPC to run the specified schedule." +] + +@PointClass base(Targetname) = ai_citizen_response_system : + "If placed in the level, will manage citizens responses to player's actions." +[ + // Inputs + input ResponseVitalNPC(void) : "Fire the VitalNPC Died response." +] + +//------------------------------------------------------------------------- +// +// Solid Entities +// +//------------------------------------------------------------------------- + +@SolidClass base(EnableDisable, Parentname, Origin, Global) = func_healthcharger: "Wall health recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + // Outputs + output OutRemainingHealth(float) : "Remaining Health." + output OnPlayerUse(void) : "Fired when the player +USEs the charger." +] + +@SolidClass base(Targetname, Parentname, Origin) = func_recharge: "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + spawnflags(flags) = + [ + 8192 : "Citadel recharger" : 0 + ] + + // Inputs + input Recharge(void) : "Recharge to full" + input SetCharge(void) : "This sets the remaining charge in the charger to whatever value you specify" + + // Outputs + output OutRemainingCharge(float) : "Remaining Charge." + output OnHalfEmpty(void) : "Half-Empty" + output OnEmpty(void) : "Empty" + output OnFull(void) : "Recharged to full." + output OnPlayerUse(void) : "Fired when the player +USEs the charger." +] + +@SolidClass base(Parentname, Targetname, Global) = func_vehicleclip: "Vehicle Clip" +[ + input Kill( void ) : "Removes this entity from the world" + input Enable( void ) : "Enable collisions with vehicles" + input Disable( void ) : "Disable collisions with vehicles" +] + +@SolidClass base(func_movelinear) = func_lookdoor : "A door that moves either when looked by a targeted object or when " + + "a target object comes near the door. Behavior can be either based on viewing direction or proximity " + + "alone, or on a combination of both. If inverted the doors behavior will be the opposite." +[ + spawnflags(flags) = + [ + 8192 : "LookDoor Threshold" : 0 + 16384 : "LookDoor Invert" : 0 + 32768 : "LookDoor From Open" : 0 + ] + + ProximityDistance(string) : "Proximity Distance" : "0.0" : "If non-zero, proximity range over which door will move" + ProximityOffset(string) : "Proximity Offset" : "0.0" : "Offset from the target object" + FieldOfView(string) : "FieldOfView" : "0.0" : "If non-zero, field of view over which door will move" + + // Input + input InvertOn(void) : "InvertOn - when set behavior of door is inverted." + input InvertOff(void) : "InvertOff - when set behavior of door is normal." +] + +@SolidClass base(Trigger) = trigger_waterydeath: + "A trigger volume that spawns leeches around entities inside it, and does damage to them until they die. "+ + "Used to prevent players entering deep water." +[ +] + +//------------------------------------------------------------------------- +// +// Point Entities +// +//------------------------------------------------------------------------- + +@PointClass base(EnvGlobal) size(-8 -8 -8, 8 8 8) = env_global : + "An entity to control a game-specific global states." +[ + globalstate(choices) : "Global State to Set" = + [ + "gordon_precriminal" : "Gordon pre-criminal" + "antlion_allied" : "Antlions are player allies" +// "player_stealth" : "Player in APC is disguised as combine" + "suit_no_sprint" : "Suit sprint function not yet enabled" + "super_phys_gun" : "Super phys gun is enabled" + "friendly_encounter" : "Friendly encounter sequence (lower weapons, etc.)" +// "citizens_passive" : "Citizens are *not* player allies (cannot be commanded)" + "gordon_invulnerable" : "Gordon is invulnerable" + "no_seagulls_on_jeep" : "Don't spawn seagulls on the jeep" + "ep2_alyx_injured" : "Episode 2: Alyx injured" + "ep_alyx_darknessmode" : "Episodic: Alyx darkness mode" + "hunters_to_run_over" : "Ep2 Counter: Hunters to run over before they dodge" + ] +] + +//------------------------------------------------------------------------- +// +// Tanks +// +//------------------------------------------------------------------------- +@BaseClass base(Targetname, Parentname, Origin, Angles, RenderFields, Global, Shadow) = BaseTank +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + 16: "Only Direct" : 0 + 32: "Controllable" : 0 + 64: "Damage Kick" : 0 + 1024: "NPC Controllable" : 0 + 2048: "NPC Set Controller" : 0 + 4096: "Allow friendlies to hit player" : 0 + 32768: "Non-solid." : 0 + 131072: "Perfect accuracy every 3rd shot at player" : 0 + ] + + control_volume(target_destination) : "Control Volume" : "" : "Name of a trigger the specifies the volume in which a player must be to control this tank." + + // Mainly for use with 1009 team settings (game_team_master) + master(string) : "(Team) Master" + + yawrate(string) : "Yaw rate" : "30" + yawrange(string) : "Yaw range" : "180" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchrange(string) : "Pitch range" : "0" + pitchtolerance(string) : "Pitch tolerance" : "5" + barrel(string) : "Barrel Length" : "0" + barrely(string) : "Barrel Horizontal" : "0" + barrelz(string) : "Barrel Vertical" : "0" + spritesmoke(sprite) : "Smoke Sprite" : "" + spriteflash(sprite) : "Flash Sprite" : "" + spritescale(string) : "Sprite scale" : "1" + rotatestartsound(sound) : "Rotate Start Sound" : "" + rotatesound(sound) : "Rotate Loop Sound" : "" + rotatestopsound(sound) : "Rotate Stop Sound" : "" + firerate(string) : "Rate of Fire" : "1" + bullet_damage(string) : "Damage Per Bullet" : "0" : "If set to 0, it'll use the base weapon bullet's damage." + bullet_damage_vs_player(string) : "Damage Per Bullet Vs Player" : "0" : "If set to 0, it'll use the Damage Per Bullet value." + persistence(string) : "Firing persistence" : "1" : "(Seconds) How long to keep firing at last known position after lose sight of target" + persistence2(string) : "Firing persistence2" : "0" : "(Seconds) After lost enemy and persistence time has passed, how long to occasionally fire at enemy's last known position" + firespread(choices) : "Bullet accuracy" : 0 = + [ + 0: "Perfect Shot" + 1: "Small cone" + 2: "Medium cone" + 3: "Large cone" + 4: "Extra-large cone" + ] + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + _minlight(string) : "Minimum light level" + + gun_base_attach(string) : "Gun Base Attachment" : "" : "If Parent is specified, this is the attachment point on the parent to aim from." + gun_barrel_attach(string) : "Gun Barrel Attachment" : "" : "If Parent is specified, this is the attachment point on the parent to fire from. If you specify this, you'll want to specify the Gun Base Attachment too." + gun_yaw_pose_param(string) : "Gun Yaw Pose Param" : "" : "If Parent + the Gun Pitch Pose Param is specified, then the gun itself will be invisible and the func_tank will steer a gun on the parent using the pose parameters." + gun_yaw_pose_center(float) : "Gun Yaw Pose Center" : "0" : "The center yaw pose parameter of the gun on the parent" + gun_pitch_pose_param(string) : "Gun Pitch Pose Param" : "" : "If Parent + the Gun Yaw Pose Param is specified, then the gun itself will be invisible and the func_tank will steer a gun on the parent using the pose parameters." + gun_pitch_pose_center(float) : "Gun Pitch Pose Center" : "0" : "The center pitch pose parameter of the gun on the parent" + + ammo_count(integer) : "Ammunition Count" : -1 : "Only applies to player use. -1 = unlimited ammo." + + LeadTarget(choices) : "Lead Target" : "No" = + [ + 0 : "No" + 1 : "Yes" + ] + + npc_man_point(target_destination) : "NPC Man Point" : "" : "Point where NPC must stand to man this func_tank." + playergraceperiod(float) : "Post-NPC Attack Grace Period" : "0" : "If specified, NPC's manning this func tank won't fire at the player, after firing at a non-player, for this amount of time." + ignoregraceupto(float) : "Ignore Grace Upto" : "768" : "The player grace period is ignored if the player's under this distance from the func_tank." + playerlocktimebeforefire(float) : "Player Lock Time" : "0" : "The tank must have the player as a target for this amount of time before it's allowed to fire." + + effecthandling(choices) : "Effect Handling" : 0 = + [ + 0 : "Use Individual Settings." + 1 : "AR2" + 2 : "Combine Cannon" + ] + + // Inputs + input Activate(void) : "Turn the tank on" + input Deactivate(void) : "Turn the tank off (go dormant)" + input SetFireRate(string) : "How fast to fire (0 = don't fire)" + input SetDamage(string) : "Set the Damage Per Bullet" + input SetTargetPosition(string) : "World position that I should aim at" + input SetTargetDir(vector) : "Direction to aim at." + input SetTargetEntityName(string) : "Name of entity I should follow/attack" + input SetTargetEntity(string) : "Entity I should follow/attack (output from other entity only)" + input ClearTargetEntity(void) : "Clear the entity I should be attacking." + input FindNPCToManTank(string) : "Find a nearby NPC to man this func_tank." + input StartFindingNPCs(void) : "Start searching for NPCs to man this func_tank." + input StopFindingNPCs(void) : "Stop searching for NPCs to man this func_tank." + input ForceNPCOff(void) : "Force the NPC manning this func_tank (if any) to leave." + input SetMaxRange(float) : "Set the max range of the func_tank." + + // Outputs + output OnFire(void) : "Fires when the tank fires its bullets" + output OnAquireTarget(void) : "Fires when target is newly in range and can be shot" + output OnLoseTarget(void) : "Fires when when target goes out of range" + output OnAmmoDepleted(void) : "Fires when tank runs out of ammo" + output OnGotController(void) : "Fires when an NPC starts to control this tank. Players do NOT fire this input." + output OnLostController(void) : "Fires when the NPC controller of the tank stops controlling it. Players do NOT fire this input." + output OnGotPlayerController(void) : "Fires when a Player starts to control this tank. NPCs do NOT fire this input." + output OnLostPlayerController(void) : "Fires when the Player controller of the tank stops controlling it. NPCs do NOT fire this input." + output OnReadyToFire(void) : "Fires once when the tank is done waiting to fire between rounds" +] + + +// dvs: FIXME: put this back once we have an episodic FGD +//@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +//[ +// bullet(choices) : "Bullets" : 0 = +// [ +// 0: "None" +// 1: "Pistol" +// 2: "SMG1" +// 3: "AR2" +// 4: "Laser" +// ] +// +// spawnflags(flags) = +// [ +// 8192: "Ignore range when making viewcone checks" : 0 +// 256 : "Aiming Assistance (Player Only)" : 0 +// ] +//] + + +// dvs: FIXME: move into an episodic FGD +@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" +[ + ammotype(choices) : "Ammo type" : "" = + [ + "" : "None" + "Pistol" : "Pistol" + "SMG1" : "SMG1" + "AR2" : "AR2" + "CombineHeavyCannon" : "Combine Heavy Cannon" + ] + + spawnflags(flags) = + [ + 8192: "Ignore range when making viewcone checks" : 0 + 256 : "Aiming Assistance (Player Only)" : 0 + ] +] + + +@SolidClass base(BaseTank) = func_tankpulselaser : "Brush Pulse Laser" +[ + PulseSpeed(float) : "Pulse Speed" : 1000 : "How fast does pulse travel" + PulseColor(color255) : "Pulse Color" : "255 0 0" : "Color of the pulse" + PulseWidth(float) : "Pulse Width" : "20" : "Width of the pulse" + PulseLife(float) : "Pulse Life" : 2 : "(Seconds) How long the pulse lasts" + PulseLag(float) : "Pulse Lag" : "0.05" : "(Seconds) How far behind is pulse tail" + PulseFireSound(sound) : "Pulse Fire Sound" : "" : "Sound played when pulse fires" +] + + +@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" +[ + laserentity(target_destination) : "env_laser Entity" +] + + +@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" +[ + rocketspeed(float) : "Projectile speed" : 800 : "Speed the rocket will travel at." +] + +@SolidClass base(BaseTank) = func_tankairboatgun : "Airboat Gun Turret" +[ + airboat_gun_model(target_destination) : "Name of a prop_dynamic which is the airboat gun model" +] + +@SolidClass base(BaseTank) = func_tankapcrocket : "APC Rocket Turret" +[ + rocketspeed(float) : "Projectile speed" : 800 : "Speed the rocket will travel at." + burstcount(integer) : "Burst shot count" : 10 : "Number of missiles to shoot in a burst" + + input DeathVolley(void) : "Fire a burst of rockets cause we're dying." +] + + +@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" +[ + iMagnitude(Integer) : "Explosion Magnitude" : 100 + firedelay(string) : "Shell travel time" : 2 : "How long after the turret fires before the shell impacts" + firestartsound(sound) : "Firing start sound" : "" : "Sound of the mortar firing" + fireendsound(sound) : "Firing end sound" : "" + incomingsound(sound) : "Incoming Shell Sound" : "" : "Sound of the shell falling on the target" + warningtime(float) : "Incoming warning time" : "1" : "How long before the shell impacts to play the warning sound" + firevariance(float) : "Fire time variance" : "0" : "How much variability to add to fire rate (time +-)" + + input FireAtWill(void) : "Allow tank to fire next shot as soon as ready." +] + +@SolidClass base(BaseTank) = func_tankphyscannister : "PhysCannister Turret" +[ + barrel_volume(target_destination) : "Barrel Volume" : "" : "Name of a trigger the specifies the volume in which cannisters must be placed." +] + +@SolidClass base(BaseTank) = func_tank_combine_cannon : "Combine sentry cannon" +[ + ammotype(choices) : "Ammo type" : "" = + [ + "" : "None" + "Pistol" : "Pistol" + "SMG1" : "SMG1" + "AR2" : "AR2" + "CombineHeavyCannon" : "Combine Heavy Cannon" + ] + + input DisableHarrass(void) : "Disable the cannon tracking an unseen player" + input EnableHarrass(void) : "Allow the cannon to track and pester a player who is hiding (DEFAULT)" + + output OnShotAtPlayer(void) : "Fired everytime the cannon shoots at the player" +] + + +//------------------------------------------------------------------------- +// +// Items +// +//------------------------------------------------------------------------- +@BaseClass color(0 0 200) base(Targetname, Angles, Shadow) sphere(fademindist) sphere(fademaxdist) = Item +[ + output OnPlayerTouch(void) : "Fires when the player touches this object" + + output OnCacheInteraction(void) : "This output fires when the player proves they have 'found' this item. Fires on: Player Touch (whether or not player actually acquires the item), Picked up by +USE, Picked up by Physcannon, Punted by Physcannon." + + fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist). If 'Screen Space Fade' is selected, this represents the number of pixels wide covered by the prop when it starts to fade." + fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out). If 'Screen Space Fade' is selected, this represents the *minimum* number of pixels wide covered by the prop when it fades." + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under dx7, then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." + + " This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." + + + spawnflags(Flags) = + [ + 1 : "Start Constrained" : 0 + ] +] + +@PointClass base(Item) studio("models/items/healthkit.mdl") = item_dynamic_resupply : "A dynamic item. When the player enters the PVS of this entity, " + + "it will determine the item most needed by the player, spawn one of those items, and remove itself. To determine which item the player most needs, it " + + "calculates which of the Desired Health/Armor/Ammo ratios the player is farthest from.\n\nIf the player is above all the desired levels, then no item " + + "will be spawned, unless this item_dynamic_resupply was created by an item_item_crate. In that case, a random piece of ammo used by a weapon, that " + + "the player has, will be spawned. If the 'Fallback to Health Vial' spawnflag is set, a health vial will be spawned instead of the ammo.\n\nBy default, " + + "the item_dynamic_resupply uses the values inside the Master resupply, instead of using it's own values. This makes it easy to tweak the desired " + + "loadout of many resupplies. The BecomeMaster input allows you to switch Masters dynamically as the level progresses." +[ + spawnflags(Flags) = + [ + 1 : "Use Master's values" : 1 + 2 : "Is Master" : 0 + 8 : "Fallback to Health Vial" : 0 + 16 : "Alternate master" : 0 + ] + + DesiredHealth(float) : "Desired Health Ratio" : "1" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max health." + DesiredArmor(float) : "Desired Armor Ratio" : "0.3" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max armor." + DesiredAmmoPistol(float) : "Desired Pistol Ammo Ratio" : "0.5" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoSMG1(float) : "Desired SMG1 Ammo Ratio" : "0.5" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoSMG1_Grenade(float) : "Desired SMG1 Grenade Ammo Ratio" : "0.1" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoAR2(float) : "Desired AR2 Ammo Ratio" : "0.4" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoBuckshot(float) : "Desired Shotgun Ammo Ratio" : "0.5" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoRPG_Round(float) : "Desired RPG Ammo Ratio" : "0" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoGrenade(float) : "Desired Grenade Ammo Ratio" : "0.1" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmo357(float) : "Desired 357 Ammo Ratio" : "0" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoCrossbow(float) : "Desired Crossbow Ammo Ratio" : "0" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + DesiredAmmoAR2_AltFire(float) : "Desired AR2 Alt-fire Ammo Ratio" : "0" : "A ratio from 0 to 1. Attempt to fill the player up to this percentage of his max ammo carrying capacity." + + // Inputs + input CalculateType(void) : "Force the dynamic resupply to calculate which item it should spawn." + input BecomeMaster(void) : "Make this resupply the master resupply. All other resupplies set to Use Master's Values will now use this resupply's values." +] + +@PointClass base(Item) studio("models/items/boxsrounds.mdl")= item_ammo_pistol : "Box of Pistol ammo" [] +@PointClass base(Item) studio("models/items/largeBoxSRounds.mdl")= item_ammo_pistol_large : "Large Box of Pistol ammo" [] +@PointClass base(Item) studio("models/items/BoxMRounds.mdl")= item_ammo_smg1 : "Box of SMG1 ammo" [] +@PointClass base(Item) studio("models/items/LargeBoxMRounds.mdl")= item_ammo_smg1_large : "Large Box of SMG1 ammo" [] +@PointClass base(Item) studio("models/items/BoxBRounds.mdl")= item_ammo_ar2 : "Box of AR2 ammo" [] +@PointClass base(Item) studio("models/items/LargeBoxBRounds.mdl")= item_ammo_ar2_large : "Large Box of AR2 ammo" [] +@PointClass base(Item) studio("models/items/357ammo.mdl")= item_ammo_357 : "Box of 357 ammo" [] +@PointClass base(Item) studio("models/items/357ammobox.mdl")= item_ammo_357_large : "Large Box of 357 ammo" [] +@PointClass base(Item) studio("models/items/CrossbowRounds.mdl")= item_ammo_crossbow : "Box of Crossbow ammo" [] +@PointClass base(Item) studio("models/items/BoxBuckshot.mdl")= item_box_buckshot : "Box Buckshot" [] +@PointClass base(Item) studio("models/weapons/w_missile_closed.mdl")= item_rpg_round : "RPG Round" [] +@PointClass base(Item) studio("models/items/AR2_Grenade.mdl")= item_ammo_smg1_grenade : "SMG1 Grenade" [] +@PointClass base(Item) studio("models/items/battery.mdl") = item_battery : "HEV battery" [] +@PointClass base(Item) studio("models/items/healthkit.mdl") = item_healthkit : "Small Health Kit" [] +@PointClass base(Item) studio("models/healthvial.mdl") = item_healthvial : "Personal Health Kit" [] +@PointClass base(Item) studio("models/items/combine_rifle_ammo01.mdl") = item_ammo_ar2_altfire : "AR2 Alt-fire Round" [] +@PointClass base(Item) studio("models/items/hevsuit.mdl") = item_suit : "HEV Suit" +[ + spawnflags(Flags) = + [ + 1 : "Short Logon" : 0 + ] +] + +@PointClass base(Targetname, Angles, BaseFadeProp) studio("models/items/ammocrate_rockets.mdl") = item_ammo_crate : "Ammo Crate" +[ + AmmoType(choices) : "Ammo Type" : 0 = + [ + 0 : "Pistol" + 1 : "SMG1" + 2 : "AR2" + 3 : "RPG Rounds" + 4 : "Buckshot" + 5 : "Grenades" + 6 : "357" + 7 : "XBowBolt" + 8 : "AR2 Alt-Fire Round" + 9 : "SMG Alt-Fire grenade" + ] + + // Inputs + input Kill(void) : "Remove the ammo crate" + output OnUsed(void) : "Fires when +used by the player." +] + +@PointClass base(BasePropPhysics, Targetname, Angles, DamageFilter, BaseFadeProp) studio("models/items/item_item_crate.mdl") = item_item_crate : "Item Crate" +[ + CrateType(choices) : "Crate Contains" : 0 = + [ + 0 : "Contains specified item" + ] + + + CrateAppearance(choices) : "Crate Appearance" : 0 = + [ + 0 : "Default Appearance" + 1 : "Radar Beacon Crate" + ] + + ItemClass(pointentityclass) : "Item Type" : "item_dynamic_resupply" : "Class name of the entity to spawn when the crate is broken" + ItemCount(integer) : "Item Count" : 1 : "Number of items to emit upon breakage" + SpecificResupply(target_destination) : "Specific resupply" : "" : "If item type is item_dynamic_resupply, specify a specific one to use instead of the master" + + // Inputs + input Kill(void) : "Remove the item crate" + input Break(void) : "Breaks the breakable." + input SetHealth(integer) : "Sets a new value for health. If the breakable's health reaches zero it will break." + input AddHealth(integer) : "Adds health to the breakable. If the breakable's health reaches zero it will break." + input RemoveHealth(integer) : "Removes health from the breakable. If the breakable's health reaches zero it will break." + + // Outputs + output OnBreak(void) : "Fires when broken." + output OnHealthChanged(float) : "Fires when the health of this breakable changes, passing the new value of health as a percentage of max health, from [0..1]." + + output OnCacheInteraction(void) : "This output fires when the player proves they have 'found' this crate. Fires on: Picked up by +USE, Picked up by Physcannon, Punted by Physcannon, Broken." +] + +@PointClass base(Targetname, Angles, BaseFadeProp) studio( "models/props_combine/health_charger001.mdl" ) = item_healthcharger : "Health Charger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + // Outputs + output OutRemainingHealth(float) : "Remaining Health." + output OnPlayerUse(void) : "Fired when the player +USEs the charger." +] + +@PointClass base(Targetname, Angles, BaseFadeProp) studio( "models/props_combine/suit_charger001.mdl" ) = item_suitcharger : "Battery recharger" +[ + // dmdelay(integer) : "Deathmatch recharge delay" : 0 + _minlight(string) : "Minimum light level" + + spawnflags(flags) = + [ + 8192 : "Citadel recharger" : 0 + 16384 : "Kleiner's recharger" : 0 + ] + + // Inputs + input Recharge(void) : "Recharge to full" + + // Outputs + output OutRemainingCharge(float) : "Remaining Charge." + output OnHalfEmpty(void) : "Half-Empty" + output OnEmpty(void) : "Empty" + output OnFull(void) : "Recharged to full." + output OnPlayerUse(void) : "Fired when the player +USEs the charger." +] + +//------------------------------------------------------------------------- +// +// Weapons +// +//------------------------------------------------------------------------- +@BaseClass color(0 0 200) base(Targetname, Angles) sphere(fademindist) sphere(fademaxdist) = Weapon +[ + spawnflags(Flags) = + [ + 1 : "Start constrained" : 0 + 2 : "Deny player pickup (reserve for NPC)" : 0 + 4 : "Not puntable by Gravity Gun" : 0 + ] + + output OnPlayerUse(void) : "Fires when the player +uses this weapon" + output OnPlayerPickup(void) : "Fires when the player picks up this weapon" + output OnNPCPickup(void) : "Fires when an NPC picks up this weapon" + output OnCacheInteraction(void) : "Fires when the player 'proves' they've found this weapon. Fires on: Player Touch, +USE pickup, Physcannon pickup, Physcannon punt." + + fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist). If 'Screen Space Fade' is selected, this represents the number of pixels wide covered by the prop when it starts to fade." + fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out). If 'Screen Space Fade' is selected, this represents the *minimum* number of pixels wide covered by the prop when it fades." + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under dx7, then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." + + " This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." + +] + +@PointClass base(Weapon) studio("models/weapons/w_crowbar.mdl") = weapon_crowbar : "Crowbar" [] +@PointClass base(Weapon) studio("models/weapons/w_stunbaton.mdl") = weapon_stunstick : "StunStick" [] +@PointClass base(Weapon) studio("models/weapons/w_pistol.mdl") = weapon_pistol : "Pistol" [] +@PointClass base(Weapon) studio("models/weapons/w_irifle.mdl") = weapon_ar2 : "Assault Rifle 2" [] +@PointClass base(Weapon) studio("models/weapons/w_rocket_launcher.mdl") = weapon_rpg : "Missile Launcher" [] +@PointClass base(Weapon) studio("models/weapons/w_smg1.mdl") = weapon_smg1 : "SMG1" [] +@PointClass base(Weapon) studio("models/weapons/w_357.mdl") = weapon_357 : "357" [] +@PointClass base(Weapon) studio("models/weapons/w_crossbow.mdl") = weapon_crossbow : "Crossbow" [] +@PointClass base(Weapon) studio("models/weapons/w_shotgun.mdl") = weapon_shotgun : "Shotgun" [] +@PointClass base(Weapon) studio("models/weapons/w_grenade.mdl") = weapon_frag : "Frag Grenade" [] +@PointClass base(Weapon) studio("models/weapons/w_physics.mdl") = weapon_physcannon : "Physics Cannon" [] +@PointClass base(Weapon) studio("models/spore.mdl") = weapon_bugbait: "Bug bait" [] +@PointClass base(Weapon) studio("models/weapons/W_Alyx_Gun.mdl") = weapon_alyxgun: "Alyx Gun" [] +@PointClass base(Weapon) studio("models/weapons/W_annabelle.mdl") = weapon_annabelle: "Annabelle (Grigori)" [] + + +@SolidClass base(Trigger) = trigger_rpgfire : + "A volumetric trigger that triggers whenever an RPG is fired within it." +[ + // Outputs + output OnTrigger(void) : "Fires while the trigger is activated" +] + +@SolidClass base(Trigger) = trigger_vphysics_motion : + "A volumetric trigger that affects the motion of vphysics objects that touch it." +[ + spawnflags(Flags) = + [ + 4096 : "Can move (through hierarchical attachment)" : 0 + ] + + StartDisabled(choices) : "Start Disabled" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + filtername(filterclass) : "Filter Name" : : "Filter to use to see if activator triggers me. See filter_activator_name for more explanation." + + SetGravityScale(float) : "Scale gravity of objects in the field." : "1.0" + input SetGravityScale(float) : "Scale gravity of objects in the field." + + SetAdditionalAirDensity(float) : "Additional air density for drag" : "0" + input SetAdditionalAirDensity(float) : "Additional air density for drag" + + SetVelocityLimit(float) : "Max velocity in field (0 disables)" : "0.0" + input SetVelocityLimit(float) : "Max velocity in field." + + SetVelocityLimitDelta(float) : "Max amount to reduce velocity per second when it exceeds the velocity limit (0 disables)" : "0.0" + input SetVelocityLimitDelta(float) : "Max amount to reduce velocity per second" + + input SetVelocityLimitTime(string) : "Accepts two arguments: the first is the new velocity limit, the second is the time it takes to ramp to that value" + + SetVelocityScale(float) : "Velocity scale/drag" : "1.0" + input SetVelocityScale(float) : "Velocity scale/drag" + + SetAngVelocityLimit(float) : "Max angular velocity in field (degrees/s, 0 disables)" : "0.0" + input SetAngVelocityLimit(float) : "Max angular velocity in field." + + SetAngVelocityScale(float) : "Angular Velocity scale/drag" : "1.0" + input SetAngVelocityScale(float) : "Angular Velocity scale/drag" + + SetLinearForce(float) : "Linear force (0 disables)" : "0.0" + input SetLinearForce(float) : "Linear force (0 disables)" + + SetLinearForceAngles(angle) : "Direction of linear force (Pitch Yaw Roll (Y Z X))" : "0 0 0" +// input SetLinearForceAngles(angle) : "Direction of linear force (Pitch Yaw Roll (Y Z X))" + + ParticleTrailMaterial(string) : "Particle Trail Material" : : "Name of a material to use for the particle trail, no name means no particle trail" + ParticleTrailLifetime(float) : "Particle Trail Lifetime" : 4 : "Lifetime of the particles to emit" + ParticleTrailStartSize(float) : "Particle Trail Starting Sprite Size" : 2 : "Starting size of the sprite to emit" + ParticleTrailEndSize(float) : "Particle Trail Ending Sprite Size" : 3 : "Ending size of the sprite to emit" + + // Inputs + input Enable(void) : "Enable the trigger." + input Disable(void): "Disable the trigger." + input Toggle(void) : "Toggle enable/disable." +] + +@PointClass base(Targetname) size( 16 16 16) sphere() color( 255 255 0 ) = point_bugbait : "Bugbait sensor point" +[ + Enabled(choices) : "Start Enabled" : 1 = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 1: "Do not call antlions to position" : 0 + 2: "Don't activate on thrown bugbait splashes" : 0 + 4: "Don't activate on squeezed bugbait" : 0 + ] + + radius(integer) : "Sensor Radius" : 512 + + // Inputs + input Enable(void) : "Enable the sensor." + input Disable(void): "Disable the sensor." + input Toggle(void) : "Toggle the sensor." + + // Outputs + output OnBaited(void) : "Fires when bugbait lands within a radius of the sensor" +] + +@PointClass base(Weapon) = weapon_brickbat : "Brickbat" +[ + BrickbatType(choices) : "BrickbatType" : "Rock" = + [ + 0 : "Rock" + 1 : "Beer Bottle" + 2 : "Headcrab" + 3 : "Cremator Head" + ] +] + + +@PointClass base(Targetname, Angles) size(16 16 16) line(255 255 255, targetname, target) color(247 181 82) = path_corner : "Generic path point" +[ + spawnflags(Flags) = + [ + 1: "Wait for retrigger" : 0 + 2: "Teleport to THIS path_corner" : 0 + ] + target(target_destination) : "Next stop target" + wait(integer) : "Wait here (secs)" : 0 + speed(integer) : "New Train Speed" : 0 + yaw_speed(integer) : "New Train rot. Speed" : 0 + + // Inputs + input SetNextPathCorner(string) : "Sets next pathcorner" + + // Outputs + output OnPass(void) : "Fires when a path follower passes this point" +] + +@PointClass base(Targetname) size(16 16 16) color(255 0 0) = path_corner_crash : "Helicopter Crash Path" +[ + target(target_destination) : "Next stop target" +] + + +//------------------------------------------------------------------------- +// +// Player effects +// +//------------------------------------------------------------------------- + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" +[ + duration(string) : "Fade Duration (seconds)" : "2" + holdtime(string) : "Hold Fade (seconds)" : "0" + renderamt(integer) : "Fade Alpha" : 255 + rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" + loadtime(string) : "Reload delay" : "0" + + // Inputs + input Reload(void) : "Ends this game and reloads" +] + + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" +[ + // Inputs + input Strip(void) : "Strip player's weapons" + input StripWeaponsAndSuit(void) : "Strip player's weapons and his suit" +] + +@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_speedmod: "Speeds up or slows down player velocity over time (slow mo/fast forward)" +[ + spawnflags(Flags) = + [ + 1: "Suppress weapons" : 0 + 2: "Suppress HUD" : 0 + 4: "Suppress jump" : 0 + 8: "Suppress duck" : 0 + 16: "Suppress use" : 0 + 32: "Suppress sprint" : 0 + 64: "Suppress attack" : 0 + 128: "Suppress zoom" : 0 + ] + + // Inputs + input ModifySpeed(float) : "Modifies player speed by X ammount." +] + + + +//------------------------------------------------------------------------- +// +// Logic Entities +// +//------------------------------------------------------------------------- +@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_scene.vmt") = logic_choreographed_scene : + "Manages a choreographed scene of one or more actors." + +[ + // Keys + SceneFile(scene) : "Scene file" + + // Links + target1(target_destination) : "Target 1" + target2(target_destination) : "Target 2" + target3(target_destination) : "Target 3" + target4(target_destination) : "Target 4" + target5(target_destination) : "Target 5" + target6(target_destination) : "Target 6" + target7(target_destination) : "Target 7" + target8(target_destination) : "Target 8" + + busyactor(choices) : "If an Actor is talking..." : 1 : "What to do if an actor this scene needs is already talking when this scene is told to start." = + [ + 0: "Start immediately" + 1: "Wait for actor to finish" + 2: "Interrupt at next interrupt event" + 3: "Cancel at next interrupt event" + ] + + // Inputs + input Start(void) : "Starts playback of the scene file" + input Pause(void) : "Pauses playback of the scene file" + input Resume(void) : "Resumes playback of the scene if it has been paused" + input Cancel(void) : "Cancels playback of the scene" + input CancelAtNextInterrupt(void) : "Cancels playback of the scene at the next interrupt event in the scene." + input PitchShift(float) : "Multiplies the the pitch" + + input InterjectResponse(string) : "Finds an actor who can respond to the specified concept string while the scene continues playing" + + input StopWaitingForActor(void) : "Stop waiting on an actor to stop talking." + + // Outputs + output OnStart(void) : "The scene has started" + output OnCompletion(void) : "The scene has completed" + output OnCanceled(void) : "The scene has been canceled" + output OnTrigger1(void) : "Scene trigger 1" + output OnTrigger2(void) : "Scene trigger 2" + output OnTrigger3(void) : "Scene trigger 3" + output OnTrigger4(void) : "Scene trigger 4" + output OnTrigger5(void) : "Scene trigger 5" + output OnTrigger6(void) : "Scene trigger 6" + output OnTrigger7(void) : "Scene trigger 7" + output OnTrigger8(void) : "Scene trigger 8" + output OnTrigger9(void) : "Scene trigger 9" + output OnTrigger10(void) : "Scene trigger 10" + output OnTrigger11(void) : "Scene trigger 11" + output OnTrigger12(void) : "Scene trigger 12" + output OnTrigger13(void) : "Scene trigger 13" + output OnTrigger14(void) : "Scene trigger 14" + output OnTrigger15(void) : "Scene trigger 15" + output OnTrigger16(void) : "Scene trigger 16" + + onplayerdeath(choices) : "On player death" : 0 : "What should this entity do if the player dies" = + [ + 0 : "Do Nothing" + 1 : "Cancel Script and return to AI" + ] +] + +@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_manager.vmt") = logic_scene_list_manager : + "Manages a list of logic_choreographed_scene entities. Store choreo scenes in them in order that they will be played by other inputs. Whenever a scene plays, the manager will remove all scenes before that one in the list. The name of another logic_scene_list_manager can be entered in a slot instead of an invididual scene, which will cause all scenes in that manager to be removed when a later scene in this list is played." +[ + scene0(target_destination) : "Scene 1" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene1(target_destination) : "Scene 2" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene2(target_destination) : "Scene 3" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene3(target_destination) : "Scene 4" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene4(target_destination) : "Scene 5" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene5(target_destination) : "Scene 6" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene6(target_destination) : "Scene 7" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene7(target_destination) : "Scene 8" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene8(target_destination) : "Scene 9" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene9(target_destination) : "Scene 10" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene10(target_destination) : "Scene 11" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene11(target_destination) : "Scene 12" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene12(target_destination) : "Scene 13" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene13(target_destination) : "Scene 14" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene14(target_destination) : "Scene 15" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + scene15(target_destination) : "Scene 16" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager." + + // Inputs + input Shutdown(void) : "Remove the manager and all scenes referenced by it (and all scenes referenced by logic_scene_list_manager's embedded in this one)." +] + +@PointClass base(Targetname, Parentname) sphere(volume) iconsprite("editor/ai_sound.vmt") = ai_sound : + "This entity makes sounds or smells that can be sensed by NPCs, butnot by the player. This can be used " + + "to cause reactions in nearby NPCs.\n\n" + + "Sound Types\n" + + " Combat: Will cause most NPCs to become alert\n" + + " World: Will cause most NPCs to become alert\n" + + " Danger: Will cause most NPCs to move away from the position of the sound\n" + + " Bullet Impact: \n" + + " Carcass: \n" + + " Meat: \n" + + " Garbage: \n" + + " Thumper: causes antlions to run away briefly\n" + + " Readiness: (Low, Medium, High) Causes player companions that can hear this sound to change readiness\n" +[ + //input InsertSound(Integer) : "THIS IS NOW OBSOLETE. Use InsertAISound" + input EmitAISound(void) : "Make the sound." + + volume(integer) : "Volume" : 120 : "How far away this sound can be heard. This is a radius." + duration(float) : "Duration" : "0.5" : "How long the sound persists each time you insert it." + + soundtype(choices) : "Sound Type" : 0 : "The type of sound or smell will determine the reaction of NPCs that sense it." = + [ + 0: "Select one" + 1: "Combat" + 2: "World" + //4: "Player (Don't use)" + 8: "Danger" + 16: "Bullet Impact" + 32: "Carcass" + 64: "Meat" + 128: "Garbage" + 256: "Thumper" + 4096: "Move Away - Most NPCs will clear the radius of this sound when heard." + 16384 : "Readiness - Low" + 32768 : "Readiness - Medium" + 65536 : "Readiness - High" + ] + + soundcontext(choices) : "Additional sound context (optional)" : 0 : "Optional settings specifying such things as who can or cannot hear the sound." = + [ + 0 : "Select one" + 8388608 : "Only Combine hear" + 67108864 : "Combine cannot hear" + ] + + locationproxy(target_destination) : "Location Proxy" : "" : "The name of an entity to use as a proxy to determine the location at which to make the sound. If you specify an entity here, the sound will be made at that entity's location (!player included)" +] + + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Parentname) = env_rotorwash : "Rotorwash Effect" +[ + spawnflags(Flags) = + [ + 1 : "Ignore solid" : 0 + ] + + input DoEffect(Void) : "Make a rotor puff" +] + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Parentname) studio("models/props_combine/combine_mine01.mdl") = combine_mine : "Combine Land Mine" +[ + bounce(choices) : "Bounce" : 1 : "Whether the mine should bounce up in the air before exploding." = + [ + 0: "No" + 1: "Yes" + ] + + LockSilently(choices) : "Lock Silently" : 1 : "If yes, mine plays no sound when clamps close" = + [ + 0: "No" + 1: "Yes" + ] + + StartDisarmed(choices) : "Start Disarmed" : 0 : "If yes, mine begins dormant." = + [ + 0 : "No" + 1 : "Yes" + ] + + Modification(choices): "Citizen modified" : 0 : "'Normal' is default Combine behavior. 'Cavern' detonates earlier in its jump, and has a different default skin." = + [ + 0 : "Normal" + 1 : "Cavern" + ] + + // Inputs + input Disarm(void) : "Disarm this mine (open hooks and shut off) if not placed by player." + + // Outputs + output OnPulledUp(void) : "Fires when this mine is uprooted with physgun" +] + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Parentname) = env_ar2explosion : + "AR2 explosion visual effect. Big, volume-filling brown cloud. Does not cause damage or emit sound." +[ + input Explode(Void) : "Make the explosion effect." + material(material) : "Particle Material" : "particle/particle_noisesphere" : "The material to use for each particle in the explosion." +] + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname) = env_starfield : "Starfield effect" +[ + input TurnOn(void) : "Turn on" + input TurnOff(void) : "Turn off" + input SetDensity(float) : "Set the density of the starfield. It's a multiplier, so 1 is the default." +] + +@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Parentname, Angles) = env_flare : "Flare" +[ + scale(float) : "Scale" : 1 + duration(float) : "Duration" : 30 + + spawnflags(Flags) = + [ + 1 : "No DLight" : 0 + 2 : "No Smoke" : 0 + 4 : "Infinite" : 0 + 8 : "Start off" : 0 + ] + + input Start(float) : "Starts the flare burning. The flare will burn for the specified number of seconds (0 = infinite)." + input Die(float) : "Causes the flare to fade out over the specified number of seconds, and then die (0 = die instantly)." + input Launch(float) : "Launch the flare forward with the specified speed." +] + + +@PointClass base(Targetname, Parentname, Angles) = env_muzzleflash : "Muzzle Flash" +[ + parentattachment(string) : "Parent Attachment" : "" : "The name of an attachment on the parent to hierarchically attach to." + scale(float) : "Scale" : "1" : "Size of the muzzle flash." + + input Fire(void) : "Fires the effect once." +] + + +@PointClass base(Targetname, Parentname) size(-4 -4 -4, 4 4 4) color(0 180 0) = env_terrainmorph : + "Morphs terrain by pulling vertices along a normal.\n\n" + + "Place this entity the desired distance from a terrain surface and set ANGLES " + + "to the normal along which you want to pull the surface's vertices. If you set the INSTANT spawnflag, " + + "the morph will take place instantly instead of over time.\n" +[ + startradius( integer ) : "Start Radius" : 500 : "Radius of the effect when morphing begins. Only this value is used" + + "if the effect is flagged to occur instantly." + goalradius( integer ) : "Goal Radius" : 100 : "Radius of the effect at the end of morphing. The radius of this effect will change from "+ + "Start Radius to Goal Radius over the duration of this effect. This value is ignored if the effect is flagged to occur instantly." + + duration( integer ) : "Duration" : 3 : "The morph will take place over this period of time (seconds). Ignored if flagged to occur instantly" + + fraction( integer ) : "Displacement Fraction" : 1 : "If set to 1, the terrain surface will be pulled exactly to this entity's position." + + " If set to 0.5, the surface will be pulled exactly half way to this entity's position. " + + "If set to 2, the surface will be pulled to an imaginary point twice as far away as this entity. " + + "(Any Displacement Fraction greater than 1.0 will result in clipping. The surface cannot be pulled beyond " + + "This entity's position and any vertices attemping will clip to this entity's position. You may use this feature to create mesas.)" + + // Inputs + input BeginMorph(void) : "Begin Morph" + + spawnflags(flags) = + [ + 1: "Instant" : 0 + ] +] + +@PointClass base(Targetname, EnableDisable) = logic_achievement : + "Sends an achievement system related event from the map to the achievement system." +[ + //keyvalues + + AchievementEvent(choices) : "Achievement Event" : 0 : "Named event is sent to the achievement system when this entity receives a 'FireEvent' input." = + [ + "ACHIEVEMENT_EVENT_HL2_HIT_CANCOP_WITHCAN" : "[HL2] Hit the trashcan cop with the can." + "ACHIEVEMENT_EVENT_HL2_PUT_CANINTRASH" : "[HL2] Put the can in the trash." + "ACHIEVEMENT_EVENT_HL2_ESCAPE_APARTMENTRAID" : "[HL2] Escape the apartment block raid." + "ACHIEVEMENT_EVENT_HL2_BREAK_MINITELEPORTER" : "[HL2] Break the mini-teleporter in Kleiner's lab." + "ACHIEVEMENT_EVENT_HL2_GET_CROWBAR" : "[HL2] Get the crowbar." + "ACHIEVEMENT_EVENT_HL2_GET_AIRBOAT" : "[HL2] Get the Airboat" + "ACHIEVEMENT_EVENT_HL2_GET_AIRBOATGUN" : "[HL2] Get the airboat's mounted gun." + "ACHIEVEMENT_EVENT_HL2_FIND_VORTIGAUNTCAVE" : "[HL2] Discover the hidden singing vortigaunt cave in chapter Water Hazard." + "ACHIEVEMENT_EVENT_HL2_KILL_CHOPPER" : "[HL2] Destroy the hunter-chopper in Half-Life 2." + "ACHIEVEMENT_EVENT_HL2_FIND_HEVFACEPLATE" : "[HL2] Find the HEV Suit Charger faceplate in Eli's scrapyard." + "ACHIEVEMENT_EVENT_HL2_GET_GRAVITYGUN" : "[HL2] Get the Gravity Gun in Black Mesa East" + "ACHIEVEMENT_EVENT_HL2_MAKEABASKET" : "[HL2] Make a basket in Eli's scrapyard." + "ACHIEVEMENT_EVENT_HL2_BEAT_RAVENHOLM_NOWEAPONS_START" : "[HL2] Beat Ravenholm Gravgun only. (Start)." + "ACHIEVEMENT_EVENT_HL2_BEAT_RAVENHOLM_NOWEAPONS_END" : "[HL2] Beat Ravenholm Gravgun only. (End)." + "ACHIEVEMENT_EVENT_HL2_BEAT_CEMETERY" : "[HL2] Escort Gregori safely through the church cemetery." + "ACHIEVEMENT_EVENT_HL2_KILL_ENEMIES_WITHCRANE" : "[HL2] Kill 3 enemies using the crane." + "ACHIEVEMENT_EVENT_HL2_PIN_SOLDIER_TOBILLBOARD" : "[HL2] Pin the soldier to the billboard with the crossbow in chapter Highway 17." + "ACHIEVEMENT_EVENT_HL2_KILL_ODESSAGUNSHIP" : "[HL2] Defend Little Odessa from the gunship attack." + "ACHIEVEMENT_EVENT_HL2_BEAT_DONTTOUCHSAND" : "[HL2] Cross the antlion beach in chapter Sandtraps without touching the sand." + "ACHIEVEMENT_EVENT_HL2_ENTER_NOVAPROSPEKT" : "[HL2] Get inside Nova Prospekt" + "ACHIEVEMENT_EVENT_HL2_BEAT_TURRETSTANDOFF2" : "[HL2] Survive the second turret standoff in the prison." + "ACHIEVEMENT_EVENT_HL2_FOLLOWFREEMAN" : "[HL2] Gain command of a squad of rebels in the uprising" + "ACHIEVEMENT_EVENT_HL2_BEAT_TOXICTUNNEL" : "[HL2] Get through the toxic tunnel under City 17 in Half-Life 2." + "ACHIEVEMENT_EVENT_HL2_BEAT_PLAZASTANDOFF" : "[HL2] Survive the Generator Plaza standoff in chapter Anticitizen One." + "ACHIEVEMENT_EVENT_HL2_KILL_ALLC1709SNIPERS" : "[HL2] Kill all of the snipers in City 17." + "ACHIEVEMENT_EVENT_HL2_BEAT_SUPRESSIONDEVICE" : "[HL2] Shut down the supression device by disabling its generators." + "ACHIEVEMENT_EVENT_HL2_BEAT_C1713STRIDERSTANDOFF" : "[HL2] Survive the rooftop strider battle in the ruins of City 17." + "ACHIEVEMENT_EVENT_HL2_BEAT_GAME" : "[HL2] Destroy the Citadel's reactor core (Beat Game)." + + "ACHIEVEMENT_EVENT_HL2_GMAN_KLEINERSLAB" : "[HL2] G-Man: trainstation_05 on Kleiner's Monitor" + "ACHIEVEMENT_EVENT_HL2_GMAN_TRAINCAR" : "[HL2] G-Man: canals_01 on TV in vort train car" + "ACHIEVEMENT_EVENT_HL2_GMAN_REDBARN" : "[HL2] G-Man: canals_06 at the red barn" + "ACHIEVEMENT_EVENT_HL2_GMAN_OUTDOORMONITOR" : "[HL2] G-Man: canals_06 on giant outdoor monitor" + "ACHIEVEMENT_EVENT_HL2_GMAN_CATWALK" : "[HL2] G-Man: canals_12 on catwalk" + "ACHIEVEMENT_EVENT_HL2_GMAN_DAM" : "[HL2] G-Man: canals_13 to the left of the dam" + "ACHIEVEMENT_EVENT_HL2_GMAN_TRAINTRACKS" : "[HL2] G-Man: town_05 at the end of the tracks" + "ACHIEVEMENT_EVENT_HL2_GMAN_ODESSA" : "[HL2] G-Man: coast_03 odessa meeting" + "ACHIEVEMENT_EVENT_HL2_GMAN_PRISONMONITOR" : "[HL2] G-Man: prison_02 control room monitor" + "ACHIEVEMENT_EVENT_HL2_GMAN_FOYERTV" : "[HL2] G-Man: c17_02 on TV in the destroyed foyer" + + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_KLEINERSLAB" : "[HL2] Lamda: Secret entrance to Kleiner's lab in trainstation_05" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CANALSSTATION" : "[HL2] Lamda: canals_01 building by tracks" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_VENTCRAWL" : "[HL2] Lamda: canals_01 vent crawl" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CANALSTUNNEL" : "[HL2] Lamda: canals_01a tunnel" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SEWERGRATE" : "[HL2] Lamda: canals_02 below grate in sewer corridor" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_STEAMPIPE" : "[HL2] Lamda: canals_03 under steam pipe" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CURVEDROOM" : "[HL2] Lamda: canals_05 on second level of curved room" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SHANTYTOWN" : "[HL2] Lamda: canals_05 before shanty town" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_TUNNELLADDER" : "[HL2] Lamda: canals_06 on overhead metal walkway in tunnel" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_REDBARN" : "[HL2] Lamda: canals_06 at the red barn" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_FLOATINGRAMP" : "DON'T USE ME [HL2] Lamda: canals_06 outside the pipe at floating ramp puzzle" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_ZOMBIEAMBUSH" : "[HL2] Lamda: canals_06 outside exploded tanker (zombie ambush)" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_BELOWAPCS" : "[HL2] Lamda: canals_07 in the wall below apcs" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_COUNTERWEIGHT" : "[HL2] Lamda: canals_08 in counterweighted basket" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_RAILWAYBRIDGE" : "[HL2] Lamda: canals_08 behind railway bridge piling" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_TUNNELPLATFORMS" : "[HL2] Lamda: canals_09 on wooden platforms in tunnel" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_BANKEDCANAL" : "[HL2] Lamda: canals_10 up banked side of canals passage" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CANALWALL" : "[HL2] Lamda: canals_10 in wall opening after canals passage" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CHANNELSPLIT" : "[HL2] Lamda: canals_12 right side of split channel" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_BMEDOCK" : "[HL2] Lamda: eli_01 Black Mesa East dock" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_GENERATORS" : "[HL2] Lamda: town_01 through ductwork behind generators" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CARCRUSHERARENA" : "[HL2] Lamda: town_01 behind fence in car-crusher arena" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_RAVENHOLMATTIC" : "[HL2] Lamda: town_01a in attic opposite map exit" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_MINETUNNELEXIT" : "[HL2] Lamda: town_05 tunnel exit from ravenholm mine" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_COASTSHACK" : "[HL2] Lamda: coast_01 shack after the buggy jump" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_POISONSHACK" : "[HL2] Lamda: coast_03 poison headcrab shack" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_GUNSHIPVAN" : "[HL2] Lamda: coast_04 broken down van after the gunship" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SUICIDECITIZEN" : "[HL2] Lamda: coast_05 suicide citizen's gas tank cache" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_RAILROADSHACK" : "[HL2] Lamda: coast_07 fenced off area outside of town" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_COASTABOVEBATTERY" : "[HL2] Lamda: coast_09 above the bathroom in the battery puzzle building" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SANDSHACK" : "[HL2] Lamda: coast_11 elevated shack after the board bridge" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_GMANCACHE" : "[HL2] Lamda: prison_02 in the boarded up area of the gman sighting" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_CELLCACHE" : "[HL2] Lamda: prison_03 in the prison cell" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_POISONLAUNDRY" : "[HL2] Lamda: prison_05 in the laundry utility room" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SODAMACHINE" : "[HL2] Lamda: prison_06 on top of the soda machine" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_STREETWARDOGWALL" : "[HL2] Lamda: c17_02 next to first Combine wall" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_STREETWARSHACK" : "[HL2] Lambda: c17_04 inside shack before metrocop holdout" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_STREETWARFENCE" : "[HL2] Lamda: c17_05 behind fence before end of map" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_FREEWAYTUNNEL" : "[HL2] Lamda: c17_06a at start of freeway tunnel" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_DRAWBRIDGE" : "[HL2] Lamda: c17_06b before second drawbridge" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_PLAZAFENCE" : "[HL2] Lamda: c17_06b behind fence before end of map" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_SEWERSCATWALKS" : "[HL2] Lamda: c17_08 lowest catwalk at sewer entrance" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_POISONZOMBIEALCOVE" : "[HL2] Lamda: c17_08 wall cubby next to poison zombie" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_PIPEHOPTUNNEL" : "[HL2] Lamda: c17_08 end of pipe hop tunnel by poison zombie" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_EXITCATWALK" : "[HL2] Lamda: c17_08 side of building next to hallway leading to level exit" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_ENDOFC1712B" : "[HL2] Lamda: c17_12b at map exit" + "ACHIEVEMENT_EVENT_HL2_LAMDACACHE_WHITEVAN" : "[HL2] Lamda: c17_13 white van in underground garage" + + + + "ACHIEVEMENT_EVENT_EP1_BEAT_MAINELEVATOR" : "[EP1] Reach the bottom of the main elevator shaft." + "ACHIEVEMENT_EVENT_EP1_BEAT_CITADELCORE_START" : "[EP1] Contain the citadel core. (start)" + "ACHIEVEMENT_EVENT_EP1_BEAT_CITADELCORE_END" : "[EP1] Contain the citadel core. (end)" + "ACHIEVEMENT_EVENT_EP1_BEAT_CITADELCORE" : "[EP1] Contain the citadel core." + "ACHIEVEMENT_EVENT_EP1_BEAT_CITADELCORE_NOSTALKERKILLS" : "[EP1] Contain the citadel core with no stalker kills" + "ACHIEVEMENT_EVENT_EP1_BEAT_GARAGEELEVATORSTANDOFF" : "[EP1] Survive long enough to get on the elevator in the parking garage." + "ACHIEVEMENT_EVENT_EP1_BEAT_HOSPITALATTICGUNSHIP" : "[EP1] Destroy the gunship in the hospital attic." + "ACHIEVEMENT_EVENT_EP1_BEAT_CITIZENESCORT_NOCITIZENDEATHS_START" : "[EP1] Don't let any citizens die when escorting them to the escape train (start)." + "ACHIEVEMENT_EVENT_EP1_BEAT_CITIZENESCORT_NOCITIZENDEATHS_END" : "[EP1] Don't let any citizens die when escorting them to the escape train (end)." + "ACHIEVEMENT_EVENT_EP1_BEAT_GAME_NOHEALTHPICKUPS_START" : "[EP1] Beat EP1 without picking up any health. (start)" + "ACHIEVEMENT_EVENT_EP1_BEAT_GAME_NOHEALTHPICKUPS_END" : "[EP1] Beat EP1 without picking up any health. (end)" + + "ACHIEVEMENT_EVENT_EP1_START_GAME" : "[EP1] Began EP1 (for tracking One Free Bullet)" + "ACHIEVEMENT_EVENT_EP1_BEAT_GAME" : "[EP1] Beat EP1 (for tracking One Free Bullet)" + + + + "ACHIEVEMENT_EVENT_EP2_BEAT_ANTLIONINVASION" : "[EP2] Hold off the antlion invasion inside the mine shaft" + "ACHIEVEMENT_EVENT_EP2_BEAT_ANTLIONGUARDS" : "[EP2] Defeat both antlion guards outside the White Forest" + "ACHIEVEMENT_EVENT_EP2_BEAT_HUNTERAMBUSH" : "[EP2] Survive the Hunter ambush at the radio tower." + + "ACHIEVEMENT_EVENT_EP2_KILL_CHOPPER_NOMISSES_START" : "[EP2] Start of the chopper arena battle." + "ACHIEVEMENT_EVENT_EP2_KILL_CHOPPER_NOMISSES_END" : "[EP2] End of the chopper arena battle." + + "ACHIEVEMENT_EVENT_EP2_KILL_COMBINECANNON" : "[EP2] Destroy the Combine Cannon in the junkyard." + "ACHIEVEMENT_EVENT_EP2_BEAT_RACEWITHDOG" : "[EP2] Beat DOG in the race to the White Forest." + "ACHIEVEMENT_EVENT_EP2_BEAT_ROCKETCACHEPUZZLE" : "[EP2] Unlock the Rocket Launcher lambda cache in chapter Under The Radar." + "ACHIEVEMENT_EVENT_EP2_BEAT_WHITEFORESTINN" : "[EP2] Survive the invasion at White Forest Inn" + "ACHIEVEMENT_EVENT_EP2_PUT_ITEMINROCKET" : "[EP2] Send into space." + "ACHIEVEMENT_EVENT_EP2_BEAT_MISSILESILO2" : "[EP2] Secure the launch doors on missile silo 2." + "ACHIEVEMENT_EVENT_EP2_BEAT_GAME" : "[EP2] Save the missile silo from the Combine offensive." + "ACHIEVEMENT_EVENT_EP2_BEAT_OUTLAND12_NOBUILDINGSDESTROYED" : "[EP2] Save the missile silo without losing any buildings." + + "ACHIEVEMENT_EVENT_EP2_FIND_RADAR_CACHE" : "[EP2] Found a radar cache in chapter Under The Radar." + + "ACHIEVEMENT_EVENT_EP2_RADARCACHE_VAN" : "[EP2] Radar Cache: 09 first van cache" + "ACHIEVEMENT_EVENT_EP2_RADARCACHE_RPG" : "[EP2] Radar Cache: 09 rpg cache" + "ACHIEVEMENT_EVENT_EP2_RADARCACHE_SHACK" : "[EP2] Radar Cache: 09 shack floor board cache" + "ACHIEVEMENT_EVENT_EP2_RADARCACHE_CAVE" : "[EP2] Radar Cache: 10 cave cache" + "ACHIEVEMENT_EVENT_EP2_RADARCACHE_HANGING" : "[EP2] Radar Cache: 10 hanging crate cache" + + + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_01" : "[EP2] Web Cache: ep2_outland_01a underwater cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_02" : "[EP2] Web Cache: ep2_outland_03 grim pinata cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_03" : "[EP2] Web Cache: ep2_outland_03 first arena exit tunnel wall cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_04" : "[EP2] Web Cache: ep2_outland_03 second arena exit tunnel ceiling cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_05" : "[EP2] Web Cache: ep2_outland_03 zombine grenade trap cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_06" : "[EP2] Web Cache: ep2_outland_04 gear cave entry wall cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_07" : "[EP2] Web Cache: ep2_outland_04 gear cave rockfall ceiling cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_08" : "[EP2] Web Cache: ep2_outland_04 gear cave barnacle ceiling cache" + "ACHIEVEMENT_EVENT_EP2_WEBCACHE_09" : "[EP2] Web Cache: ep2_outland_04 gear cave poison crab wall cache" + + "ACHIEVEMENT_EVENT_PORTAL_GET_PORTALGUNS" : "[PORTAL] Acquire the fully powered Aperture Science Handheld Portal Device." + "ACHIEVEMENT_EVENT_PORTAL_KILL_COMPANIONCUBE" : "[PORTAL] Do whatever it takes to survive." + "ACHIEVEMENT_EVENT_PORTAL_ESCAPE_TESTCHAMBERS" : "[PORTAL] Make the correct party escort submission position decision." + "ACHIEVEMENT_EVENT_PORTAL_BEAT_GAME" : "[PORTAL] Complete Portal." + ] + + // Inputs + input Toggle(void) : "Toggle the relay between enabled and disabled." + input FireEvent(void) : "Tells the achievement system the specifed event has occured." + + // Outputs + output OnFired(void) : "When the event fires, this fires." +] + + +//------------------------------------------------------------------------- +// +// Camera/monitor entities +// +//------------------------------------------------------------------------- +@PointClass base(Parentname, Angles) studioprop("models/editor/camera.mdl") = point_camera : "Camera" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + ] + + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + FOV(float) : "FOV" : 90 : "Field of view in degrees" +// resolution(float) : "resolution" : 256 : "width/height of the render target for the camera" + UseScreenAspectRatio(choices) : "Screen Aspect Ratio" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogEnable(choices) : "Fog Enable" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + fogColor(color255) : "Fog Color" : "0 0 0" + fogStart(float) : "Fog Start" : 2048 : "The near fog plane." + fogEnd(float) : "Fog End" : 4096 : "The far fog/clipping plane." + fogMaxDensity(float) : "Fog Max Density [0..1]" : 1 : "The maximum fog density. 0=no fog, 1=full fog." + + // Inputs + input ChangeFOV(string) : "Changes camera's FOV over time" + input SetOnAndTurnOthersOff(void) : "Turn the camera on, and turn all other cameras off." + input SetOn(void) : "Turn the camera on." + input SetOff(void) : "Turn the camera off." +] + +@SolidClass base(func_brush) = func_monitor : + "A monitor that renders the view from a given point_camera entity." +[ + target(target_destination) : "Camera name" + + // Inputs + input Toggle(void) : "Toggle - If on, turn off, if off, turn on." + input Enable(void) : "Enable." + input Disable(void) : "Disable." + input SetCamera(string) : "Sets the camera to use for this monitor. Takes the name of a point_camera entity in the map." +] + +@SolidClass base(func_brush) = func_bulletshield : + "A shield that stops only bullets." +[ + +] + + +//------------------------------------------------------------------------- +// +// Vehicles. +// +//------------------------------------------------------------------------- +@BaseClass base(Targetname, Origin, Global, prop_static_base) = BaseVehicle +[ + vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/jeep_test.txt" + actionScale(float) : "Scale of action input / framerate" : "1" + + // Inputs + input Action(float) : "Set the speed of the action animation" + + input TurnOn(void) : "Turn on: Start engine & enable throttle" + input TurnOff(void) : "Turn off: Stop engine, disable throttle, engage brakes." + + input Lock(void) : "Prevent the player from entering or exiting the vehicle." + input Unlock(void) : "Re-allow the player to enter or exit the vehicle." +] + + +@BaseClass base(BaseVehicle) = BaseDriveableVehicle +[ + VehicleLocked(choices) : "Start locked" : 0 = + [ + 0 : "No" + 1 : "Yes" + ] + + // Outputs + output PlayerOn(void) : "Player entered the vehicle" + output PlayerOff(void) : "Player exited the vehicle" + + output PressedAttack(void) : "Player Pressed attack key" + output PressedAttack2(void) : "Player Pressed attack2 key" + + output AttackAxis(string) : "State of attack button [0,1]" + output Attack2Axis(string) : "State of attack2 button [0,1]" + + // Inputs + input HandBrakeOn(void) : "Turns the handbrake on" + input HandBrakeOff(void): "Releases the handbrake" +] + +@PointClass base(BaseVehicle) studioprop() = prop_vehicle : + "Studiomodel vehicle that can be driven via inputs." +[ + // Inputs + input Steer(float) : "Steer the vehicle +/-1" + input Throttle(float) : "Throttle +/-1" + + spawnflags(flags) = + [ + 1 : "Always Think (Run physics every frame)" : 0 + ] +] + + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_driveable : + "Generic driveable studiomodel vehicle." +[ +] + +@PointClass base(Targetname, Angles) studio() = point_apc_controller : "APC Controller" +[ + spawnflags(flags) = + [ + 1 : "Active" : 0 + ] + + yawrate(string) : "Yaw rate" : "30" + yawtolerance(string) : "Yaw tolerance" : "15" + pitchrate(string) : "Pitch rate" : "0" + pitchtolerance(string) : "Pitch tolerance" : "20" + rotatestartsound(sound) : "Rotate Start Sound" : "" + rotatesound(sound) : "Rotate Loop Sound" : "" + rotatestopsound(sound) : "Rotate Stop Sound" : "" + minRange(string) : "Minmum target range" : "0" + maxRange(string) : "Maximum target range" : "0" + targetentityname(string) : "Name of entity I should follow/attack" : "" + + // Inputs + input Activate(void) : "Turn the APC rockets on" + input Deactivate(void) : "Turn the APC rockets off (go dormant)" + + // Outputs + output OnFireAtTarget(void) : "Fires when a valid target is found and the APC should shoot rockets" +] + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_apc : + "APC with mounted guns, can only be driven by a vehicle driver or a npc_apcdriver." +[ + missilehint(target_destination) : "Missile Hint Target" : "" : "Name of one or more info_apc_missile_hint entities to use to determine what to hit." + + //Inputs + input FireMissileAt(target_destination) : "A target to fire a missile at" + input Destroy(void) : "Causes the APC to blow up." + + // Outputs + output OnFiredMissile(void) : "Fired when the APC shoots a missile." + output OnDeath(void) : "Fired when the APC is killed." + output OnDamaged(void) : "Fired when the APC is damaged." + output OnDamagedByPlayer(void) : "Fired when the APC is damaged by the player." +] + +@SolidClass base(Targetname, Origin, Angles, EnableDisable) = info_apc_missile_hint : + "Something that helps APC missiles guide. If the missile can hit the associated target entity"+ + "between the time it takes the current enemy to enter + leave the hint, then the missile will guide to the entity." +[ + target(target_destination) : "Target Entity" : "" : "The entity that the missile will guide towards if the conditions are met." +] + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_jeep : + "Driveable studiomodel jeep." +[ + input StartRemoveTauCannon(void) : "Start the tau removal sequence." + input FinishRemoveTauCannon(void) : "Finish the tau removal sequence." + + // FIXME: These will move into episodic + input LockEntrance( void ) : "Stops NPC's from entering the vehicle until unlocked." + input UnlockEntrance( void ) : "Allows NPC's to enter the vehicle." + input LockExit( void ) : "Stops NPC's from exiting the vehicle until unlocked." + input UnlockExit( void ) : "Allows NPC's to exit the vehicle." + input EnableRadar( void ) : "Turn on the Jalopy radar" + input DisableRadar( void ) : "Turn off the Jalopy radar" + input EnableRadarDetectEnemies( void ) : "Enable Jalopy radar to detect Striders and Hunters" + input AddBusterToCargo( void ) : "Put a striderbuster in the cargo trigger" + input SetCargoHopperVisibility ( bool ) : "Set the strider buster hopper thingy to be visible, or invisible." + + input DisablePhysGun(void) : "Disable physgun interactions with the jeep." + input EnablePhysGun(void) : "Enable physgun interactions with the jeep (default)." + + input CreateLinkController(void) : "Automatically builds and attaches a link controller to the car, which cuts the node connections under the car while the car is standing still." + input DestroyLinkController(void) : "Destroys the link controller created by CreateLinkController." + + + CargoVisible(choices): "Hopper Visible" : 0 : "Is the striderbuster cargo hopper visible?" = + [ + 0 : "No" + 1 : "Yes" + ] + + spawnflags(Flags) = + [ + 1 : "HUD Locator Precache" : 0 + ] + + + // FIXME: These are going to change! + output OnCompanionEnteredVehicle(void) : "Companion has entered the vehicle." + output OnCompanionExitedVehicle(void) : "Companion has exited the vehicle." + output OnHostileEnteredVehicle(void) : "Hostile has entered the vehicle." + output OnHostileExitedVehicle(void) : "Hostile has exited the vehicle." +] + +@PointClass base(BaseDriveableVehicle) studioprop() = vehicle_viewcontroller : + "Vehicle hack to control player view" +[ + input ForcePlayerIn(string) : "Force the player into the vehicle. The animation to use can be specified in the parameter. Without a parameter, the player just teleports." + input ForcePlayerOut(void) : "Force the player out of the vehicle." +] + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_airboat : + "Driveable studiomodel airboat." +[ + model(studio) : "World model" : "models/airboat.mdl" + vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/airboat.txt" + EnableGun(choices) : "Has Gun" : 0 : "Whether the airboat's gun is enabled or disabled." = + [ + 0 : "No" + 1 : "Yes" + ] + input EnableGun(bool) : "Enables or disables the airboat gun and associated crosshair." + input InputStartRotorWashForces(void) : "The airboat will start to be blown around by the helicopter rotor wash." + input InputStopRotorWashForces(void) : "The airboat will no longer be blown around by the helicopter rotor wash." +] + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_cannon : + "Driveable studiomodel cannon." +[ + +] + +@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_crane : + "Driveable studiomodel crane." +[ + magnetname(target_destination) : "Magnet entity" : "" + + input ForcePlayerIn(void) : "Force the player to get into the crane. Only works in singleplayer." +] + +@PointClass base(BaseDriveableVehicle, Parentname) studioprop() = prop_vehicle_prisoner_pod : + "Combine prisoner pod that the player can ride in." +[ + model(studio) : "World model" : "models/vehicles/prisoner_pod.mdl" + vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/prisoner_pod.txt" + + input Open(void) : "Plays the pod's open animation and unlocks the pod for entry or exit." + input Close(void) : "Plays the pod's close animation and locks the pod for entry or exit." + input EnterVehicle(void) : "Forces the activator (or player) into the pod." + input EnterVehicleImmediate(void) : "Forces the activator (or player) into the pod without enter/exit animations." + input ExitVehicle(void) : "Boots the prisoner out of the pod." + + output OnOpen(void) : "Fired when the pod is open enough to enter." + output OnClose(void) : "Fired when the pod too closed to enter." +] + + +@PointClass base(BaseSpeaker) iconsprite("editor/ambient_generic.vmt") = env_speaker : "Announcement Speaker" +[ +] + +//------------------------------------------------------------------------- +// Script entities +//------------------------------------------------------------------------- + +@PointClass base(Angles,Targetname,Parentname) = script_tauremoval : "Script: Custom entity used to handle the tau removal sequence in coast. (unused)" +[ + vortigaunt(target_destination) : "Vortigaunt to use" + + // Inputs + input StartScript(void) : "Start the script." + input RemoveTau(void) : "Start removing the Tau cannon now." +] + +@PointClass base(Targetname) = script_intro : "Script: Custom entity used to handle the intro sequence." +[ + // Inputs + input Activate(void) : "Take control of the player's view and start blending the two scenes." + input Deactivate(void) : "Stop controlling the view." + input SetCameraViewEntity(string) : "Set the viewpoint to blend with the player's viewpoint." + input SetBlendMode(integer) : "Set the blending mode to use." + input SetFOV(integer) : "Set the fov for the second camera." + input SetNextFOV(integer) : "Set the FOV to blend to over time. Follow this with a SetFOVBlendTime input to start the fov blend." + input SetFOVBlendTime(float) : "Set the amount of time it should take to blend to the next fov target, and start blending." + input SetNextBlendMode(integer) : "Set the blending mode to blend to over time. Follow this with a SetNextBlendTime input to start the mode blend." + input SetNextBlendTime(float) : "Set the amount of time it should take to blend to the next mode, and start blending." + input FadeTo(string) : "Fade to a specific alpha amount of an amount of time. Parameters: " + input SetFadeColor(string) : "Set the fade color. Parameters: " + + alternatefovchange(choices) : "Match env_zoom's FOV transition" : 0 : "Whether the script should match env_zoom's FOV transition." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +//------------------------------------------------------------------------- +// +// Special effects +// +//------------------------------------------------------------------------- + +@PointClass base(Angles,Targetname,Parentname) = env_citadel_energy_core : "Special effect for the energy cores in citadel." +[ + spawnflags(Flags) = + [ + 1 : "No small particles" : 0 + 2 : "Start on" : 0 + ] + + scale(float) : "Scale" : 1 : "Scale of the effect. 1 is the default size, 2 is twice that, etc." + + // Inputs + input StartCharge(float) : "Start charging the core over specified number of seconds." + input StartDischarge(void) : "Start discharging the core over specified number of seconds." + input Stop(float) : "Stops the effect at any point." +] + +@PointClass base(Angles,Targetname,Parentname) size(-4 -4 -4, 4 4 4) color(0 0 255) line( 0 0 255, targetname, EndTargetName) = env_alyxemp : "Special effect for the Alyx's EMP device." +[ + Type(choices) : "EMP Type" : 0 = + [ + 0 : "Small" + 1 : "Large" + ] + + EndTargetName(target_destination) : "Target Entity" : "" : "Entity to use as a target endpoint." + + // Inputs + input StartCharge(float) : "Start charging the effect over specified number of seconds." + input StartDischarge(void) : "Start discharging the effect over specified number of seconds." + input Stop(float) : "Stops the effect at any point." + input SetTargetEnt(string) : "Sets the target entity for the effect." +] + + +@PointClass = test_sidelist : "Test entity for Ken!" +[ + sides(sidelist) : "Sides" +] + + +//------------------------------------------------------------------------- +// Countdown timer for the teleporter at the end of the game +//------------------------------------------------------------------------- + +@PointClass base(Targetname) iconsprite("editor/info_target.vmt") = info_teleporter_countdown : "Countdown timer for the teleporter. The status of the teleporter will appear on vgui_screen entities whose panel is 'teleport_countdown_screen'." +[ + // Inputs + input StartCountdown(float) : "Starts the teleporter countdown. Requires an argument which is the number of seconds for the countdown." + input StopCountdown(void) : "Stops the countdown permanently" + input Disable(void) : "Pauses the countdown due to a temporary malfunction. A warning sign will appear on the linked vgui screens." + input Enable(void) : "Restarts the countdown since the malfunction is finished." +] + + + +@PointClass base(BaseDriveableVehicle, Parentname) studioprop() = prop_vehicle_choreo_generic : + "Generic Choreo vehicle used for magical events." +[ + model(studio) : "World model" : "models/vehicles/prisoner_pod.mdl" + vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/choreo_vehicle.txt" + + input Open(void) : "Plays the vehicle's open animation and unlocks the vehicle for entry or exit." + input Close(void) : "Plays the vehicle's close animation and locks the vehicle for entry or exit." + input EnterVehicle(void) : "Forces the activator (or player) into the vehicle." + input EnterVehicleImmediate(void) : "Forces the activator (or player) into the vehicle without enter/exit animations." + input ExitVehicle(void) : "Boots the prisoner out of the vehicle." + input Viewlock(bool) : "Set true to prevent Gordon from looking around *at all*. Set false to let him look within limits." + input SetAnimation(string) : "Force the prop to play an animation. The parameter should be the name of the animation." + + output OnOpen(void) : "Fired when the vehicle is open enough to enter." + output OnClose(void) : "Fired when the vehicle too closed to enter." + + ignoremoveparent(choices) : "Ignore Move Parent on Exit" : 0 : "Should the player ignore this vehicle's move parent went performing exit checks." = + [ + 0 : "No" + 1 : "Yes" + ] + + ignoreplayer(choices) : "Ignore Player collision" : 0 : "The player wont collide against this vehicle when moving around." = + [ + 0 : "No" + 1 : "Yes" + ] +] + +@FilterClass base(BaseFilter) iconsprite("editor/filter_class.vmt") = filter_combineball_type : + "A filter that filters by combine ball type." +[ + balltype(choices) : "Ball Type" : 1 = + [ + 0 : "Not Thrown (in combine ball field, etc)" + 2 : "Thrown/Launched by the player's physcannon" + 3 : "Launched by point_combine_ball_launcher" + ] +] + +@PointClass base(Targetname) = env_entity_dissolver: "Entity Dissolver" +[ + input Dissolve(string) : "Dissolve target, if no target is passed it'll use the target specified in the target field." + target(target_destination) : "Target to Dissolve" : "" : "Targetname of the entity you want to dissolve." + + magnitude(integer) : "Magnitude" : 250 : "How strongly to push away from the center." + + + dissolvetype(choices) : "Dissolve Type" : "Energy" = + [ + 0 : "Energy" + 1 : "Heavy electrical" + 2 : "Light electrical" + 3 : "Core Effect" + ] +] + +@PointClass base(Targetname, Angles) studio("models/props_combine/coreball.mdl") = prop_coreball: "Core Ball" +[ + input SetScaleX(vector) : "Scales the coreball in one Axis. Params: