From 48bee80d397612f973d2e97b4d4f85ce01103c5f Mon Sep 17 00:00:00 2001 From: Trico Everfire Date: Mon, 6 May 2024 01:17:38 +0200 Subject: [PATCH] init: rework string handling and add writing capability with formatting. --- .gitignore | 1 + include/fgdpp/fgdpp.h | 15 +- include/fgdpp/structs/entityproperties.h | 53 +- include/sourcepp/detail/StringUtils.h | 192 + src/fgdpp/fgdpp.cpp | 313 +- test/fgdpp.cpp | 54 + test/res/fgdpp/p2ce.fgd | 20334 +++++++++++++++++++++ test/res/test_results/.gitkeep | 0 8 files changed, 20872 insertions(+), 90 deletions(-) create mode 100755 test/res/fgdpp/p2ce.fgd create mode 100644 test/res/test_results/.gitkeep diff --git a/.gitignore b/.gitignore index 1c44de173..b2a8179e5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ cmake-build-*/ # Generated test/Helpers.h +test/res/test_results/test.fgd diff --git a/include/fgdpp/fgdpp.h b/include/fgdpp/fgdpp.h index 4b99b84aa..c569ed0e5 100644 --- a/include/fgdpp/fgdpp.h +++ b/include/fgdpp/fgdpp.h @@ -4,10 +4,12 @@ #include #include +#include "sourcepp/detail/StringUtils.h" #include "structs/entityproperties.h" namespace fgdpp { + class FGD { std::string rawFGDFile; @@ -34,7 +36,7 @@ class FGD { struct Token { TokenType type; Range range; - std::string_view string; + sourcepp::detail::UtilStringView string; int line; ParseError associatedError; }; @@ -43,20 +45,25 @@ class FGD { public: FGD(std::string_view path, bool parseIncludes); + FGD() = default; private: bool TokenizeFile(); - - //PARSER. + //PARSER. + bool ParseFile(); public: FGDFile FGDFileContents; ParsingError parseError{ParseError::NO_ERROR, 0, {0, 0}}; - bool ParseFile(); #ifdef FGDPP_UNIFIED_FGD bool TagListDelimiter(std::vector::const_iterator& iter, TagList& tagList); #endif + + //WRITE + + [[nodiscard]] sourcepp::detail::UtilStringView Write() const; + }; } // namespace fgdpp diff --git a/include/fgdpp/structs/entityproperties.h b/include/fgdpp/structs/entityproperties.h index 0888ca67b..6d7550687 100644 --- a/include/fgdpp/structs/entityproperties.h +++ b/include/fgdpp/structs/entityproperties.h @@ -8,6 +8,7 @@ namespace fgdpp { enum class ParseError { NO_ERROR = 0, TOKENIZATION_ERROR, +// PARSING_ERROR, INVALID_DEFINITION, INVALID_EQUALS, INVALID_OPEN_BRACE, @@ -39,16 +40,16 @@ struct ParsingError { #ifdef FGDPP_UNIFIED_FGD struct TagList { - std::vector tags; + std::vector tags; }; #endif struct ClassProperty { - std::vector properties; + std::vector properties; }; struct ClassProperties { - std::string_view name; + sourcepp::detail::UtilStringView name; std::vector classProperties; }; @@ -66,8 +67,8 @@ enum class EntityIOPropertyType { }; struct Choice { - std::string_view value; - std::string_view displayName; + sourcepp::detail::UtilStringView value; + sourcepp::detail::UtilStringView displayName; #ifdef FGDPP_UNIFIED_FGD TagList tagList; #endif @@ -76,18 +77,18 @@ struct Choice { struct Flag { int value; bool checked; - std::string_view displayName; + sourcepp::detail::UtilStringView displayName; #ifdef FGDPP_UNIFIED_FGD TagList tagList; #endif }; struct EntityProperties { - std::string_view propertyName; - std::string_view type; - std::string_view displayName; // The following 3 are optional and may be empty as a result. - std::string_view defaultValue; - std::vector propertyDescription; + sourcepp::detail::UtilStringView propertyName; + sourcepp::detail::UtilStringView type; + sourcepp::detail::UtilStringView displayName; // The following 3 are optional and may be empty as a result. + sourcepp::detail::UtilStringView defaultValue; + std::vector propertyDescription; bool readOnly; bool reportable; @@ -95,10 +96,10 @@ struct EntityProperties { TagList tagList; #endif - int choiceCount; // This is a special case if the EntityPropertyType is t_choices + // This is a special case if the EntityPropertyType is t_choices std::vector choices; - int flagCount; // This is a special case if the EntityPropertyType is t_flags + // This is a special case if the EntityPropertyType is t_flags std::vector flags; }; @@ -108,10 +109,10 @@ enum class IO { }; struct InputOutput { - std::string_view name; - std::vector description; + sourcepp::detail::UtilStringView name; + std::vector description; IO putType; - std::string_view stringType; + sourcepp::detail::UtilStringView stringType; EntityIOPropertyType type; #ifdef FGDPP_UNIFIED_FGD TagList tagList; @@ -120,17 +121,17 @@ struct InputOutput { #ifdef FGDPP_UNIFIED_FGD struct EntityResource { - std::string_view key; - std::string_view value; + sourcepp::detail::UtilStringView key; + sourcepp::detail::UtilStringView value; TagList tagList; }; #endif struct Entity { - std::string_view type; + sourcepp::detail::UtilStringView type; std::vector classProperties; - std::string_view entityName; - std::vector entityDescription; + sourcepp::detail::UtilStringView entityName; + std::vector entityDescription; std::vector entityProperties; std::vector inputOutput; #ifdef FGDPP_UNIFIED_FGD @@ -139,20 +140,20 @@ struct Entity { }; struct AutoVisGroupChild { - std::string_view name; - std::vector children; + sourcepp::detail::UtilStringView name; + std::vector children; }; struct AutoVisGroup { - std::string_view name; + sourcepp::detail::UtilStringView name; struct std::vector children; }; struct FGDFile { Range mapSize{0,0}; std::vector entities; - std::vector materialExclusions; - std::vector includes; + std::vector materialExclusions; + std::vector includes; std::vector autoVisGroups; }; diff --git a/include/sourcepp/detail/StringUtils.h b/include/sourcepp/detail/StringUtils.h index c4bcc3d9c..f6bac5648 100644 --- a/include/sourcepp/detail/StringUtils.h +++ b/include/sourcepp/detail/StringUtils.h @@ -2,7 +2,9 @@ #include #include +#include #include +#include namespace sourcepp::detail { @@ -22,4 +24,194 @@ void trim(std::string& s, std::string_view c); std::vector split(std::string_view s, char delim); +class UtilStringView + { + std::string owningString; + std::string_view string; + bool selfOwning = false; + public: + template + UtilStringView(T str) + { + + if( std::is_same::value) { + string = str; + return; + } + + if(std::is_same::value || std::is_same::value) + { + owningString = std::move(str); + string = std::string_view(owningString); + selfOwning = true; + return; + } + + } + + UtilStringView() = default; + + ~UtilStringView() = default; + + template + explicit UtilStringView(const UtilStringView& t){ + if(t.selfOwning) { + owningString = t.owningString; + string = std::string_view(owningString); + } else + string = t.string; + } + + template + explicit UtilStringView(UtilStringView&& t) + + { + if(t.selfOwning) { + owningString = std::move(t.owningString); + string = std::string_view(owningString); + this->selfOwning = true; + } else + string = t.string; + } + + std::string_view operator ->() const + { + return this->string; + } + + operator std::string_view() const { + return this->string; + } + + explicit operator std::string() const { + { + if(this->selfOwning) + return this->owningString; + return std::string(string); + } + } + + bool operator==( const std::string& str ) const + { + return string == str; + } + + bool operator==( const std::string_view& str ) const + { + return string == str; + } + + bool operator==( const char* str) const + { + return string == str; + } + + UtilStringView& operator=(const char* str) + { + owningString = str; + string = owningString; + selfOwning = true; + return *this; + } + + UtilStringView& operator=(std::string str) + { + owningString = std::move(str); + string = owningString; + selfOwning = true; + return *this; + } + + UtilStringView& operator=(std::string_view str) + { + string = str; + return *this; + } + + UtilStringView& operator<<(const char* str) + { + this->append(str); + return *this; + } + + UtilStringView& operator<<(std::string_view str) + { + this->append(str); + return *this; + } + + UtilStringView& operator<<(const std::string& str) + { + this->append(str); + return *this; + } + + static UtilStringView make_self_owning(std::string_view str) + { + UtilStringView selfOwningView = {}; + selfOwningView.owningString = str; + selfOwningView.string = selfOwningView.owningString; + selfOwningView.selfOwning = true; + return selfOwningView; + } + + static UtilStringView make_view(std::string_view str) + { + UtilStringView string_view = {}; + string_view.string = str; + return string_view; + } + + static UtilStringView make_view(const std::string& str) + { + UtilStringView string_view = {}; + string_view.string = str; + return string_view; + } + + static UtilStringView make_view(const char* str) + { + UtilStringView string_view = {}; + string_view.string = str; + return string_view; + } + + [[nodiscard]] size_t length() const + { + return this->string.length(); + } + + [[nodiscard]] const char* data() const + { + return this->string.data(); + } + + [[nodiscard]] std::string get_string() const + { + return std::string(string); + } + + [[nodiscard]] bool ends_with(std::string_view str) const + { + return this->string.ends_with(str); + } + + std::string_view& append(const std::string_view & str) + { + if(!this->selfOwning) { + this->owningString = string; + this->selfOwning = true; + } + this->owningString.append(str); + this->string = std::string_view(owningString); + return this->string; + } + + [[nodiscard]] bool isSelfOwning() const + { + return selfOwning; + } + + }; + } // namespace sourcepp::detail diff --git a/src/fgdpp/fgdpp.cpp b/src/fgdpp/fgdpp.cpp index 20a11d3cc..bcc53113a 100644 --- a/src/fgdpp/fgdpp.cpp +++ b/src/fgdpp/fgdpp.cpp @@ -6,25 +6,27 @@ #include #include #include +#include using namespace fgdpp; +using namespace sourcepp::detail; constexpr int FGDPP_MAX_STR_CHUNK_LENGTH = 1024; -constexpr char singleTokens[] = "{}[](),:=+"; -constexpr FGD::TokenType valueTokens[] = {FGD::OPEN_BRACE, FGD::CLOSE_BRACE, FGD::OPEN_BRACKET, FGD::CLOSE_BRACKET, FGD::OPEN_PARENTHESIS, FGD::CLOSE_PARENTHESIS, FGD::COMMA, FGD::COLUMN, FGD::EQUALS, FGD::PLUS}; -constexpr enum ParseError tokenErrors[] = {ParseError::INVALID_OPEN_BRACE, ParseError::INVALID_CLOSE_BRACE, ParseError::INVALID_OPEN_BRACKET, ParseError::INVALID_CLOSE_BRACKET, ParseError::INVALID_OPEN_PARENTHESIS, ParseError::INVALID_CLOSE_PARENTHESIS, ParseError::INVALID_COMMA, ParseError::INVALID_COLUMN, ParseError::INVALID_EQUALS, ParseError::INVALID_PLUS}; +constexpr const char singleTokens[11] = R"({}[](),:=+)"; +constexpr FGD::TokenType valueTokens[10] = {FGD::OPEN_BRACE, FGD::CLOSE_BRACE, FGD::OPEN_BRACKET, FGD::CLOSE_BRACKET, FGD::OPEN_PARENTHESIS, FGD::CLOSE_PARENTHESIS, FGD::COMMA, FGD::COLUMN, FGD::EQUALS, FGD::PLUS}; +constexpr enum ParseError tokenErrors[10] = {ParseError::INVALID_OPEN_BRACE, ParseError::INVALID_CLOSE_BRACE, ParseError::INVALID_OPEN_BRACKET, ParseError::INVALID_CLOSE_BRACKET, ParseError::INVALID_OPEN_PARENTHESIS, ParseError::INVALID_CLOSE_PARENTHESIS, ParseError::INVALID_COMMA, ParseError::INVALID_COLUMN, ParseError::INVALID_EQUALS, ParseError::INVALID_PLUS}; std::string_view typeStrings[9] = {"string", "integer", "float", "bool", "void", "script", "vector", "target_destination", "color255"}; EntityIOPropertyType typeList[9] = {EntityIOPropertyType::t_string, EntityIOPropertyType::t_integer, EntityIOPropertyType::t_float, EntityIOPropertyType::t_bool, EntityIOPropertyType::t_void, EntityIOPropertyType::t_script, EntityIOPropertyType::t_vector, EntityIOPropertyType::t_target_destination, EntityIOPropertyType::t_color255}; namespace { -bool ichar_equals(char a, char b) { +inline bool ichar_equals(char a, char b) { return std::tolower(static_cast(a)) == std::tolower(static_cast(b)); } -bool iequals(std::string_view lhs, std::string_view rhs) { +inline bool iequals(std::string_view lhs, std::string_view rhs) { return std::ranges::equal(lhs, rhs, ichar_equals); } @@ -34,6 +36,8 @@ bool FGD::TokenizeFile() { if (this->rawFGDFile.empty()) return false; + this->tokenList.reserve(rawFGDFile.length() / 2); + int pos = 1, ln = 1, i = 0; for (auto iterator = this->rawFGDFile.cbegin(); iterator != this->rawFGDFile.cend(); iterator++, i++, pos++) { @@ -75,7 +79,7 @@ bool FGD::TokenizeFile() { token.type = STRING; token.associatedError = ParseError::INVALID_STRING; - token.string = {currentIteration, iterator}; + token.string = std::string_view{currentIteration, iterator}; int subtractFromRange = static_cast(i - currentLength - token.string.length()); token.range = {currentPos, pos - (currentPos - subtractFromRange)}; @@ -106,7 +110,7 @@ bool FGD::TokenizeFile() { token.line = ln; token.type = COMMENT; - token.string = {currentIteration, iterator}; + token.string = std::string_view{currentIteration, iterator}; int subtractFromRange = static_cast(i - currentLength - token.string.length()); token.range = {currentPos, pos - (currentPos - subtractFromRange)}; @@ -142,7 +146,7 @@ bool FGD::TokenizeFile() { token.associatedError = ParseError::INVALID_DEFINITION; int newStrLength = 0; - token.string = {currentIteration, iterator}; + token.string = std::string_view{currentIteration, iterator}; int subtractFromRange = (i - currentLength - newStrLength); token.range = {currentPos, pos - (currentPos - subtractFromRange)}; @@ -187,7 +191,7 @@ bool FGD::TokenizeFile() { token.type = NUMBER; token.associatedError = ParseError::INVALID_NUMBER; - token.string = {currentIteration, iterator}; + token.string = std::string_view{currentIteration, iterator}; token.range = {currentPos, pos}; @@ -208,7 +212,7 @@ bool FGD::TokenizeFile() { token.type = tType; token.associatedError = tParseError; - token.string = {iterator, std::next(iterator)}; + token.string = std::string_view{iterator, std::next(iterator)}; token.range = {pos, pos + 1}; @@ -234,7 +238,7 @@ bool FGD::TokenizeFile() { token.type = LITERAL; token.associatedError = ParseError::INVALID_LITERAL; - token.string = {currentIteration, iterator}; + token.string = std::string_view{currentIteration, iterator}; int subtractFromRange = static_cast(i - currentLength - token.string.length()); token.range = {currentPos, pos - (currentPos - subtractFromRange)}; @@ -252,7 +256,7 @@ bool FGD::TokenizeFile() { } FGD::FGD(std::string_view path, bool parseIncludes) { - std::ifstream file{path.data()}; + std::ifstream file{path.data(), std::ios::binary}; if (!file.is_open()) { this->parseError = {ParseError::FAILED_TO_OPEN, 0, {0, 0}}; return; @@ -268,45 +272,70 @@ FGD::FGD(std::string_view path, bool parseIncludes) { exclusionList.emplace_back(path.data()); std::string_view dirPath = path.substr(0, path.find_last_of('/')); - std::smatch match; - std::regex exr{"@include+ \"(.*)\""}; - while (std::regex_search(this->rawFGDFile, match, exr)) { - std::regex thisInclude("@include+ \"" + match[1].str() + "\""); + for(auto itr = rawFGDFile.begin(); itr != rawFGDFile.end(); itr++) + { + if(*itr != '@') + continue; + + if(std::string_view(itr, itr + 8) != "@include") + continue; + + auto incStart = itr; + + itr += 8; + while (*itr != '"') + { + if(itr == rawFGDFile.end()) { + this->parseError = {ParseError::PREMATURE_EOF, 0, {0, static_cast(rawFGDFile.length())}}; + return; + } + + itr++; + } + itr++; + auto strStart = itr; + while (*itr != '"') + { + if(itr == rawFGDFile.end()) { + this->parseError = {ParseError::PREMATURE_EOF, 0, {0, static_cast(rawFGDFile.length())}}; + return; + } + itr++; + } - std::string currentPath = dirPath.data() + match[1].str(); + std::string currentPath = std::string(dirPath) + '/' + std::string (strStart, itr); - if (std::find_if(exclusionList.begin(), exclusionList.end(), [currentPath](const std::string& v) { + if (std::find_if(exclusionList.begin(), exclusionList.end(), [currentPath](const std::string& v) { return v == currentPath; }) != exclusionList.end()) { - this->rawFGDFile = std::regex_replace(this->rawFGDFile, thisInclude, ""); + auto dist = std::distance(this->rawFGDFile.begin(), incStart); + this->rawFGDFile = this->rawFGDFile.replace(incStart, itr, ""); + itr = this->rawFGDFile.begin() + dist; continue; } - exclusionList.push_back(currentPath); - - auto includeFilePath = std::string{dirPath} + '/' + match[1].str(); - file.open(includeFilePath); + exclusionList.push_back(currentPath); + file.open(currentPath, std::ios::binary); if (!file.is_open()) continue; - auto includeSize = static_cast(std::filesystem::file_size(includeFilePath)); + auto includeSize = static_cast(std::filesystem::file_size(currentPath)); std::string includeFileContents(includeSize, ' '); file.read(includeFileContents.data(), includeSize); file.close(); - - this->rawFGDFile = std::regex_replace(this->rawFGDFile, thisInclude, includeFileContents, std::regex_constants::format_first_only); - } + auto dist = std::distance(this->rawFGDFile.begin(), incStart); + this->rawFGDFile = this->rawFGDFile.replace(incStart, itr, includeFileContents); + itr = this->rawFGDFile.begin() + dist; + } } - std::erase(this->rawFGDFile, '\r'); - if (!this->TokenizeFile()) { - this->parseError = {ParseError::FAILED_TO_OPEN, 0, {0, 0}}; + this->parseError = {ParseError::TOKENIZATION_ERROR, 0, {0, 0}}; return; } if (!this->ParseFile()) { - this->parseError = {ParseError::FAILED_TO_OPEN, 0, {0, 0}}; +// this->parseError = {ParseError::PARSING_ERROR, 0, {0, 0}}; return; } } @@ -328,7 +357,7 @@ FGD::FGD(std::string_view path, bool parseIncludes) { #ifdef FGDPP_UNIFIED_FGD bool FGD::TagListDelimiter(std::vector::const_iterator& iter, TagList& tagList) { - std::vector fields; + std::vector fields; int i = 0; bool hasPlus = false; @@ -340,8 +369,8 @@ bool FGD::TagListDelimiter(std::vector::const_iterator& iter, TagList& ta } if (iter->type == COMMA) { + tagList.tags.resize(i + 1); for (int j = 0; j < i; j++) { - tagList.tags.resize(j+1); tagList.tags[j] = fields[j]; } @@ -355,11 +384,11 @@ bool FGD::TagListDelimiter(std::vector::const_iterator& iter, TagList& ta fields[i] = iter->string; i++; } else { - //std::string t{"+"}; - //t.append(( iter )->string); - //TODO: We ned to identify +, trust me, we do. - fields.resize(i+1); - fields[i] = iter->string; + std::string t{"+"}; + t.append(( iter )->string); + fields.resize(i + 1); + //One of the very few times we need to copy. + fields[i] = t; i++; } @@ -367,8 +396,8 @@ bool FGD::TagListDelimiter(std::vector::const_iterator& iter, TagList& ta } if (i > 0) { + tagList.tags.resize(i + 1); for (int j = 0; j < i; j++) { - tagList.tags.resize(j+1); tagList.tags[j] = fields[j]; } } @@ -389,7 +418,8 @@ bool FGD::ParseFile() { if (iter->type != DEFINITION) continue; - if (iequals(iter->string, "@mapsize")) { + + if (iequals(iter->string, R"(@mapsize)")) { Forward(iter, { ErrorHandle(iter); }); if (iter->type != OPEN_PARENTHESIS) { ErrorHandle(iter); @@ -400,7 +430,7 @@ bool FGD::ParseFile() { ErrorHandle(iter); } - this->FGDFileContents.mapSize.start = std::stoi(iter->string.data()); + this->FGDFileContents.mapSize.start = std::stoi(iter->string.get_string()); Forward(iter, { ErrorHandle(iter); }); if (iter->type != COMMA) { @@ -412,7 +442,7 @@ bool FGD::ParseFile() { ErrorHandle(iter); } - this->FGDFileContents.mapSize.end = std::stoi(iter->string.data()); + this->FGDFileContents.mapSize.end = std::stoi(iter->string.get_string()); Forward(iter, { ErrorHandle(iter); }); if (iter->type != CLOSE_PARENTHESIS) { @@ -422,7 +452,7 @@ bool FGD::ParseFile() { continue; } - if (iequals(iter->string, "@AutoVisgroup")) { + if (iequals(iter->string, R"(@autovisgroup)")) { Forward(iter, { ErrorHandle(iter); }); if (iter->type != EQUALS) { ErrorHandle(iter); @@ -467,10 +497,11 @@ bool FGD::ParseFile() { visGroupChild.children.push_back(iter->string); - visGroup.children.push_back(visGroupChild); Forward(iter, { ErrorHandle(iter); }); } + visGroup.children.push_back(visGroupChild); + if (iter->type != CLOSE_BRACKET) { ErrorHandle(iter); } @@ -486,7 +517,7 @@ bool FGD::ParseFile() { continue; } - if (iequals(iter->string, "@include")) { + if (iequals(iter->string, R"(@include)")) { Forward(iter, { ErrorHandle(iter); }); if (iter->type != STRING) { @@ -497,7 +528,7 @@ bool FGD::ParseFile() { continue; } - if (iequals(iter->string, "@MaterialExclusion")) { + if (iequals(iter->string, R"(@MaterialExclusion)")) { Forward(iter, { ErrorHandle(iter); }); if (iter->type != OPEN_BRACKET) { @@ -548,7 +579,7 @@ bool FGD::ParseFile() { if (iter->type == COMMA) { ClassProperty property; for (int j = 0; j < i; j++) { - property.properties.push_back(fields[j]); + property.properties.emplace_back(fields[j]); } i = 0; @@ -566,7 +597,7 @@ bool FGD::ParseFile() { if (i > 0) { ClassProperty property; for (int j = 0; j < i; j++) { - property.properties.push_back(fields[j]); + property.properties.emplace_back(fields[j]); } i = 0; @@ -627,7 +658,7 @@ bool FGD::ParseFile() { Forward(iter, { ErrorHandle(iter); }); while (iter->type != CLOSE_BRACKET) { #ifdef FGDPP_UNIFIED_FGD - if (iequals(iter->string, "@resources")) { + if (iequals(iter->string, R"(@resources)")) { Forward(iter, { ErrorHandle(iter); }); if (iter->type != OPEN_BRACKET) { @@ -670,9 +701,9 @@ bool FGD::ParseFile() { ErrorHandle(iter); } - if (iequals(iter->string, "input") || iequals(iter->string, "output")) { + if (iequals(iter->string, R"(input)") || iequals(iter->string, R"(output)")) { InputOutput inputOutput; - inputOutput.putType = iequals(iter->string, "input") == 0 ? IO::INPUT : IO::OUTPUT; + inputOutput.putType = iequals(iter->string, R"(input)") == 0 ? IO::INPUT : IO::OUTPUT; Forward(iter, { ErrorHandle(iter); }); @@ -744,9 +775,7 @@ bool FGD::ParseFile() { entity.inputOutput.push_back(inputOutput); continue; } else { - EntityProperties entityProperties; - entityProperties.flagCount = 0; - entityProperties.choiceCount = 0; + EntityProperties& entityProperties = entity.entityProperties.emplace_back(); entityProperties.readOnly = false; entityProperties.reportable = false; entityProperties.propertyName = iter->string; @@ -779,12 +808,12 @@ bool FGD::ParseFile() { } Forward(iter, { ErrorHandle(iter); }); - if (iequals(iter->string, "readonly")) { + if (iequals(iter->string, R"(readonly)")) { entityProperties.readOnly = true; Forward(iter, { ErrorHandle(iter); }); } - if (iequals(iter->string, "*") || iequals(iter->string, "report")) { + if (iequals(iter->string, R"(*)") || iequals(iter->string, R"(report)")) { entityProperties.reportable = true; Forward(iter, { ErrorHandle(iter); }); } @@ -860,7 +889,7 @@ bool FGD::ParseFile() { isFOC: { - bool isFlags = iequals(entityProperties.type, "flags"); + bool isFlags = iequals(entityProperties.type, R"(flags)"); Forward(iter, { ErrorHandle(iter); }); if (iter->type != OPEN_BRACKET) { @@ -874,8 +903,8 @@ bool FGD::ParseFile() { } if (isFlags) { - Flag flags; - flags.value = std::stoi(iter->string.data()); + Flag& flags = entityProperties.flags.emplace_back(); + flags.value = std::stoi(iter->string.operator std::string()); Forward(iter, { ErrorHandle(iter); }); if (iter->type != COLUMN) { @@ -911,7 +940,7 @@ bool FGD::ParseFile() { Forward(iter, { ErrorHandle(iter); }); } else { - Choice choice; + Choice& choice = entityProperties.choices.emplace_back(); choice.value = iter->string; Forward(iter, { ErrorHandle(iter); }); @@ -952,3 +981,167 @@ bool FGD::ParseFile() { return true; } + +UtilStringView FGD::Write() const { + + auto& fileContents = this->FGDFileContents; + UtilStringView fgd = UtilStringView::make_self_owning("@mapsize("); + fgd << std::to_string(fileContents.mapSize.start) << "," << std::to_string(fileContents.mapSize.end) <<")\n\n"; + + for(const auto& groups : fileContents.autoVisGroups) + { + fgd << "@AutoVisGroup = " << groups.name << "\n\t[\n"; + for(const auto& childGroup : groups.children) + { + fgd << "\t" << childGroup.name << "\n\t\t[\n"; + + for(const auto& contents : childGroup.children) + fgd << "\t\t" << contents << "\n"; + + fgd << "\t\t]\n"; + } + fgd << "\t]\n"; + } + + for(const auto& entity : fileContents.entities) + { + fgd << entity.type << " "; + for(const auto& props : entity.classProperties) + { + fgd << props.name << "( "; + + for(const auto& subProps : props.classProperties) + for(const auto& subsubprops : subProps.properties) + fgd << subsubprops << " "; + + fgd << ")\n\t"; + } + fgd << "= " << entity.entityName; + if(!entity.entityDescription.empty()) + fgd << " : "; + for(auto descs = entity.entityDescription.begin(); descs != entity.entityDescription.end(); descs++ ) + fgd << *descs << ((std::next(descs) != entity.entityDescription.end()) ? " + " : ""); + fgd << "\n\t[\n"; + + for(const auto& entProps : entity.entityProperties) + { + fgd << "\t" << entProps.propertyName << "(" << entProps.type << ") "; + + if(entProps.readOnly) + fgd << " readonly "; + + if(entProps.reportable) + fgd << " reportable "; + + if(entProps.displayName.length() > 0) + fgd << ": " << entProps.displayName; + + + if(entProps.displayName.length() <= 0 && entProps.defaultValue.length() > 0) + fgd << " :"; + + + if(entProps.defaultValue.length() > 0) + fgd << " : " << entProps.defaultValue; + + + if(entProps.defaultValue.length() <= 0 && !entProps.propertyDescription.empty()) + fgd << " :"; + + if(!entProps.propertyDescription.empty()) + fgd << " : "; + + for(auto descs = entProps.propertyDescription.begin(); descs != entProps.propertyDescription.end(); descs++ ) + fgd << *descs << ((std::next(descs) != entProps.propertyDescription.end()) ? " + " : ""); + + if(entProps.type == "choices") + { + fgd << " = \n\t\t[\n"; + + for(const auto &choice : entProps.choices) + { + fgd << "\t\t" << choice.value << (choice.displayName.length() > 0 ? ( UtilStringView("") << " : " << choice.displayName) : "") << "\n"; + } + fgd << "\t\t]\n"; + } + + if(entProps.type == "flags") + { + fgd << " = \n\t\t[\n"; + + for(const auto &flags : entProps.flags) + { + fgd << "\t\t" << std::to_string(flags.value) << (flags.displayName.length() > 0 ? ( UtilStringView("") << " : " << flags.displayName) : " : ") << (flags.checked ? " : 0" : " : 1") << "\n"; + } + fgd << "\t\t]\n"; + } + + fgd << "\n"; + } + + if(!entity.entityProperties.empty()) + fgd << "\n"; + + std::vector inputs; + std::vector output; + + for(auto& entIO : entity.inputOutput) + { + if(entIO.putType == IO::INPUT) + inputs.push_back(&entIO); + else + output.push_back(&entIO); + } + + if(!inputs.empty()) + { + fgd << "\n\t // Inputs\n"; + } + + for(const auto entIO : inputs) + { + fgd << "\t" + << "input " + << entIO->name << "(" + << entIO->stringType + << ")"; + if(!entIO->description.empty()) + { + fgd << " : "; + for(auto descs = entIO->description.begin(); descs != entIO->description.end(); descs++ ) + fgd << *descs << ((std::next(descs) != entIO->description.end()) ? " + " : ""); + } + fgd << "\n"; + } + + if(!output.empty()) + { + fgd << "\n\t // Outputs\n"; + } + + for(const auto entIO : output) + { + fgd << "\t" + << "output " + << entIO->name << "(" + << entIO->stringType + << ")"; + if(!entIO->description.empty()) + { + fgd << " : "; + for(auto descs = entIO->description.begin(); descs != entIO->description.end(); descs++ ) + fgd << *descs << ((std::next(descs) != entIO->description.end()) ? " + " : ""); + } + fgd << "\n"; + } + + fgd << "\n\t]\n\n"; + + + } + + return fgd; + + + +} diff --git a/test/fgdpp.cpp b/test/fgdpp.cpp index fc9cea7c3..408f1b150 100644 --- a/test/fgdpp.cpp +++ b/test/fgdpp.cpp @@ -1,9 +1,12 @@ #include #include +#include #include "Helpers.h" +#define quoted(str) #str + using namespace fgdpp; TEST(fgdpp, parseBasePortal2) { @@ -11,6 +14,57 @@ TEST(fgdpp, parseBasePortal2) { ASSERT_EQ(fgd.parseError.err, ParseError::NO_ERROR); } +TEST(fgdpp, parseBasePortal2NoInclude) { + FGD fgd{ASSET_ROOT "fgdpp/portal2.fgd", false}; + ASSERT_EQ(fgd.parseError.err, ParseError::NO_ERROR); +} + +TEST(fgdpp, parseWriteP2CE) +{ + FGD fgd{ASSET_ROOT "fgdpp/p2ce.fgd", false}; //P2CE doesn't have includes + ASSERT_EQ(fgd.parseError.err, ParseError::NO_ERROR); + + unsigned long currentLength = fgd.FGDFileContents.entities.size(); + + Entity& ent = fgd.FGDFileContents.entities.emplace_back(); + ent.entityName = "func_windigo"; + auto& property = ent.classProperties.emplace_back(); + property.name = "base"; + auto& pp = property.classProperties.emplace_back(); + pp.properties.emplace_back(std::string("func_brush")); + + ent.entityDescription.emplace_back() << quoted("An entity designed for having too many bitches."); + + auto& io = ent.inputOutput.emplace_back(); + io.name = "cosume_flesh"; + io.putType = fgdpp::IO::INPUT; + io.type = fgdpp::EntityIOPropertyType::t_bool; + io.stringType = "boolean"; + + auto& entProps = ent.entityProperties.emplace_back(); + entProps.propertyName = "has_bitches"; + entProps.type = "boolean"; + entProps.defaultValue = "1"; + entProps.displayName = quoted("Has Bitches?"); + + ent.type = "@SolidClass"; + + unsigned long afterLength = fgd.FGDFileContents.entities.size(); + + auto str = fgd.Write(); + + auto fl = std::ofstream(ASSET_ROOT "test_results/test.fgd"); + ASSERT_TRUE(fl.is_open()); + fl.write(str.data(), str.length()); + fl.close(); + ASSERT_GT(afterLength, currentLength); + + FGD fgd2{ASSET_ROOT "test_results/test.fgd", false}; //P2CE doesn't have includes + ASSERT_EQ(fgd2.parseError.err, ParseError::NO_ERROR); + +} + + #ifdef FGDPP_UNIFIED_FGD TEST(fgdpp, parseUnifiedFGD) { FGD fgd{ASSET_ROOT "fgdpp/unified/game_ui.fgd", true}; diff --git a/test/res/fgdpp/p2ce.fgd b/test/res/fgdpp/p2ce.fgd new file mode 100755 index 000000000..77e50d5bd --- /dev/null +++ b/test/res/fgdpp/p2ce.fgd @@ -0,0 +1,20334 @@ +@mapsize(-65536, 65536) + +@AutoVisgroup = "Auto" + [ + "AI" + [ + "ai_ally_manager" + "ai_battle_line" + "ai_changehintgroup" + "ai_changetarget" + "ai_citizen_response_system" + "ai_goal_actbusy" + "ai_goal_actbusy_queue" + "ai_goal_assault" + "ai_goal_fightfromcover" + "ai_goal_follow" + "ai_goal_injured_follow" + "ai_goal_lead" + "ai_goal_lead_weapon" + "ai_goal_operator" + "ai_goal_police" + "ai_goal_standoff" + "ai_npc_eventresponsesystem" + "ai_relationship" + "ai_script_conditions" + "ai_sound" + "ai_speechfilter" + "assault_assaultpoint" + "assault_rallypoint" + "tanktrain_ai" + "tanktrain_aitarget" + ] + "Auto" + [ + "ai_ally_manager" + "ai_battle_line" + "ai_changehintgroup" + "ai_changetarget" + "ai_citizen_response_system" + "ai_goal_actbusy" + "ai_goal_actbusy_queue" + "ai_goal_assault" + "ai_goal_fightfromcover" + "ai_goal_follow" + "ai_goal_injured_follow" + "ai_goal_lead" + "ai_goal_lead_weapon" + "ai_goal_operator" + "ai_goal_police" + "ai_goal_standoff" + "ai_npc_eventresponsesystem" + "ai_relationship" + "ai_script_conditions" + "ai_sound" + "ai_speechfilter" + "assault_assaultpoint" + "assault_rallypoint" + "tanktrain_ai" + "tanktrain_aitarget" + ] + "Brush Entities" + [ + "comp_trigger_p2_goo" + "env_bubbles" + "env_embers" + "func_breakable" + "func_breakable_surf" + "func_brush" + "func_bulletshield" + "func_clip_vphysics" + "func_combine_ball_spawner" + "func_conveyor" + "func_detail_blocker" + "func_dustcloud" + "func_dustmotes" + "func_guntarget" + "func_movelinear" + "func_nav_avoid" + "func_nav_avoidance_obstacle" + "func_nav_blocker" + "func_nav_prefer" + "func_physbox" + "func_physbox_multiplayer" + "func_placement_clip" + "func_platrot" + "func_portal_detector" + "func_portal_orientation" + "func_portalled" + "func_precipitation" + "func_precipitation_blocker" + "func_proprrespawnzone" + "func_pushable" + "func_reflective_glass" + "func_rotating" + "func_smokevolume" + "func_tank" + "func_tank_combine_cannon" + "func_tankairboatgun" + "func_tankapcrocket" + "func_tanklaser" + "func_tankmortar" + "func_tankphyscannister" + "func_tankpulselaser" + "func_tankrocket" + "func_tanktrain" + "func_trackautochange" + "func_trackchange" + "func_tracktrain" + "func_train" + "func_traincontrols" + "func_vehicleclip" + "func_viscluster" + "func_wall" + "func_wall_toggle" + "func_water" + "func_water_analog" + "game_zone_player" + "npc_heli_avoidbox" + "npc_heli_nobomb" + "trigger_autosave" + "trigger_brush" + "trigger_catapult" + "trigger_changelevel" + "trigger_gravity" + "trigger_hierarchy" + "trigger_hurt" + "trigger_impact" + "trigger_jumppad" + "trigger_look" + "trigger_momentum_promptinput" + "trigger_physics_trap" + "trigger_ping_detector" + "trigger_playermovement" + "trigger_playerteam" + "trigger_proximity" + "trigger_push" + "trigger_remove" + "trigger_rpgfire" + "trigger_serverragdoll" + "trigger_setspeed" + "trigger_softbarrier" + "trigger_soundoperator" + "trigger_teleport" + "trigger_teleport_relative" + "trigger_togglesave" + "trigger_tonemap" + "trigger_transition" + "trigger_userinput" + "trigger_vphysics_motion" + "trigger_waterydeath" + "trigger_weapon_dissolve" + "trigger_weapon_strip" + "trigger_wind" + ] + "Color Correction" + [ + "color_correction" + "color_correction_volume" + ] + "Commentary" + [ + "commentary_auto" + "point_commentary_node" + ] + "Cubes" + [ + "prop_monster_box" + ] + "Fog" + [ + "env_fog_controller" + "fog_volume" + ] + "Gameplay" + [ + "bounce_bomb" + "combine_bouncemine" + "combine_mine" + "env_hudhint" + "env_instructor_hint" + "env_message" + "env_microphone" + "env_portal_laser" + "env_speaker" + "func_button" + "func_door" + "func_door_rotating" + "func_healthcharger" + "func_ladder" + "func_ladderendpoint" + "func_lookdoor" + "func_noportal_volume" + "func_portal_bumper" + "func_recharge" + "func_rot_button" + "func_useableladder" + "func_weight_button" + "game_text" + "grenade_helicopter" + "hot_potato" + "hot_potato_catcher" + "hot_potato_socket" + "hot_potato_spawner" + "info_coop_spawn" + "info_ladder_dismount" + "info_paint_sprayer" + "info_player_deathmatch" + "info_player_start" + "info_target_instructor_hint" + "item_healthcharger" + "item_suitcharger" + "linked_portal_door" + "logic_active_autosave" + "logic_autosave" + "momentary_rot_button" + "paint_sphere" + "point_antlion_repellant" + "point_bugbait" + "point_combine_ball_launcher" + "point_energy_ball_launcher" + "point_futbol_shooter" + "point_hurt" + "point_laser_target" + "point_message" + "point_teleport" + "point_worldtext" + "projected_wall_entity" + "prop_button" + "prop_door_rotating" + "prop_exploding_futbol" + "prop_floor_ball_button" + "prop_floor_button" + "prop_floor_cube_button" + "prop_glass_futbol" + "prop_glass_futbol_socket" + "prop_glass_futbol_spawner" + "prop_laser_catcher" + "prop_laser_relay" + "prop_linked_portal_door" + "prop_paint_bomb" + "prop_rocket_tripwire" + "prop_telescopic_arm" + "prop_testchamber_door" + "prop_tic_tac_toe_panel" + "prop_under_button" + "prop_under_floor_button" + "prop_wall_projector" + "trigger_autosave" + "trigger_paint_cleanser" + "trigger_portal_cleanser" + "trigger_teleport" + "trigger_teleport_relative" + ] + "Hammer" + [ + "hammer_notes" + "hammer_updateignorelist" + ] + "Instances" + [ + "func_instance" + ] + "Items" + [ + "item_ammo_357" + "item_ammo_357_large" + "item_ammo_ar2" + "item_ammo_ar2_altfire" + "item_ammo_ar2_large" + "item_ammo_crate" + "item_ammo_crossbow" + "item_ammo_pistol" + "item_ammo_pistol_large" + "item_ammo_smg1" + "item_ammo_smg1_grenade" + "item_ammo_smg1_large" + "item_ar2_grenade" + "item_battery" + "item_boots" + "item_box_buckshot" + "item_box_lrounds" + "item_box_mrounds" + "item_box_srounds" + "item_dynamic_resupply" + "item_grubnugget" + "item_healthkit" + "item_healthvial" + "item_item_crate" + "item_large_box_lrounds" + "item_large_box_mrounds" + "item_large_box_srounds" + "item_longjump" + "item_nugget" + "item_paint_power_pickup" + "item_rpg_round" + "item_suit" + "weapon_citizenpackage" + "weapon_citizensuitcase" + ] + "Lights" + [ + "beam_spotlight" + "env_cascade_light" + "env_cubemap" + "info_lighting_relative" + "info_no_dynamic_shadow" + "light" + "light_environment" + "light_spot" + "parallax_obb" + "point_spotlight" + ] + "NPCs" + [ + "ent_hover_turret_tether" + "info_npc_spawn_destination" + "monster_generic" + "npc_advisor" + "npc_alyx" + "npc_antlion" + "npc_antlion_grub" + "npc_antlionguard" + "npc_apcdriver" + "npc_barnacle" + "npc_barney" + "npc_blob" + "npc_breen" + "npc_bullseye" + "npc_bullsquid" + "npc_citizen" + "npc_clawscanner" + "npc_combine_camera" + "npc_combine_cannon" + "npc_combine_s" + "npc_combinedropship" + "npc_combinegunship" + "npc_cranedriver" + "npc_crow" + "npc_cscanner" + "npc_dog" + "npc_eli" + "npc_enemyfinder" + "npc_enemyfinder_combinecannon" + "npc_fastzombie" + "npc_fastzombie_torso" + "npc_headcrab" + "npc_headcrab_black" + "npc_headcrab_fast" + "npc_headcrab_poison" + "npc_heardanger" + "npc_heli_avoidsphere" + "npc_helicopter" + "npc_houndeye" + "npc_hover_turret" + "npc_hunter" + "npc_ichthyosaur" + "npc_kleiner" + "npc_magnusson" + "npc_manhack" + "npc_metropolice" + "npc_monk" + "npc_mossman" + "npc_personality_core" + "npc_pigeon" + "npc_poisonzombie" + "npc_rocket_turret" + "npc_rollermine" + "npc_seagull" + "npc_sniper" + "npc_stalker" + "npc_strider" + "npc_turret_ceiling" + "npc_turret_floor" + "npc_turret_ground" + "npc_vehicledriver" + "npc_vortigaunt" + "npc_wheatley_boss" + "npc_zombie" + "npc_zombie_torso" + "npc_zombine" + "prop_glados_core" + "rocket_turret_projectile" + ] + "Nodes" + [ + "info_hint" + "info_node" + "info_node_air" + "info_node_air_hint" + "info_node_climb" + "info_node_hint" + "info_node_link" + "info_node_link_controller" + "info_radial_link_controller" + ] + "Point Entities" + [ + "ai_ally_manager" + "aiscripted_schedule" + "ambient_generic" + "color_correction" + "comp_choreo_sceneset" + "comp_relay" + "env_alyxemp" + "env_ambient_light" + "env_ar2explosion" + "env_beam" + "env_blood" + "env_cascade_light" + "env_citadel_energy_core" + "env_credits" + "env_detail_controller" + "env_dof_controller" + "env_dustpuff" + "env_effectscript" + "env_entity_dissolver" + "env_entity_igniter" + "env_entity_maker" + "env_explosion" + "env_fade" + "env_fire" + "env_firesensor" + "env_firesource" + "env_flare" + "env_fog_controller" + "env_global" + "env_glow" + "env_gunfire" + "env_laser" + "env_lightglow" + "env_lightrail_endpoint" + "env_movieexplosion" + "env_muzzleflash" + "env_particle_performance_monitor" + "env_particlelight" + "env_particlescript" + "env_physexplosion" + "env_physimpact" + "env_player_surface_trigger" + "env_player_viewfinder" + "env_portal_credits" + "env_portal_path_track" + "env_rockettrail" + "env_rotorshooter" + "env_rotorwash_emitter" + "env_screeneffect" + "env_screenoverlay" + "env_shake" + "env_shooter" + "env_smokestack" + "env_smoketrail" + "env_soundscape" + "env_soundscape_proxy" + "env_soundscape_triggerable" + "env_spark" + "env_splash" + "env_sporeexplosion" + "env_sprite" + "env_sprite_clientside" + "env_sprite_oriented" + "env_spritetrail" + "env_starfield" + "env_steam" + "env_sun" + "env_surface_teleport" + "env_tilt" + "env_tonemap_controller" + "env_viewpunch" + "env_wind" + "env_zoom" + "filter_activator_class" + "filter_activator_context" + "filter_activator_involume" + "filter_activator_keyfield" + "filter_activator_mass_greater" + "filter_activator_model" + "filter_activator_name" + "filter_activator_surfacedata" + "filter_activator_team" + "filter_base" + "filter_combineball_type" + "filter_damage_type" + "filter_enemy" + "filter_multi" + "filter_paint_power" + "filter_player_held" + "filter_velocity" + "func_fish_pool" + "func_instance_io_proxy" + "func_instance_origin" + "func_instance_parms" + "func_monitor" + "game_end" + "game_gib_manager" + "game_globalvars" + "game_player_equip" + "game_player_team" + "game_ragdoll_manager" + "game_score" + "game_ui" + "game_weapon_manager" + "generic_actor" + "gibshooter" + "hunter_flechette" + "info_camera_link" + "info_constraint_anchor" + "info_darknessmode_lightsource" + "info_game_event_proxy" + "info_intermission" + "info_landmark" + "info_landmark_entry" + "info_landmark_exit" + "info_mass_center" + "info_particle_system" + "info_placement_helper" + "info_player_ping_detector" + "info_playtest_manager" + "info_portal_gamerules" + "info_projecteddecal" + "info_radar_target" + "info_snipertarget" + "info_target" + "info_target_gunshipcrash" + "info_target_helicopter_crash" + "info_target_instructor_hint" + "info_target_personality_sphere" + "info_target_vehicle_transition" + "info_teleport_destination" + "info_teleporter_countdown" + "infodecal" + "keyframe_rope" + "keyframe_track" + "light_environment" + "logic_achievement" + "logic_active_autosave" + "logic_auto" + "logic_autosave" + "logic_branch" + "logic_branch_listener" + "logic_case" + "logic_choreographed_scene" + "logic_collision_pair" + "logic_compare" + "logic_console" + "logic_context_accessor" + "logic_convar" + "logic_coop_manager" + "logic_datadesc_accessor" + "logic_entity_position" + "logic_eventlistener" + "logic_eventlistener_itemequip" + "logic_format" + "logic_gate" + "logic_keyfield" + "logic_lineto" + "logic_measure_direction" + "logic_measure_movement" + "logic_modelinfo" + "logic_multicompare" + "logic_navigation" + "logic_player_slowtime" + "logic_playerproxy" + "logic_playmovie" + "logic_random_outputs" + "logic_register_activator" + "logic_relay" + "logic_relay_queue" + "logic_scene_list_manager" + "logic_script" + "logic_sequence" + "logic_timer" + "logic_timescale" + "material_modify_control" + "math_bits" + "math_clamp" + "math_colorblend" + "math_counter" + "math_counter_advanced" + "math_generate" + "math_lightpattern" + "math_mod" + "math_remap" + "math_vector" + "move_keyframed" + "move_rope" + "move_track" + "npc_antlion_template_maker" + "npc_hunter_maker" + "npc_maker" + "npc_template_maker" + "path_corner" + "path_corner_crash" + "path_track" + "path_vphysics" + "phys_ballsocket" + "phys_constraint" + "phys_constraintsystem" + "phys_convert" + "phys_hinge" + "phys_keepupright" + "phys_lengthconstraint" + "phys_magnet" + "phys_motor" + "phys_pulleyconstraint" + "phys_ragdollconstraint" + "phys_ragdollmagnet" + "phys_slideconstraint" + "phys_spring" + "phys_thruster" + "phys_torque" + "physics_cannister" + "player_loadsaved" + "player_speedmod" + "player_weaponstrip" + "point_anglesensor" + "point_angularvelocitysensor" + "point_bonusmaps_accessor" + "point_broadcastclientcommand" + "point_camera" + "point_changelevel" + "point_clientcommand" + "point_devshot_camera" + "point_enable_motion_fixup" + "point_entity_finder" + "point_flesh_effect_target" + "point_gamestats_counter" + "point_hiding_spot" + "point_paint_sensor" + "point_playermoveconstraint" + "point_proximity_sensor" + "point_push" + "point_servercommand" + "point_survey" + "point_teleport" + "point_template" + "point_tesla" + "point_velocitysensor" + "point_viewcontrol" + "point_viewcontrol_multiplayer" + "point_viewproxy" + "portal_race_checkpoint" + "portalmp_gamerules" + "postprocess_controller" + "prop_coreball" + "prop_portal_stats_display" + "prop_testchamber_sign" + "script_intro" + "scripted_scene" + "scripted_sentence" + "scripted_sequence" + "scripted_target" + "shadow_control" + "sky_camera" + "skybox_swapper" + "spark_shower" + "sunlight_shadow_control" + "tanktrain_ai" + "tanktrain_aitarget" + "target_changegravity" + "test_sidelist" + "test_traceline" + "trigger_soundscape" + "vgui_level_placard_display" + "vgui_movie_display" + "vgui_mp_lobby_display" + "vgui_neurotoxin_countdown" + "vgui_screen" + "vgui_slideshow_display" + "vgui_world_text_panel" + "water_lod_control" + ] + "Postcompiler" + [ + "comp_pack" + "comp_pack_rename" + "comp_pack_replace_soundscript" + "comp_precache_model" + "comp_precache_sound" + "comp_prop_cable" + "comp_prop_rope" + "comp_propcombine_set" + "comp_propcombine_volume" + "comp_vactube_end" + "comp_vactube_junction" + "comp_vactube_object" + "comp_vactube_spline" + "comp_vactube_start" + ] + "Tool Brushes" + [ + "func_areaportal" + "func_areaportalwindow" + ] + "Vehicles" + [ + "info_apc_missile_hint" + "info_target_vehicle_transition" + "npc_vehicledriver" + "point_apc_controller" + "prop_vehicle" + "prop_vehicle_airboat" + "prop_vehicle_apc" + "prop_vehicle_cannon" + "prop_vehicle_choreo_generic" + "prop_vehicle_crane" + "prop_vehicle_driveable" + "prop_vehicle_jeep" + "prop_vehicle_prisoner_pod" + "vehicle_viewcontroller" + ] + "Weapons" + [ + "prop_stickybomb" + "weapon_357" + "weapon_alyxgun" + "weapon_annabelle" + "weapon_ar2" + "weapon_bugbait" + "weapon_crossbow" + "weapon_crowbar" + "weapon_cubemap" + "weapon_frag" + "weapon_paintgun" + "weapon_physcannon" + "weapon_pistol" + "weapon_portalgun" + "weapon_rpg" + "weapon_shotgun" + "weapon_smg1" + "weapon_striderbuster" + "weapon_stunstick" + ] + "World Details" + [ + "cycler" + "cycler_actor" + "env_texturetoggle" + "info_overlay" + "info_overlay_transition" + "prop_detail" + "prop_detail_sprite" + "prop_dropship_container" + "prop_dynamic" + "prop_dynamic_glow" + "prop_dynamic_ornament" + "prop_dynamic_override" + "prop_hallucination" + "prop_indicator_panel" + "prop_mirror" + "prop_physics" + "prop_physics_multiplayer" + "prop_physics_override" + "prop_physics_paintable" + "prop_physics_ragdoll" + "prop_physics_respawnable" + "prop_ragdoll" + "prop_scalable" + "prop_sphere" + "prop_static" + "simple_physics_brush" + "simple_physics_prop" + ] + ] +@AutoVisgroup = "Brush Entities" + [ + "Breakables" + [ + "func_breakable" + "func_breakable_surf" + ] + "Clips" + [ + "func_clip_vphysics" + "func_placement_clip" + "func_vehicleclip" + ] + "Conveyors" + [ + "func_conveyor" + ] + "Effects" + [ + "env_bubbles" + "env_embers" + "func_dustcloud" + "func_dustmotes" + "func_precipitation" + "func_precipitation_blocker" + "func_smokevolume" + ] + "Func Brush" + [ + "func_brush" + "func_wall" + "func_wall_toggle" + ] + "Helicopter" + [ + "npc_heli_avoidbox" + "npc_heli_nobomb" + ] + "Illusionary" + [ + "func_illusionary" + ] + "LOD Brushes" + [ + "func_lod" + ] + "Moving Brushes" + [ + "func_guntarget" + "func_movelinear" + "func_platrot" + "func_rotating" + "func_trackautochange" + "func_trackchange" + "func_tracktrain" + "func_train" + "func_traincontrols" + "func_water" + "func_water_analog" + ] + "Nav" + [ + "func_nav_avoid" + "func_nav_avoidance_obstacle" + "func_nav_blocker" + "func_nav_prefer" + ] + "Physbox" + [ + "func_physbox" + "func_physbox_multiplayer" + ] + "Tank" + [ + "func_tank" + "func_tank_combine_cannon" + "func_tankairboatgun" + "func_tankapcrocket" + "func_tanklaser" + "func_tankmortar" + "func_tankphyscannister" + "func_tankpulselaser" + "func_tankrocket" + "func_tanktrain" + ] + "Triggers" + [ + "comp_trigger_p2_goo" + "func_portal_detector" + "func_portal_orientation" + "func_portalled" + "trigger_autosave" + "trigger_brush" + "trigger_catapult" + "trigger_changelevel" + "trigger_gravity" + "trigger_hierarchy" + "trigger_hurt" + "trigger_impact" + "trigger_jumppad" + "trigger_look" + "trigger_momentum_promptinput" + "trigger_physics_trap" + "trigger_ping_detector" + "trigger_playermovement" + "trigger_playerteam" + "trigger_proximity" + "trigger_push" + "trigger_remove" + "trigger_rpgfire" + "trigger_serverragdoll" + "trigger_setspeed" + "trigger_softbarrier" + "trigger_soundoperator" + "trigger_teleport" + "trigger_teleport_relative" + "trigger_togglesave" + "trigger_tonemap" + "trigger_transition" + "trigger_userinput" + "trigger_vphysics_motion" + "trigger_waterydeath" + "trigger_weapon_dissolve" + "trigger_weapon_strip" + "trigger_wind" + ] + ] +@AutoVisgroup = "Cubes" + [ + "FrankenTurrets" + [ + "prop_monster_box" + ] + "Normal" + [ + "prop_weighted_cube" + ] + ] +@AutoVisgroup = "Effects" + [ + "Precipitation" + [ + "func_precipitation" + "func_precipitation_blocker" + ] + ] +@AutoVisgroup = "Gameplay" + [ + "Autosaves" + [ + "logic_active_autosave" + "logic_autosave" + "trigger_autosave" + ] + "Bombs" + [ + "grenade_helicopter" + ] + "Broadcast" + [ + "env_microphone" + "env_speaker" + ] + "Buttons" + [ + "func_button" + "func_rot_button" + "func_weight_button" + "momentary_rot_button" + ] + "Buttons¨" + [ + "prop_button" + "prop_floor_ball_button" + "prop_floor_button" + "prop_floor_cube_button" + "prop_under_button" + "prop_under_floor_button" + ] + "Dis. Beams" + [ + "env_portal_laser" + "point_laser_target" + "prop_laser_catcher" + "prop_laser_relay" + ] + "Doors" + [ + "func_door" + "func_door_rotating" + "func_lookdoor" + "prop_door_rotating" + "prop_linked_portal_door" + "prop_testchamber_door" + ] + "Excursion Funnels" + [ + "prop_tractor_beam" + ] + "Fizzlers" + [ + "trigger_paint_cleanser" + "trigger_portal_cleanser" + ] + "Funnel" + [ + "env_funnel" + ] + "Futbols" + [ + "point_futbol_shooter" + "prop_exploding_futbol" + "prop_glass_futbol" + "prop_glass_futbol_socket" + "prop_glass_futbol_spawner" + ] + "HEPs" + [ + "point_combine_ball_launcher" + "point_energy_ball_launcher" + ] + "Headcrab Canister" + [ + "env_headcrabcanister" + ] + "Health Charger" + [ + "func_healthcharger" + "item_healthcharger" + ] + "Hopmines" + [ + "bounce_bomb" + "combine_bouncemine" + "combine_mine" + ] + "Hot Potato" + [ + "hot_potato" + "hot_potato_catcher" + "hot_potato_socket" + "hot_potato_spawner" + ] + "Ladders" + [ + "func_ladder" + "func_ladderendpoint" + "func_useableladder" + "info_ladder_dismount" + ] + "Light Bridge" + [ + "projected_wall_entity" + "prop_wall_projector" + ] + "Paint" + [ + "info_paint_sprayer" + "paint_sphere" + "prop_paint_bomb" + ] + "Player Spawn" + [ + "info_coop_spawn" + "info_player_deathmatch" + "info_player_start" + ] + "Portal Control" + [ + "func_noportal_volume" + "func_portal_bumper" + ] + "Portals" + [ + "prop_portal" + ] + "Suit Charger" + [ + "func_recharge" + "item_suitcharger" + ] + "Teleporters" + [ + "linked_portal_door" + "point_teleport" + "prop_linked_portal_door" + "trigger_teleport" + "trigger_teleport_relative" + ] + "Text/Hints" + [ + "env_hudhint" + "env_instructor_hint" + "env_message" + "game_text" + "info_target_instructor_hint" + "point_message" + "point_worldtext" + ] + "Thumpers" + [ + "prop_thumper" + ] + ] +@AutoVisgroup = "Items" + [ + "Ammunition" + [ + "item_ammo_357" + "item_ammo_ar2" + "item_ammo_ar2_altfire" + "item_ammo_crossbow" + "item_ammo_pistol" + "item_ammo_smg1" + "item_ammo_smg1_grenade" + "item_box_buckshot" + "item_box_lrounds" + "item_box_mrounds" + "item_box_srounds" + "item_paint_power_pickup" + ] + "Explosives" + [ + "item_ammo_smg1_grenade" + "item_ar2_grenade" + "item_rpg_round" + ] + "Healthkits" + [ + "item_grubnugget" + "item_healthkit" + "item_healthvial" + ] + "Large Ammunition" + [ + "item_ammo_357_large" + "item_ammo_ar2_large" + "item_ammo_pistol_large" + "item_ammo_smg1_large" + "item_large_box_lrounds" + "item_large_box_mrounds" + "item_large_box_srounds" + ] + ] +@AutoVisgroup = "Lights" + [ + "Alyx Darkness Source" + [ + "info_darknessmode_lightsource" + ] + "Cascade Light" + [ + "env_cascade_light" + ] + "Cubemaps" + [ + "env_cubemap" + "parallax_obb" + ] + "Directional Light" + [ + "light_directional" + ] + "Dynamic" + [ + "light_dynamic" + ] + "Environment Light" + [ + "env_cascade_light" + "light_environment" + ] + "Info Lighting" + [ + "info_lighting_relative" + "info_no_dynamic_shadow" + ] + "Light FX" + [ + "beam_spotlight" + "point_spotlight" + ] + "Omnidirectional Light" + [ + "light" + ] + "Proj. Texture" + [ + "env_projectedtexture" + ] + "Spotlight NPC" + [ + "npc_spotlight" + ] + "Static" + [ + "light" + "light_environment" + "light_spot" + ] + ] +@AutoVisgroup = "Moving Brushes" + [ + "Train" + [ + "func_trackautochange" + "func_trackchange" + "func_tracktrain" + "func_train" + "func_traincontrols" + ] + ] +@AutoVisgroup = "NPCs" + [ + "Animals" + [ + "npc_crow" + "npc_pigeon" + "npc_seagull" + ] + "Antlions" + [ + "npc_antlion" + "npc_antlion_grub" + "npc_antlionguard" + ] + "Bullseyes" + [ + "npc_bullseye" + ] + "Cameras" + [ + "npc_security_camera" + ] + "Combine" + [ + "npc_advisor" + "npc_apcdriver" + "npc_blob" + "npc_breen" + "npc_clawscanner" + "npc_combine_camera" + "npc_combine_cannon" + "npc_combine_s" + "npc_combinedropship" + "npc_combinegunship" + "npc_cscanner" + "npc_heli_avoidsphere" + "npc_helicopter" + "npc_hunter" + "npc_manhack" + "npc_metropolice" + "npc_rollermine" + "npc_sniper" + "npc_stalker" + "npc_strider" + "npc_turret_ceiling" + "npc_turret_floor" + "npc_turret_ground" + ] + "Cores" + [ + "npc_personality_core" + "npc_wheatley_boss" + "prop_glados_core" + ] + "Furniture" + [ + "npc_furniture" + ] + "G-Man" + [ + "npc_gman" + ] + "Hand Grenade" + [ + "npc_grenade_frag" + ] + "Headcrabs" + [ + "npc_headcrab" + "npc_headcrab_black" + "npc_headcrab_fast" + "npc_headcrab_poison" + ] + "Hover Turret" + [ + "ent_hover_turret_tether" + "npc_hover_turret" + ] + "Logical" + [ + "npc_bullseye" + "npc_cranedriver" + "npc_enemyfinder" + "npc_enemyfinder_combinecannon" + "npc_heardanger" + "npc_vehicledriver" + ] + "Lost Coast Fisherman" + [ + "npc_fisherman" + ] + "Missile Defense" + [ + "npc_missiledefense" + ] + "Missile Launcher" + [ + "npc_launcher" + ] + "NPC Spotlight" + [ + "npc_spotlight" + ] + "Puppet NPC" + [ + "npc_puppet" + ] + "Rebels" + [ + "npc_alyx" + "npc_barney" + "npc_citizen" + "npc_dog" + "npc_eli" + "npc_kleiner" + "npc_magnusson" + "npc_monk" + "npc_mossman" + ] + "Rocket Turrets" + [ + "npc_rocket_turret" + "rocket_turret_projectile" + ] + "Security Camera" + [ + "npc_security_camera" + ] + "Simple NextBot" + [ + "simple_bot" + ] + "Tripmine" + [ + "npc_tripmine" + ] + "Turret" + [ + "npc_portal_turret_floor" + ] + "Wheatley" + [ + "npc_wheatley_boss" + ] + "Xen" + [ + "npc_barnacle" + "npc_bullsquid" + "npc_houndeye" + "npc_ichthyosaur" + "npc_vortigaunt" + ] + "Zombies" + [ + "npc_fastzombie" + "npc_fastzombie_torso" + "npc_poisonzombie" + "npc_zombie" + "npc_zombie_torso" + "npc_zombine" + ] + ] +@AutoVisgroup = "Point Entities" + [ + "Camera Control" + [ + "point_viewcontrol" + "point_viewcontrol_multiplayer" + "point_viewproxy" + ] + "Choreo Scenes" + [ + "aiscripted_schedule" + "comp_choreo_sceneset" + "env_effectscript" + "logic_choreographed_scene" + "logic_scene_list_manager" + "script_intro" + "scripted_scene" + "scripted_sentence" + "scripted_sequence" + ] + "Decals" + [ + "info_projecteddecal" + "infodecal" + ] + "Effects¨" + [ + "env_alyxemp" + "env_ar2explosion" + "env_beam" + "env_blood" + "env_citadel_energy_core" + "env_dustpuff" + "env_effectscript" + "env_entity_dissolver" + "env_entity_igniter" + "env_explosion" + "env_fire" + "env_firesource" + "env_flare" + "env_glow" + "env_gunfire" + "env_laser" + "env_lightglow" + "env_lightrail_endpoint" + "env_muzzleflash" + "env_particlelight" + "env_particlescript" + "env_portal_path_track" + "env_rockettrail" + "env_rotorshooter" + "env_shooter" + "env_smokestack" + "env_smoketrail" + "env_spark" + "env_splash" + "env_sporeexplosion" + "env_starfield" + "env_steam" + "env_sun" + "func_fish_pool" + "info_particle_system" + "point_tesla" + "prop_coreball" + "spark_shower" + ] + "Filters" + [ + "filter_activator_class" + "filter_activator_context" + "filter_activator_involume" + "filter_activator_keyfield" + "filter_activator_mass_greater" + "filter_activator_model" + "filter_activator_name" + "filter_activator_surfacedata" + "filter_activator_team" + "filter_base" + "filter_combineball_type" + "filter_damage_type" + "filter_enemy" + "filter_multi" + "filter_paint_power" + "filter_player_held" + "filter_velocity" + ] + "Global FX" + [ + "env_fade" + "env_movieexplosion" + "env_rotorwash_emitter" + "env_screeneffect" + "env_screenoverlay" + "env_shake" + "env_tilt" + "env_viewpunch" + "env_zoom" + "logic_playmovie" + ] + "Globals" + [ + "ai_ally_manager" + "color_correction" + "env_ambient_light" + "env_cascade_light" + "env_credits" + "env_detail_controller" + "env_dof_controller" + "env_fog_controller" + "env_global" + "env_particle_performance_monitor" + "env_player_surface_trigger" + "env_player_viewfinder" + "env_portal_credits" + "env_surface_teleport" + "env_tonemap_controller" + "env_wind" + "game_end" + "game_gib_manager" + "game_globalvars" + "game_player_team" + "game_ragdoll_manager" + "game_score" + "game_weapon_manager" + "info_landmark" + "info_landmark_entry" + "info_landmark_exit" + "info_playtest_manager" + "info_portal_gamerules" + "light_environment" + "logic_achievement" + "logic_autosave" + "logic_playerproxy" + "player_speedmod" + "player_weaponstrip" + "point_bonusmaps_accessor" + "point_broadcastclientcommand" + "point_changelevel" + "point_clientcommand" + "point_devshot_camera" + "point_servercommand" + "portalmp_gamerules" + "postprocess_controller" + "shadow_control" + "sky_camera" + "sunlight_shadow_control" + "water_lod_control" + ] + "Logic" + [ + "comp_relay" + "env_firesensor" + "func_instance_io_proxy" + "func_instance_origin" + "func_instance_parms" + "info_game_event_proxy" + "logic_active_autosave" + "logic_auto" + "logic_autosave" + "logic_branch" + "logic_branch_listener" + "logic_case" + "logic_collision_pair" + "logic_compare" + "logic_console" + "logic_context_accessor" + "logic_convar" + "logic_coop_manager" + "logic_datadesc_accessor" + "logic_entity_position" + "logic_eventlistener" + "logic_eventlistener_itemequip" + "logic_format" + "logic_gate" + "logic_keyfield" + "logic_lineto" + "logic_measure_direction" + "logic_measure_movement" + "logic_modelinfo" + "logic_multicompare" + "logic_navigation" + "logic_player_slowtime" + "logic_random_outputs" + "logic_register_activator" + "logic_relay" + "logic_relay_queue" + "logic_script" + "logic_sequence" + "logic_timer" + "logic_timescale" + "material_modify_control" + "math_bits" + "math_clamp" + "math_colorblend" + "math_counter" + "math_counter_advanced" + "math_generate" + "math_lightpattern" + "math_mod" + "math_remap" + "math_vector" + "phys_convert" + "point_anglesensor" + "point_angularvelocitysensor" + "point_entity_finder" + "point_paint_sensor" + "point_proximity_sensor" + "point_teleport" + "point_velocitysensor" + "portal_race_checkpoint" + ] + "Null" + [ + "info_null" + ] + "Paths" + [ + "keyframe_track" + "move_track" + "path_corner" + "path_corner_crash" + "path_track" + "path_vphysics" + ] + "Physics" + [ + "env_physexplosion" + "env_physimpact" + "info_constraint_anchor" + "info_mass_center" + "phys_ballsocket" + "phys_constraint" + "phys_constraintsystem" + "phys_hinge" + "phys_keepupright" + "phys_lengthconstraint" + "phys_magnet" + "phys_motor" + "phys_pulleyconstraint" + "phys_ragdollconstraint" + "phys_ragdollmagnet" + "phys_slideconstraint" + "phys_spring" + "phys_thruster" + "phys_torque" + "physics_cannister" + "point_enable_motion_fixup" + "point_push" + ] + "Player" + [ + "env_player_surface_trigger" + "env_player_viewfinder" + "game_end" + "game_player_equip" + "game_player_team" + "game_ui" + "info_player_ping_detector" + "player_speedmod" + "player_weaponstrip" + "point_playermoveconstraint" + "target_changegravity" + ] + "Ropes" + [ + "keyframe_rope" + "move_rope" + ] + "Sounds" + [ + "ambient_generic" + "generic_actor" + ] + "Soundscapes" + [ + "env_soundscape" + "env_soundscape_proxy" + "env_soundscape_triggerable" + "trigger_soundscape" + ] + "Sprites" + [ + "env_sprite" + "env_sprite_clientside" + "env_sprite_oriented" + "env_spritetrail" + ] + "Tanktrain" + [ + "info_player_ping_detector" + "tanktrain_ai" + "tanktrain_aitarget" + ] + "Targets" + [ + "info_placement_helper" + "info_radar_target" + "info_snipertarget" + "info_target" + "info_target_gunshipcrash" + "info_target_helicopter_crash" + "info_target_instructor_hint" + "info_target_personality_sphere" + "info_target_vehicle_transition" + "info_teleport_destination" + "point_flesh_effect_target" + "point_hiding_spot" + "scripted_target" + ] + "Templates" + [ + "env_entity_maker" + "npc_antlion_template_maker" + "npc_hunter_maker" + "npc_maker" + "npc_template_maker" + "point_template" + ] + "Test" + [ + "test_sidelist" + "test_traceline" + ] + "VGUI" + [ + "func_monitor" + "info_camera_link" + "point_camera" + "prop_portal_stats_display" + "prop_testchamber_sign" + "vgui_level_placard_display" + "vgui_movie_display" + "vgui_mp_lobby_display" + "vgui_neurotoxin_countdown" + "vgui_screen" + "vgui_slideshow_display" + "vgui_world_text_panel" + ] + ] +@AutoVisgroup = "Postcompiler" + [ + "Coop Trigger" + [ + "comp_trigger_coop" + ] + "Ent Mover" + [ + "comp_entity_mover" + ] + "Entity Finder" + [ + "comp_entity_finder" + ] + "KV Setter" + [ + "comp_kv_setter" + ] + "Numeric Transition" + [ + "comp_numeric_transition" + ] + "Packing" + [ + "comp_pack" + "comp_pack_rename" + "comp_pack_replace_soundscript" + ] + "Precacher" + [ + "comp_precache_model" + "comp_precache_sound" + ] + "Propcombine" + [ + "comp_propcombine_set" + "comp_propcombine_volume" + ] + "Ropes¨" + [ + "comp_prop_cable" + "comp_prop_rope" + ] + "Sceneset" + [ + "comp_choreo_sceneset" + ] + "VScript Setter" + [ + "comp_scriptvar_setter" + ] + "Vactubes" + [ + "comp_vactube_end" + "comp_vactube_junction" + "comp_vactube_object" + "comp_vactube_spline" + "comp_vactube_start" + ] + ] +@AutoVisgroup = "Tool Brushes" + [ + "Areaportals" + [ + "func_areaportal" + "func_areaportalwindow" + ] + "Occluders" + [ + "func_occluder" + ] + "Propcombine¨" + [ + "comp_propcombine_volume" + ] + ] +@AutoVisgroup = "Triggers" + [ + "Death Triggers" + [ + "comp_trigger_p2_goo" + "trigger_hurt" + "trigger_waterydeath" + ] + "Ent Destruction" + [ + "trigger_remove" + "trigger_weapon_dissolve" + "trigger_weapon_strip" + ] + "Force Triggers" + [ + "trigger_catapult" + "trigger_gravity" + "trigger_impact" + "trigger_jumppad" + "trigger_push" + "trigger_vphysics_motion" + "trigger_wind" + ] + "Level Transitions" + [ + "trigger_changelevel" + "trigger_transition" + ] + "Player Movement Triggers" + [ + "trigger_playermovement" + "trigger_setspeed" + ] + "Portal Detectors" + [ + "func_portal_detector" + "func_portal_orientation" + "func_portalled" + ] + "Trigger Multiple" + [ + "trigger_multiple" + ] + "Trigger Once" + [ + "trigger_once" + ] + ] +@AutoVisgroup = "World Details" + [ + "Func Detail" + [ + "func_detail" + ] + "Overlays" + [ + "env_texturetoggle" + "info_overlay" + "info_overlay_transition" + "prop_indicator_panel" + ] + "Props" + [ + "cycler" + "cycler_actor" + "prop_detail" + "prop_detail_sprite" + "prop_dropship_container" + "prop_dynamic" + "prop_dynamic_glow" + "prop_dynamic_ornament" + "prop_dynamic_override" + "prop_hallucination" + "prop_mirror" + "prop_physics" + "prop_physics_multiplayer" + "prop_physics_override" + "prop_physics_paintable" + "prop_physics_ragdoll" + "prop_physics_respawnable" + "prop_ragdoll" + "prop_scalable" + "prop_sphere" + "prop_static" + "simple_physics_brush" + "simple_physics_prop" + ] + ] +@AutoVisgroup = "Logic" + [ + "Sensors" + [ + "env_firesensor" + "info_game_event_proxy" + "logic_eventlistener" + "point_anglesensor" + "point_angularvelocitysensor" + "point_paint_sensor" + "point_proximity_sensor" + "point_velocitysensor" + "portal_race_checkpoint" + ] + ] +@AutoVisgroup = "Props" + [ + "Cycler" + [ + "cycler" + "cycler_actor" + ] + "Dynamic¨" + [ + "prop_dynamic" + "prop_dynamic_glow" + "prop_dynamic_ornament" + "prop_dynamic_override" + "prop_scalable" + ] + "Physics¨" + [ + "prop_dropship_container" + "prop_physics" + "prop_physics_multiplayer" + "prop_physics_override" + "prop_physics_paintable" + "prop_physics_ragdoll" + "prop_physics_respawnable" + "prop_ragdoll" + "prop_sphere" + "simple_physics_brush" + "simple_physics_prop" + ] + "Prop Control" + [ + "point_posecontroller" + ] + "Static Lighting Origins" + [ + "info_lighting" + ] + "Static¨" + [ + "prop_detail" + "prop_detail_sprite" + "prop_static" + ] + ] +@AutoVisgroup = "Physics¨" + [ + "Ragdoll" + [ + "prop_physics_ragdoll" + "prop_ragdoll" + ] + ] + +@BaseClass = AlyxInteractable + [ + + // Inputs + input InteractivePowerDown(void) : "Shutdown this target." + + // 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." + ] + +@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 = BaseEffectBrush + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + 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." + parentname(target_destination) : "Parent" : : "The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent." + parent_attachment_point(string) : "Attachment Point" : : "If set, attach to this attachment point on the parent during spawn." + vscripts(scriptlist) : "Entity Scripts" : : "Name(s) of script files that are executed after all entities have spawned." + thinkfunction(string) : "Script think function" : : "Name of a function in this entity's script scope which will be called automatically." + linedivider_base(string) readonly : "----------------------------------------------------------------------------------------------------------" + ] + +@BaseClass = BaseEntity + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + 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." + vscripts(scriptlist) : "Entity Scripts" : : "Name(s) of script files that are executed after all entities have spawned." + thinkfunction(string) : "Script think function" : : "Name of a function in this entity's script scope which will be called automatically." + vscript_init_code(string) : "Init Code" : : "This code will be executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings." + vscript_init_code2(string) : "Init Code 2" : : "This code will be the second line executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings. Additional Init Code keyvalues can be added with SmartEdit off." + linedivider_base(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // 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 or changes keyvalues dynamically. Format:\n' ::::'\nor 'keyvalue newval'. 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." + input Use(void) : "More or less replicates the player interacting with an entity. (+USE)" + input RunScriptFile(string) : "Execute a game script file from disk." + input RunScriptCode(script) : "Execute a string of script source code. Backtick ( ` ) characters will be converted to quotes in-game for strings." + input CallScriptFunction(string) : "Execute the given function name." + input CancelPending(void) : "Cancels any events fired by this entity that are currently pending in the I/O event queue." + input PassUser1(string) : "Causes this entity's OutUser1 output to be fired, passing along the parameter unchanged." + input PassUser2(string) : "Causes this entity's OutUser2 output to be fired, passing along the parameter unchanged." + input PassUser3(string) : "Causes this entity's OutUser3 output to be fired, passing along the parameter unchanged." + input PassUser4(string) : "Causes this entity's OutUser4 output to be fired, passing along the parameter unchanged." + input FireRandomUser(void) : "Fires OnUser1, OnUser2, OnUser3, or OnUser4 with a 25% chance of each." + input PassRandomUser(string) : "Fires OutUser1, OutUser2, OutUser3, or OutUser4 with a 25% chance of each. The parameter is passed along unchanged." + input KillIfNotVisible(void) : "Removes this entity if it is not in the player's viewcone." + input KillWhenNotVisible(void) : "Removes this entity when it is not in the player's viewcone." + input FireOutput(string) : "Fires the named output on this entity. Format: '::::' (OnDeath:hl3cardgame:gaben). Everything beyond the output name is optional." + input RemoveOutput(string) : "Removes all instances of the named output on this entity. Wildcards are supported, meaning you could just pass '*' to wipe all outputs from this entity." + input AcceptInput(string) : "Fires the named input on this entity. Format: '::::' (SetTarget:cheese). Everything beyond the input name is optional. Mind the fact this is arranged differently from FireOutput, having the parameter right after the input name." + input AddSpawnFlags(integer) : "Adds spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input RemoveSpawnFlags(integer) : "Removes spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input AddSolidFlags(integer) : "Adds solid flags to this entity." + input RemoveSolidFlags(integer) : "Removes solid flags from this entity." + input ChangeVariable(string) : "Similar to AddOutput, except it changes an internal variable similar to logic_datadesc_accessor instead. Very dangerous, use with care." + input SetEntityName(target_destination) : "Sets this entity's name that other entities should refer to it by." + input SetTarget(target_destination) : "Sets this entity's target. This is specific to certain entities, particularly logic entities that involve a target." + input SetOwnerEntity(target_destination) : "Sets this entity's owner entity. This has nothing to do with parenting and has more to do with collision and kill credits." + input SetThinkNull(void) : "Sets this entity's general think function to null. Behavior varies from entity to entity.." + + // 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." + output OutUser1(string) : "Fires in response to PassUser1 input, with the parameter passed through unchanged." + output OutUser2(string) : "Fires in response to PassUser2 input, with the parameter passed through unchanged." + output OutUser3(string) : "Fires in response to PassUser3 input, with the parameter passed through unchanged." + output OutUser4(string) : "Fires in response to PassUser4 input, with the parameter passed through unchanged." + ] + +@BaseClass = BaseEntityBrush + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + 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." + origin(origin) : "Origin (X Y Z)" : : "The position of this brush entity's center in the world. Rotating entities typically rotate around their origin." + parentname(target_destination) : "Parent" : : "The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent." + parent_attachment_point(string) : "Attachment Point" : : "If set, attach to this attachment point on the parent during spawn." + linedivider_vscript(string) readonly : "-------------------------------------------------------------------------------------------------------" + vscripts(scriptlist) : "Entity Scripts" : : "Name(s) of script files that are executed after all entities have spawned." + thinkfunction(string) : "Script think function" : : "Name of a function in this entity's script scope which will be called automatically." + vscript_init_code(string) : "Init Code" : : "This code will be executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings." + vscript_init_code2(string) : "Init Code 2" : : "This code will be the second line executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings. Additional Init Code keyvalues can be added with SmartEdit off." + linedivider_base(string) readonly : "----------------------------------------------------------------------------------------------------------" + mins(vector) : "Minimum Bounding Box Size" : : "Co-ordinate of the minimum bounding box corner, relative to entity origin. The bounding box is drawn from this corner to the other one. Requires Bounding Box collisions (solid 2) to be used. Can be used to overwrite the collision shape of a brush, although it can only be a cuboid. Can be AddOutputed to change shape at runtime." + maxs(vector) : "Maximum Bounding Box Size" : : "Co-ordinate of the maximum bounding box corner, relative to entity origin. The bounding box is drawn from this corner to the other one. Requires Bounding Box collisions (solid 2) to be used. Can be used to overwrite the collision shape of a brush, although it can only be a cuboid. Can be AddOutputed to change shape at runtime." + solid(choices) : "Collisions" : 6 : "Method of collision for this entity. Can be changed at runtime with AddOutput." = + [ + 0: "None" + 1: "BSP (QPhysics)" + 2: "Bounding Box" + 3: "Oriented Bounding Box" + 4: "Oriented Bounding Box, constrained to Yaw only" + 5: "Custom (defined per-entity, if not defined the entity will have bizarre collision behavior)" + 6: "VPhysics" + ] + + linedivider_basebrush(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input Kill(void) : "Removes this entity from the world." + input KillHierarchy(void) : "Removes this entity and all its children from the world." + input SetParent(target_destination) : "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." + input SetLocalAngles(vector) : "Sets the rotation of the entity relative to the parent's rotation." + input SetLocalOrigin(vector) : "Sets the position of the entity relative to its parent if one exists. Otherwise relative to the world." + input SetAbsAngles(vector) : "Set this entity's angles, always relative to the world origin." + input AddOutput(string) : "Adds an entity I/O connection to this entity or changes keyvalues dynamically. Format:\n' ::::'\nor 'keyvalue newval'. 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." + input Use(void) : "More or less replicates the player interacting with an entity. (+USE)" + input RunScriptFile(string) : "Execute a game script file from disk." + input RunScriptCode(script) : "Execute a string of script source code. Backtick ( ` ) characters will be converted to quotes in-game for strings." + input CallScriptFunction(string) : "Execute the given function name." + input PassUser1(string) : "Causes this entity's OutUser1 output to be fired, passing along the parameter unchanged." + input PassUser2(string) : "Causes this entity's OutUser2 output to be fired, passing along the parameter unchanged." + input PassUser3(string) : "Causes this entity's OutUser3 output to be fired, passing along the parameter unchanged." + input PassUser4(string) : "Causes this entity's OutUser4 output to be fired, passing along the parameter unchanged." + input FireRandomUser(void) : "Fires OnUser1, OnUser2, OnUser3, or OnUser4 with a 25% chance of each." + input PassRandomUser(string) : "Fires OutUser1, OutUser2, OutUser3, or OutUser4 with a 25% chance of each. The parameter is passed along unchanged." + input KillIfNotVisible(void) : "Removes this entity if it is not in the player's viewcone." + input KillWhenNotVisible(void) : "Removes this entity when it is not in the player's viewcone." + input FireOutput(string) : "Fires the named output on this entity. Format: '::::' (OnDeath:hl3cardgame:gaben). Everything beyond the output name is optional." + input RemoveOutput(string) : "Removes all instances of the named output on this entity. Wildcards are supported, meaning you could just pass '*' to wipe all outputs from this entity." + input AcceptInput(string) : "Fires the named input on this entity. Format: '::::' (SetTarget:cheese). Everything beyond the input name is optional. Mind the fact this is arranged differently from FireOutput, having the parameter right after the input name." + input CancelPending(void) : "Cancels any events fired by this entity that are currently pending in the I/O event queue." + input FreeChildren(void) : "Unparents all direct children of this entity." + input SetLocalVelocity(vector) : "Sets this entity's current velocity." + input SetLocalAngularVelocity(vector) : "Sets this entity's current angular velocity." + input AddSpawnFlags(integer) : "Adds spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input RemoveSpawnFlags(integer) : "Removes spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input AddSolidFlags(integer) : "Adds solid flags to this entity." + input RemoveSolidFlags(integer) : "Removes solid flags from this entity." + input ChangeVariable(string) : "Similar to AddOutput, except it changes an internal variable similar to logic_datadesc_accessor instead. Very dangerous, use with care." + input SetHealth(integer) : "Sets this entity's health." + input AddHealth(integer) : "Adds to this entity's health." + input RemoveHealth(integer) : "Removes from this entity's health." + input SetMaxHealth(integer) : "Sets this entity's max health." + input SetEntityName(target_destination) : "Sets this entity's name that other entities should refer to it by." + input SetTarget(target_destination) : "Sets this entity's target. This is specific to certain entities, particularly logic entities that involve a target." + input SetOwnerEntity(target_destination) : "Sets this entity's owner entity. This has nothing to do with parenting and has more to do with collision and kill credits." + input SetThinkNull(void) : "Sets this entity's general think function to null. Behavior varies from entity to entity.." + input Touch(target_destination) : "Simulates this entity touching the specified entity." + + // 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." + output OutUser1(string) : "Fires in response to PassUser1 input, with the parameter passed through unchanged." + output OutUser2(string) : "Fires in response to PassUser2 input, with the parameter passed through unchanged." + output OutUser3(string) : "Fires in response to PassUser3 input, with the parameter passed through unchanged." + output OutUser4(string) : "Fires in response to PassUser4 input, with the parameter passed through unchanged." + ] + +@BaseClass = BaseEntityPoint + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + 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." + angles(angle) : "Pitch Yaw Roll (X Y Z)" : "0 0 0" : "This entity's orientation in the world. Roll is the rotation around the X axis, pitch is rotation around the Y axis and yaw is the rotation around the Z axis." + parentname(target_destination) : "Parent" : : "The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent." + parent_attachment_point(string) : "Attachment Point" : : "If set, attach to this attachment point on the parent during spawn." + linedivider_vscript(string) readonly : "-------------------------------------------------------------------------------------------------------" + vscripts(scriptlist) : "Entity Scripts" : : "Name(s) of script files that are executed after all entities have spawned." + thinkfunction(string) : "Script think function" : : "Name of a function in this entity's script scope which will be called automatically." + vscript_init_code(string) : "Init Code" : : "This code will be executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings." + vscript_init_code2(string) : "Init Code 2" : : "This code will be the second line executed after the Entity Scripts option. Backtick ( ` ) characters will be converted to quotes in-game for strings. Additional Init Code keyvalues can be added with SmartEdit off." + linedivider_base(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input Kill(void) : "Removes this entity from the world." + input KillHierarchy(void) : "Removes this entity and all its children from the world." + input SetParent(target_destination) : "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." + input SetLocalAngles(vector) : "Sets the rotation of the entity relative to the parent's rotation." + input SetLocalOrigin(vector) : "Sets the position of the entity relative to its parent if one exists. Otherwise relative to the world." + input SetAbsAngles(vector) : "Set this entity's angles, always relative to the world origin." + input AddOutput(string) : "Adds an entity I/O connection to this entity or changes keyvalues dynamically. Format:\n' ::::'\nor 'keyvalue newval'. 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." + input Use(void) : "More or less replicates the player interacting with an entity. (+USE)" + input RunScriptFile(string) : "Execute a game script file from disk." + input RunScriptCode(script) : "Execute a string of script source code. Backtick ( ` ) characters will be converted to quotes in-game for strings." + input CallScriptFunction(string) : "Execute the given function name." + input PassUser1(string) : "Causes this entity's OutUser1 output to be fired, passing along the parameter unchanged." + input PassUser2(string) : "Causes this entity's OutUser2 output to be fired, passing along the parameter unchanged." + input PassUser3(string) : "Causes this entity's OutUser3 output to be fired, passing along the parameter unchanged." + input PassUser4(string) : "Causes this entity's OutUser4 output to be fired, passing along the parameter unchanged." + input FireRandomUser(void) : "Fires OnUser1, OnUser2, OnUser3, or OnUser4 with a 25% chance of each." + input PassRandomUser(string) : "Fires OutUser1, OutUser2, OutUser3, or OutUser4 with a 25% chance of each. The parameter is passed along unchanged." + input KillIfNotVisible(void) : "Removes this entity if it is not in a player's viewcone." + input KillWhenNotVisible(void) : "Removes this entity when it is not in a player's viewcone. You can pass a time for when this should start." + input FireOutput(string) : "Fires the named output on this entity. Format: '::::' (OnDeath:hl3cardgame:gaben). Everything beyond the output name is optional." + input RemoveOutput(string) : "Removes all instances of the named output on this entity. Wildcards are supported, meaning you could just pass '*' to wipe all outputs from this entity." + input AcceptInput(string) : "Fires the named input on this entity. Format: '::::' (SetTarget:cheese). Everything beyond the input name is optional. Mind the fact this is arranged differently from FireOutput, having the parameter right after the input name." + input CancelPending(void) : "Cancels any events fired by this entity that are currently pending in the I/O event queue." + input FreeChildren(void) : "Unparents all direct children of this entity." + input SetLocalVelocity(vector) : "Sets this entity's current velocity." + input SetLocalAngularVelocity(vector) : "Sets this entity's current angular velocity." + input AddSpawnFlags(integer) : "Adds spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input RemoveSpawnFlags(integer) : "Removes spawnflag(s) to this entity. Many spawnflags have their respective numbers suffixed in this FGD." + input AddSolidFlags(integer) : "Adds solid flags to this entity." + input RemoveSolidFlags(integer) : "Removes solid flags from this entity." + input ChangeVariable(string) : "Similar to AddOutput, except it changes an internal variable similar to logic_datadesc_accessor instead. Very dangerous, use with care." + input SetHealth(integer) : "Sets this entity's health." + input AddHealth(integer) : "Adds to this entity's health." + input RemoveHealth(integer) : "Removes from this entity's health." + input SetMaxHealth(integer) : "Sets this entity's max health." + input SetEntityName(target_destination) : "Sets this entity's name that other entities should refer to it by." + input SetTarget(target_destination) : "Sets this entity's target. This is specific to certain entities, particularly logic entities that involve a target." + input SetOwnerEntity(target_destination) : "Sets this entity's owner entity. This has nothing to do with parenting and has more to do with collision and kill credits." + input SetThinkNull(void) : "Sets this entity's general think function to null. Behavior varies from entity to entity.." + input Touch(target_destination) : "Simulates this entity touching the specified entity." + + // 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." + output OutUser1(string) : "Fires in response to PassUser1 input, with the parameter passed through unchanged." + output OutUser2(string) : "Fires in response to PassUser2 input, with the parameter passed through unchanged." + output OutUser3(string) : "Fires in response to PassUser3 input, with the parameter passed through unchanged." + output OutUser4(string) : "Fires in response to PassUser4 input, with the parameter passed through unchanged." + ] + +@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, 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 = BaseLight + [ + _light(color255) : "Brightness" : "255 255 255 200" : "Color and brightness of the light." + _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" + 12: "Underwater light mutation" + ] + + spawnflags(flags) = + [ + 1: "[1] Initially dark" : 0 + ] + + 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." + fadetickinterval(float) : "Fade Tick Interval" : "0.1" : "The tick interval of the light's fade, in seconds. Lower values cause a faster fade." + _castentityshadow(boolean) : "Cast Entity Shadows" : 1 : "Objects illuminated by this light will cast a directional shadow." + _shadoworiginoffset(vector) : "Entity shadow offset" : "0 0 0" : "A world-space offset applied to the shadow origin, in units. X Y Z." + _nocubemapsprite(boolean) : "No Sprite in Cubemap" : 1 : "If set, this light will not draw a sprite during cubemap building" + + // 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 = BaseLightFalloff + [ + _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 parameters." + _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 lighting if not used carefully." + _distance(integer) : "Maximum Distance" : 0 : "The distance that light is allowed to cast." + ] + +@BaseClass = BasePaintType: "Paint Type property." + [ + painttype(choices) : "Paint Type" : 0 : "The type of Gel created." = + [ + 0: "Repulsion Gel" + 1: "Reflection Gel" + 2: "Propulsion Gel" + 3: "Conversion Gel" + 4: "Cleansing Gel" + 5: "Adhesion Gel" + ] + + skin(choices) : "[H] Paint Type" : 0 : "The type of gel displayed in Hammer." = + [ + 0: "Repulsion Gel" + 1: "Reflection Gel" + 2: "Propulsion Gel" + 3: "Conversion Gel" + 4: "Cleansing Gel" + 5: "Adhesion Gel" + ] + + ] + +@BaseClass = CombineScanner + [ + spawnflags(flags) = + [ + 65536: "[65536] No Dynamic Light" : 0 + 131072: "[131072] Strider Scout Scanner" : 0 + ] + + spotlightlength(integer) : "Spotlight Length" : 500 + spotlightwidth(integer) : "Spotlight Width" : 50 + spotlightdisabled(boolean) : "Disable Spotlight" : 0 + shouldinspect(boolean) : "Should inspect" : 1 + onlyinspectplayers(boolean) : "Only Inspect Players" : 0 + neverinspectplayers(boolean) : "Never Inspect Players" : 0 + + // Inputs + input DisableSpotlight(void) : "Disable the spotlight." + input InspectTargetPhoto(target_destination) : "Tells the scanner to photograph the given entity, named by classname or by target name. !activator or !player works here also." + input InspectTargetSpotlight(target_destination) : "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(target_destination) : "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" + + // 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." + ] + +@BaseClass = DamageFilter + [ + damagefilter(filterclass) : "Damage Filter" : : "Name of the filter entity that controls which entities can damage us." + + // Inputs + input SetDamageFilter(target_destination) : "Sets the entity to use as damage filter. Pass in an empty string to clear the damage filter." + ] + +@BaseClass = DamageType + [ + damagetype(choices) : "Damage Type" : 0 : "Kind of damage to apply. These fields can be ORed together. " = + [ + 0: "Generic" + 1: "Crush" + 2: "Bullet" + 4: "Slash" + 8: "Burn" + 16: "Vehicle" + 32: "Fall" + 64: "Blast" + 128: "Club" + 256: "Shock" + 512: "Sonic" + 1024: "Energy Beam" + 16384: "Drown (blue faded)" + 32768: "Paralyse" + 65536: "Nerve Gas" + 131072: "Poison" + 262144: "Radiation" + 524288: "Drowning recovery" + 1048576: "Acid" + 2097152: "Slow Burn" + 4194304: "Slowfreeze" + 8388608: "Gravity Gun" + 16777216: "Plasma" + 33554432: "Airboat" + 67108864: "Dissolve" + 134217728: "Blast Surface" + 268435456: "Direct" + 536870912: "Buckshot" + ] + + damageor1(choices) : "Damage Gibbing" : 0 : "Optional flags that can accompany the damage type." = + [ + 0: "Normal Behaviour" + 4096: "Never use gibs" + 8192: "Always gib if possible" + ] + + damageor2(choices) : "Prevent Physics Force" : 0 : "Prevent applying physics force to the target." = + [ + 0: "No" + 2048: "Yes" + ] + + ] + +@BaseClass = DetailPropBase + [ + detailorientation(choices) : "Orientation" : 0 : "How the prop/sprite rotates to face the camera." = + [ + 0: "No rotation" + 1: "Screen Aligned" + 2: "Z axis only" + ] + + ] + +@BaseClass = EnableDisable + [ + startdisabled(boolean) : "Start Disabled" : 0 + + // Inputs + input Enable(void) : "Enable this entity." + input Disable(void) : "Disable this entity." + ] + +@BaseClass = FadeDistance + [ + fademindist(float) : "Start Fade Dist" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist)." + fademaxdist(float) : "End Fade Dist" : 0 : "Maximum 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 low end/medium end, 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 = GrenadeUser + [ + numgrenades(choices) : "Number of Grenades" : 0 = + [ + 0: "None" + 1: "1" + 2: "2" + 3: "3" + 4: "4" + 5: "5" + 999999: "Unlimited" + ] + + + // Inputs + input ThrowGrenadeAtTarget(target_destination) : "Throws a grenade at the specified target." + ] + +@BaseClass = KeyFrame + [ + nextkey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path." + movespeed(integer) : "Speed (units per second)" : 64 + ] + +@BaseClass = LinkedPortalDoor: "An entity that can be linked to another door and create a passage between them dynamically." + [ + + // Inputs + input SetPartner(target_destination) : "Set a new partner door." + input Open(void) : "Open the door and cause the portal to activate." + input Close(void) : "Close the door and cause the portal to deactivate." + + // Outputs + output OnOpen(void) : "Called when the door has started its open animation." + output OnClose(void) : "Called when the door has started its close animation." + output OnEntityTeleportFromMe(void) : "When any entity is teleported from this portal to the linked partner." + output OnPlayerTeleportFromMe(void) : "When the player is teleported from this portal to the linked partner." + output OnEntityTeleportToMe(void) : "When any entity is teleported from this linked partner to the portal." + output OnPlayerTeleportToMe(void) : "When the player is teleported from this linked partner to the portal." + ] + +@BaseClass = MasterEnt + [ + master(target_destination) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate." + ] + +@BaseClass = Mover + [ + positioninterpolator(choices) : "Position Interpolator" : 0 = + [ + 0: "Linear" + 1: "Catmull-Rom Spline" + ] + + ] + +@BaseClass = Node + [ + nodeid(node_id) readonly : "Node ID" + ] + +@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 = PortalBase + [ + activated(choices) : "Start Activated" : 0 : "An inactive portal will not be drawn and will not teleport entities." = + [ + 0: "Inactive" + 1: "Active" + ] + + portaltwo(choices) : "Portal Number" : 0 : "Which of the pair is this portal?" = + [ + 0: "Portal 1 (Blue)" + 1: "Portal 2 (Orange)" + ] + + halfwidth(float) : "Half-Width of the Portal." : 0 + halfheight(float) : "Half-Height of the Portal." : 0 + + // Outputs + output OnPlacedSuccessfully(void) : "When a portal is placed without failure, this output is fired." + output OnEntityTeleportFromMe(void) : "When any entity is teleported from this portal to the linked partner." + output OnPlayerTeleportFromMe(void) : "When the player is teleported from this portal to the linked partner." + output OnEntityTeleportToMe(void) : "When any entity is teleported from this linked partner to the portal." + output OnPlayerTeleportToMe(void) : "When the player is teleported from this linked partner to the portal." + ] + +@BaseClass = Reflection + [ + drawinfastreflection(boolean) : "Render in Fast Reflections" : 0 : "If enabled, causes this entity/prop to to render in fast water reflections (i.e. when a water material specifies $reflectonlymarkedentities) and in the world impostor pass." + + // Inputs + input DisableDrawInFastReflection(void) : "Turns off rendering of this entity in reflections when using $reflectonlymarkedentities in water material." + input EnableDrawInFastReflection(void) : "Turn on rendering of this entity in reflections when using $reflectonlymarkedentities in water material." + ] + +@BaseClass = RenderFields + [ + rendermode(choices) : "Render Mode" : 0 : "Used to set a non-standard rendering mode on this entity. See also 'FX Amount' and 'FX Color'.* Color & Texture = src*a+dest*(1-a)* Glow = src*a + dest, fixed on screen for sprites* Solid = Performs alphatest transparency* Additive = src*a + dest* Additive FF = blend between sprite nimation frames* Alpha Add = src + dest*(1-a)* World Space Glow = src*a + dest" = + [ + 0: "Normal" + 1: "Color" + 2: "Texture" + 3: "Glow" + 4: "Solid" + 5: "Additive" + 7: "Additive Fractional Frame" + 8: "Additive Alpha" + 9: "World Space Glow" + 10: "Don't Render" + ] + + rendercolor(color255) : "FX Color (R G B)" : "255 255 255" : "A color to mix with the model/sprite." + renderamt(integer) : "FX Alpha (0 - 255)" : 255 : "Transparency amount, requires a Render Mode other than Normal. 0 is invisible, 255 is fully visible." + renderfx(choices) : "Render FX" : 0 : "Various somewhat legacy alpha effects. Material Proxies are more modern." = + [ + 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: "Fade Out" + 16: "Fade In" + 17: "Pulse Fast Wider" + 18: "Glow Shell" + ] + + disablereceiveshadows(boolean) : "Disable Receiving Shadows" : 0 + viewhideflags(choices) : "View ID nodraw" : 0 : "This keyvalue can control whether an entity should only draw on things like monitors or mirrors, or the opposite. The code for this is { m_iViewHideFlags & (1 << CurrentViewID()) } and supports any combination of view IDs." = + [ + 0: "Draw normally" + 193: "Hide in main view (player's eyes)" + 36: "Hide in cameras" + 24: "Hide in mirrors/water" + 60: "Hide in cameras and mirrors/water" + 2: "Hide in 3D skybox" + 128: "Hide projected texture shadows" + ] + + + // Inputs + input Alpha(integer) : "Set the entity's alpha (0 - 255)." + input Color(color255) : "Set the entity's color (R G B)." + input SetRenderMode(integer) : "Sets this entity's render mode." + input SetRenderFX(integer) : "Sets this entity's render FX." + input SetViewHideFlags(integer) : "Sets this entity's view ID nodraw flags (takes raw flag combination)." + input AddEffects(integer) : "Adds an entity effect." + input RemoveEffects(integer) : "Removes an entity effect." + input EnableDraw(void) : "Draws an entity if it is not drawn. Equivalent to RemoveEffects > 32." + input DisableDraw(void) : "Undraws an entity if it is drawn. Equivalent to AddEffects > 32." + input AddEFlags(integer) : "Adds an entity flag. NOTE: Entity flags are not the spawn flags you see in Hammer. Use AddSpawnFlags to add spawnflags." + input RemoveEFlags(integer) : "Removes an entity flag. NOTE: Entity flags are not the spawn flags you see in Hammer. Use RemoveSpawnFlags to remove spawnflags." + input SetCollisionGroup(integer) : "Sets this entity's collision group." + ] + +@BaseClass = ResponseContext + [ + 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." + + // 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." + ] + +@BaseClass = SRCIndicator: "Adds an Indicator Name option to toggle overlays." + [ + indicatorname(target_destination) : "Indicator Name" : : "Set to the name of a set of info_overlays to toggle when this is activated and deactivated. The name may also point to a prop_indicator_panel, which will also be toggled appropriately." + + // Inputs + input SetTextureIndex(integer) : "Manually change the index of the overlays. prop_indicator_panels must not be used." + ] + +@BaseClass = SetSkin + [ + 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." + skinset(string) : "Used Skins" : : "Set this to a space seperated list of all the skin numbers which will be used by this ent ('0 4 8' for example). This allows auto-packing to skip unused ones. If blank all skins are assumed to be used." + ] + +@BaseClass = StaticTargetName: "Targetnames only used in compilation." + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by. This entity only exists during compilation, so the name is only usable in limited situations." + ] + +@BaseClass = SystemLevelChoice + [ + mincpulevel(choices) : "Minimum CPU Level" : 0 = + [ + 0: "default (low)" + 1: "low" + 2: "medium" + 3: "high" + ] + + maxcpulevel(choices) : "Maximum CPU Level" : 0 = + [ + 0: "default (high)" + 1: "low" + 2: "medium" + 3: "high" + ] + + mingpulevel(choices) : "Minimum GPU Level" : 0 = + [ + 0: "default (very low)" + 1: "very low" + 2: "low" + 3: "medium" + 4: "high" + ] + + maxgpulevel(choices) : "Maximum GPU Level" : 0 = + [ + 0: "default (high)" + 1: "very low" + 2: "low" + 3: "medium" + 4: "high" + ] + + ] + +@BaseClass = TeamNum + [ + teamnum(choices) : "Team" : 0 = + [ + 0: "Chell/Bendy" + 2: "P-Body" + 3: "ATLAS" + ] + + + // Inputs + input SetTeam(integer) : "Changes the entity's team." + ] + +@BaseClass = Toggle + [ + + // Inputs + input Toggle(void) : "Toggle the enabled/disabled status of this entity." + ] + +@BaseClass = ToggleDraw + [ + + // Inputs + input DisableDraw(void) : "Add the EF_NODRAW flag to this entity. Some entities manage this on their own so be aware you can override that value." + input EnableDraw(void) : "Remove the EF_NODRAW flag to this entity. Some entities manage this on their own so be aware you can override that value." + ] + +@BaseClass = _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'." + explodemagnitude(integer) : "Explode Magnitude" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of 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" + ] + + pressuredelay(float) : "Pressure Delay" : 0 : "Delay, in seconds, after 'broken' by pressure before breaking apart (allows for sound to play before breaking apart)." + minhealthdmg(integer) : "Minimum Damage to Hurt" : 0 : "The entity will ignore any damage events if the damage is less than this amount." + health(integer) : "Health" : 0 : "Number of points of damage to take before breaking. 0 means don't break." + physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this object is hit by a physics object. Set to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials." + + // 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." + ] + +@PointClass + iconsprite("editor/comp_entity_finder") + sphere(radius) + cylinder(255 255 255, targetname, targetref, radius) + line(255 255 255, targetname, kv1_known) + line(255 255 255, targetname, kv2_known) + line(255 255 255, targetname, kv3_known) + line(255 255 255, targetname, kv4_known) + line(255 255 255, targetname, kv5_known) += comp_entity_finder: "Finds the closest entity of a given type, then applies various transformations.Outputs from this entity will be moved to the found entity.Further keyvalues can be set manually with SmartEdit off." + [ + targetname(target_source) readonly : "Targetname" : "" : "Fake targetname, used to determine how containing instances are configured." + targetcls(string) : "Target Classname" : : "Classnames of the entity to find. Multiple classnames can be specified seperated by spaces." + radius(float) : "Search Radius" : 64 : "Radius to search inside, or 0 for infinite." + searchfov(float) : "Search Field Of View" : 180 : "The found entity must be within this many degrees of the direction of the finder." + angles(angle) : "Search Direction" : "0 0 0" : "If Search FOV is used, the direction to compare to." + targetref(target_destination) : "Reference position" : : "If set, look for entities close to this entity instead of the comp_entity_finder." + blacklist(target_destination) : "Search Blacklist" : : "If set, ignore entities matching this name." + teleporttarget(boolean) : "Teleport Target To Me" : 0 : "Move the found entity to the location of this entity or that of the reference." + makeunique(boolean) : "Make Target Unique" : 0 : "Append a numeric suffix to the target's name to make it unique." + sep1(string) readonly : "----------------------------------------------------------------------------------------------------------" + kv1_mode(choices) : "1 - Mode" : : "The first modification to perform. For Replace Outputs, outputs sent to a !name specified in Destination will be switched to point to the found entity." = + [ + "": "None" + "const2target": "Constant -> Target Ent KV" + "const2known": "Constant -> Known Ent KV" + "known2target": "Known Ent KV -> Target Ent KV" + "target2known": "Target Ent KV -> Known Ent KV" + "replacetarget": "Replace Outputs" + ] + + kv1_known(target_destination) : "1 - Known Entity" : : "The known entity to access." + kv1_src(string) : "1 - Source" : : "Constant value to use or keyvalue name to read from." + kv1_dest(string) : "1 - Destination" : : "Keyvalue name to write to or !special name to replace." + sep2(string) readonly : "----------------------------------------------------------------------------------------------------------" + kv2_mode(choices) : "2 - Mode" : : "The second modification to perform. For Replace Outputs, outputs sent to a !name specified in Destination will be switched to point to the found entity." = + [ + "": "None" + "const2target": "Constant -> Target KV" + "const2known": "Constant -> Known KV" + "known2target": "Known KV -> Target KV" + "target2known": "Target KV -> Known KV" + "replacetarget": "Replace Outputs" + ] + + kv2_known(target_destination) : "2 - Known Entity" : : "The known entity to access." + kv2_src(string) : "2 - Source" : : "Constant value or keyvalue name to read from." + kv2_dest(string) : "2 - Destination" : : "Keyvalue name to write to or !special name to replace." + sep3(string) readonly : "----------------------------------------------------------------------------------------------------------" + kv3_mode(choices) : "3 - Mode" : : "The third modification to perform. For Replace Outputs, outputs sent to a !name specified in Destination will be switched to point to the found entity." = + [ + "": "None" + "const2target": "Constant -> Target KV" + "const2known": "Constant -> Known Ent KV" + "known2target": "Known KV -> Target KV" + "target2known": "Target KV -> Known KV" + "replacetarget": "Replace Outputs" + ] + + kv3_known(target_destination) : "3 - Known Entity" : : "The known entity to access." + kv3_src(string) : "3 - Source" : : "Constant value or keyvalue name to read from." + kv3_dest(string) : "3 - Destination" : : "Keyvalue name to write to or !special name to replace." + sep4(string) readonly : "----------------------------------------------------------------------------------------------------------" + kv4_mode(choices) : "4 - Mode" : : "The fourth modification to perform. For Replace Outputs, outputs sent to a !name specified in Destination will be switched to point to the found entity." = + [ + "": "None" + "const2target": "Constant -> Target KV" + "const2known": "Constant -> Known Ent KV" + "known2target": "Known KV -> Target KV" + "target2known": "Target KV -> Known KV" + "replacetarget": "Replace Outputs" + ] + + kv4_known(target_destination) : "4 - Known Entity" : : "The known entity to access." + kv4_src(string) : "4 - Source" : : "Constant value or keyvalue name to read from." + kv4_dest(string) : "4 - Destination" : : "Keyvalue name to write to or !special name to replace." + sep5(string) readonly : "----------------------------------------------------------------------------------------------------------" + kv5_mode(choices) : "5 - Mode" : : "The fifth modification to perform. For Replace Outputs, outputs sent to a !name specified in Destination will be switched to point to the found entity." = + [ + "": "None" + "const2target": "Constant -> Target KV" + "const2known": "Constant -> Known Ent KV" + "known2target": "Known KV -> Target KV" + "target2known": "Target KV -> Known KV" + "replacetarget": "Replace Outputs" + ] + + kv5_known(target_destination) : "5 - Known Entity" : : "The known entity to access." + kv5_src(string) : "5 - Source" : : "Constant value or keyvalue name to read from." + kv5_dest(string) : "5 - Destination" : : "Keyvalue name to write to or !special name to replace." + + // Outputs + output OutName(void) : "Needed to allow Hammer to add outputs to this." + ] + +@PointClass + iconsprite("editor/comp_entity_mover") + sphere(distance) + line(255 255 255, targetname, target) += comp_entity_mover: "Shift an entity by a given amount. This is useful to place entities into the void, for example." + [ + target(target_destination) : "Target Entity" : : "The name of the entity or entities to move." + reference(target_destination) : "Reference Entity" : : "If set, the target will be offset by the amount that this entity is from the reference. The Distance will then be a multiplier." + direction(angle) : "Direction" : "0 0 0" : "If no Reference is provided, the direction to move in." + distance(float) : "Distance" : 1 : "The amount to move targets by." + ] + +@PointClass + iconsprite("editor/comp_pack") += comp_pack: "Explicitly identify resources to pack into the map. If more are needed, add additional keyvalues with SmartEdit off." + [ + generic1(string) : "Generic" : : "Pack a file, starting in any of the content folders." + generic2(string) : "Generic" : : "Pack a file, starting in any of the content folders." + generic3(string) : "Generic" : : "Pack a file, starting in any of the content folders." + generic4(string) : "Generic" : : "Pack a file, starting in any of the content folders." + generic5(string) : "Generic" : : "Pack a file, starting in any of the content folders." + sound1(sound) : "Sound" : : "Pack a raw sound file or a soundscript." + sound2(sound) : "Sound" : : "Pack a raw sound file or a soundscript." + sound3(sound) : "Sound" : : "Pack a raw sound file or a soundscript." + sound4(sound) : "Sound" : : "Pack a raw sound file or a soundscript." + sound5(sound) : "Sound" : : "Pack a raw sound file or a soundscript." + model1(studio) : "Model" : : "Pack a model." + model2(studio) : "Model" : : "Pack a model." + model3(studio) : "Model" : : "Pack a model." + model4(studio) : "Model" : : "Pack a model." + model5(studio) : "Model" : : "Pack a model." + material1(material) : "Material" : : "Pack a material." + material2(material) : "Material" : : "Pack a material." + material3(material) : "Material" : : "Pack a material." + material4(material) : "Material" : : "Pack a material." + material5(material) : "Material" : : "Pack a material." + particle1(particlesystem) : "Particle" : : "Pack a particle system, and include in the manifest." + particle2(particlesystem) : "Particle" : : "Pack a particle system, and include in the manifest." + particle3(particlesystem) : "Particle" : : "Pack a particle system, and include in the manifest." + particle4(particlesystem) : "Particle" : : "Pack a particle system, and include in the manifest." + particle5(particlesystem) : "Particle" : : "Pack a particle system, and include in the manifest." + soundscript1(string) : "SoundScript" : : "Pack a soundscript file, and include in the manifest." + soundscript2(string) : "SoundScript" : : "Pack a soundscript file, and include in the manifest." + soundscript3(string) : "SoundScript" : : "Pack a soundscript file, and include in the manifest." + soundscript4(string) : "SoundScript" : : "Pack a soundscript file, and include in the manifest." + soundscript5(string) : "SoundScript" : : "Pack a soundscript file, and include in the manifest." + ] + +@PointClass + iconsprite("editor/comp_pack_rename") += comp_pack_rename: "Pack a file into the BSP, under a different name than it starts with." + [ + filesrc(string) : "Source Filename" : : "Filename to read data from." + filedest(string) : "Destination Filename" : : "Filename to pack under." + filetype(choices) : "File Type" : "GENERIC" : "File type to record it as." = + [ + "GENERIC": "Generic" + "SOUNDSCRIPT": "SoundScript file (add to manifest)" + "PARTICLE_FILE": "Particle System (add to manifest)" + "VSCRIPT_SQUIRREL": "VScript (Squirrel)" + "MATERIAL": "Material" + "TEXTURE": "Texture" + "MODEL": "Model" + ] + + ] + +@PointClass + iconsprite("editor/comp_pack_replace_soundscript") += comp_pack_replace_soundscript: "Replace a soundscript with a different one." + [ + original(string) : "Original SoundScript" : : "Prevent this soundscript from being included." + replacement(string) : "New SoundScript" : : "Force this soundscript to be included." + ] + +@PointClass + iconsprite("editor/comp_precache_sound") += comp_precache_sound: "Force a specific sound to load, for runtime switching. Duplicates will be removed. More keyvalues can be added." + [ + sound1(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound2(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound3(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound4(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound5(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound6(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound7(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound8(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound9(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + sound10(sound) : "Sound" : : "Pack and precache a raw sound file or a soundscript." + ] + +@SolidClass = comp_propcombine_volume: "Specifies a group of props that will be combined together. Note that unlike the propcombine_set point-entity version, this does impact some brush limits, so it is suggested to use the point version in instances and prefabs." + [ + name(string) : "Name" : : "Two sets with the same name will be treated as one." + prop(studio) : "Group Model" : : "If set, a combinable model used to define which others will be combined." + skin(integer) : "Group Skin" : 0 : "The skin for the Group Model." + ] + +@PointClass + studioprop() += comp_vactube_object: "Registers objects that can appear in the tubing." + [ + model(studio) : "Vac Model" : : "Specifies the model used while in the vactube." + skin(integer) : "Vac Skin" : : "Skin for the vactube model." + offset(vecline) : "Offset" : : "The centerpoint of the model for positioning. Position this at the center of the model to ensure it doesn't stick out of the tube." + weight(integer) : "Weight" : 1 : "The number of extra 'chances' for this to spawn. This works like a lottery - each cube has this many 'tickets', and then one is chosen randomly each time. If you have two choices with a weight of 9 and 1, the first will be chosen 90% of the time." + group(string) : "Group" : : "A vactube will only spawn objects with the same group name as it, so multiple vactubes can be set to have a different mix of items." + tv_skin(choices) : "TV Skin" : 0 : "The skin to display on scanner TVs." = + [ + 0: "Blank" + 1: "Chair" + 2: "Table" + 3: "Cube" + 4: "Hover turret / Core / Sphere" + 5: "Turret" + 6: "Boxed Turret" + ] + + cube_model(studio) : "Cube Model" : : "If set, this object can be spawned in droppers. This should be the model used on the real cube version so they can be matched to each other." + cube_skin(integer) : "Cube Skin" : 0 : "The specific skin to detect on the real cubes." + ] + +@PointClass + color(0 0 255) + sidelist() + iconsprite("editor/env_cubemap.vmt") + line(255 255 255, targetname, parallaxobb) += 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." + parallaxobb(target_destination) : "Cubemap Bounds" : : "Optionally assigns this cubemap a bounding box for parallax correction (brush entity tied to parallax_obb). This means the cubemap reflection will move as the camera moves, similar to func_reflective_glass. " + ] + +@SolidClass + 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 = func_detail_blocker: "A brush entity that prevents detail sprites from being placed inside its volume." + [ + ] + +@PointClass + sphere(max_range) + iconsprite("editor/ficool2/func_fish_pool") += 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)" + ] + +@PointClass + iconsprite("editor/func_instance_io_proxy.vmt") += func_instance_io_proxy: "Place one copy of this entity inside of an instance. Sending messages to entities inside the instance from the Proxy's OnProxyRelay output will allow you to trigger these entities from outside the instance by sending messages to the func_instance. Send the ProxyRelay message from entities inside the instance to the proxy and you will be able to use these events to send messages to other entities outside the instance from the func_instance. NOTE: The instance, the proxy, and all entities involved should be named descriptively." + [ + targetname(target_source) : "Name" : "proxy" : "The name that other entities refer to this entity by." + + // Inputs + input ProxyRelay(string) : "This message will get relayed and will be available from the instance." + input ProxyRelay1(string) : "Added by the compiler, this is used internally to connect the outputs." + input ProxyRelay2(string) : "Added by the compiler, this is used internally to connect the outputs." + input ProxyRelay3(string) : "Added by the compiler, this is used internally to connect the outputs." + input ProxyRelay4(string) : "Added by the compiler, this is used internally to connect the outputs." + input ProxyRelay5(string) : "Added by the compiler, this is used internally to connect the outputs." + + // Outputs + output OnProxyRelay(void) : "A message from outside can trigger this to cause something to happen in the instance." + ] + +@PointClass + iconsprite("editor/func_instance_origin.vmt") += func_instance_origin: "This is the center of the instance for rotation." + [ + ] + +@PointClass + iconsprite("editor/func_instance_parms.vmt") += 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 (01)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm2(instance_parm) : "Parm (02)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm3(instance_parm) : "Parm (03)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm4(instance_parm) : "Parm (04)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm5(instance_parm) : "Parm (05)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm6(instance_parm) : "Parm (06)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm7(instance_parm) : "Parm (07)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm8(instance_parm) : "Parm (08)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm9(instance_parm) : "Parm (09)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm10(instance_parm) : "Parm (10)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm11(instance_parm) : "Parm (11)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm12(instance_parm) : "Parm (12)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm13(instance_parm) : "Parm (13)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm14(instance_parm) : "Parm (14)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm15(instance_parm) : "Parm (15)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm16(instance_parm) : "Parm (16)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm17(instance_parm) : "Parm (17)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm18(instance_parm) : "Parm (18)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm19(instance_parm) : "Parm (19)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm20(instance_parm) : "Parm (20)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm21(instance_parm) : "Parm (21)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm22(instance_parm) : "Parm (22)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm23(instance_parm) : "Parm (23)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm24(instance_parm) : "Parm (24)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm25(instance_parm) : "Parm (25)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm26(instance_parm) : "Parm (26)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm27(instance_parm) : "Parm (27)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm28(instance_parm) : "Parm (28)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm29(instance_parm) : "Parm (29)" : : "This is a parameter. It goes in the form of $variable type [default value]." + parm30(instance_parm) : "Parm (30)" : : "This is a parameter. It goes in the form of $variable type [default value]." + ] + +@SolidClass = func_ladder: "Ladder. Players will be able to freely along one side of 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 climbable side of the func_ladder brush." + [ + ] + +@SolidClass + color(180 180 0) += func_viscluster: "Any visleafs touching this brush will assume they can see each other. Place across large open areas to help reduce compile times. Use sparingly, can create lag if you're not careful!" + [ + ] + +@PointClass + iconsprite("editor/ts_book.vmt") + line(255 255 255, targetname, linename1) + line(255 0 0, targetname, linename2) + line(0 255 0, targetname, linename3) + line(0 0 255, targetname, linename4) + worldtext() += hammer_notes: "Fake entity to store notes and comments inside. Won`t spawn." + [ + message(string) : "Display Message" : : "Text to display in the 3D view." + textsize(float) : "Text Size" : 10 : "Text Size." + color(color255) : "Color" : "255 255 255" + linename1(target_destination) : "White Related Entity" : : "Add entity names to have lines drawn to them." + linename2(target_destination) : "Red Related Entity" : : "Add entity names to have lines drawn to them." + linename3(target_destination) : "Green Related Entity" : : "Add entity names to have lines drawn to them." + linename4(target_destination) : "Blue Related Entity" : : "Add entity names to have lines drawn to them." + mat(material) : "Material Chooser" : : "Has the material browser for easier editing." + part(particlesystem) : "Particle Chooser" : : "Has the particle system chooser for easier editing." + model(studio) : "Model Chooser" : : "Has the model chooser for easier editing." + sound(sound) : "Sound Chooser" : : "Has the sound chooser for easier editing." + ] + +@PointClass + size(-4 -4 -4, 4 4 4) + color(0 180 0) + line(255 255 0, targetname, target) += 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 + halfgridsnap + iconsprite("editor/ficool2/info_mass_center.vmt") + color(128 128 128) + line(128 128 128, targetname, target) += info_mass_center: "An entity that overrides the mass center of the target physics object, by moving it to the info_mass_center's location. This kills itself on spawn." + [ + target(target_destination) : "Target object" : : "The entity whose mass center will be overridden." + ] + +@PointClass + iconsprite("editor/info_no_dynamic_shadow.vmt") + color(200 200 0) += 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 + color(80 150 225) + studio("models/editor/overlay_helper_box.mdl") + sidelist() + sidelist(sides2) + overlay_transition() += info_overlay_transition: "This creates a scrolling texture at the intersect between two brushes, for things like wave effects at water edges." + [ + 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(boolean) : "Show Debug" : 0 + ] + +@SolidClass = parallax_obb: "Bounding box for Parallax Corrected Cubemaps." + [ + targetname(target_source) : "Name" : : "The name that other entities refer to this entity by." + ] + +@BaseClass base(BaseEntityPoint) = BaseActBusy + [ + actor(target_name_or_class) : "Actor(s) to affect" : : "NPC's that should act busy" + startactive(boolean) : "Start Active" : 0 + 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(boolean) : "Visible Busy Hints Only" : 0 + + // 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(target_destination) : "Fired when an NPC targeted by this goal starts an ActBusy animation." + output OnNPCFinishedBusy(target_destination) : "Fired when an NPC targeted by this goal finishes an ActBusy." + output OnNPCLeft(target_destination) : "Fired when an NPC target by this goal finishes a forced Leave." + ] + +@BaseClass base(BaseEntityPoint, RenderFields, Reflection) = BaseBeam: "This is the definition of the 'beam' class, but we don't want that in the entity list." + [ + rendermode(choices) readonly : "Render Mode" : 1 : "Render mode is forced to Texture, but set to Color in Hammer to ensure correct rendering." = + [ + 1: "Color" + ] + + renderamt(integer) : "Brightness (1 - 255)" : 100 + rendercolor(color255) : "Beam 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." + noiseamplitude(float) : "Amount of noise (0-64)" : 0 : "The amount of noise in the beam. 0 is a perfectly straight 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." + 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." + damage(string) : "Damage / second" : 0 : "How much damage this beam does per second to things while active. For continuous damage, the value should be greater than 10 or it may not work." + dissolvetype(choices) : "Dissolve Type" : -1 = + [ + -1: "None" + 0: "Energy" + 1: "Heavy electrical" + 2: "Light electrical" + 3: "Core" + ] + + + // 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 Noise(float) : "Set the noise of the beam, in pixels." + input Width(float) : "Set the width of the beam, in pixels." + input ScrollSpeed(float) : "Set the scroll speed in units per second (0 - 100)." + 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)." + ] + +@BaseClass base(BaseEffectBrush) = BaseDustParticleSpawner + [ + startdisabled(boolean) : "Start Disabled" : 0 + color(color255) : "Particle Color (R G B)" : "255 255 255" + spawnrate(integer) : "Particle Per Second" : 40 : "Number of particles to spawn, per second." + speedmax(integer) : "Maximum Particle Speed" : 13 : "Maximum speed that the particles can move after spawning." + fallspeed(integer) : "Particle Fall Speed" : 0 : "How fast the particles fall to the ground. This value is subtracted from the particle speed in the Z-axis only." + lifetimemin(integer) : "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(integer) : "Maximum Particle Lifetime" : 5 : "Maximum number of seconds until each particle dies. Particles live for a random duration between 'Minimum Particle Lifetime' and this. Will be clamped to a max of 15." + distmax(integer) : "Maximum Visible Distance" : 1024 : "Maximum distance at which particles are visible. They fade to translucent at this distance." + frozen(boolean) : "Frozen" : 0 : "When set, this entity spawns the number of particles in SpawnRate immediately, and then goes inactive." + affectedbywind(boolean) : "Affected by Wind" : 1 : "When set, the dust will be affected by any env_wind entity settings in the map." + linedivider_base(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input TurnOn(void) : "Turn on." + input TurnOff(void) : "Turn off." + ] + +@BaseClass base(BaseEntityPoint, RenderFields, Reflection, ToggleDraw, DamageFilter) = BaseEntityAnimating + [ + effects(choices) : "Effect Flags" : 0 : "For configuring visual effects. If you want to combine effects, turn SmartEdit off and add the effect numbers together, i.e. 64 + 8 = 72." = + [ + 0: "None" + 1: "Bonemerge always, very expensive!!" + 2: "Bright, dynamic light at entity origin" + 4: "Dim, dynamic light at entity origin" + 8: "No movement interpolation" + 16: "Don't cast shadows" + 32: "Don't draw entity (entity is fully ignored by clients, NOT server)" + 64: "Don't receive dynamic shadows" + 128: "Bonemerge only in PVS, better performance but prone to disappearing. Use with Bonemerge." + 256: "Blinking glow" + 512: "Flag parent as always animating and realign each frame" + 1024: "Mark for fast reflections" + 2048: "No shadow depth, for use with env_cascade_light" + 4096: "Dont cache in shadow depthmap (render every frame)" + 8192: "No flashlight" + 16384: "No CSM" + ] + + solid(choices) : "Collisions" : 6 : "Method of collision for this entity. Can be changed at runtime with AddOutput." = + [ + 0: "None" + 1: "BSP (QPhysics)" + 2: "Bounding Box" + 3: "Oriented Bounding Box" + 4: "Oriented Bounding Box, constrained to Yaw only" + 5: "Custom (defined per-entity, if not defined the entity will have bizarre collision behavior)" + 6: "VPhysics" + ] + + body(integer) : "Bodygroup" : 0 : "Body Groups allow turning on and off parts of a model, so sections can be shown or hidden dynamically." + setbodygroup(integer) : "(Set) Body Group" : 0 : "Identical to Body Group (body), ask Valve why this is duplicated. Body Groups allow turning on and off parts of a model, so sections can be shown or hidden dynamically." + texframeindex(integer) : "Texture Frame" : : "The frame number for any animated textures on this entity." + hitboxset(string) : "Hitbox Set" : : "Sets the $hboxset to use for collision testing." + modelscale(float) : "Model Scale" : : "A multiplier for the size of the model." + linedivider_animbase(string) readonly : "----------------------------------------------------------------------------------------------------------" + lightingorigin(target_destination) : "Lighting Origin" : : "Select any entity (not info_lighting!) from which to sample lighting instead of the entity's origin." + lightingoriginhack(target_destination) : "Lighting Origin Offset" : : "The info_lighting_relative from which to sample lighting instead of the entity's origin." + fademindist(float) : "Start Fade Distance/Pixels" : : "Distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox." + fademaxdist(float) : "End Fade Distance/Pixels" : : "Distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox." + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, 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." + shadowcastdist(integer) : "Shadow Cast Distance" : : "Sets how far the entity casts dynamic shadows, in units. 0 means default distance from the shadow_control entity." + disableshadows(boolean) : "Disable Shadows?" : 0 : "Prevent the entity from creating cheap render-to-texture/dynamic shadows." + disablereceiveshadows(boolean) : "Disable Receiving Shadows?" : 0 : "Prevents dynamic shadows (e.g. player and prop shadows) from appearing on this entity." + disableshadowdepth(boolean) : "Disable ShadowDepth" : 0 : "Used to disable rendering into shadow depth (for flashlight) for this entity." + shadowdepthnocache(choices) : "Projected Texture Cache" : 0 : "Used to hint projected texture system whether it is sufficient to cache shadow volume of this entity or to force render it every frame instead." = + [ + 0: "Default" + 1: "No cache = render every frame" + 2: "Cache it = render only once" + ] + + disableflashlight(boolean) : "Disable flashlight" : 0 : "Used to disable flashlight (env_projectedtexture) lighting and shadows on this entity." + linedivider_anim(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input Skin(integer) : "Changes the model skin to the specified number." + input SetBodyGroup(integer) : "Change the model's bodygroup to the specified index number." + input Ignite(void) : "Makes the entity catch on fire indefinitely." + input IgniteLifetime(float) : "Makes the entity catch on fire for a given amount of time." + input IgniteNumHitboxFires(integer) : "Makes the entity catch on fire with a given number of hitbox fire particles." + input IgniteHitboxFireScale(float) : "Makes the entity catch on fire with a given scale for hitbox fire particles." + input BecomeRagdoll(void) : "Kills the entity and creates a client-side ragdoll from the model with ZERO force (just go limp). Input is only passed if the model contains ragdolling, for other models phys_convert can be used instead. OnDeath, OnHalfHealth, etc. outputs will **NOT** BE FIRED." + input SetLightingOrigin(string) : "Sets the entity to use as the entity's lighting origin. Any entity can be used." + input SetLightingOriginHack(string) : "Offsets the entity's lighting origin by their distance from an info_lighting_relative." + input fademindist(float) : "Sets distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox." + input fademaxdist(float) : "Sets distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox." + input DisableShadow(void) : "Allows the entity to draw a render target (dynamic) shadow." + input EnableShadow(void) : "Prevents the entity from drawing a render target (dynamic) shadow." + input DisableReceivingFlashlight(void) : "This object will not recieve light or shadows from projected textures (flashlights)." + input EnableReceivingFlashlight(void) : "This object may recieve light or shadows from projected textures (flashlights)." + input AlternativeSorting(bool) : "Used to attempt to fix sorting problems when rendering. True activates, false deactivates" + input SetModelScale(vector) : "Sets the scale of the model. Secondary parameter (space delimited) sets the duration of time to scale the model." + + // Outputs + output OnIgnite(void) : "Fired when this object catches fire." + ] + +@BaseClass base(BaseEntityPoint, RenderFields, Reflection, DamageFilter) = BaseEntityPhysics + [ + solid(choices) : "Collisions" : 6 : "Method of collision for this entity. Can be changed at runtime with AddOutput." = + [ + 0: "None" + 1: "BSP (QPhysics)" + 2: "Bounding Box" + 3: "Oriented Bounding Box" + 4: "Oriented Bounding Box, constrained to Yaw only" + 5: "Custom (defined per-entity, if not defined the entity will have bizarre collision behavior)" + 6: "VPhysics" + ] + + body(integer) : "Bodygroup" : 0 : "Sets the body group index for the model, starting with 0, if available." + texframeindex(integer) : "Texture Frame" : : "The frame number for any animated textures on this entity." + lightingorigin(target_destination) : "Lighting Origin" : : "Select any entity (not info_lighting!) from which to sample lighting instead of the entity's origin." + lightingoriginhack(target_destination) : "Lighting Origin Offset" : : "The info_lighting_relative from which to sample lighting instead of the entity's origin." + fademindist(float) : "Start Fade Distance/Pixels" : : "Distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox." + fademaxdist(float) : "End Fade Distance/Pixels" : : "Distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox." + fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, 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." + shadowcastdist(integer) : "Shadow Cast Distance" : : "Sets how far the entity casts dynamic shadows, in units. 0 means default distance from the shadow_control entity." + disableshadows(boolean) : "Disable Shadows?" : 0 : "Prevent the entity from creating cheap render-to-texture/dynamic shadows." + disablereceiveshadows(boolean) : "Disable Receiving Shadows?" : 0 : "Prevents dynamic shadows (e.g. player and prop shadows) from appearing on this entity." + modelscale(float) : "Model Scale" : : "A multiplier for the size of the model." + linedivider_phys(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input Skin(integer) : "Changes the model skin to the specified number." + input SetBodyGroup(integer) : "Change the model's bodygroup to the specified index number." + input Ignite(void) : "Makes the entity catch on fire indefinitely." + input IgniteLifetime(float) : "Makes the entity catch on fire for a given amount of time." + input IgniteNumHitboxFires(integer) : "Makes the entity catch on fire with a given number of hitbox fire particles." + input IgniteHitboxFireScale(float) : "Makes the entity catch on fire with a given scale for hitbox fire particles." + input BecomeRagdoll(void) : "Kills the entity and creates a client-side ragdoll from the model. Input is only passed if the model contains ragdolling, for other models phys_convert can be used instead." + input SetLightingOrigin(string) : "Sets the entity to use as the entity's lighting origin. Any entity can be used." + input SetLightingOriginHack(string) : "Offsets the entity's lighting origin by their distance from an info_lighting_relative." + input fademindist(float) : "Sets distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox." + input fademaxdist(float) : "Sets distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox." + input DisableShadow(void) : "Allows the entity to draw a render target (dynamic) shadow." + input EnableShadow(void) : "Prevents the entity from drawing a render target (dynamic) shadow." + input AlternativeSorting(bool) : "Used to attempt to fix sorting problems when rendering. True activates, false deactivates" + input SetModelScale(vector) : "Sets the scale of the model. Secondary parameter (space delimited) sets the duration of time to scale the model." + + // Outputs + output OnIgnite(void) : "Fired when this object catches fire." + ] + +@BaseClass base(BaseEntityBrush, RenderFields, ToggleDraw) = BaseEntityVisBrush + [ + effects(choices) : "Effect Flags" : 0 : "For configuring visual effects. If you want to combine effects, turn SmartEdit off and add the effect numbers together, i.e. 64 + 8 = 72." = + [ + 0: "None" + 1: "Bonemerge always, very expensive!!" + 2: "Bright, dynamic light at entity origin" + 4: "Dim, dynamic light at entity origin" + 8: "No movement interpolation" + 16: "Don't cast shadows" + 32: "Don't draw entity (entity is fully ignored by clients, NOT server)" + 64: "Don't receive dynamic shadows" + 128: "Bonemerge only in PVS, better performance but prone to disappearing. Use with Bonemerge." + 256: "Blinking glow" + 512: "Flag parent as always animating and realign each frame" + 1024: "Mark for fast reflections" + 2048: "No shadow depth, for use with env_cascade_light" + 4096: "Dont cache in shadow depthmap (render every frame)" + 8192: "No flashlight" + 16384: "No CSM" + ] + + vrad_brush_cast_shadows(choices) : "VRAD Shadows" : 0 : "Determines if this entity will cast lightmap shadows." = + [ + 0: "Do not cast shadows" + 1: "Cast shadows" + ] + + _minlight(float) : "Minimum Light Level" : 0 : "The minimum level of ambient light that hits this brush." + disablereceiveshadows(boolean) : "Disable Receiving Shadows?" : 0 : "Prevents dynamic shadows (e.g. player and prop shadows) from appearing on this entity." + disableshadowdepth(boolean) : "Disable ShadowDepth" : 0 : "Used to disable rendering into shadow depth (for flashlight) for this entity." + shadowdepthnocache(choices) : "Projected Texture Cache" : 0 : "Used to hint projected texture system whether it is sufficient to cache shadow volume of this entity or to force render it every frame instead." = + [ + 0: "Default" + 1: "No cache = render every frame" + 2: "Cache it = render only once" + ] + + disableflashlight(boolean) : "Disable flashlight" : 0 : "Used to disable flashlight (env_projectedtexture) lighting and shadows on this entity." + linedivider_visbrush(string) readonly : "----------------------------------------------------------------------------------------------------------" + + // Inputs + input DisableShadow(void) : "Allows the entity to draw a render target (dynamic) shadow." + input EnableShadow(void) : "Prevents the entity from drawing a render target (dynamic) shadow." + input DisableReceivingFlashlight(void) : "This object will not recieve light or shadows from projected textures (flashlights)." + input EnableReceivingFlashlight(void) : "This object may recieve light or shadows from projected textures (flashlights)." + 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 AlternativeSorting(bool) : "Used to attempt to fix sorting problems when rendering. True activates, false deactivates" + input RemovePaint(void) : "Remove paint from the brush entity." + ] + +@BaseClass base(BaseEntityPoint, EnableDisable) = BaseNPCMaker + [ + startdisabled(boolean) : "Start Disabled" : 1 + spawnflags(flags) = + [ + 16: "[16] Fade Corpse" : 0 + 32: "[32] Infinite Children" : 0 + 64: "[64] Do Not Drop" : 0 + 128: "[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." + hullcheckmode(choices) : "Hull Check Mode" : 0 : "How NPC's hull should be checked at spawn destination?" = + [ + 0: "Default" + 1: "No hull check" + ] + + + // 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 won't 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." + + // Outputs + output OnSpawnNPC(target_destination) : "Fired when an NPC is spawned. The activator is the NPC, and the parameter is a pointer to 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 spawner is exhausted, so a new child may be spawned any time after this (unless the maker is disabled)." + ] + +@BaseClass base(BaseEntityBrush) = BaseTank + [ + spawnflags(flags) = + [ + 1: "[1] Active" : 0 + 16: "[16] Only Direct" : 0 + 32: "[32] Controllable" : 0 + 64: "[64] Damage Kick" : 0 + 1024: "[1024] NPC Controllable" : 0 + 2048: "[2048] NPC Set Controller" : 0 + 4096: "[4096] Allow friendlies to hit player" : 0 + 32768: "[32768] Non-solid." : 0 + 131072: "[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." + 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" : : "A specific sprite to use for the muzzle's smoke effect." + spriteflash(sprite) : "Flash Sprite" : : "A specific sprite to use for the muzzle's flash effect." + spritescale(string) : "Sprite scale" : 1 : "The scale for smoke and flash sprites." + 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) : "Minimum target range" : 0 + maxrange(string) : "Maximum target range" : 0 + 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(boolean) : "Lead Target" : 0 + 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." + shouldfindnpcs(boolean) : "Automatically search for NPCs" : 1 : "If controllable by NPCs, sets whether we should automatically search for NPCs to use this func_tank or just wait for the player to set it. Identical to StartFindingNPCs and StopFindingNPCs." + effecthandling(choices) : "Effect Handling" : 0 : "Special effect handling that influences sound and muzzle effects. Individual settings can override parts of it." = + [ + 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(target_destination) : "Name of entity I should follow/attack" + input SetTargetEntity(string) : "Set the entity I should follow/attack to the passed in entity." + 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" + ] + +@BaseClass base(_Breakable, DamageFilter) = BreakableProp + [ + spawnflags(flags) = + [ + 16: "[16] Break on Touch" : 0 + 32: "[32] Break on Pressure" : 0 + ] + + + // 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." + + // Outputs + output OnTakeDamage(void) : "Fired each time this breakable takes any damage." + ] + +@BaseClass base(Angles) = Button + [ + sounds(choices) : "Press Sound" : 0 : "Sound played when pressed. Choose from sounds in the Buttons.snd* category." = + [ + -1: "Use custom sound" + 0: "None (Silent)" + 100: "Light Switch" + 101: "Power Plug - Basic Electronics (soft)" + 1: "Buttons.snd1: Big zap & Warmup" + 2: "Buttons.snd2: Access Denied" + 3: "Buttons.snd3: Access Granted" + 4: "Buttons.snd4: Quick Combolock" + 5: "Buttons.snd5: Power Deadbolt 1" + 6: "Buttons.snd6: Power Deadbolt 2" + 7: "Buttons.snd7: Plunger" + 8: "Buttons.snd8: Small zap" + 9: "Buttons.snd9: Keycard Sound" + 10: "Buttons.snd10: Buzz" + 11: "Buttons.snd11: Buzz Off" + 12: "Buttons.snd12: Latch locked" + 13: "Buttons.snd13: Latch Unlocked" + 14: "Buttons.snd14: Lightswitch" + 15: "Buttons.snd15: Small bleek" + 16: "Buttons.snd16: Small deny" + 17: "Buttons.snd17: Small doop" + 18: "Buttons.snd18: Small tech deny" + 19: "Buttons.snd19: Click and combine screen fuzz" + 20: "Buttons.snd20: Roomy beep" + 21: "Buttons.snd21: Lever or Wheel: turn + move sqeek" + 22: "Buttons.snd22: Lever or Wheel: latch + release gas" + 23: "Buttons.snd23: Lever or Wheel: ratchet + sqeek" + 24: "Buttons.snd24: Lever or Wheel: large ratchet" + 25: "Buttons.snd25: Lever or Wheel: clanky + gas release" + 26: "Buttons.snd26: Lever or Wheel: latch + large metal thud" + 27: "Buttons.snd27: Lever or Wheel: smaller ratchet" + 28: "Buttons.snd28: Lever or Wheel: smaller lever move" + 31: "Buttons.snd31: Shock buzz (missing)" + 32: "Buttons.snd32: Clickbeep (missing)" + 33: "Buttons.snd33: Tech blip (missing)" + 34: "Buttons.snd34: Clickbeepbeep open" + 35: "Buttons.snd35: Small high blip" + 36: "Buttons.snd36: Small tech fuzz blip" + 37: "Buttons.snd37: Small click bleep (change to lightswitch)" + 40: "Buttons.snd40: Combine door lock - locked" + 41: "Buttons.snd41: Combine blip growl" + 42: "Buttons.snd42: Combine squick growl" + 43: "Buttons.snd43: Combine whine purr" + 44: "Buttons.snd44: Combine click talk" + 45: "Buttons.snd45: Combine click growl fizz" + 46: "Buttons.snd46: Combine click fizz (deny)" + 47: "Buttons.snd47: Combine click talker" + ] + + locked_sound(choices) : "Locked Sound" : 0 : "Sound played when the player tries to use the button, and fails because it's locked. These are sounds in the Buttons.snd* category." = + [ + 0: "None (Silent)" + 100: "Light Switch" + 101: "Power Plug - Basic Electronics (soft)" + 1: "Buttons.snd1: Big zap & Warmup" + 2: "Buttons.snd2: Access Denied" + 3: "Buttons.snd3: Access Granted" + 4: "Buttons.snd4: Quick Combolock" + 5: "Buttons.snd5: Power Deadbolt 1" + 6: "Buttons.snd6: Power Deadbolt 2" + 7: "Buttons.snd7: Plunger" + 8: "Buttons.snd8: Small zap" + 9: "Buttons.snd9: Keycard Sound" + 10: "Buttons.snd10: Buzz" + 11: "Buttons.snd11: Buzz Off" + 12: "Buttons.snd12: Latch locked" + 13: "Buttons.snd13: Latch Unlocked" + 14: "Buttons.snd14: Lightswitch" + 15: "Buttons.snd15: Small bleek" + 16: "Buttons.snd16: Small deny" + 17: "Buttons.snd17: Small doop" + 18: "Buttons.snd18: Small tech deny" + 19: "Buttons.snd19: Click and combine screen fuzz" + 20: "Buttons.snd20: Roomy beep" + 21: "Buttons.snd21: Lever or Wheel: turn + move sqeek" + 22: "Buttons.snd22: Lever or Wheel: latch + release gas" + 23: "Buttons.snd23: Lever or Wheel: ratchet + sqeek" + 24: "Buttons.snd24: Lever or Wheel: large ratchet" + 25: "Buttons.snd25: Lever or Wheel: clanky + gas release" + 26: "Buttons.snd26: Lever or Wheel: latch + large metal thud" + 27: "Buttons.snd27: Lever or Wheel: smaller ratchet" + 28: "Buttons.snd28: Lever or Wheel: smaller lever move" + 31: "Buttons.snd31: Shock buzz (missing)" + 32: "Buttons.snd32: Clickbeep (missing)" + 33: "Buttons.snd33: Tech blip (missing)" + 34: "Buttons.snd34: Clickbeepbeep open" + 35: "Buttons.snd35: Small high blip" + 36: "Buttons.snd36: Small tech fuzz blip" + 37: "Buttons.snd37: Small click bleep (change to lightswitch)" + 40: "Buttons.snd40: Combine door lock - locked" + 41: "Buttons.snd41: Combine blip growl" + 42: "Buttons.snd42: Combine squick growl" + 43: "Buttons.snd43: Combine whine purr" + 44: "Buttons.snd44: Combine click talk" + 45: "Buttons.snd45: Combine click growl fizz" + 46: "Buttons.snd46: Combine click fizz (deny)" + 47: "Buttons.snd47: Combine click talker" + ] + + unlocked_sound(choices) : "Unlocked Sound" : 0 : "Sound played when the button is unlocked. These are sounds in the Buttons.snd* category." = + [ + 0: "None (Silent)" + 100: "Light Switch" + 101: "Power Plug - Basic Electronics (soft)" + 1: "Buttons.snd1: Big zap & Warmup" + 2: "Buttons.snd2: Access Denied" + 3: "Buttons.snd3: Access Granted" + 4: "Buttons.snd4: Quick Combolock" + 5: "Buttons.snd5: Power Deadbolt 1" + 6: "Buttons.snd6: Power Deadbolt 2" + 7: "Buttons.snd7: Plunger" + 8: "Buttons.snd8: Small zap" + 9: "Buttons.snd9: Keycard Sound" + 10: "Buttons.snd10: Buzz" + 11: "Buttons.snd11: Buzz Off" + 12: "Buttons.snd12: Latch locked" + 13: "Buttons.snd13: Latch Unlocked" + 14: "Buttons.snd14: Lightswitch" + 15: "Buttons.snd15: Small bleek" + 16: "Buttons.snd16: Small deny" + 17: "Buttons.snd17: Small doop" + 18: "Buttons.snd18: Small tech deny" + 19: "Buttons.snd19: Click and combine screen fuzz" + 20: "Buttons.snd20: Roomy beep" + 21: "Buttons.snd21: Lever or Wheel: turn + move sqeek" + 22: "Buttons.snd22: Lever or Wheel: latch + release gas" + 23: "Buttons.snd23: Lever or Wheel: ratchet + sqeek" + 24: "Buttons.snd24: Lever or Wheel: large ratchet" + 25: "Buttons.snd25: Lever or Wheel: clanky + gas release" + 26: "Buttons.snd26: Lever or Wheel: latch + large metal thud" + 27: "Buttons.snd27: Lever or Wheel: smaller ratchet" + 28: "Buttons.snd28: Lever or Wheel: smaller lever move" + 31: "Buttons.snd31: Shock buzz (missing)" + 32: "Buttons.snd32: Clickbeep (missing)" + 33: "Buttons.snd33: Tech blip (missing)" + 34: "Buttons.snd34: Clickbeepbeep open" + 35: "Buttons.snd35: Small high blip" + 36: "Buttons.snd36: Small tech fuzz blip" + 37: "Buttons.snd37: Small click bleep (change to lightswitch)" + 40: "Buttons.snd40: Combine door lock - locked" + 41: "Buttons.snd41: Combine blip growl" + 42: "Buttons.snd42: Combine squick growl" + 43: "Buttons.snd43: Combine whine purr" + 44: "Buttons.snd44: Combine click talk" + 45: "Buttons.snd45: Combine click growl fizz" + 46: "Buttons.snd46: Combine click fizz (deny)" + 47: "Buttons.snd47: Combine click talker" + ] + + 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: "[NA] Gen. Access Denied" + 2: "[ND] Security Lockout" + 3: "[NF] Blast Door" + 4: "[NFIRE] Fire Door" + 5: "[NCHEM] Chemical Door" + 6: "[NRAD] Radiation Door" + 7: "[NCON] Gen. Containment" + 8: "[NH] Maintenance Door" + 9: "[NG] Broken Shut Door" + ] + + unlocked_sentence(choices) : "Unlocked Sentence" : 0 : "A sentence played when the button is unlocked." = + [ + 0: "None" + 1: "[EA] Gen. Access Granted" + 2: "[ED] Security Disengaged" + 3: "[EF] Blast Door" + 4: "[EFIRE] Fire Door" + 5: "[ECHEM] Chemical Door" + 6: "[ERAD] Radiation Door" + 7: "[ECON] gen. Containment" + 8: "[EH] Maintenance area" + ] + + + // 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." + ] + +@BaseClass base(BaseEntityPoint) = CombineBallSpawners + [ + spawnflags(flags) = + [ + 4096: "[4096] Start inactive" : 1 + 8192: "[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" : 0 = + [ + 0: "Combine Energy Ball 1" + 1: "Combine Energy Ball 2" + 2: "Combine Energy Ball 3" + ] + + ballrespawntime(float) : "Ball Respawn Time" : "4.0" : "The energy balls respawn time" + + // Inputs + input Enable(void) : "Enable spawning of combine balls" + input Disable(void) : "Disable spawning of combine balls" + + // Outputs + 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)" + ] + +@BaseClass base(BaseEntityPoint) = 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(boolean) : "Start Active" : 0 + maximumstate(choices) : "Maximum state" : 1 = + [ + 1: "Idle" + 2: "Alert" + 3: "Combat" + ] + + formation(choices) : "Formation" : 0 = + [ + 0: "Close circle" + 1: "Wide circle" + 2: "Antlion" + 3: "Commander" + 4: "Tight circle" + 5: "Medium circle" + 6: "Sidekick" + 7: "Hunter" + 8: "Vortigaunt" + ] + + + // Inputs + input Activate(void) : "Begin the follow behavior" + input Deactivate(void) : "Cease the follow behavior" + input UpdateActors(void) : "Forces an update on this goal's actors." + ] + +@BaseClass base(BaseEntityPoint) = ForceController + [ + spawnflags(flags) = + [ + 1: "[1] Start On" : 0 + 2: "[2] Apply Force" : 1 + 4: "[4] Apply Torque" : 1 + 8: "[8] Orient Locally" : 1 + 16: "[16] Ignore Mass" : 0 + ] + + attach1(target_destination) : "Attached Object" : : "Object to apply the force to." + forcetime(float) : "Time of Force (0=inf)" : 0 : "Automatic shut-off after this time has passed (0 = stay on forever or until deactivated)" + + // Inputs + input Activate(void) : "Turn the force on" + input Deactivate(void) : "Turn the force off" + input Scale(string) : "Set Force Scale" + ] + +@BaseClass base(Node) = HintNode + [ + spawnflags(flags) = + [ + 65536: "[65536] Allow jump up" : 0 + ] + + hinttype(choices) : "Hint" : 0 = + [ + 0: "None" + 1: "World: Door (Not Used)" + 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: "Tactical: Crouch Cover Medium" + 101: "Tactical: Crouch Cover Low" + 102: "Tactical: Spawn (Not Used)" + 103: "Tactical: Entrance / Exit Pinch" + 104: "Tactical: Guard (Not Used)" + 105: "Tactical: Enemy Disadvantage Point" + 106: "Tactical: Health Kit (Not Used)" + 107: "Tactical: High Ground" + 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" + 1200: "Portal 2: Nest" + ] + + 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" + ] + + starthintdisabled(boolean) : "Start Hint Disabled" : 0 + 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" + ] + + radius(integer) : "Radius" : 0 : "How close an NPC must be to consider this hint. 0 means infinite." + + // Inputs + input EnableHint(void) : "Enable hint." + input DisableHint(void) : "Disable hint." + ] + +@BaseClass base(BaseEntityPoint) = 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 they are 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(boolean) : "Run instead of Walk" : 0 + 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 them." + 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 them." + spawnflags(flags) = + [ + 1: "[1] No def success" : 0 + 2: "[2] No def failure" : 0 + 4: "[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)" + ] + +@BaseClass base(BaseEntityBrush, TeamNum) = NavCost + [ + start_disabled(boolean) : "Start Disabled" : 0 + + // Inputs + input Enable(void) : "Enable" + input Disable(void) : "Disable" + input Toggle(void) : "Toggle" + ] + +@BaseClass base(SystemLevelChoice) = RopeKeyFrame + [ + spawnflags(flags) = + [ + 1: "[1] Auto Resize" : 0 + ] + + nextkey(target_destination) : "Next Rope" : : "Name of the next rope along this path." + 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(boolean) : "Barbed" : 0 : "Test effect that makes the rope look sharper and more barbed." + width(float) : "Width (1-64)" : 2 : "Width of the rope." + texturescale(float) : "Texture Scale" : 1 : "This changes the texture resolution. The default resolution is 4 pixels per unit. Larger values stretch the texture and smaller values scrunch it up." + collide(boolean) : "Collide with world" : 0 + dangling(choices) : "Start Dangling" : 0 : "When set to Yes, the rope starts out detached from its target endpoint." = + [ + 0: "Start Attached" + 1: "Start Dangling" + ] + + breakable(choices) : "Breakable" : 0 : "When set to yes, the rope can be detached from either endpoint when shot." = + [ + 0: "Indestructible" + 1: "Breakable" + ] + + ropematerial(material) : "Rope Material" : "cable/cable.vmt" : "The material to use when rendering the rope." + usewind(choices) : "Wind" : 0 : "Is the rope affected by wind?" = + [ + 0: "Ignore Wind" + 1: "Affected by Wind" + ] + + movespeed(integer) readonly : "Speed (unused)" : 64 + positioninterpolator(integer) readonly : "Position Interpolator" : 2 : "Curve Type. Currently only Rope is fully supported." + + // Inputs + input SetScrollSpeed(float) : "Set the speed at which the texture scrolls." + input SetForce(vector) : "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." + ] + +@BaseClass base(SetSkin) = SetModel + [ + model(studio) : "World Model" : : "The model to use for this entity." + ] + +@BaseClass base(BaseEntityBrush) = TriggerOnce + [ + spawnflags(flags) = + [ + 1: "[1] Clients/Players" : 1 + 2: "[2] NPCs" : 0 + 4: "[4] func_pushable" : 0 + 8: "[8] Physics Objects" : 0 + 16: "[16] Only player ally NPCs" : 0 + 32: "[32] Only clients in vehicles" : 0 + 64: "[64] Everything (not including physics debris)" : 0 + 512: "[512] Only clients *not* in vehicles" : 0 + 1024: "[1024] Physics debris" : 0 + 2048: "[2048] Only NPCs in vehicles (respects player ally flag)" : 0 + 4096: "[4096] Correctly account for object mass (trigger_push used to assume 100Kg) and multiple component physobjs (car, blob...)" : 1 + ] + + startdisabled(boolean) : "Start Disabled?" : 0 + filtername(filterclass) : "Filter Name" : : "A filter entity to test potential activators against." + + // Inputs + input Enable(void) : "Enable this trigger." + input Disable(void) : "Disable this trigger, some trigger entities may also fire OnEndTouch when disabled." + input Toggle(void) : "Toggles this trigger between enabled and disabled states." + input TouchTest(void) : "Triggers either the OnTouching or OnNotTouching outputs for whether anything is touching this entity." + input StartTouch(void) : "Fires the OnStartTouch output. If called by an entity inside the trigger, the OnStartTouch will be fired for them as the activator. Note that this input is passed even if the player is being treated as 'not' touching the trigger while inside it." + + // Outputs + output OnTrigger(void) : "Fired whenever the trigger is activated." + 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." + output OnTouching(void) : "Fired when the TouchTest input is called, and an entity is touching this. Does not call activators." + output OnNotTouching(void) : "Fired when the TouchTest input is called, and no entity is touching this. Does not call activators." + ] + +@BaseClass base(BaseEntityPoint) = TwoObjectPhysics + [ + spawnflags(flags) = + [ + 1: "[1] No Collision until break" : 0 + 4: "[4] Start inactive" : 0 + 8: "[8] Change mass to keep stable attachment to world" : 0 + 16: "[16] Do not connect entities until turned on" : 0 + ] + + attach1(target_destination) : "Entity 1 (Yellow)" : : "The first entity to constrain. If blank the second entity will be constrained to the World." + attach2(target_destination) : "Entity 2 (Blue)" : : "The second entity to constrain. If blank the first entity will be constrained to the World." + 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." + ] + +@BaseClass base(BaseEntityPoint, BaseFadeProp) = Weapon + [ + spawnflags(flags) = + [ + 1: "[1] Start constrained" : 0 + 2: "[2] Deny player pickup (reserve for NPC)" : 0 + 4: "[4] Not puntable by Gravity Gun" : 0 + ] + + + // Outputs + 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." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("materials/editor/ficool2/ai_ally_manager.vmt") += 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" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/ai_battle_line") += ai_battle_line: "Battle line" + [ + spawnflags(flags) = + [ + 1: "[1] Use parent's orientation" : 0 + ] + + actor(target_name_or_class) : "Actor(s) or squad to affect" + active(boolean) : "Active" : 0 + strict(boolean) : "Strict" : 1 : "Player orders can override, applies to allies only" + + // Inputs + input Activate(void) + input Deactivate(void) + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) + iconsprite("editor/ficool2/ai_changehintgroup") += 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(boolean) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." + + // Inputs + input Kill(void) : "Removes this entity from the world" + input Activate(void) : "Change the Hint Group" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ai_changetarget.vmt") += ai_changetarget: "Changes the target keyvalue of an entity." + [ + 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(BaseEntityPoint) = 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." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/ai_goal_assault") += 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(boolean) : "Start Active" : 0 + 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, Closest (default)" + 1: "Random" + 2: "Priority, Furthest" + ] + + branchmethod(choices) : "Branching Assault Selection Method" : 0 = + [ + 0: "Random (default)" + 1: "Closest" + 2: "Furthest" + ] + + + // Inputs + input Activate(void) : "Begin the assault behavior" + input Deactivate(void) : "Cease the assault behavior" + input BeginAssault(void) : "Begin assault phase" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/ai_goal_fightfromcover.vmt") += ai_goal_fightfromcover: "AI Fight from Cover" + [ + actor(target_destination) : "Actor(s) to affect" + goal(target_destination) : "Target Entity" : : "The name of the entity to follow. If blank, and the actor likes the player, then defaults to player" + directionalmarker(target_destination) : "Directional Marker" : : "Specify the entity that indicates the direction of battle" + generichinttype(string) : "Generic Hint Type" : : "Behavior looks for 'generic' hints, and requires a text tag to search for" + width(float) : "Zone Width" : 600 : "Width of the hint search area" + length(float) : "Zone Length" : 480 : "Length of the hint search area" + height(float) : "Zone Height" : 2400 : "Offset in the direction of the hint search area" + bias(float) : "Zone Bias" : 60 : "Offset in the direction of the hint search area" + startactive(boolean) : "Start Active" : 0 + + // Inputs + input Activate(void) + input Deactivate(void) + input SetDirectionalMarker(string) : "Specify the entity that indicates the direction of battle" + ] + +@PointClass base(BaseEntityPoint, 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" + ] + + + // Inputs + input Activate(void) : "Begin operating on the object" + 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." + + // Outputs + 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(BaseEntityPoint) + sphere(policeradius) + iconsprite("editor/ai_goal_police.vmt") += ai_goal_police: "Implement Metrocop policing behaviour. The cop will guard an area, keeping a target from entering the area. Warnings will be given, before forcing the target back. Optionally the target can be knocked out, so they can be teleported back." + [ + spawnflags(flags) = + [ + 2: "[2] Knock-out target past crossing plane" : 0 + 4: "[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(BaseEntityPoint) + iconsprite("editor/ai_goal_standoff.vmt") += ai_goal_standoff: "AI Goal Standoff" + [ + actor(target_name_or_class) : "Actor(s) to affect" + searchtype(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." = + [ + 0: "Entity Name" + 1: "Classname" + ] + + startactive(boolean) : "Start Active" : 0 + 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" + 5: "Custom" + ] + + playerbattleline(boolean) : "Player battleline" : 1 : "Player defines a battle line, applies to allies only" + stayatcover(boolean) : "Stay at cover location" : 0 : "When have suitable cover, don't change it (disables advancing to battle line)" + abandonifenemyhides(boolean) : "Abandon if enemies hide" : 0 : "If no enemy detected recently, stop the standoff" + customcoveronreload(boolean) : "Custom: Take cover to reload" : 1 + 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 UpdateActors(void) : "Forces an update on this goal's actors." + input SetAggressiveness(integer) : "Set aggressiveness." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/ai_npc_eventresponsesystem") += ai_npc_eventresponsesystem: "An entity that allows you to generate events for nearby friendly NPCs to respond to." + [ + + // Inputs + 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(BaseEntityPoint) + iconsprite("editor/ai_relationship.vmt") + line(255 255 255, targetname, subject) + line(255 255 255, targetname, subject, targetname, target) + sphere(radius) += 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)" = + [ + 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(boolean) : "Start Active" : 0 + reciprocal(boolean) : "Reciprocal" : 0 : "Set this to YES to have the new relationship mirrored by Target" + spawnflags(flags) = + [ + 1: "[1] Notify subject of target's location" : 0 + 2: "[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(BaseEntityPoint) + sphere(PlayerActorProximity) + sphere(ActorTargetProximity) + sphere(PlayerTargetProximity) + line(255 255 0, targetname, actor) + line(255 255 255, targetname, target) + iconsprite("editor/ai_script_conditions.vmt") += ai_script_conditions: "AI Script Conditions" + [ + actor(target_destination) : "Actor (optional)" : : "NPC Target" + startdisabled(boolean) : "Start Disabled" : 1 + 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) : "Player 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: "[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(BaseEntityPoint) + sphere(volume) + line(255 255 255, targetname, locationproxy) + line(255 255 255, targetname, target, targetname, locationproxy) + iconsprite("editor/ai_sound.vmt") += ai_sound: "This entity makes sounds or smells that can be sensed by NPCs, but not by the player. This can be used to cause reactions in nearby NPCs.\n\nSound 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" + [ + 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" + 8: "Danger" + 16: "Bullet Impact" + 32: "Carcass" + 64: "Meat" + 128: "Garbage" + 256: "Thumper" + 512: "Bugbait" + 1024: "Physics Danger" + 2048: "Sniper Danger (only scares sniper)" + 4096: "Move Away - Most NPCs will clear the radius of this sound when heard." + 8192: "Player Vehicle" + 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" + 1048576: "From sniper" + 2097152: "Gunfire (use with combat sound type)" + 4194304: "Mortar (pending explosion)" + 8388608: "Only Combine can hear" + 67108864: "Combine cannot can hear" + 16777216: "React to source (face sound owner)" + 33554432: "Explosion (use with combat sound type)" + 134217728: "Danger approach (run if see sound owner, turn to face if not)" + 268435456: "Only allies can 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)" + + // Inputs + input EmitAISound(void) : "Make the sound." + ] + +@PointClass base(BaseEntityPoint, ResponseContext, EnableDisable) + line(255 255 255, targetname, subject) + iconsprite("editor/ficool2/ai_speechfilter.vmt") += 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(boolean) : "Greet Player?" : 0 : "If set to Yes, our NPC(s) won't greet the player when they first meet them." + + // Inputs + input SetIdleModifier(float) : "Allows designers to change the idle modifier at runtime" + ] + +@PointClass base(BaseEntityPoint) + sphere(m_flRadius) + color(255 0 255) + iconsprite("editor/aiscripted_schedule") + line(255 255 255, targetname, m_iszentity) + line(255 255 255, targetname, m_iszentity, targetname, goalent) += 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(boolean) : "All in radius" : 0 : "Whether to grab all matching NPCs in the specified radius, instead of just one." + spawnflags(flags) = + [ + 4: "[4] Repeatable" : 1 + 1024: "[1024] Search Cyclically" : 0 + 2048: "[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." + input StopSchedule(void) : "Tells the NPC to stop the scripted schedule" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ambient_generic.vmt") + sphere(radius) + line(255 255 0, targetname, sourceEntityName) += ambient_generic: "Universal ambient sound. Use it to play and control a single sound." + [ + spawnflags(flags) = + [ + 1: "[1] Infinite Range" : 0 + 16: "[16] Start Silent" : 1 + 32: "[32] Is NOT Looped" : 1 + ] + + 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." + radius(float) : "Sound Range" : 1250 : "Maximum distance at which this sound is audible. Overridden by soundscripts." + pitch(integer) : "Pitch" : 100 : "Sound pitch, expressed as a range from 1(low) to 255(high), where 100 is the sound's default pitch. Overridden by soundscripts." + sourceentityname(target_destination) : "Source Entity" : : "If an entity is specified, sound will come from this named entity instead of the location of ambient_generic." + soundflags(choices) : "Sound Flags" : 0 : "Additional options for your sound." = + [ + 0: "None" + 128: "[128] Pause when game is paused" + 256: "[256] Ignore phonemes (no lip-syncing)" + 1024: "[1024] Don't overwrite existing sound on channel (untested)" + 384: "Pause and ignore phonemes" + 1280: "Ignore phonemes and don't overwrite" + 1152: "Pause and don't overwrite" + 1408: "Pause, ignore phonemes and don't overwrite" + ] + + preset(choices) : "Dynamic Presets" : 0 : "If used, overrides many of the below properties (+pitch) to preset values." = + [ + 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" + ] + + linedivider_snd(string) : "-----------------------" : : "More complex values below." + volstart(integer) : "Transition Volume" : 0 : "The Volume to start/end with. Use with Fade In and Out times." + fadeinsecs(integer) : "Volume Transition Time - Start (0-100)" : 0 : "Time in seconds for the sound to transition from the Transition Volume to the set volume as it starts playing." + fadeoutsecs(integer) : "Volume Transition Time - Stop (0-100)" : 0 : "Time in seconds for the sound to transition from the set volume to the Transition Volume as it stops playing." + pitchstart(integer) : "Transition Pitch" : 100 : "Pitch to start with/end. Use with Spin Up and Spin Down." + spinup(integer) : "Pitch Transition Time - Start (0-100)" : 0 : "The time taken to change from the Transition Pitch to the final Pitch while the sound starts playing. Simulates the noise powering-up when an object is activated." + spindown(integer) : "Pitch Transition Time - Stop (0-100)" : 0 : "The time taken to transition from the Pitch to the Transition pitch while the sound stops playing. Simulates the noise fading out as the object shuts down." + lfotype(choices) : "LFO type" : 0 : "The kind of Low Frequency Oscillation to apply to the sound. Allows subtle modification to the sound. Square waves instantly switch between the high and low values, whereas Triangle Waves gradually switch between the two." = + [ + 0: "None" + 1: "Square Wave" + 2: "Triangle Wave" + 3: "Random" + ] + + lforate(integer) : "LFO rate (0-1000)" : 0 : "How often the Low Frequency Oscillation repeats itself." + lfomodpitch(integer) : "LFO Effect On Pitch (0-100)" : 0 : "The amount the Low Frequency Oscillation affects the pitch." + lfomodvol(integer) : "LFO Effect On Volume (0-100)" : 0 : "The amount the Low Frequency Oscillation affects the volume." + cspinup(integer) : "Incremental Spinup Count" : 0 : "Appears non-functional." + + // 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 or restart from beginning (if looped)." + input StopSound(void) : "Stops the sound if it is playing. Only works properly if the looped flag is checked." + 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. Sound is forced to full volume first!" + input SetSound(string) : "Sets the sound this ambient_generic should play." + + // Outputs + output OnSoundFinished(void) : "Fires when the sound finishes playing. NOTE: This sound should be set to pause when the game is paused." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/assault_point.vmt") + sphere(allowdiversionradius) + 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(boolean) : "Clear on contact with enemies" : 0 : "If you come in contact with enemies while approaching the assault point, clear our assault point" + allowdiversion(boolean) : "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." + 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(boolean) : "Never Timeout" : 0 : "If set, the assault never ends for NPCs assaulting this point. Useful for forcing NPCs back to a point." + strict(choices) : "Strict?" : 0 = + [ + 0: "No, NPC may move from point to attack" + 1: "Yes, NPC may not move to attack" + ] + + spawnflags(flags) = + [ + 1: "[1] Clear this point upon arrival, UNCONDITIONALLY" : 0 + ] + + forcecrouch(boolean) : "Force Crouch" : 0 : "NPCs using this assault point are forced into crouching while holding it." + urgent(boolean) : "Urgent" : 0 : "If true, NPCs will consider movement to this assault point as Urgent Navigation." + 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 while 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(BaseEntityPoint) + 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(boolean) : "Force Crouch" : 0 : "NPCs using this assault point are forced into crouching while holding it." + urgent(boolean) : "Urgent" : 0 : "If true, NPCs will consider movement to this rally point as Urgent Navigation. NPCs will ignore prop_physics obstructions, and eventually teleport to reach the point." + lockpoint(boolean) : "Lock Point" : 1 : "Should this point be locked by a character using it." + + // Outputs + output OnArrival(void) : "Fires when the NPC reaches this rally point." + ] + +@PointClass base(BaseEntityPoint, Angles, SystemLevelChoice) + studio("models/editor/cone_helper.mdl") + sphere(spotlightlength) + sphere(spotlightwidth) += 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: "[1] Start On" : 1 + 2: "[2] No Dynamic Light" : 0 + 4: "[4] Start rotation on" : 0 + 8: "[8] Reverse Direction" : 0 + 16: "[16] X Axis" : 0 + 32: "[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." + ] + +@PointClass base(BaseEntityPoint, 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." + exclusive(boolean) : "Exlusive" : 0 : "An exclusive color_correction entity disables and fades out all other color corrections when it is enabled. There should only be one active exclusive color_correction ent at any time." + + // 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." + ] + +@SolidClass base(BaseEntityBrush, 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" + ] + +@PointClass base(BaseEntityPoint) + line(255 255 255, targetname, enemyfilter) + line(255 255 255, targetname, friendfilter) + studio("models/props_combine/combine_mine01.mdl") += combine_mine: "Combine Land Mine" + [ + bounce(boolean) : "Bounce" : 1 : "Whether the mine should bounce up in the air before exploding." + explosiondelay(float) : "Delay" : "0.5" : "The delay after being triggered before this mine bounces, or before it explodes if bouncing is disabled. Does not apply to the cavern type." + locksilently(boolean) : "Lock Silently" : 1 : "Prevents the mine from making any clamping sound when it plants itself for the first time, after which it makes sound again." + startdisarmed(boolean) : "Start Disarmed" : 0 : "If yes, mine begins dormant." + 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 base(BaseEntityPoint) + iconsprite("editor/ficool2/commentary_auto.vmt") + color(0 100 250) += commentary_auto: "Commentary-specific version of logic_auto." + [ + + // Inputs + input MultiplayerSpawned(void) : "Internal input, fires OnCommentaryMultiplayerSpawn." + + // Outputs + output OnCommentaryNewGame(void) : "Fired when a new game is started with commentary enabled." + output OnCommentaryMidGame(void) : "Fired when commentary is enabled in the middle of a map." + output OnCommentaryMultiplayerSpawn(void) : "Fired when a player spawns in multiplayer." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/comp_choreo_sceneset.vmt") += comp_choreo_sceneset: "Chains a set of choreographed scenes together." + [ + delay(float) : "Delay between each" : "0.1" : "Add a delay between each scene." + only_once(boolean) : "Clean up after starting" : 1 : "If set, Kill choreo scenes after starting so they only play once.If set, the Cancel input will not work properly." + 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" + ] + + 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" + ] + + scene01(scene) : "Scene 1" + scene02(scene) : "Scene 2" + scene03(scene) : "Scene 3" + scene04(scene) : "Scene 4" + scene05(scene) : "Scene 5" + scene06(scene) : "Scene 6" + scene07(scene) : "Scene 7" + scene08(scene) : "Scene 8" + scene09(scene) : "Scene 9" + scene10(scene) : "Scene 10" + scene11(scene) : "Scene 11" + scene12(scene) : "Scene 12" + scene13(scene) : "Scene 13" + scene14(scene) : "Scene 14" + scene15(scene) : "Scene 15" + scene16(scene) : "Scene 16" + scene17(scene) : "Scene 17" + scene18(scene) : "Scene 18" + scene19(scene) : "Scene 19" + scene20(scene) : "Scene 20" + + // Inputs + input Start(void) : "Start the choreo sequence playing." + input Cancel(void) : "Stop the choreo sequence at any point." + + // Outputs + output OnStart(void) : "Fired when the sequence starts." + output OnFinish(void) : "Fired when the sequence is complete." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/comp_flicker") + line(255 255 255, targetname, target_mdl) += comp_flicker: "Fires on/off inputs repeatedly to simulate a flicker-on effect. This converts to an info_target, and uses all of the FireUserX inputs/outputs." + [ + target_mdl(target_destination) : "Model to Control" : : "An entity which will have skins swapped to turn on/off." + mdl_skin_on(integer) : "On Skin" : 0 : "The 'on' skin for the model." + mdl_skin_off(integer) : "Off Skin" : 1 : "The 'on' skin for the model." + total_time(float) : "Total Time" : "1.5" : "The overall time taken to complete the on or off flicker." + flicker_min(float) : "Flicker Min" : "0.05" : "The delay used at the start of the on cycle, or at the end of the off cycle." + flicker_max(float) : "Flicker Max" : "0.2" : "The delay used at the end of the on cycle, or at the start of the off cycle." + variance(float) : "Variance" : "0.0" : "Random variance added/subtracted for each delay." + + // Inputs + input TurnOn(void) : "Turn the target entities on." + input TurnOff(void) : "Turn the target entities off." + input FlickerOn(void) : "Flicker the target gradually on." + input FlickerOff(void) : "Flicker the target gradually off." + + // Outputs + output OnTurnedOn(void) : "Fired when the target should turn on." + output OnTurnedOff(void) : "Fired when the target should turn off." + output OnFlickerOnStart(void) : "Fired after the flicker on effect has started." + output OnFlickerOffStart(void) : "Fired after the flicker off effect has started." + output OnFlickerOnEnd(void) : "Fired after the flicker on effect has finished." + output OnFlickerOffEnd(void) : "Fired after the flicker off effect has finished." + ] + +@PointClass base(Angles) + iconsprite("editor/comp_kv_setter") += comp_kv_setter: "Sets a keyvalue on an entity to a new value. This is useful to compute spawnflags, or to adjust keyvalues when the target entity's options can't be set to a fixup variable." + [ + target(target_destination) : "Target Entity" : : "The name of the entity or entities to set values on." + mode(choices) : "Mode" : "kv" : "The type of value to set." = + [ + "kv": "KeyValues" + "flags": "SpawnFlags" + ] + + kv_name(string) : "Name / Mask" : : "The name of the keyvalue to set, or the bits to change for spawnflags." + kv_value_global(string) : "Value - String" : : "The value to apply." + kv_value_local(target_destination) : "Value - Ent Name" : : "If set, use this fixed-up entity name." + invert(boolean) : "Invert Value" : 0 : "If enabled, invert the value so 0 and 1 are swapped." + rotate(boolean) : "Rotate Value" : 0 : "If enabled, treat the value as a vector and rotate it by the angles set on this entity first." + conv_ang(boolean) : "Convert To Angle" : 0 : "If enabled, convert a +X axis normal back into the Euler angle." + + // 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." + ] + +@PointClass base(Angles) + iconsprite("editor/comp_precache_model") + studioprop() += comp_precache_model: "Force a specific model to load, for runtime switching. Duplicates will be removed." + [ + model(studio) : "Model" : : "The model to load." + skin(integer) : "Skin" : : "Skin to show." + ] + +@MoveClass base(StaticTargetName) + sphere(radius) + animator() + keyframe() + iconsprite("editor/comp_prop_cable") + line(128 128 128, targetname, bunting) += comp_prop_cable: "Generates cables using a static prop. comp_prop_rope is an alternate name, they can be interchanged." + [ + group(target_source) : "Group" : : "Each set of cables must have a group name. Each name will be compiled to one cable." + nextkey(target_destination) : "Next Cable" : : "Name of the next cable along this path." + slack(integer) : "Slack" : 25 : "How much extra length the cable has, for 'catenary' mode (by default it has the length between its two endpoints in the editor)." + positioninterpolator(choices) : "Type" : 2 : "How to interpolate the cable. Straight makes it straight. Spline uses a spline curve, which smoothly blends between points (no visuals). Catenary makes it hang down, like the original move_rope." = + [ + 0: "Straight" + 1: "Spline Curve" + 2: "Catenary " + ] + + segments(integer) : "Segments" : 2 : "Number of nodes to generate between each cable. Higher values make smoother cables, but produce more faces." + sides(integer) : "Sides" : 8 : "Number of faces for each cylindrical section. Only the value at the start of the cable is used." + radius(float) : "Radius" : "1.0" : "Radius of this cable section." + material(material) : "Cable Material" : "models/cables/generic_black" : "The material to use for the cable. Must be a model material." + mat_scale(float) : "Lengthwise Material Scale" : 1 : "This changes the texture resolution along the cable, relative to the amount of width used. Larger values stretch the texture and smaller values scrunch it up." + mat_rotate(choices) : "Material Orientation" : 0 : "Controls which direction the cable runs in the material, if your texture is rotated." = + [ + 0: "Vertical" + 1: "Horizontal" + ] + + u_min(float) : "Width Start" : "0.0" : "The distance along the texture to start. 0 is the left/bottom side, 1 is the right/top side. This allows using only part of the texture, if it contains multiple different cable styles." + u_max(float) : "Width End" : "1.0" : "The distance along the texture to end. 0 is the left/bottom side, 1 is the right/top side. This allows using only part of the texture, if it contains multiple different cable styles." + linedivider_staticprop(string) readonly : "----------------------------------------------------------------------------------------------------------" + renderamt(integer) : "Alpha" : 255 : "Alpha of the fade, where 0 = fully transparent and 255 = fully opaque." + rendercolor(color255) : "Color (R G B)" : "255 255 255" + 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, 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." + disableshadows(boolean) : "Disable Shadows" : 0 + disableselfshadowing(boolean) : "Disable Self-Shadowing" : 0 + disablevertexlighting(boolean) : "Disable Vertex lighting" : 0 : "Disable per-vertex lighting on this prop." + drawinfastreflection(boolean) : "Render in Fast Reflections" : 0 : "If enabled, causes this entity/prop to to render in fast water reflections (i.e. when a water material specifies $reflectonlymarkedentities) and in the world impostor pass." + enablelightbounce(boolean) : "Enable Bounced Lighting" : 0 : "Whether VRAD should create indirect lighting from this prop." + movespeed(integer) readonly : "Speed (unused)" : 1 : "This needs to be greater than zero to show the preview lines." + ] + +@MoveClass base(StaticTargetName) + sphere(radius) + animator() + keyframe() + iconsprite("editor/comp_prop_rope") + line(128 128 128, targetname, bunting) += comp_prop_rope: "Generates ropes using a static prop. comp_prop_cable is an alternate name, they can be interchanged." + [ + group(target_source) : "Group" : : "Each set of ropes must have a group name. Each name will be compiled to one rope." + nextkey(target_destination) : "Next Rope" : : "Name of the next rope along this path." + slack(integer) : "Slack" : 25 : "How much extra length the rope has, for 'catenary' mode (by default it has the length between its two endpoints in the editor)." + positioninterpolator(choices) : "Type" : 2 : "How to interpolate the rope. Straight makes it straight. Spline uses a spline curve, which smoothly blends between points (no visuals). Catenary makes it hang down, like the original move_rope." = + [ + 0: "Straight" + 1: "Spline Curve" + 2: "Catenary " + ] + + segments(integer) : "Segments" : 2 : "Number of nodes to generate between each rope. Higher values make smoother ropes, but produce more faces." + sides(integer) : "Sides" : 8 : "Number of faces for each cylindrical section. Only the value at the start of the rope is used." + radius(float) : "Radius" : "1.0" : "Radius of this rope section." + material(material) : "Rope Material" : "models/cables/generic_black" : "The material to use for the rope. Must be a model material." + mat_scale(float) : "Lengthwise Material Scale" : 1 : "This changes the texture resolution along the rope, relative to the amount of width used. Larger values stretch the texture and smaller values scrunch it up." + mat_rotate(choices) : "Material Orientation" : 0 : "Controls which direction the rope runs in the material, if your texture is rotated." = + [ + 0: "Vertical" + 1: "Horizontal" + ] + + u_min(float) : "Width Start" : "0.0" : "The distance along the texture to start. 0 is the left/bottom side, 1 is the right/top side. This allows using only part of the texture, if it contains multiple different rope styles." + u_max(float) : "Width End" : "1.0" : "The distance along the texture to end. 0 is the left/bottom side, 1 is the right/top side. This allows using only part of the texture, if it contains multiple different rope styles." + bunting(target_destination) : "Bunting Definition" : : "Set to the name of a comp_prop_rope_bunting, to define models which will be placed at each segment across the rope." + linedivider_staticprop(string) readonly : "----------------------------------------------------------------------------------------------------------" + renderamt(integer) : "Alpha" : 255 : "Alpha of the fade, where 0 = fully transparent and 255 = fully opaque." + rendercolor(color255) : "Color (R G B)" : "255 255 255" + 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, 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." + disableshadows(boolean) : "Disable Shadows" : 0 + disableselfshadowing(boolean) : "Disable Self-Shadowing" : 0 + disablevertexlighting(boolean) : "Disable Vertex lighting" : 0 : "Disable per-vertex lighting on this prop." + drawinfastreflection(boolean) : "Render in Fast Reflections" : 0 : "If enabled, causes this entity/prop to to render in fast water reflections (i.e. when a water material specifies $reflectonlymarkedentities) and in the world impostor pass." + enablelightbounce(boolean) : "Enable Bounced Lighting" : 0 : "Whether VRAD should create indirect lighting from this prop." + movespeed(integer) readonly : "Speed (unused)" : 1 : "This needs to be greater than zero to show the preview lines." + ] + +@MoveClass base(StaticTargetName) + iconsprite("editor/comp_prop_rope_bunting") += comp_prop_rope_bunting: "Specifies small props which will be placed at regular intervals across the compiled rope." + [ + weight(integer) : "Weight" : 1 : "If multiple are defined with the same weighting, this specifies the relative probabilities.This works like a lottery - each model has this many 'tickets', and then one is chosen randomly each time. If you have two choices with a weight of 9 and 1, the first will be chosen 90% of the time." + placement_interval(integer) : "Placement Interval" : 1 : "Place this prop every X segments, not including the start/end of the rope." + distance(float) : "Placement Distance" : 0 : "If greater than zero, override Placement Interval, and instead place every this many units." + model(studio) : "Model" : : "Specifies the model to place. This can either be an MDL which is placed as invidual prop_statics, or a SMD (relative to a game folder) which is merged into the rope model." + angles(angle) : "Rotation" : "0 0 0" : "Rotate the model by this much, before applying the orientation of the rope. After this is applied, the X axis should be aligned with the rope direction." + orient(choices) : "Orientation Mode" : "follow" : "Controls how the rope orientation affects the model." = + [ + "follow": "Follow Rope" + "yaw": "Yaw Only" + "pitch_yaw": "Pitch and Yaw" + "none": "No Rotation" + "rand_yaw": "Random Yaw" + "rand": "Random" + ] + + ] + +@PointClass base(Angles) + iconsprite("editor/comp_propcombine_set") + wirebox(mins, maxs) += comp_propcombine_set: "Specifies a group of props that will be combined together." + [ + mins(vector) : "BBox Mins" : "-32 -32 -32" : "Minimum offset from the entity, defining the shape." + maxs(vector) : "BBox Maxes" : "32 32 32" : "Maximum offset from the entity, defining the shape." + name(string) : "Name" : : "Two sets with the same name will be treated as one." + prop(studio) : "Group Model" : : "If set, a combinable model used to define which others will be combined." + skin(integer) : "Group Skin" : 0 : "The skin for the Group Model." + ] + +@PointClass base(StaticTargetName) + iconsprite("editor/comp_relay") += comp_relay: "Simplified version of logic_relay which is able to be optimised away by the compiler.The various inputs and outputs are useful for bundling commands together, or using more appopriate verbs.Inputs only work if given directly from entities (or via instance redirection), not ingame or dynamically.All inputs/outputs may pass through any parameter, if no override is specified." + [ + ctrl_type(choices) : "Control Type" : 0 : "Controls how the value is interpreted for whether to break the connection from this." = + [ + 0: "Is Enabled?" + 1: "Is Disabled?" + ] + + ctrl_value(boolean) : "Control Value" : 1 : "Decides whether to skip using the outputs from this. If the entity is disabled, all outputs are removed entirely." + delay(float) : "Extra Delay" : "0.0" : "Add this delay to all outputs. This allows you to control this via $fixup values, for instance." + + // Inputs + input Trigger(string) : "Trigger the relay and fire the output." + input TurnOn(string) : "Fire the OnTurnedOn output." + input TurnOff(string) : "Fire the OnTurnedOff output." + input FireUser1(string) : "Causes this relay's OnUser1 output to be fired." + input FireUser2(string) : "Causes this relay's OnUser2 output to be fired." + input FireUser3(string) : "Causes this relay's OnUser3 output to be fired." + input FireUser4(string) : "Causes this relay's OnUser4 output to be fired." + input FireUser5(string) : "Causes this relay's OnUser5 output to be fired." + input FireUser6(string) : "Causes this relay's OnUser6 output to be fired." + input FireUser7(string) : "Causes this relay's OnUser7 output to be fired." + input FireUser8(string) : "Causes this relay's OnUser8 output to be fired." + + // Outputs + output OnTrigger(string) : "Fired when the relay is triggered." + output OnTurnedOn(string) : "Fired when the relay is turned on." + output OnTurnedOff(string) : "Fired when the relay is turned off." + output OnUser1(string) : "Fired in response to a FireUser1 input." + output OnUser2(string) : "Fired in response to a FireUser2 input." + output OnUser3(string) : "Fired in response to a FireUser3 input." + output OnUser4(string) : "Fired in response to a FireUser4 input." + output OnUser5(string) : "Fired in response to a FireUser5 input." + output OnUser6(string) : "Fired in response to a FireUser6 input." + output OnUser7(string) : "Fired in response to a FireUser7 input." + output OnUser8(string) : "Fired in response to a FireUser8 input." + ] + +@PointClass base(Origin, Angles) + iconsprite("editor/comp_scriptvar_setter") + studio("models/editor/cone_helper.mdl") + line(255 255 255, targetname, target) + line(255 255 255, targetname, ref) += comp_scriptvar_setter: "Assigns data or a group of data to a variable in an entity's VScript scope or the global scope on spawn.\nTo set an array, provide an index in the variable name in the form 'varname[4]'. \nAll the comp_scriptvars pointing to that variable will be collected into a single array literal, with holes filled by *null*. \nIf the brackets are empty, these values will fill those holes and then append to the end in an arbitrary order." + [ + target(target_destination) : "Script Entity" : : "The entity to set a variable on. Alternatively, leave this blank to assign the variable ::globally." + variable(string) : "Variable Name" : : "The name of the variable to set. A specific array index can be set with the form 'varname[4]'. Alternatively use 'varname[]' to assign them to the first index available. Holes in the array are set to null. If this is a :;global name, the script entity is ignored." + ref(target_destination) : "Reference Entity" : : "If set, a reference entity to use to obtain data from instead of this one." + mode(choices) : "Mode" : "pos" : "The kind of data to read. For Constants, the position/reference is ignored completely. For Entity Handle to be useful, only one reference entity should exist. For Offset and Distance, it's the offset of the reference relative to this entity. For Entity KeyValue, the constant is the keyvalue name, then the value is converted to an appropriate Squirrel type. " = + [ + "const": "Constant" + "string": "Stringified Constant" + "bool": "Boolean Constant" + "inv_bool": "Inverted Boolean Constant" + "name": "Entity Name" + "handle": "Entity Handle" + "keyvalue": "Entity KeyValue" + "pos": "Position" + "pos_x": "Position - X only" + "pos_y": "Position - Y only" + "pos_z": "Position - Z only" + "ang": "Angle (as vector)" + "off": "Offset to Reference" + "dist": "Distance to Reference" + "x": "Forward Direction" + "y": "Left Direction" + "z": "Up Direction" + ] + + const(string) : "Scale / Constant" : : "A scale factor for the data, or a constant to use directly in for those modes." + ] + +@PointClass base(BaseEntityPoint) + studioprop("models/editor/vactubes/end_point.mdl") + sphere(radius) += comp_vactube_end: "Marks the end point of a vactube. Objects reaching here will be cleaned up." + [ + radius(float) : "Cube Radius" : 0 : "The radius to search for cubes in for droppers. If zero, this is a regular endpoint, and the rest of the options have no effect." + autorespawn(boolean) : "Auto Respawn" : 1 : "Automatically respawn cubes when destroyed." + filtername(target_destination) : "Filter + Reference" : : "The filter_activator_name to set to point at the cube. This is also used as the location to determine the distance to the cube." + template(target_destination) : "Template" : : "The point_template to set to spawn the cube." + + // Inputs + input RequestSpawn(void) : "Request a cube to be spawned and routed here." + input FireCubeUser1(void) : "FireUser1 at the cube, for dissolving existing ones." + + // Outputs + output OnCubeArrived(void) : "Triggered when the cube has arrived to be dispensed." + output OnFizzled(void) : "Fired when the cube is fizzled, and autorespawn is enabled." + ] + +@PointClass base(Angles) + studioprop() += comp_vactube_junction: "Marks a junction in a vactube, where they're forced to change direction. Scanner models near straight nodes will be detected automatically." + [ + targetname(target_source) : "Junction Name" : : "Although junctions are linked automatically, this can be used to precisely link two junctions. You can use also this to help with identifying problems since the compiler will output it." + model(choices) : "Type" : "models/editor/vactubes/straight.mdl" : "The size and type of junction. Splitters split the tube into multiple paths. You can simply overlap two junctions to join paths, however." = + [ + "models/editor/vactubes/straight.mdl": "Straight / Scanner" + "models/editor/vactubes/curve_1.mdl": "Curve: 1" + "models/editor/vactubes/curve_2.mdl": "Curve: 2" + "models/editor/vactubes/curve_3.mdl": "Curve: 3" + "models/editor/vactubes/curve_4.mdl": "Curve: 4" + "models/editor/vactubes/curve_5.mdl": "Curve: 5" + "models/editor/vactubes/curve_6.mdl": "Curve: 6" + "models/editor/vactubes/diag_curve.mdl": "Curve: 45 Deg" + "models/editor/vactubes/diag_curve_mirror.mdl": "Curve: 45 Deg (Mirror)" + "models/editor/vactubes/splitter_straight.mdl": "Splitter: Straight" + "models/editor/vactubes/splitter_sides.mdl": "Splitter: Left/Right" + "models/editor/vactubes/splitter_triple.mdl": "Splitter: Triple" + ] + + skin(choices) : "Curve Direction" : 0 : "Reverse the direction, to make placing easier. Does not apply to splitters." = + [ + 0: "Forward" + 1: "Backward" + ] + + persist_tv(choices) : "TV Screen behaviour" : 0 : "Determine how items are shown on Scanner TVs." = + [ + 0: "Return to blank when item leaves" + 1: "Continue displaying until replaced" + ] + + target(target_destination) : "Next junction (optional)" : : "Although junctions are linked automatically, you can specify the name of another to force it to connect to a further away or non-aligned node." + target_sec(target_destination) : "Secondary junction" : : "For splitters, this is the second output from the junction." + target_ter(target_destination) : "Tertiary junction" : : "For the triple splitter, this is the rightmost output." + + // Outputs + output OnPass(void) : "Fired when a cube passes by." + ] + +@MoveClass base(StaticTargetName, Angles) + sphere(radius) + animator() + keyframe() + iconsprite("editor/comp_prop_rope") += comp_vactube_spline: "Constructs a custom vactube model, using a set of path points." + [ + nextkey(target_destination) : "Next Rope" : : "Name of the next spline node." + opaque(boolean) : "Opaque Tube" : 0 : "Whether the tube should be glass, or the black opaque version." + skin(choices) : "Mode" : 0 : "Whether this will link to comp_vactube_junctions, or just be a static prop." = + [ + 0: "Static Prop" + 1: "Vactube Junction" + ] + + segments(integer) : "Segments" : 2 : "Number of nodes to generate for this. Higher values make smoother tubes, but produce more faces." + collisions(boolean) : "Enable Collisions" : 1 : "Sholuld a collision mesh should be generated?" + linedivider_staticprop(string) readonly : "----------------------------------------------------------------------------------------------------------" + 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." + disableshadows(boolean) : "Disable Shadows" : 0 + disableselfshadowing(boolean) : "Disable Self-Shadowing" : 0 + disablevertexlighting(boolean) : "Disable Vertex lighting" : 0 : "Disable per-vertex lighting on this prop." + movespeed(integer) readonly : "Speed (unused)" : 1 : "This needs to be greater than zero to show the preview lines." + positioninterpolator(integer) readonly : "Rope Mode" : 1 : "Needs to be set to '1' to produce the spline curve preview." + ] + +@PointClass base(BaseEntityPoint) + studioprop("models/editor/vactubes/start_point.mdl") += comp_vactube_start: "Marks the start point of a vactube. This is where they spawn." + [ + group(string) : "Object Group" : : "Only objects with the same group name will be spawned." + speed(float) : "Object Speed" : "800.0" : "Set the speed of the objects produced from here, in units per second." + seed(string) : "Rotation Seed" : : "If set, consistently produce the same rotation pattern as the seed. If not set, a random seed will be selected (and printed to the compile log)." + timer(boolean) : "Trigger automatically" : 1 : "If true, generate a logic_timer to automatically trigger with a random time." + time_min(float) : "Minimum Time" : "0.15" : "The minimum time between objects." + time_max(float) : "Maximum Time" : "0.5" : "The maximum time between objects." + + // Inputs + input ForceSpawn(void) : "Force an object to spawn immediately." + input EnableTimer(void) : "Enable the automatic timer." + input DisableTimer(void) : "Disable the automatic timer." + + // Outputs + output OnSpawned(void) : "Fired when the cube spawns." + ] + +@PointClass base(BaseEntityPoint, Angles) + size(-4 -4 -4, 4 4 4) + color(0 0 255) + line(0 0 255, targetname, EndTargetName) += env_alyxemp: "Special effect for Alyx's EMP device." + [ + type(integer) : "EMP Type" : 0 + 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 base(BaseEntityPoint, EnableDisable) + sphere(minfalloff) + sphere(maxfalloff) + iconsprite("editor/color_correction.vmt") + color(200 0 0) += env_ambient_light: "An entity to control the color correction in the map." + [ + color(color255) : "Color (R G B)" : "255 255 255" + 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" + fadeinduration(float) : "Lookup Fade In Duration" : "0.0" : "Duration of fade in on when enabled." + fadeoutduration(float) : "Lookup Fade out Duration" : "0.0" : "Duration of fade out on when disabled." + + // Inputs + input SetColor(color255) : "Sets the color." + 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." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ts2do/env_ar2explosion.vmt") += env_ar2explosion: "AR2 explosion visual effect. Big, volume-filling brown cloud. Does not cause damage or emit sound." + [ + material(material) : "Particle Material" : "particle/particle_noisesphere" : "The material to use for each particle in the explosion." + + // Inputs + input Explode(void) : "Make the explosion effect." + ] + +@PointClass base(BaseEntityPoint) + color(255 0 0) + iconsprite("editor/env_blood.vmt") += 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: "[1] Random Direction" : 0 + 2: "[2] Blood Stream" : 0 + 4: "[4] On Player" : 0 + 8: "[8] Spray decals" : 0 + ] + + + // Inputs + input EmitBlood(void) : "Triggers the blood effect." + ] + +@SolidClass base(BaseEffectBrush) + color(200 200 0) += env_bubbles: "An entity used to create a volume in which to spawn bubbles." + [ + density(integer) : "Bubble density" : 2 : "The amount of bubbles per cycle. Final amount is inputted value plus one. -1 is max." + frequency(integer) : "Bubble frequency" : 2 : "How frequent cycles occur. Values include negative numbers to 20, the final time between cycles is 2.5s minus X tenths of a second if positive, or 2.5s plus X tenths of a second if negative." + current(integer) : "Speed of Current" : 0 : "The speed of the water current in the volume, used to move the bubbles." + spawnflags(flags) = + [ + 1: "[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 units per second." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/env_cascade_light.vmt") + lightprop("models/editor/spot.mdl") += env_cascade_light: "An entity to control the sunlight that casts cascaded shadows in the map." + [ + angles(angle) : "Pitch Yaw Roll (Y Z X)" : "50 43 0" : "This is the shadow casting 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. (Note that pitch is negated vs. light_environment's pitch.)" + color(color255) : "Light Color" : "255 255 255 1" : "This is the color of the sunlight." + maxshadowdistance(float) : "Max Shadow Distance" : 400 : "Maximum dynamic shadow distance. Higher values are slower, default on PC is 400 units." + uselightenvangles(boolean) : "Use light_environment's angles" : 1 : "If true, the CSM shadow angles are automatically harvested from the light_environment's angles. If false, this entity's angles are used." + + // Inputs + input LightColor(color255) : "Set the light color." + input LightColorScale(integer) : "Set the light color scale" + input SetAngles(string) : "Set the sun direction." + ] + +@PointClass base(BaseEntityPoint, Angles) + studio("models/editor/cone_helper.mdl") + iconsprite("editor/env_citadel_energy_core.vmt") += env_citadel_energy_core: "Special effect for the energy cores in the Citadel, or for the Portal Unstationary Scaffold. Appears as a blue-white sphere with streams of energy coming from the direction the entity is pointing." + [ + spawnflags(flags) = + [ + 1: "[1] No small particles" : 0 + 2: "[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) : "Switch to discharging the core." + input Stop(float) : "Stops the effect over the specified number of seconds." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ts2do/env_credits.vmt") += env_credits: "The entity that controls the rolling credits, loaded from 'scripts/credits.txt'." + [ + + // 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(BaseEntityPoint, Angles) + sphere(fademindist) + sphere(fademaxdist) + iconsprite("editor/ficool2/env_detail_controller.vmt") += env_detail_controller: "An entity that lets you control override the min and max fade distances for details sprites in the map." + [ + fademindist(float) : "Start Fade Dist/Pixels" : 512 : "The distance at which the detail props will start fading away." + fademaxdist(float) : "End Fade Dist/Pixels" : 1024 : "The distance at which the detail props will stop fading and stop drawing entirely." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_dof_controller.vmt") + color(200 0 0) + line(255 255 0, targetname, focus_target) + sphere(near_blur) + sphere(near_focus) + sphere(far_blur) + sphere(far_radius) += env_dof_controller: "An entity that controls the depth of field settings for the player. Depth of field simulates camera blur of out-of-focus regions of the scene." + [ + enabled(boolean) : "Enabled" : 0 : "Whether the effect should be active" + near_blur(float) : "Near blur depth" : 20 : "Distance that the blurriness is at its peak near the viewpoint." + near_focus(float) : "Near focus depth" : 100 : "Distance that the focus is in full effect near the viewpoint." + near_radius(float) : "Near blur radius" : 8 : "Radius (in pixels) to blur the surrounding pixels." + far_blur(float) : "Far blur depth" : 1000 : "Distance where blurriness is at its peak far from the viewpoint." + far_focus(float) : "Far focus depth" : 500 : "Distance that the focus is in full effect far from the viewpoint." + far_radius(float) : "Far blur radius" : 8 : "Radius (in pixels) to blur the surrounding pixels." + focus_target(target_destination) : "Focus target" : : "Entity to use as a focal point." + focus_range(float) : "Focus target range" : 200 : "Distance behind the focal plane to remain in focus." + + // Inputs + input SetNearBlurDepth(float) : "Set the distance in front of the focus region at which the scene will be completely blurred using the near blur radius. Must be smaller than NearFocusDepth." + input SetNearFocusDepth(float) : "The area between the near focus and far focus distances is perfectly in focus. Must be smaller than FarFocusDepth." + input SetFarFocusDepth(float) : "The area between the near focus and far focus distances is perfectly in focus. Must be smaller than FarBlurDepth." + input SetFarBlurDepth(float) : "Set the distance beyond the focus region at which the scene will be completely blurred using the far blur radius. Must be larger than FarFocusDepth." + input SetNearBlurRadius(float) : "Set the blur radius (in pixels) to use at the near blur distance. Set to 0 to disable near blur." + input SetFarBlurRadius(float) : "Set the blur radius (in pixels) to use at the far blur distance. Set to 0 to disable far blur." + input SetFocusTarget(string) : "Set the focal target for the effect." + input SetFocusTargetRange(float) : "Set the distance behind the focal point that will remain in focus." + ] + +@PointClass base(BaseEntityPoint, Angles) + studio("models/editor/env_dustpuff.mdl") += 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." + ] + +@SolidClass base(BaseEffectBrush) + color(200 200 0) += env_embers: "An entity used to create a volume in which to spawn fire embers." + [ + angles(angle) : "Pitch Yaw Roll (X Y Z)" : "0 0 0" : "This entity's orientation in the world. Roll is the rotation around the X axis, pitch is rotation around the Y axis and yaw is the rotation around the Z axis." + 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: "[1] Start On" : 0 + 2: "[2] Toggle" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/env_entity_dissolver.vmt") + line(255 255 255, targetname, target) += env_entity_dissolver: "Dissolves the target entity when triggered. Only works on model entities. In Portal 2, this uses the Fizzler effects." + [ + 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" : 0 : "The type of effect to use." = + [ + 0: "Empancipation" + 3: "Vanish, with fizzler ash particles" + ] + + + // Inputs + input Dissolve(string) : "Dissolve target, if no target is passed it'll use the target specified in the target field." + ] + +@PointClass base(BaseEntityPoint) + color(200 200 0) + line(255 128 0, targetname, target) + iconsprite("editor/ficool2/env_entity_igniter.vmt") += 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(BaseEntityPoint, Angles) + line(255 255 0, targetname, entitytemplate) + iconsprite("editor/env_entity_maker.vmt") + studio("models/editor/angle_helper.mdl") += 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: "[1] Enable AutoSpawn (will spawn whenever there's room)" : 0 + 2: "[2] AutoSpawn: Wait for entity destruction" : 0 + 4: "[4] AutoSpawn: Even if the player is looking" : 0 + 8: "[8] ForceSpawn: Only if there's room" : 0 + 16: "[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(boolean) : "PostSpawn Inherit Angles" : 0 : "If in hierarchy, is spawn direction in world space, or object local space of parent." + + // Inputs + input ForceSpawn(void) : "Spawn an instance of the template at this origin and angle." + input ForceSpawnAtEntityOrigin(target_destination) : "Spawns an instance of the template that has the same origin and angles as the specified entity." + + // 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." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_explosion.vmt") + color(200 200 0) + sphere(iRadiusOverride) + line(255 255 0, targetname, ignoredEntity) += env_explosion: "An entity that creates an explosion at its origin." + [ + imagnitude(integer) : "Magnitude" : 100 : "The amount of damage done by the explosion." + 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: "[1] No Damage" : 0 + 2: "[2] Repeatable" : 0 + 4: "[4] No Fireball" : 0 + 8: "[8] No Smoke" : 0 + 16: "[16] No Decal" : 0 + 32: "[32] No Sparks" : 0 + 64: "[64] No Sound" : 0 + 128: "[128] Random Orientation" : 0 + 256: "[256] No Fireball Smoke" : 0 + 512: "[512] No particles" : 0 + 1024: "[1024] No DLights" : 0 + 2048: "[2048] Don't clamp Min" : 0 + 4096: "[4096] Don't clamp Max" : 0 + 8192: "[8192] Damage above surface only" : 0 + 16384: "[16384] Generic damage" : 0 + ] + + ignoredentity(target_destination) : "Ignored Entity" : : "Do not harm or affect the named entity." + ignoredclass(choices) : "Ignored Class" : 0 : "Do not harm or affect this class." = + [ + 0: "None" + 1: "Players" + 2: "Player Allies" + 3: "Vital Player Allies" + 4: "Antlions" + 5: "Barnacles" + 6: "npc_bullseyes" + 7: "Citizens - Passive" + 8: "Citizens Rebel" + 9: "Combine" + 10: "Combine Gunships" + 11: "Conscripts" + 12: "Headcrabs" + 13: "Manhacks" + 14: "Metropolice" + 15: "Military" + 16: "Scanners" + 17: "Stalkers" + 18: "Vortigaunts" + 19: "Zombies" + 20: "Protosnipers" + 21: "Missiles" + 22: "Flares" + 23: "Earth Fauna" + 24: "Hacked Rollermines" + 25: "Combine Hunters" + ] + + + // Inputs + input Explode(void) : "Triggers the explosion." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_fade") + color(200 0 0) += env_fade: "An entity that controls screen fades." + [ + spawnflags(flags) = + [ + 1: "[1] Fade From" : 0 + 2: "[2] Modulate" : 0 + 4: "[4] Triggering player only" : 0 + 8: "[8] Stay Out" : 0 + ] + + duration(float) : "Duration (seconds)" : 2 : "The time that it will take to fade the screen in or out." + holdtime(float) : "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" + reversefadeduration(float) : "Reverse Fade Duration (seconds)" : 2 : "The duration of the reverse fade." + + // Inputs + input Fade(void) : "Start the screen fade." + input FadeReverse(void) : "Begin doing the reverse of the current fade." + + // Outputs + output OnBeginFade(void) : "Fired when the fade has begun." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/env_fire") + color(200 200 0) + sphere(firesize) += 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: "[1] Infinite Duration" : 0 + 2: "[2] Smokeless" : 0 + 4: "[4] Start On" : 0 + 8: "[8] Start Full" : 0 + 16: "[16] Don't drop" : 0 + 32: "[32] No glow" : 0 + 128: "[128] Delete when out" : 0 + 256: "[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(BaseEntityPoint) + sphere(fireradius) + color(200 200 0) + iconsprite("editor/ficool2/env_firesensor.vmt") += env_firesensor: "An entity that detects changes in heat nearby." + [ + spawnflags(flags) = + [ + 1: "[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." + + // Outputs + 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(BaseEntityPoint) + iconsprite("editor/env_firesource") + sphere(fireradius) + color(200 200 0) += env_firesource: "An entity that provides heat to all nearby env_fire entities. Cannot be extinguished." + [ + spawnflags(flags) = + [ + 1: "[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(BaseEntityPoint, RenderFields, Reflection) + size(-4 -4 -4, 4 4 4) += env_flare: "HL2 flare glow." + [ + scale(float) : "Scale" : 1 + duration(float) : "Duration" : 30 + spawnflags(flags) = + [ + 1: "[1] No DLight" : 0 + 2: "[2] No Smoke" : 0 + 4: "[4] Infinite" : 0 + 8: "[8] Start off" : 0 + ] + + + // Inputs + 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(BaseEntityPoint, SystemLevelChoice) + iconsprite("editor/fog_controller.vmt") + color(200 0 0) + studio("models/editor/cone_helper.mdl") += env_fog_controller: "An entity that controls the fog and view distance in the map." + [ + fogenable(boolean) : "Fog Enable" : 1 : "Whether or not the fog should start enabled." + fogblend(boolean) : "Fog Blend" : 0 : "Enables color blending between the primary color and the secondary color. When looking at the Primary Fog Direction, the primary fog color will appear. When looking away, the secondary color will. Looking between directly at the direction and directly away will cause color blending." + use_angles(boolean) : "Use Angles for Fog Dir" : 0 + fogcolor(color255) : "Primary Fog Color" : "255 255 255" : "The color of the fog. If fog blend is enabled, this color blends with the secondary color when not looking at the primary fog direction." + fogcolor2(color255) : "Secondary Fog Color" : "255 255 255" : "The secondary fog color. If fog blend is disabled, this color will never appear." + fogdir(string) : "Primary Fog Direction" : "1 0 0" : "If fog blend is enabled, this is the direction that shows only the primary color. Directly away is the secondary color and in-between the colors are blended." + fogstart(string) : "Fog Start" : "500.0" : "The distance from the player the fog starts." + fogend(string) : "Fog End" : "2000.0" : "The distance from the player the fog reaches the Fog Max Density keyvalue." + fogmaxdensity(float) : "Fog Max Density [0..1]" : 1 : "The max density the fog can get to, 0-1." + foglerptime(float) : "Interpolate time" : 0 : "The fade time for the StartFogTransition input." + farz(string) : "Far Z Clip Plane" : -1 : "The distance at which the world will not be rendered." + spawnflags(flags) = + [ + 1: "[1] Master (Has priority if multiple env_fog_controllers exist)" : 0 + ] + + hdrcolorscale(float) : "HDR Color Scale" : 1 : "Float value to multiply fog color by when running in HDR mode." + zoomfogscale(float) : "Zoom Fog Scale" : 1 : "How much the fog min/max values will scale the default value by when players are zoomed in (scoped)." + + // Inputs + input SetStartDist(float) : "Set the fog start distance." + input SetEndDist(float) : "Set the fog end distance." + input SetMaxDensity(float) : "Set the max density, 0 to 1" + 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." + input SetMaxDensityLerpTo(float) : "Set max density lerp to." + input SetZoomFogScale(void) : "Set the value the fog will scale the default value by when players are zoomed in (scoped)." + input ActivateAllPlayers(void) : "Activates this fog controller for all players" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/env_funnel") + color(200 200 0) += env_funnel: "The suck-in effect from the HL1 Resonance Cascade sequence." + [ + spawnflags(flags) = + [ + 1: "[1] Reverse (repel particles instead of suck in)" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/env_global.vmt") += env_global: "An entity to control a game-specific global states." + [ + globalstate(choices) : "Global State to Set" = + [ + "no_pinging_blue": "Prevent Pinging ATLAS" + "no_pinging_orange": "Prevent Pinging P-Body" + "no_taunting_blue": "Prevent Taunting ATLAS" + "no_taunting_orange": "Prevent Taunting P-Body" + "player_regenerates_health": "Prevent player health regen from turrets" + "slowtime_disabled": "Prevent player +slowtime" + "gordon_precriminal": "Gordon is pre-criminal" + "antlion_allied": "Antlions are player allies" + "suit_no_sprint": "HEV suit sprint disabled" + "super_phys_gun": "Super gravity gun enabled" + "citizens_passive": "Citizens are neutral to Gordon & combine" + "gordon_invulnerable": "Gordon is invulnerable" + "no_seagulls_on_jeep": "Don't spawn seagulls on jeep" + "friendly_encounter": "Lower HL2 weapons" + "ep2_alyx_injured": "Alyx injured behavior from EP2" + "ep_alyx_darknessmode": "Alyx darkness behavior from EP1" + "hunters_to_run_over": "Amount of hunters to run over before they dodge" + ] + + 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: "[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. This doesn't work properly." + + // Outputs + output Counter(integer) : "Fired in response to the GetCounter input, passing the current value of the counter." + ] + +@PointClass base(BaseEntityPoint, 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(sound) : "Shoot Sound" : "Weapon_AR2.NPC_Single" : "Gunfire sound to make" + tracertype(choices) : "Tracer" : "AR2TRACER" : "Type of tracer to display" = + [ + "Tracer": "Default" + "AR2TRACER": "AR2" + "": "None" + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_hudhint.vmt") += 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: "[1] All Players" : 0 + ] + + message(string) : "Hint Text (localized)" : : "This should be set to match the desired HUD hint entry in resource/valve_english.txt." + + // Inputs + input ShowHudHint(void) : "Shows the hint message." + input HideHudHint(void) : "Hides the hint message." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_instructor_hint.vmt") + line(255 255 0, targetname, hint_target) + sphere(hint_range) += env_instructor_hint: "An entity that allows for creation and control of instructor lessons by map logic." + [ + hint_replace_key(string) : "Replace Key" : : "Unique name so that messages with the same key will replace each other." + hint_target(target_destination) : "Target Entity" : : "The entity to show this hint on top of. The entity used must exist on the client, info_target_instructor_hint can be parented to server only entities for this purpose." + hint_static(choices) : "Positioning" : 0 : "Either show at the position of the Target Entity. Or show the hint directly on the hud at a fixed position." = + [ + 0: "Follow the Target Entity" + 1: "Show on the hud" + ] + + hint_allow_nodraw_target(choices) : "Allow invisible target" : 1 : "Do we allow the hint to follow entities with nodraw set?" = + [ + 0: "End immediately on nodraw" + 1: "Yes" + ] + + hint_caption(string) : "Caption" : : "The text of your hint." + hint_activator_caption(string) : "Activator Caption" : : "The text of your hint shown to only the activating player." + hint_color(color255) : "Caption Color" : "255 255 255" : "The color of the caption text" + hint_forcecaption(choices) : "Show through walls" : 0 : "Do we show the caption text even if the hint is occluded by a wall?" = + [ + 0: "No" + 1: "Show when occluded" + ] + + hint_icon_onscreen(choices) : "Onscreen Icon" : "icon_tip" : "The icon to use when the hint is within the player's view." = + [ + "use_binding": "Show controls instead" + "icon_blank": "Blank" + "icon_bulb": "Bulb" + "icon_caution": "Caution" + "icon_alert": "White Exclamation Mark" + "icon_alert_red": "Red Exclamation Mark" + "icon_tip": "Information" + "icon_skull": "Eye" + "icon_interact": "Interact/Pickup" + "icon_button": "Button" + "icon_door": "Door" + "icon_useable_item": "Joystick" + "icon_arrow_plain_white_dn": "Simple Down Arrow" + "icon_arrow_plain_white_up": "Simple Up Arrow" + "icon_arrow_up": "Up Arrow" + "icon_arrow_right": "Right Arrow" + "icon_mouseRight": "Right-Click" + "icon_mouseLeft": "Left-Click" + "icon_mouseWheel_up": "MouseWheel Up" + "icon_mouseWheel_down": "MouseWheel Down" + "icon_mouseThree": "Click Scrollwheel" + "icon_key_generic": "Empty Key" + "icon_key_wide": "Spacebar" + "icon_key_right": "Right Key" + "icon_key_left": "Left Key" + "icon_key_down": "Down Key" + "icon_key_up": "Up Key" + "icon_dpad": "D-Pad" + "icon_fire": "Fire" + "icon_present": "Present" + ] + + hint_icon_offscreen(choices) : "Offscreen Icon" : "icon_tip" : "The icon to use when the hint is outside the player's view." = + [ + "icon_blank": "Blank" + "icon_bulb": "Bulb" + "icon_caution": "Caution" + "icon_alert": "White Exclamation Mark" + "icon_alert_red": "Red Exclamation Mark" + "icon_tip": "Information" + "icon_skull": "Eye" + "icon_interact": "Interact/Pickup" + "icon_button": "Button" + "icon_door": "Door" + "icon_useable_item": "Joystick" + "icon_arrow_plain_white_dn": "Simple Down Arrow" + "icon_arrow_plain_white_up": "Simple Up Arrow" + "icon_arrow_up": "Up Arrow" + "icon_arrow_right": "Right Arrow" + "icon_mouseRight": "Right-Click" + "icon_mouseLeft": "Left-Click" + "icon_mouseWheel_up": "MouseWheel Up" + "icon_mouseWheel_down": "MouseWheel Down" + "icon_mouseThree": "Click Scrollwheel" + "icon_key_generic": "Empty Key" + "icon_key_wide": "Spacebar" + "icon_key_right": "Right Key" + "icon_key_left": "Left Key" + "icon_key_down": "Down Key" + "icon_key_up": "Up Key" + "icon_dpad": "D-Pad" + "icon_fire": "Fire" + "icon_present": "Present" + ] + + hint_nooffscreen(choices) : "Show offscreen" : 0 : "When the hint is offscreen, do we show an icon and arrow?" = + [ + 0: "Show" + 1: "Don't show" + ] + + hint_binding(choices) : "Bound Command" : : "If using 'show key bindings' for the onscreen icon, this field should be the command we want to show bindings for." = + [ + "": "Unused" + "+forward": "Forward" + "+back": "Backward" + "+left": "Strafe Left" + "+right": "strafe Right" + "+duck": "Crouch" + "+jump": "Jump" + "+attack": "Fire Blue Portal" + "+attack2": "Fire Orange Portal" + "+use": "Use Key" + "+zoom": "Zoom In" + "-zoom": "Zoom Out" + ] + + hint_icon_offset(float) : "Icon Height Offset" : 0 : "A height offset from the target entity's origin to display the hint" + hint_pulseoption(choices) : "Size Pulsing" : 0 : "The icon size can pulsate" = + [ + 0: "No Pulse" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Urgent Pulse" + ] + + hint_alphaoption(choices) : "Alpha Pulsing" : 0 : "The icon alpha can pulsate" = + [ + 0: "No Pulse" + 1: "Slow Pulse" + 2: "Fast Pulse" + 3: "Urgent Pulse" + ] + + hint_shakeoption(choices) : "Shaking" : 0 : "The icon can shake" = + [ + 0: "No Shaking" + 1: "Narrow Shake" + 2: "Wide Shake" + ] + + hint_local_player_only(boolean) : "Only Local Player" : 0 : "The hint will only be shown to the first person to join/create the server." + hint_timeout(integer) : "Timeout" : 0 : "The automatic timeout for the hint. 0 will persist until stopped with EndHint." + hint_range(float) : "Display Range" : 0 : "The visible range of the hint." + hint_gamepad_binding(string) : "Gamepad Bound Command" : : "If using 'show key bindings' for the onscreen icon, this field should be the command we want to show bindings for when gamepad is enabled" + + // Inputs + input ShowHint(string) : "Start showing the hint. If an entity name is passed as a parameter, the hint is shown only to that entity." + input EndHint(void) : "Stop showing the hint if it hasn't already timed out." + ] + +@PointClass base(BaseEntityPoint, RenderFields) + color(255 128 0) + studio("models/editor/axis_helper_thick.mdl") + iconsprite("editor/ficool2/env_lightglow.vmt") + sphere(minDist) + sphere(maxDist) + sphere(outerMaxDist) + sphere(GlowProxySize) += 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 : "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." : "0.5" : "float value to multiply sprite color by when running in HDR mode." + spawnflags(flags) = + [ + 1: "[1] Visible only from front" : 0 + ] + + + // Inputs + input Color(color255) : "Change the render color of the glow. Format: " + ] + +@PointClass base(BaseEntityPoint) = env_lightrail_endpoint: "Special effects for the endpoints of the lightrail.|||Special effects for the endpoints of the Unstationary Scaffold." + [ + spawnflags(flags) = + [ + 1: "[1] Start On (w/ Small FX)" : 0 + ] + + small_fx_scale(float) : "Scale Small FX" : 1 : "Scale of the small effect. 1 is the default size, 2 is twice that, etc." + large_fx_scale(float) : "Scale Large FX" : 1 : "Scale of the large effect. 1 is the default size, 2 is twice that, etc." + + // Inputs + input StartCharge(float) : "Start charging the endpoint from the small to large state over a specified amount of seconds." + input StartSmallFX(void) : "Start discharging particles at the small effects state over specified number of seconds." + input StartLargeFX(void) : "Start discharging particles at the large effects state over specified number of seconds." + input Stop(float) : "Stops the effect at any point." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ts2do/env_message.vmt") += env_message: "An entity that draws a text message on player's HUDs." + [ + message(string) : "Message Text" + spawnflags(flags) = + [ + 1: "[1] Play Once" : 0 + 2: "[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(BaseEntityPoint, EnableDisable) + iconsprite("editor/env_microphone.vmt") + sphere(MaxRange) + color(0 0 255) + line(64 64 64, targetname, target) + line(255 255 0, targetname, target, targetname, SpeakerName) += 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 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: "[1] Hears combat sounds" : 1 + 2: "[2] Hears world sounds" : 1 + 4: "[4] Hears player sounds" : 1 + 8: "[8] Hears bullet impacts" : 1 + 16: "[16] Swallows sounds routed through speakers" : 0 + 32: "[32] Hears explosions" : 0 + 64: "[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(BaseEntityPoint) = env_movieexplosion + [ + ] + +@PointClass base(BaseEntityPoint) + studio("models/editor/env_muzzleflash.mdl") += 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." + + // Inputs + input Fire(void) : "Fires the effect once." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/env_particle_performance_monitor") += 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(BaseEntityPoint) + color(200 200 0) + line(200 200 200, targetname, psname) + iconsprite("editor/ficool2/env_particlelight.vmt") += 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(boolean) : "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." + psname(target_destination) : "Particle System Entity" : : "Set this to the name of the env_smokestack that you want this light to affect." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/env_effectscript") + studioprop() += 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" : : "Model to use for animation sequences." + + // Inputs + input SetSequence(string) : "Sets the script model's sequence." + ] + +@PointClass base(BaseEntityPoint) + sphere(inner_radius) + iconsprite("editor/env_physexplosion.vmt") + sphere(radius) + line(255 255 0, targetname, targetEntityName) + cylinder(255 0 0, targetname, targetname, radius, targetname, targetentityname) + color(128 128 128) += 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. A negative value can be used to suck entities inward." + 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: "[1] No Damage - Only Force" : 1 + 2: "[2] Push players" : 0 + 4: "[4] Push radially - not as a sphere" : 0 + 8: "[8] Test LOS before pushing" : 0 + 16: "[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." + input ExplodeAndRemove(void) : "Triggers the explosion and then removes the entity." + + // Outputs + output OnPushedPlayer(void) : "Fires when the player is pushed by the explosion." + ] + +@PointClass base(BaseEntityPoint) + line(255 255 255, targetname, directionentityname) + iconsprite("editor/ficool2/env_physimpact.vmt") + sphere(distance) + color(128 128 128) += env_physimpact: "An entity that will cause a physics impact on another entity." + [ + angles(angle) : "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: "[1] No fall-off" : 0 + 2: "[2] Infinite Length" : 0 + 4: "[4] Ignore Mass" : 0 + 8: "[8] Ignore Surface Normal When Applying Force" : 1 + ] + + + // Inputs + input Impact(void) : "Trigger the impact" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_player_surface_trigger.vmt") + color(200 0 0) += 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: "Nonfunctional (air)" + 65: "A - Antlion" + 66: "B - Bloody Flesh" + 67: "C - Concrete" + 68: "D - Dirt" + 69: "E - Eggshell" + 70: "F - Flesh" + 71: "G - Grate" + 72: "H - Alien Flesh" + 73: "I - Clip" + 74: "J - Grass" + 75: "K - Snow" + 76: "L - Plastic" + 77: "M - Metal" + 78: "N - Sand" + 79: "O - Foliage" + 80: "P - Computer" + 81: "Q - Asphalt" + 82: "R - Brick" + 83: "S - Slosh" + 84: "T - Tile" + 85: "U - Cardboard" + 86: "V - Vent" + 87: "W - Wood" + 88: "X - Fake surfaces" + 89: "Y - Glass" + 90: "Z - Warp Shield" + 1: "1 - Clay" + 2: "2 - Plaster" + 3: "3 - Rock" + 4: "4 - Rubber" + 5: "5 - Sheet Rock" + 6: "6 - Cloth" + 7: "7 - Carpet" + 8: "8 - Paper" + 9: "9 - Upholstery" + 11: "11 - Mud" + 12: "12 - Sand Barrel" + 13: "13 - Dense Wood" + ] + + + // 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(BaseEntityPoint) = env_player_viewfinder: "When enabled, the viewfinder screen overlay will turn on, like when gesturing to cameras. Applies to both Coop players." + [ + + // Inputs + input ShowViewFinder(void) : "Shows the view finder screen overlay." + input HideViewFinder(void) : "Hides the view finder screen overlay." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_portal_credits") + color(200 0 0) += env_portal_credits: "The entity that controls the Portal credits, loaded from 'scripts/credits.txt'." + [ + + // Inputs + input RollCredits(void) : "Start the intro credits rolling." + input RollOutroCredits(void) : "Start the outro credits rolling." + input ShowLogo(void) : "Show the HL2 logo." + input SetLogoLength(float) : "How long the logo shows." + input RollPortalOutroCredits(void) : "Start the Portal greenscreen outro credits." + + // Outputs + output OnCreditsDone(void) : "Fired when the credits having finished rolling." + ] + +@PointClass base(BaseEntityPoint, SystemLevelChoice) + frustum(lightfov, nearz, farz, lightcolor, -1) + studio("models/editor/cone_helper.mdl") + iconsprite("editor/env_projectedtexture") + line(255 255 255, targetname, target) + sphere(nearz) + sphere(farz) += env_projectedtexture: "Projected texture entity." + [ + spawnflags(flags) = + [ + 1: "[1] Enabled" : 1 + 2: "[2] Always Update (moving light)" : 0 + ] + + 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(boolean) : "Enable Shadows" : 1 : "Enables/disables shadows from this projected texture." + shadowquality(choices) : "Shadow Quality" : 1 : "Quality of shadows." = + [ + 0: "Low" + 1: "High" + ] + + lightonlytarget(boolean) : "Light Only Target" : 0 : "Limit flashlight effect to only effect target entity." + lightworld(boolean) : "Light World" : 1 : "Control whether flashlight effects static world geometry." + simpleprojection(boolean) : "Simple Projection" : 0 : "Indicates if this is a simple, non-light casting texture projection" + lightcolor(color255) : "Light Color" : "255 255 255 200" : "Light Color RGB-Intensity" + brightnessscale(float) : "Brightness Scale" : "1.0" : "Scale the light color by this brightness" + cameraspace(boolean) : "Camera Space" : 0 : "Angles are interpreted as being relative to camera." + colortransitiontime(float) : "Color Transition Time" : "0.5" : "Amount of time it takes for a color change to occur." + texturename(string) : "Texture Name" : "effects/flashlight001" : "VTF Texture to 'project' onto the enviroment. Please note that env_projectedtexture uses .vtf files directly and does not use .vmt files. The material browser is only available here to assist with finding textures since materials typically have the same name as their textures." + moviename(string) : "Movie Name" : : ".webm file used in place of the texture." + textureframe(integer) : "Texture Frame" : 0 : "If the VTF is multi-frame, specify the frame to use." + volumetric(boolean) : "Enable Volumetrics" : 0 : "Enables/disables volumetrics from this projected texture." + volumetricintensity(float) : "Volumetric Intensity" : "1.0" : "Sets the intensity of the volumetric lighting." + 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." + + // Inputs + input TurnOn(void) : "Turn on the texture" + input TurnOff(void) : "Turn off the texture" + input FOV(float) : "Set FOV of projection." + input Target(target_destination) : "Set a new target entity to point at." + input CameraSpace(bool) : "Set Camera Space." + input AlwaysUpdateOn(void) : "Turn on per frame updating (for moving lights)" + input AlwaysUpdateOff(void) : "Turn off per frame updating (for moving lights)" + input SpotlightTexture(string) : "Set the spotlight texture" + input SetSpotlightTextureFrame(integer) : "Sets the spotlight texture frame" + input EnableShadows(bool) : "Set if the shadows are enabled." + input LightColor(color255) : "Change the light color/brightness" + input SetLightStyle(integer) : "Change the lightstyle (see Appearance field for possible values)." + input SetPattern(string) : "Set a custom pattern of light brightness for this light. The 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 SetNearZ(float) : "Sets the near Z distance." + input SetFarZ(float) : "Sets the far Z distance." + input LightOnlyTarget(bool) : "Set if the projected texture lights the target only." + input LightWorld(bool) : "Set if the projected texture lights the world and static geometry." + input EnableVolumetrics(bool) : "Set if the volumetrics are enabled." + input SetVolumetricIntensity(float) : "Sets the volumetric lighting's intensity." + input SetBrightnessScale(float) : "Sets the brightness." + ] + +@PointClass base(BaseEntityPoint) = env_rockettrail: "Continuous rocket flame for HL2 RPG missiles." + [ + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_rotorwash_emitter") += env_rotorwash_emitter: "Creates rotorwash." + [ + altitude(float) : "Altitude (Unused)" : 1024 : "Altitude the rotorwash will show up. This is defined in the entity, but isn't actually used for anything." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/env_screeneffect") += 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(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/env_screenoverlay") += 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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(material) : "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(BaseEntityPoint) + sphere(radius) + iconsprite("editor/env_shake.vmt") + color(200 0 0) += env_shake: "An entity to control screen shake on players." + [ + spawnflags(flags) = + [ + 1: "[1] GlobalShake" : 0 + 4: "[4] In Air" : 0 + 8: "[8] Physics" : 0 + 16: "[16] Ropes" : 0 + 32: "[32] DON'T shake view (for shaking ropes or physics only)" : 0 + 64: "[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 base(BaseEntityPoint) + color(200 200 0) + iconsprite("editor/env_smokestack.vmt") + sphere(jetlength) += 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." + [ + 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(material) : "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(BaseEntityPoint) + color(200 50 0) + iconsprite("editor/ficool2/env_smoketrail") + sphere(spawnradius) += 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(BaseEntityPoint, EnableDisable) + sphere(radius) + 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 they 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 portal2/scripts/ directory." = + [ + "TestChamber_Destruction.DestructionBase": "Dest - Destruction Base" + "TestChamber_Destruction.DestructionBeauty": "Dest - Destruction Beauty" + "TestChamber_Destruction.Dual_Lasers": "Dest - Dual Lasers" + "TestChamber_Destruction.Dual_Lasers_Intro": "Dest - Dual Lasers Intro" + "TestChamber_Destruction.GlaDOS_Breaker_Room": "Dest - GLaDOS Chamber Breaker Room" + "TestChamber_Destruction.GlaDOS_Chamber_Diver": "Dest - GLaDOS Chamber Diver" + "TestChamber_Destruction.Glados_Chamber_Postwake": "Dest - GLaDOS Chamber PostWake" + "TestChamber_Destruction.GlaDOS_Chamber_Prewake": "Dest - GLaDOS Chamber Prewake" + "TestChamber_Destruction.GlaDOS_Chamber_Whoomp": "Dest - GLaDOS Chamber Whoomp" + "TestChamber_Destruction.GlaDOS_Hall": "Dest - GLaDOS Hall" + "TestChamber_Destruction.GlaDOS_Basement": "Dest - GLaDOS Basement" + "TestChamber_Destruction.GlaDOS_New_Basement": "Dest - GLaDOS New Basement" + "TestChamber_Destruction.GlaDOS_PreBasement": "Dest - GLaDOS Pre-Basement" + "TestChamber_Destruction.Grain_Click": "Dest - Gtain Click" + "TestChamber_Destruction.Intro_03": "Dest - Intro 3" + "TestChamber_Destruction.Intro_03_Alt": "Dest - Intro 3 Alternate" + "TestChamber_Destruction.Intro_03_EndVeg": "Dest - Intro 3 End Veg" + "TestChamber_Destruction.Intro_03_Halls": "Dest - Intro 3 Halls" + "TestChamber_Destruction.Intro_04": "Dest - Intro 4" + "TestChamber_Destruction.Intro_04_Alt": "Dest - Intro 4 Alternate" + "TestChamber_Destruction.Intro_05_Start": "Dest - Intro 5 Start" + "TestChamber_Destruction.Intro_05": "Dest - Intro 5" + "TestChamber_Destruction.Intro_05_End": "Dest - Intro 5 End" + "TestChamber_Destruction.Intro_06": "Dest - Intro 6" + "TestChamber_Destruction.Intro_06_BTS": "Dest - Intro 6 BTS" + "TestChamber_Destruction.Laser_Redirect_Intro": "Dest - Laser Redirect Intro" + "TestChamber_Destruction.Laser_Stairs": "Dest - Laser Stairs" + "TestChamber_Destruction.MetalGroan_01": "Dest - Metal Groan" + "TestChamber_Destruction.MetalPipe_01": "Dest - Metal Pipe" + "testChamber_Destruction.WaterDrip_01": "Dest - Water Drip" + "TestChamber_Destruction.WindEerie_01": "Dest - Eerie Wind" + "TestChamber_Industrial.BowedMetal_01": "Test Indust - Bowed Metal" + "TestChamber_Industrial.BubblingGoo_01": "Test Indust - Bubbling Goo" + "TestChamber.Industrial_clean_01": "Test Indust - Clean 1" + "TestChamber.Industrial_clean_02": "Test Indust - Clean 2" + "TestChamber.Industrial_clean_03": "Test Indust - Clean 3" + "TestChamber.Industrial_clean_04": "Test Indust - Clean 4" + "TestChamber.Industrial_clean_04a": "Test Indust - Clean 4a" + "TestChamber.Industrial_clean_05": "Test Indust - Clean 5" + "TestChamber.Industrial_clean_06": "Test Indust - Clean 6" + "TestChamber.Industrial_clean_07": "Test Indust - Clean 7" + "TestChamber_Industrial.ClickStick_01": "Test Indust - Click Stick" + "TestChamber_Industrial.HotelFluorescents_01": "Test Indust - Hotel Fluorescents" + "TestChamber_Industrial.HotelRefrigeration_01": "Test Indust - Hotel Refrigeration" + "TestChamber_Industrial.Incinerator": "Test Indust - Incinerator" + "TestChamber_Industrial.Incinerator_Destroyed_Hall": "Test Indust - Incinerator Hall" + "TestChamber_Industrial.Incinerator_Destroyed_Hall_Goo": "Test Indust - Incinerator Goo" + "TestChamber_Industrial.Incinerator_Destroyed_Hall_Inferno": "Test Indust - Incinerator Inferno" + "TestChamber_Industrial.Incinerator_Destroyed_Room": "Test Indust - Incinerator Room" + "TestChamber_Industrial.Incinerator_Tube_Fall": "Test Indust - Incinerator Tube Fall" + "TestChamber_Industrial.Intro_01_Hotel_PostPowerLoss": "Test Indust - Hotel Post-Power Loss" + "TestChamber_Industrial.Intro_01_Hotel_PrePowerLoss": "Test Indust - Hotel Pre-Power Loss" + "TestChamber_Industrial.Intro_01_Ride_01": "Test Indust - Hotel Ride 1" + "TestChamber_Industrial.Intro_01_Ride_02": "Test Indust - Hotel Ride 2" + "TestChamber_Industrial.Intro_01_Ride_03": "Test Indust - Hotel Ride 3" + "TestChamber.Industrial_muffled_01": "Test Indust - Muffled 1" + "TestChamber.Industrial_muffled_02": "Test Indust - Muffled 2" + "TestChamber.Industrial_muffled_02a": "Test Indust - Muffled 2a" + "TestChamber.Industrial_muffled_02b": "Test Indust - Muffled 2b" + "TestChamber.Industrial_muffled_03": "Test Indust - Muffled 3" + "TestChamber.Industrial_muffled_04": "Test Indust - Muffled 4" + "TestChamber.Industrial_muffled_05": "Test Indust - Muffled 5" + "TestChamber.Industrial_muffled_06": "Test Indust - Muffled 6" + "TestChamber.Industrial_partial_open": "Test Indust - Partial Open" + "TestChamber_Industrial.ScrapedMetal_01": "Test Indust - Scraped Metal" + "TestChamber_Industrial.WarehouseImpact_01": "Test Indust - Warehouse Impact 1" + "TestChamber_Industrial.WarehouseImpact_02": "Test Indust - Warehouse Impact 2" + "TestChamber_Industrial.WarehouseImpact_03": "Test Indust - Warehouse Impact 3" + "TestChamber_Industrial.WarehouseMotor_01": "Test Indust - Warehouse Motor" + "TestChamber_Industrial.WarehousePower_01": "Test Indust - Warehouse Power" + "TestChamber_Industrial.WarehouseWronk_01": "Test Indust - Warehouse Wronk 1" + "TestChamber_Industrial.WarehouseWronk_02": "Test Indust - Warehouse Wronk 2" + "TestChamber_BTS.Comb": "Test 01 - BTS Comb" + "TestChamber_BTS.Crystal": "Test 01 - BTS Crystal" + "TestChamber_BTS.Drone": "Test 01 - BTS Drone" + "TestChamber_BTS.Generator": "Test 01 - BTS Generator" + "TestChamber_01.Awake": "Test 01 - Awake" + "TestChamber_01.Vent": "Test 01 - Vent" + "TestChamber.clean_liquid_01": "Test - Clean Liquid 1" + "TestChamber.clean_liquid_02": "Test - Clean Liquid 2" + "TestChamber.fizzler_01": "Test - Fizzler" + "TestChamber.liquid_01": "Test - Liquid 1" + "TestChamber.liquid_02": "Test - Liquid 2" + "TestChamber.liquid_03": "Test - Liquid 3" + "TestChamber.liquid_04": "Test - Liquid 4" + "TestChamber.liquid_lg_01": "Test - Large Liquid 1" + "TestChamber.liquid_lg_02": "Test - Large Liquid 2" + "TestChamber_med_01": "Test - Med 1" + "TestChamber_med_01a": "Test - Med 1a" + "TestChamber.paint_01": "Test - Paint 1" + "TestChamber.paint_02": "Test - Paint 2" + "TestChamber.paint_03": "Test - Paint 3" + "TestChamber.paint.liquid_01": "Test - Paint Liquid 1" + "TestChamber.paint.liquid_02": "Test - Paint Liquid 2" + "TestChamber.paint.liquid_03": "Test - Paint Liquid 3" + "TestChamber_paint_transition_01": "Test - Paint Transition" + "TestChamber_transition_01": "Test - Transition 1" + "TestChamber_transition_02": "Test - Transition 2" + "TestChamber_Vegetation.AfricanBirds": "Vegetation - African Birds" + "TestChamber_Vegetation.BirdsInsects": "Vegetation - Birds and Insects" + "TestChamber_Vegetation.Crows": "Vegetation - Crows" + "TestChamber_Vegetation.Elevator_01": "Vegetation - Elevator" + "TestChamber_Vegetation.Elevator_Birds_01": "Vegetation - Elevator with Birds" + "TestChamber_Vegetation.Insects_01": "Vegetation - Insects 1" + "TestChamber_Vegetation.Insects_02": "Vegetation - Insects 2" + "TestChamber_Vegetation.Insects_03": "Vegetation - Insects 3" + "TestChamber_Vegetation.Intro_01_CubeRoom": "Vegetation - Into 1 Cube Room" + "TestChamber_Vegetation.Intro_01_Main": "Vegetation - Into 1 Main" + "TestChamber_Vegetation.Intro_01_MainPortal": "Vegetation - Intro 1 Main Portal" + "TestChamber_Vegetation.NoBirds": "Vegetation - Without Birds" + "TestChamber_Vegetation.Standard": "Vegetation - Standard" + "TestChamber_Vegetation.WaterDrips": "Vegetation - Water Drips" + "room02.start": "MP 2 - Start" + "room02.start02": "MP 2 - Start 2" + "room02.start_03": "MP 2 - Start 3" + "room02_5.wall_5": "MP 2 - Wall 5" + "room02.catapult_1": "MP 2 - Faith 1" + "room02.catapult_2": "MP 2 - Faith 2" + "room02.catapult_wall_intro": "MP 2 - Faith and Bridge Intro" + "room02.come_along": "MP 2 - Come Along" + "room02.doors": "MP 2 - Doors" + "room02.fan": "MP 2 - Fan" + "room02.fling_1": "MP 2 - Fling 1" + "room02.fling_3": "MP 2 - Fling 3" + "room02.fling_crushers": "MP 2 - Crusher Flings" + "room02.infinifling_train": "MP 2 - Infinifling Training" + "room02.laser_2": "MP 2 - Laser 2" + "room02.laser_crusher": "MP 2 - Laser Crushers" + "room02.mp_coop_lobby_2": "MP 2 - Lobby 2" + "room02.multifling_1": "MP 2 - Multifling" + "room02.paint_bridge": "MP 2/Under - Light Bridge" + "room02.paint_come_along": "MP 2/Under - Come Along" + "room02.paint_longjump": "MP 2/Under - Long Jump" + "room02.paint_redirect": "MP 2/Under - Redirect" + "room02.paint_red_racer": "MP 2/Under - Red Racer" + "room02.paint_speed_catch": "MP 2/Under - Speed Catch" + "room02.paint_walljumps": "MP 2/Under - Wall-Jumps" + "room02.race_2": "MP 2 -Race 2" + "room02.rat_maze": "MP 2 -Rat Maze" + "room02.seperation_1": "MP 2 -Separation" + "room02.speed_fling": "MP 2 -Speed Fling" + "room02.tbeam_catch_grind_1": "MP 2/Funnel - Grinder Catch" + "room02.tbeam_drill": "MP 2/Funnel - Drill" + "room02.tbeam_end": "MP 2/Funnel - End" + "room02.tbeam_fling_float_1": "MP 2/Funnel - Flinging Float" + "room02.tbeam_laser_1": "MP 2/Funnel - Laser" + "room02.tbeam_maze": "MP 2/Funnel - Maze" + "room02.tbeam_polarity": "MP 2/Funnel - Polarity 1" + "room02.tbeam_polarity2": "MP 2/Funnel - Polarity 2" + "room02.tbeam_polarity3": "MP 2/Funnel - Polarity 3" + "room02.tbeam_redirect": "MP 2/Funnel - Redirect" + "room02.turret_ball": "MP 2 - Turret Ball" + "room02.turret_walls": "MP 2 - Turret Bridge Blocking" + "room02.wall_2": "MP 2 - Bridge 2" + "room02.wall_5": "MP 2 - Bridge 5" + "room02.wall_block": "MP 2 - Bridge Block" + "room02.wall_intro": "MP 2 - Bridge Intro" + "room01.endlevel": "MP 1 - End of Level" + "room01.fan": "MP 1 - Fan" + "room01.mp_coop_lobby_2": "MP 1 - Lobby 2" + "room01.start": "MP 1 - Start" + "room01.wall_5": "MP 1 - Wall 5" + "room03.doors": "MP 3 - Doors" + "room03.fan": "MP 3 - Fan" + "room03.fling_3": "MP 3 - Fling 3" + "room03.race_02": "MP 3 - Race 2" + "room03.start": "MP 3 - Start 1" + "room03.start02": "MP 3 - Start 2" + "room03.start_03": "MP 3 - Start 3" + "room03.tbeam_end": "MP 3 - Funnel End" + "room03.tbeam_redirect": "MP 3 - Funnel Redirect" + "room03.wall_5": "MP 3 - Bridge 5" + "room04.catapult_1": "MP 4 - Faith 1" + "room04.catapult_2": "MP 4 - Faith 2" + "room04.catapult_wall_intro": "MP 4 - Faith and Bridge Intro" + "room04.multifling_1": "MP 4 - Multifling" + "room04.paint_bridge": "MP 4/Under - Bridge" + "room04.paint_red_racer": "MP 4/Under - Red Racer" + "room04.paint_walljumps": "MP 4/Under - Wall-Jumps" + "room04.speed_fling": "MP 4/Under - Speed Fling" + "room04.tbeam_end": "MP 4 - Funnel End" + "room04.turret_ball": "MP 4 - Turret Ball" + "room04.turret_walls": "MP 4 - Turret Wall" + "room04.wall_5": "MP 4 - Bridge 5" + "room04.wall_block": "MP 4 - Bridge Block" + "room04.wall_intro": "MP 4 - Bridge Intro" + "room05.fling_crushers": "MP 5 - Crusher Fling" + "room05.wall_5": "MP 5 - Bridge 5" + "room06.catapult_1": "MP 6 - Catapult" + "room06.wall_5": "MP 6 - Bridge 5" + "sab.factory_01": "BTS - Factory 1" + "sab.factory.control_room": "BTS - Control Room" + "sab.factory.end.hall": "BTS - End Hall" + "sab.factory.geltubes": "BTS - Gel Tubes" + "sab.factory.hall_01": "BTS - Hall" + "sab.factory.offices_01": "BTS - Offices 1" + "sab.factory.offices_01a": "BTS - Offices 1a" + "sab.factory.spawn": "BTS - Factory Spawn" + "sab.factory.trans_01": "BTS - Factory Transition" + "sab.factory.turret_01": "BTS - Turret 1" + "sab.factory.turret_01a": "BTS - Turret 1a" + "sabotage.spawn": "BTS - Spawn" + "sabotage.trans.small": "BTS - Small Transition" + "sab.panel.conveyor_01": "BTS - Conveyor" + "sab.panel.factory_01": "BTS - Panel Factory" + "sab.panel.hall_01": "BTS - Panel Hall" + "sab.panel.spawn": "BTS - Panel Spawn" + "sab.panel.trans_01": "BTS - Panel Transition" + "sab.tox.factory_01": "BTS - Neuro Factory 1" + "sab.tox.factory_02": "BTS - Neuro Factory 2" + "sab.tox.hall": "BTS - Neuro Hall" + "sab.tox.spawn": "BTS - Neuro Spawn" + "ug_bomb_water_01": "Under - Water" + "ug_cave_ext_01": "Under - Cave Exterior" + "ug_cave_int_01": "Under - Cave Interior 1" + "ug_cave_int_02": "Under - Cave Interior 2" + "ug_cave_int_03": "Under - Cave Interior 3" + "ug_cave_spawn": "Under - Cave Spawn" + "ug_climb_door_01": "Under - Ascension Door" + "ug_climb_exit_01": "Under - Ascension Exit" + "ug_climb_int_01": "Under - Ascension Interior 1" + "ug_climb_int_02": "Under - Ascension Interior 2" + "ug_climb_shaft_01": "Under - Ascension Shaft" + "ug_door_01": "Under - Door" + "ug_lake_chamber_01": "Under - Lake Chamber" + "ug_lake_int_01": "Under - Lake Interior 1" + "ug_lake_int_02": "Under - Lake Interior 2" + "ug_lake_int_02a": "Under - Lake Interior 2a" + "ug_lake_spawn": "Under - Lake Spawn 1" + "ug_lake_spawn_02": "Under - Lake Spawn 2" + "ug_lake_top_01": "Under - Lake Top" + "ug_pit_01": "Under - Pit 1" + "ug_pit_02": "Under - Pit 2" + "ug_pit_03": "Under - Pit 3" + "ug_pit_lite": "Under - Pit Lite" + "ug_portal_ext_01": "Under - 80s Exterior" + "ug_portal_int_01": "Under - 80s Interior 1" + "ug_portal_int_02": "Under - 80s Interior 2" + "ug_portal_int_03": "Under - 80s Interior 3" + "ug_portal_shaft_01": "Under - 80s Shaft" + "ug_portal_tunnel_01": "Under - 80s Tunnel" + "ug_sphere_int_01": "Under - Sphere Interior 1" + "ug_sphere_int_01a": "Under - Sphere Interior 1a" + "ug_sphere_int_02": "Under - Sphere Interior 2" + "ug_sphere_int_02a": "Under - Sphere Interior 2a" + "ug_sphere_samll_room": "Under - Sphere Small Room" + "ug_sphere_water_01": "Under - Sphere Water 1" + "ug_sphere_water_01a": "Under - Sphere Water 1a" + "ug_sphere_water_01b": "Under - Sphere Water 1b" + "ug_sphere_water_02": "Under - Sphere Water 2" + "ug_sphere_water_02a": "Under - Sphere Water 2a" + "ug_sphere_water_02b": "Under - Sphere Water 2b" + "ug_trans_01": "Under - Transition" + "portal_escape.final_boss": "Portal Esc - Boss 1" + "portal_escape.final_boss2": "Portal Esc - Boss 2" + "portal_escape.hazard_liquid_tunnel": "Portal Esc - Goo Tunnel" + "portal_escape.in_shaft_high": "Portal Esc - Internal Shaft High" + "portal_escape.in_shaft_low": "Portal Esc - In Shaft Low" + "portal_escape.intro": "Portal Esc - Intro" + "portal_escape.nearing_boss": "Portal Esc - Nearing Boss" + "portal_escape.tube": "Portal Esc - Tube" + "portal_testchmb.cleanser": "Portal TS - Fizzler" + "portal_testchmb.cross_the_gap": "Portal TS - Cross The Gap" + "portal_testchmb.elevator_shaft": "Portal TS - Elevator Shaft" + "portal_testchmb.energy_ball": "Portal TS - Pellet" + "portal_testchmb.explore_space": "Portal TS - Explore Space" + "portal_testchmb.fire_pit": "Portal TS - Fire Pit" + "portal_testchmb.fixed_portal": "Portal TS - Fixed Portal" + "portal_testchmb.fling": "Portal TS - Fling" + "portal_testchmb.get_the_box": "Portal TS - Get The Box" + "portal_testchmb.goo_pit": "Portal TS - Goo Pit" + "portal_testchmb.tight_space": "Portal TS - Tight Space" + "portal_testchmb.track_train": "Portal TS - Unstationary Scaffolds" + "portal_testchmb.turret_danger": "Portal TS - Turret Danger" + "portal_testchmb.use_your_box": "Portal TS - Use Your Box" + "finale_1_chamber_01": "Finale 1 - Chamber" + "finale_1_hall_01": "Finale 1 - Hall" + "finale_1_platform_01": "Finale 1 - Platform" + "finale_1_transition_01": "Finale 1 - Transition" + "finale_2_spawn": "Finale 2 - Spawn" + "finale_2_chamber_01": "Finale 2 - Chamber" + "finale_2_paint_01": "Finale 2 - Paint" + "finale_2_tbeam_01": "Finale 2 - Tractor Beam" + "finale_2_turrets": "Finale 2 - Turrets" + "finale_2_water.chamber": "Finale 2 - Chamber" + "finale_3_spawn": "Finale 3 - Spawn" + "finale_3_chamber_01": "Finale 3 - Chamber 1" + "finale_3_chamber_02": "Finale 3 - Chamber 2" + "finale_4_chamber_01": "Finale 4 - Chamber 1" + "finale_4_chamber_02": "Finale 4 - Chamber 2" + "finale_4_chamber_03": "Finale 4 - Chamber 3" + "finale_4_wheatley_chamber": "Finale 4 - Wheatley Chamber" + "airlock01.instance": "Airlock 1 Instance" + "BR_metals": "Trailer - Metals" + "BR.train_interior_1": "Trailer - Train Interior" + "BR.train_knocked_out": "Trailer - Train Knockout" + "catch_chamber_01": "Catch Chamber 1" + "colo_chamber_01": "Colo Chamber 1" + "colo_chamber_02": "Colo Chamber 2" + "coop.silence": "Coop Silence" + "core.chamber_01": "Core Chamber" + "core.main.chamber_01": "Core Main Chamber" + "core.spawn": "Core Spawn" + "endlevel.instance": "Endlevel Instance" + "EntryExitElevator.Exterior": "Elevator - Exterior" + "EntryExitElevator.IndustrialStairs": "Elevator - Industrial Stairs" + "EntryExitElevator.Interior": "Elevator - Interior" + "EntryExitElevator.OpenChamber": "Elevator - Open Chamber" + "gap.ratman_01": "Ratman Gap" + "goalie_interior_01": "Goalie Interior 1" + "hall01.paint_longjump": "Paint LongJump Hall" + "hallway_short01.instance": "Short Hallway" + "industrial_gen_01": "Industrial Generator" + "jb2_catwalksection_01": "Jailbreak 2 catwalk 1" + "jb2_catwalksection_end_room": "Jailbreak 2 Catwalk End Room" + "jb3_catwalksection_01": "Jailbreak 3 Catwalk 1" + "jb_catwalksection_01": "Jailbreak 1 Catwalk 1" + "jb_catwalksection_02": "Jailbreak 1 Catwalk 2" + "jb_chamber_01": "Jailbreak Chamber" + "jb_chamber_exit_01": "Jailbreak Chamber Exit" + "jb_toxin_chamber": "Jailbreak Neuroxtoxin Chamber" + "jump_chamber_lg_01": "Jump Chamber Large" + "laser_catapult_01": "Laser Catapult" + "laser_chamber_lg_01": "Laser Chamber Large 1" + "laser_chamber_lg_01a": "Laser Chamber Large 1a" + "laser_chamber_med_02": "Laser Chamber Medium 2" + "laser_plat_01": "Laser Platform 1" + "laser_plat_ext_01": "Laser Platform Exterior" + "laser_plat_int_01": "Laser Platform Interior" + "pan_test": "Panning Test" + "PD.Industrial_muffled_01": "Industrial Muffled 1" + "PD.Industrial_muffled_02": "Industrial Muffled 2" + "PD.Industrial_muffled_03": "Industrial Muffled 3" + "PD.Industrial_muffled_04": "Industrial Muffled 4" + "PD.Industrial_muffled_04a": "Industrial Muffled 4a" + "PD.Industrial_muffled_05": "Industrial Muffled 5" + "PD.liquid_01": "Liquid 1" + "PD.liquid_02": "Liquid 2" + "PD.liquid_03": "Liquid 3" + "PD.liquid_04": "Liquid 4" + "PD_transition_01": "Transition" + "preTestChamber.Industrial_muffled_01": "Prechamber Muffled" + "return_chamber_01": "Return Chamber 1" + "return_chamber_02": "Return Chamber 2" + "return_spawn": "Return Spawn" + "return_trans_01": "Return Transition" + "rug_ratman_01": "Pull The Rug - Ratman" + "spawn_room01.instance": "Spawn Room 1" + "spawn_room_intro.instance": "Spawn Room Intro" + "tb_catch_chamber_01": "Funnel Catch Chamber" + "tbeam_chamber_01": "Funnel Chamber 1" + "tbeam_chamber_02": "Funnel Chamber 2" + "tb_pol_chamber_01": "Funnel Polarity Chamber" + "tb_wall_chamber_01": "Funnel Wall Button Chamber" + "traincar.mvmnt": "Train Movement" + "train.exterior": "Train Exterior" + "train.exterior_intro_fade": "Train Exterior Intro Fade" + "train.exterior.quiet": "Train Exterior Quiet" + "trust_chamber_01": "Trust Fling - Chamber" + "trust_ratman_01": "Trust Fling - Ratman" + "tube.spawn": "Spawn Tube" + "Turretchamber_01": "Turret Chamber 1" + "Turretchamber_02": "Turret Chamber 2" + "Turretchamber_03": "Turret Chamber 3" + "Turretchamber_04": "Turret Chamber 4" + "Turretchamber_04a": "Turret Chamber 4a" + "Turretchamber.intro_01": "Turret Chamber Intro" + "Turretchamber.liquid_01": "Turret Chamber Liquid" + "util.abstract.random.ambient": "Util - Random Ambient Abstract" + "util.abstract.random.ambient.hi": "Util - Random Ambient Abstract High" + "utility.metal.imp.lo": "Util - Low Metal Impact" + "util_lo.end_mach": "Util - Lo End Machine" + "util.random.boomer": "Util - Random Boomer" + "util.random.metal_groans": "Util - Random Metal Groans" + "util.random.rockdebris": "Util - Random Rock Debris" + "util.random.rockfall": "Util - Random Rock Fall" + "util.random.woodcreak": "Util - Random Wood Creak" + "util_rocks_big": "Util - Rocks Big" + "util.tech.random.ambient.hi": "Util - Random Tech High Ambient" + "util_water.drain": "Util - Water Drain" + "warehouse.hallway_01": "Warehouse Hallway" + "warehouse.Industrial_01": "Warehouse Industrial 1" + "warehouse.Industrial_02": "Warehouse Industrial 2" + "warehouse.med_01": "Warehouse Medium 1" + "warehouse.med_02": "Warehouse Medium 2" + "warehouse.med_03": "Warehouse Medium 3" + "warehouse.med_04": "Warehouse Medium 4" + "warehouse.med_05": "Warehouse Medium 5" + "warehouse.med_06": "Warehouse Medium 6" + "warehouse.med_06a": "Warehouse Medium 6a" + "Nothing": "Nothing" + ] + + 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(BaseEntityPoint) + sphere(radius) + line(255 255 255, targetname, MainSoundscapeName) + iconsprite("editor/env_soundscape_proxy.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 + + // 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(BaseEntityPoint) + iconsprite("editor/env_spark.vmt") + color(200 200 0) + studio("models/editor/cone_helper.mdl") += 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: "[64] Start ON" : 0 + 128: "[128] Glow" : 0 + 256: "[256] Silent" : 0 + 512: "[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." + + // Outputs + output OnSpark(void) : "Fired every time this entity sparks." + ] + +@PointClass base(BaseEntityPoint, ResponseContext) + iconsprite("editor/ambient_generic.vmt") += env_speaker: "Announcement Speaker" + [ + delaymin(string) : "Min Delay Between Announcements" : 15 + delaymax(string) : "Max Delay Between Announcements" : 135 + spawnflags(flags) = + [ + 1: "[1] Start Silent" : 0 + 2: "[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." + ] + +@PointClass base(BaseEntityPoint) + color(32 200 255) + studio("models/editor/env_splash.mdl") += 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" + spawnflags(flags) = + [ + 1: "[1] Automatically find water surface (place entity above water)" : 0 + 2: "[2] Diminish with depth (diminished completely in 10 feet of water)" : 1 + ] + + + // Inputs + input Splash(void) : "Create a splash effect." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/ficool2/env_sporeexplosion.vmt") += env_sporeexplosion: "Bugbait Spore Effect" + [ + spawnrate(float) : "Spawn Rate (as percentage)" : 25 : "How dense the spore effect is" + ] + +@PointClass base(BaseEntityPoint, RenderFields, SystemLevelChoice) + studio("models/editor/axis_helper_white.mdl") + sprite() + color(20 140 20) + sphere(GlowProxySize) += env_sprite: "An entity that controls the drawing of a sprite in the world." + [ + framerate(float) : "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(float) : "Scale" : "0.25" : "Scale multiplier of the sprite." + spawnflags(flags) = + [ + 1: "[1] Start on" : 0 + 2: "[2] Play Once" : 0 + ] + + rendermode(choices) : "Render Mode" : 9 : "Specify the sprite rendering behaviour." = + [ + 3: "Glow" + 9: "World Space Glow" + 0: "Normal" + 1: "Color" + 2: "Texture" + 4: "Solid" + 5: "Additive" + 7: "Additive Fractional Frame" + 10: "Don't Render" + ] + + 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." : "0.7" : "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(BaseEntityPoint, RenderFields) + iconsprite("editor/env_spritetrail.vmt") + sphere(startwidth) + sphere(endwidth) += 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(sprite) : "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" + ] + + + // 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(BaseEntityPoint) + iconsprite("editor/ts2do/env_starfield.vmt") += env_starfield: "Starfield effect" + [ + + // Inputs + 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 base(BaseEntityPoint, RenderFields) + color(200 200 0) + studioprop("models/editor/spot_cone_fixed.mdl") + frustum(spreadspeed, _frustum_near, jetlength, rendercolor, -1) += env_steam: "An entity used to create a jet of steam." + [ + spawnflags(flags) = + [ + 1: "[1] Emissive" : 0 + ] + + initialstate(boolean) : "Start Enabled" : 0 + 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)" : "60 65 68" : "The color of the steam. Only has an effect if the Emissive flag is on, but can otherwise be used to set the color shown in Hammer." + jetlength(integer) : "Length of steam jet" : 80 : "The length of the jet determines the lifetime of each particle." + renderamt(integer) : "Translucency" : 255 + rollspeed(float) : "Spin Speed" : 8 : "How fast do the particles spin" + + // 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(BaseEntityPoint, RenderFields, SystemLevelChoice) + color(200 0 0) + iconsprite("editor/env_sun.vmt") + line(255 255 0, targetname, target) += 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(boolean) : "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." + 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." : "0.5" : "float value to multiply sprite color by when running in HDR mode." + glowdistancescale(float) : "Glow Distance Scale" : "0.99" : "Scales the distance used to test for sun glow occlusion, 0.99 will act the old way." + + // Inputs + input TurnOn(void) : "Enable sun rendering." + input TurnOff(void) : "Disable sun rendering." + input SetColor(color255) : "Change the sun's color. Format: " + ] + +@PointClass base(StaticTargetName) = env_surface_teleport: "Teleports the player to the Remote Destination when they stand on a specified material." + [ + target(target_destination) : "Remote Destination" : : "The entity specifying the point to which the player should be teleported." + gamematerial(choices) : "Game Material to Watch" : 0 : "The material to watch. When the player stands on this material, they will get teleported" = + [ + 0: "None (player's in the air)" + 65: "A - Antlion" + 66: "B - Bloody Flesh" + 67: "C - Concrete" + 68: "D - Dirt" + 69: "E - Eggshell" + 70: "F - Flesh" + 71: "G - Grate" + 72: "H - Alien Flesh" + 73: "I - Clip" + 74: "J - Grass" + 75: "K - Snow" + 76: "L - Plastic" + 77: "M - Metal" + 78: "N - Sand" + 79: "O - Foliage" + 80: "P - Computer" + 81: "Q - Asphalt" + 82: "R - Brick" + 83: "S - Slosh" + 84: "T - Tile" + 85: "U - Cardboard" + 86: "V - Vent" + 87: "W - Wood" + 88: "X - Fake surfaces" + 89: "Y - Glass" + 90: "Z - Warp Shield" + 1: "1 - Clay" + 2: "2 - Plaster" + 3: "3 - Rock" + 4: "4 - Rubber" + 5: "5 - Sheet Rock" + 6: "6 - Cloth" + 7: "7 - Carpet" + 8: "8 - Paper" + 9: "9 - Upholstery" + 11: "11 - Mud" + 12: "12 - Sand Barrel" + 13: "13 - Dense Wood" + ] + + + // 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(BaseEntityPoint) + iconsprite("editor/env_texturetoggle.vmt") + line(255 255 0, targetname, target) += env_texturetoggle: "An entity that allows you to change the textures on other brush-built entities, or on overlays." + [ + target(target_destination) : "Target Brush or Overlay name." + + // 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(BaseEntityPoint) + sphere(radius) + studio("models/editor/axis_helper_thick.mdl") + color(200 0 0) += env_tilt: "An entity to control screen tilt on players." + [ + spawnflags(flags) = + [ + 1: "[1] GlobalTilt" : 0 + 128: "[128] Ease in/out" : 0 + ] + + 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 tilt the player's screens." + tilttime(float) : "Tilt time (seconds)" : "2.5" : "How long it takes to reach full tilt." + + // Inputs + input StartTilt(void) : "Start the shake." + input StopTilt(void) : "Stop the tilt." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_tonemap_controller.vmt") + color(200 0 0) += 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." + [ + spawnflags(flags) = + [ + 1: "[1] Master (Has priority if multiple env_tonemap_controllers exist)" : 0 + ] + + + // Inputs + input SetTonemapScale(integer) : "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 UseDefaultBloomScale(void) : "Revert to using the default bloom scale." + input SetBloomScaleRange(string) : "Specify a base and minimum bloom scale. Format is ." + input SetTonemapRate(float) : "Set the rate for autoexposure adjustment." + input SetBloomExponent(float) : "Set a custom bloom exponent." + input SetBloomSaturation(float) : "Set a custom bloom saturation." + input SetTonemapPercentBrightPixels(float) : "Set a target for percentage of pixels above a certain brightness. (default: 2)" + input SetTonemapPercentTarget(float) : "Set a custom brightness target for SetTonemapPercentBrightPixels. (default: 60)" + input SetTonemapMinAvgLum(float) : "Sets custom tonemapping param (ask Alex for details; default: 3)." + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) + iconsprite("editor/ficool2/env_viewpunch.vmt") + color(200 200 0) += env_viewpunch: "Causes a view punch on players." + [ + spawnflags(flags) = + [ + 1: "[1] Punch all players (ignore radius)" : 0 + 2: "[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(BaseEntityPoint) + iconsprite("editor/env_wind.vmt") + color(200 0 0) + sphere(windradius) + sphere(windradiusinner) += env_wind: "An entity to control wind in the map. Partially functional." + [ + spawnflags(flags) = + [ + 1: "[1] Start disabled" : 0 + ] + + 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." + + // Inputs + input Enable(void) : "Enables the wind." + input Disable(void) : "Disables the wind." + input Toggle(void) : "Toggles the wind." + + // Outputs + output OnGustStart(void) : "Fired when a wind gust begins." + output OnGustEnd(void) : "Fired when a wind gust ends." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/env_zoom.vmt") += 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." + spawnflags(flags) = + [ + 1: "[1] Allow Suit Zoom" : 0 + ] + + + // Inputs + input Zoom(void) : "Start controlling the player's FOV." + input UnZoom(void) : "Stop controlling the player's FOV." + ] + +@FilterClass base(BaseEntityPoint) + color(0 255 0) + iconsprite("editor/ficool2/filter_base.vmt") += filter_base: "Base filter, which all other filters are based off of. This filter passes any entity whatsoever." + [ + negated(choices) : "Filter Mode" : 0 : "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" + ] + + passcallerwhentested(boolean) : "Pass caller when tested" : 0 : "When tested with TestActivator or TestEntity, this causes the OnPass and OnFail outputs to use either this filter as the caller or the entity that called the test as the caller." + + // Inputs + input TestActivator(void) : "Test the activator against the filter and fires OnPass or OnFail output." + input TestEntity(target_destination) : "Tests the target entity against the specified entity and fires the OnPass or OnFail output." + input SetField(string) : "Sets this filter's primary test criteria. (e.g. the name to test against the activator)" + + // 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." + ] + +@SolidClass base(BaseEntityBrush, EnableDisable) + line(255 255 0, targetname, fogname) + line(255 255 0, targetname, postprocessname) + line(255 255 0, targetname, colorcorrectionname) += fog_volume: "An entity to control the fog in the map." + [ + fogname(target_destination) : "Fog Name" : : "The name of the fog entity associated with this volume." + postprocessname(target_destination) : "Postprocess Name" : : "The name of the postprocess entity associated with this volume." + colorcorrectionname(target_destination) : "ColorCorrection Name" : : "The name of the color_correction entity associated with this volume." + ] + +@SolidClass base(BaseEntity) + 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 prop_door_rotating or func_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(BaseEntity) + color(0 128 255) + sphere(FadeStartDist) + sphere(FadeDist) + line(255 255 0, targetname, target) + line(255 255 0, targetname, backgroundbmodel) += 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 window brush should enclose the func_areaportal window so no parts of it are culled by the window. If you use the optional foreground brush, then it should enclose the window brush. Both brush models will have their drawing disabled as the areaportal will render them itself." + [ + 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. If set to zero, the window will always be closed." + translucencylimit(float) : "Translucency limit" : 0 : "This can be used to limit the translucency of the window, preventing it from becoming entirely invisible. This could be used with an opaque material, acting as a window." + backgroundbmodel(target_destination) : "Foreground Brush" : : "(Optional) brush model that is drawn after the fading brush model. This model should be translucent 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. If set to zero, this will force the window closed." + ] + +@SolidClass base(BaseEntityBrush) = 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." + startdisabled(boolean) : "Start Disabled?" : 0 + + // Inputs + input Enable(void) : "Enable this entity." + input Disable(void) : "Disable this entity." + ] + +@PointClass base(Angles) + instance() + size(-2 -2 -2, 2 2 2) += 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. This is also looked up relative to sdk_content/maps/, if one exists in the parent directories." + 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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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 Variable" : : "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" + replace11(instance_variable) : "Replace Variable" : : "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" + replace12(instance_variable) : "Replace Variable" : : "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" + replace13(instance_variable) : "Replace Variable" : : "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" + replace14(instance_variable) : "Replace Variable" : : "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" + replace15(instance_variable) : "Replace Variable" : : "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" + replace16(instance_variable) : "Replace Variable" : : "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" + replace17(instance_variable) : "Replace Variable" : : "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" + replace18(instance_variable) : "Replace Variable" : : "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" + replace19(instance_variable) : "Replace Variable" : : "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" + replace20(instance_variable) : "Replace Variable" : : "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" + replace21(instance_variable) : "Replace Variable" : : "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" + replace22(instance_variable) : "Replace Variable" : : "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" + replace23(instance_variable) : "Replace Variable" : : "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" + replace24(instance_variable) : "Replace Variable" : : "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" + replace25(instance_variable) : "Replace Variable" : : "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" + replace26(instance_variable) : "Replace Variable" : : "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" + replace27(instance_variable) : "Replace Variable" : : "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" + replace28(instance_variable) : "Replace Variable" : : "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" + replace29(instance_variable) : "Replace Variable" : : "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" + replace30(instance_variable) : "Replace Variable" : : "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 base(BaseEntityPoint) + 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\nTo 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\nNote: 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." + ] + +@SolidClass base(BaseEntityBrush) = func_nav_avoidance_obstacle: "A brush entity that tells bots to avoid nav areas touching its AABB." + [ + startdisabled(boolean) : "Start Disabled" : 0 + ] + +@SolidClass base(BaseEntityBrush) = func_nav_blocker: "A brush entity that can block nav areas touching its AABB." + [ + startdisabled(boolean) : "Start Disabled" : 0 + + // Inputs + input BlockNav(string) : "Starts blocking nav areas." + input UnblockNav(void) : "Stops blocking nav areas." + ] + +@SolidClass base(BaseEntityBrush, Origin) = func_noportal_volume: "A region which prevents portal placement." + [ + spawnflags(flags) = + [ + 1: "[1] Start inactive" : 0 + ] + + + // Inputs + input Deactivate(void) : "Turn off blocking functionality" + input Activate(void) : "Turn on blocking functionality" + input Toggle(void) : "Toggle blocking functionality" + ] + +@SolidClass base(BaseEntity) + 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(BaseEntityBrush, Origin) = func_portal_bumper: "A region which 'bumps' portals outside of it, but will still allow portals to be placed on it." + [ + spawnflags(flags) = + [ + 1: "[1] Start inactive" : 0 + ] + + + // Inputs + input Deactivate(void) : "Turn off bumping functionality" + input Activate(void) : "Turn on bumping functionality" + input Toggle(void) : "Toggle bumping functionality" + ] + +@SolidClass base(BaseEntityBrush, Origin) = func_portal_detector: "A region that fires an output if a portal is placed inside it." + [ + spawnflags(flags) = + [ + 1: "[1] Start inactive" : 0 + ] + + linkagegroupid(integer) : "Portal pair ID that it detects" : 0 + checkallids(boolean) : "Check all portals" : 0 : "Ignore the Group ID and check for all portals." + + // Inputs + input Disable(void) : "Turn off detecting functionality" + input Enable(void) : "Turn on detecting functionality" + input Toggle(void) : "Toggle detecting functionality" + + // Outputs + output OnStartTouchPortal1(void) : "Fired when the Blue portal is placed intersecting the portal detector." + output OnStartTouchPortal2(void) : "Fired when the Orange portal is placed intersecting the portal detector." + output OnStartTouchLinkedPortal(void) : "Fired when linked portal is placed intersecting the portal detector." + output OnStartTouchBothLinkedPortals(void) : "Fired when both of a pair of portals is placed intersecting the portal detector." + output OnStartTouchPortal(void) : "Fired when any portal touches the detector." + output OnEndTouchPortal(void) : "Fired when any portal leaves the detector bounds." + output OnEndTouchPortal1(void) : "Fired when the Blue portal has left the volume of the detector." + output OnEndTouchPortal2(void) : "Fired when the Orange portal has left the volume of the detector." + output OnEndTouchLinkedPortal(void) : "Fired when a portal with a linked partner has left the volume of the detector." + output OnEndTouchBothLinkedPortals(void) : "Fired when both portals have left the volume of the detector." + ] + +@SolidClass base(BaseEntityBrush, EnableDisable) = func_portal_orientation: "Adjusts a portal's rotation to match a specified angle. The 'front' of the portal points in the specified direction. In Portal 2, portals are only reoriented when the entity is sent an Enable input, so this will need to be done every time a portal is placed." + [ + anglestoface(angle) : "Angles to face" : "0 0 0" : "The angles to rotate portals to. An easy way to figure out what to set this to is to place a prop_portal, rotate it to the desired orientation, then look at its angles." + matchlinkedangles(boolean) : "Match linked angles." : 0 : "If set, portals placed in this volume will have their angles match their linked portals. This only works for floor or ceiling portals with a linked partner that is on a surface with the same orientation." + ] + +@SolidClass base(BaseEffectBrush) = func_precipitation: "A brush entity that creates rain and snow inside its volume." + [ + renderamt(integer) : "Density (0-100%)" : 5 : "This is the amount of particles that fall down from top side of brush. However distance from first particle to second depends on a brush volume size!" + rendercolor(color255) : "Color (R G B)" : "100 100 100" : "Color added to sprites which are rendered transparently (probably rain and snow particles)" + preciptype(choices) : "Precipitation Type" : 0 = + [ + 0: "Rain" + 1: "Snow" + 2: "Ash" + 3: "Snowfall" + 4: "Particle Rain" + 5: "Particle Ash" + 6: "Particle Rainstorm" + 7: "Particle Snow" + ] + + innerdistance(float) : "Inner particle distance" : -1 : "Distance between the inner and outer particle systems. If not set, this will be automatically selected from the precipitation type keyvalue." + innernearparticle(particlesystem) : "Inner near system" : : "Name of the inner near particle system. If not set, this will be automatically selected from the precipitation type keyvalue." + innerfarparticle(particlesystem) : "Inner far system" : : "Name of the inner far particle system. If not set, this will be automatically selected from the precipitation type keyvalue." + outerparticle(particlesystem) : "Outer system" : : "Name of the outer particle system. If not set, this will be automatically selected from the precipitation type keyvalue." + + // Inputs + input Alpha(integer) : "Changes the density of the rain, and may add additional particle effects like fog or leaves. Accepts inputs from -1 to 255." + ] + +@SolidClass base(BaseEntityBrush) = func_precipitation_blocker: "A brush entity that prevents rain and snow from func_precipitation inside its volume." + [ + ] + +@SolidClass base(BaseEntityBrush) = func_proprrespawnzone: "Zone that handles respawning and distribution of clientside physics props." + [ + ] + +@SolidClass base(BaseEffectBrush) = func_smokevolume: "A brush entity that spawns smoke particles within its volume." + [ + spawnflags(flags) = + [ + 1: "[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." + 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 per second." + density(float) : "Density [0..1]" : 1 + maxdrawdistance(float) : "Max Draw Distance (0 is unlimited)" : 0 + + // Inputs + input SetRotationSpeed(float) : "Set the particle rotation speed (in degrees per second)." + input SetMovementSpeed(float) : "Set the particle movement speed (in units per second)." + input SetDensity(float) : "Set the particle density. It should be a range from 0 to 1." + ] + +@PointClass base(BaseEntityPoint) + sweptplayerhull() += func_useableladder: "A Half-Life 2 ladder. Handles player auto mount/unmount, as well as +use to get onto the ladder. \n\nSee also 'info_ladder_dismount', used to specify ladder auto-dismount points.\n\nNote: This entity is non-functional in Counter-Strike: Source. Use func_ladder instead." + [ + spawnflags(flags) = + [ + 1: "[1] Fake Ladder" : 0 + ] + + point0(vector) : "Start" : : "Ladder end point." + point1(vector) : "End" : : "Ladder end point." + startdisabled(boolean) : "Start Disabled" : 0 + laddersurfaceproperties(string) : "Surface properties (optional)" + + // Inputs + input Enable(void) : "Enable this ladder." + input Disable(void) : "Disable this ladder." + + // Outputs + output OnPlayerGotOnLadder(void) : "Fired whenever a player gets on this ladder." + output OnPlayerGotOffLadder(void) : "Fired whenever a player gets off this ladder." + ] + +@SolidClass base(BaseEntityBrush) = func_vehicleclip: "Acts as a functional clip or barrier affecting vehicle entities. Should be used with the tools/toolscontrolclip texture." + [ + + // Inputs + 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(BaseEntityBrush) = func_wall: "Legacy support for Half-Life. Use func_brush instead. A general brush entity." + [ + ] + +@PointClass base(BaseEntityPoint, MasterEnt) + line(255 255 255, targetname, master) + iconsprite("editor/game_end.vmt") += game_end: "An entity that ends a multiplayer game." + [ + + // Inputs + input EndGame(void) : "End the multiplayer game." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/game_gib_manager") + color(200 0 0) += 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)" + allownewgibs(boolean) : "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." + + // Inputs + input SetMaxPieces(integer) : "Set the max gib count." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + size(-8 -8 -8, 8 8 8) += game_globalvars: "Outputs a few global variables when requested." + [ + + // Inputs + input GetCurtime(void) : "Gets curtime." + input GetFrameCount(void) : "Gets frame count." + input GetFrametime(void) : "Gets frame time." + input GetTickCount(void) : "Gets tick count." + input GetIntervalPerTick(void) : "Gets interval per tick." + + // Outputs + output OutCurtime(float) : "Outputs curtime." + output OutFrameCount(integer) : "Outputs frame count." + output OutFrametime(float) : "Outputs frame time." + output OutTickCount(integer) : "Outputs tick count." + output OutIntervalPerTick(integer) : "Outputs interval per tick." + ] + +@PointClass base(BaseEntityPoint, MasterEnt) + line(255 255 255, targetname, master) + iconsprite("editor/ficool2/game_player_equip") += 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. " + [ + spawnflags(flags) = + [ + 1: "[1] Use Only" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint, MasterEnt) + line(255 255 255, targetname, master) + iconsprite("editor/ficool2/game_player_team") + color(200 0 0) += game_player_team: "An entity that changes the team of the player who activates it." + [ + spawnflags(flags) = + [ + 1: "[1] Remove On fire" : 0 + 2: "[2] Kill Player" : 0 + 4: "[4] Gib Player" : 0 + ] + + target(target_destination) : "The game_team_master representing the required team." + + // Inputs + input Use(void) : "Change the team of the !activator player." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/game_ragdoll_manager") += 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)." + saveimportant(boolean) : "Save Important Ragdolls" : 0 : "Should the ragdoll manager make sure ally ragdolls aren't deleted?" + + // Inputs + input SetMaxRagdollCount(integer) : "Set the Max Ragdoll Count." + ] + +@PointClass base(BaseEntityPoint, MasterEnt) + line(255 255 255, targetname, master) + iconsprite("editor/ficool2/game_score") + color(200 0 0) += game_score: "An entity that awards/deducts points from the player who activates it or to a specific team." + [ + spawnflags(flags) = + [ + 1: "[1] Allow Negative" : 0 + 2: "[2] Team Points" : 0 + ] + + points(integer) : "Points to add (+/-)" : 1 + + // Inputs + input ApplyScore(void) : "Add score to player." + ] + +@PointClass base(BaseEntityPoint, MasterEnt) + line(255 255 255, targetname, master) + iconsprite("editor/game_text.vmt") + color(200 0 0) += game_text: "An entity that displays text on player's screens." + [ + spawnflags(flags) = + [ + 1: "[1] All Players" : 0 + ] + + message(string) : "Message Text" : : "Message to display onscreen." + x(float) : "X Position" : -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(float) : "Y Position" : "0.6" : "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) : "Text Color" : "100 100 100" : "The main color of the text." + color2(color255) : "Transition Color" : "240 110 0" : "Secondary color used when revealing text." + fadein(float) : "Fade in Time/Character Scan Time" : "1.5" : "The time it should take for the text to fully fade in." + fadeout(float) : "Fade Out Time" : "0.5" : "The time it should take for the text to fade out, after the hold time has expired." + holdtime(float) : "Hold Time" : "1.2" : "The time the text should stay onscreen, after fading in, before it begins to fade out." + fxtime(float) : "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 six 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." = + [ + 0: "Channel 0 (unused)" + 1: "Channel 1 (medium text size)" + 2: "Channel 2 (small text size)" + 3: "Channel 3 (large text size)" + 4: "Channel 4 (medium text size)" + 5: "Channel 5 (unused)" + ] + + + // Inputs + input Display(void) : "Display the message text." + input SetText(string) : "Set the text to display." + input SetPosX(float) : "Set the X position of the text. (0 - 1.0 = left to right) (-1 centers)" + input SetPosY(float) : "Set the Y position of the text. (0 - 1.0 = top to bottom) (-1 centers)" + input SetTextColor(color255) : "Set color of the front text." + input SetTextColor2(color255) : "Set color of the transition text." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/game_ui.vmt") += game_ui: "An entity used to override player input when the player is looking at it." + [ + spawnflags(flags) = + [ + 32: "[32] Freeze Player" : 1 + 64: "[64] Hide Weapon" : 1 + 128: "[128] +Use Deactivates" : 1 + 256: "[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." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/game_weapon_manager") += 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 amount of ammo dropped by a weapon." + + // Inputs + input SetAmmoModifier(float) : "Adjust the ammo modifier." + input SetMaxPieces(integer) : "Set the max amount of weapons of the specified type allowed to be in the world." + ] + +@SolidClass base(BaseEntityBrush) = 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." + ] + +@BaseClass base(BaseEntityPoint) = gibshooterbase + [ + angles(angle) : "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(float) : "Delay between shots" : 0 : "Delay (in seconds) between shooting each gib. If 0, all gibs shoot at once." + gibangles(angle) : "Gib Angles (Pitch Yaw Roll)" : "0 0 0" : "The orientation of the spawned gibs." + gibanglevelocity(float) : "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(float) : "Course Variance" : "0.15" : "How much variance in the direction gibs are fired." + m_flgiblife(float) : "Gib Life" : 4 : "Time in seconds for gibs to live +/- 5%." + simulation(choices) : "Simulate" : 0 = + [ + 0: "Point" + 1: "Physics" + 2: "Ragdoll" + ] + + 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: "[1] Repeatable" : 0 + ] + + + // Inputs + input Shoot(void) : "Force the gibshooter to create and shoot a gib." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/hammer_updateignorelist") + line(200 0 0, targetname, ignoredname01) + line(200 0 0, targetname, ignoredname02) + line(200 0 0, targetname, ignoredname03) + line(200 0 0, targetname, ignoredname04) + line(200 0 0, targetname, ignoredname05) + line(200 0 0, targetname, ignoredname06) + line(200 0 0, targetname, ignoredname07) + line(200 0 0, targetname, ignoredname08) + line(200 0 0, targetname, ignoredname09) + line(200 0 0, targetname, ignoredname10) + line(200 0 0, targetname, ignoredname11) + line(200 0 0, targetname, ignoredname12) + line(200 0 0, targetname, ignoredname13) + line(200 0 0, targetname, ignoredname14) + line(200 0 0, targetname, ignoredname15) + line(200 0 0, targetname, ignoredname16) += 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) : "Ignored Name 01" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname02(target_destination) : "Ignored Name 02" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname03(target_destination) : "Ignored Name 03" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname04(target_destination) : "Ignored Name 04" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname05(target_destination) : "Ignored Name 05" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname06(target_destination) : "Ignored Name 06" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname07(target_destination) : "Ignored Name 07" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname08(target_destination) : "Ignored Name 08" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname09(target_destination) : "Ignored Name 09" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname10(target_destination) : "Ignored Name 10" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname11(target_destination) : "Ignored Name 11" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname12(target_destination) : "Ignored Name 12" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname13(target_destination) : "Ignored Name 13" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname14(target_destination) : "Ignored Name 14" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname15(target_destination) : "Ignored Name 15" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ignoredname16(target_destination) : "Ignored Name 16" : : "Do not send this entity's information back to hammer during hammer_update_safe_entities." + ] + +@SolidClass base(BaseEntityBrush, Angles, EnableDisable) + line(255 0 0, targetname, target) += info_apc_missile_hint: "Something that helps APC missiles guide. If the missile can hit the associated target entitybetween 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(BaseEntityPoint) + studio("models/editor/camera.mdl") + iconsprite("editor/info_camera_link.vmt") + line(255 255 0, targetname, target) + line(255 255 0, targetname, target, targetname, Pointcamera) += 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." + ] + +@PointClass base(BaseEntityPoint) + halfgridsnap + iconsprite("editor/info_constraint_anchor.vmt") + color(128 128 128) + line(128 128 128, targetname, parentname) += 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) : "Mass Scale" : 1 : "Amount to scale the mass of this body in the constraint solver." + ] + +@PointClass base(BaseEntityPoint) + color(0 255 0) + studioprop() += info_coop_spawn: "Player spawns for cooperative mode." + [ + enabled(choices) : "Initial State" : 1 = + [ + 0: "Disabled" + 1: "Enabled" + ] + + startingteam(choices) : "Player" : 0 : "Which player to spawn." = + [ + 0: "Any" + 2: "P-Body" + 3: "ATLAS" + ] + + model(choices) : "[H] Player" : "models/editor/playerstart.mdl" : "The player model to show in Hammer." = + [ + "models/editor/playerstart.mdl": "Default" + "models/player/ballbot/ballbot.mdl": "ATLAS" + "models/player/eggbot/eggbot.mdl": "P-Body" + ] + + forcegunonspawn(boolean) : "Force Gun On Spawn" : 0 : "Give the player a Portal Gun on spawn. Coop players always have a Dual Portal Device." + + // Inputs + input Enable(void) : "Enable the spawn point to be used." + input SetAsActiveSpawn(void) : "Enable the spawn point to be used, disabling all other spawn points that do not share the same name." + input Disable(void) : "Disable the spawn point from being used." + input SetTeam(integer) : "Set the player this spawn point is for - 0 and 1 are any player, 2 is P-Body, 3 is ATLAS." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + sphere(LightRadius) += info_darknessmode_lightsource: "Specifies a lit location for Alyx's EP1 darkness mode." + [ + lightradius(float) : "Light Radius" : "256.0" : "The radius around this lightsource in which Alyx will be able to see enemies." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/info_game_event_proxy.vmt") + sphere(range) += info_game_event_proxy: "Entity that, when seen, generates a simple game event." + [ + event_name(string) : "Event Name" : : "The event to trigger by name from modevents.res" + range(float) : "Range" : 512 : "Distance that the player must be before the event is generated." + spawnflags(flags) = + [ + 1: "[1] Automatically detect visibility" : 1 + ] + + + // Inputs + input GenerateGameEvent(void) : "Generate my game event. (This entity is sent as the SUBJECT)" + ] + +@PointClass base(BaseEntityPoint) + 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) : "Ladder Name" : : "If multiple ladders are near multiple endpoints, use this to stop them from interfering with each other." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_landmark") + color(200 0 0) += 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(BaseEntityPoint) + iconsprite("editor/info_landmark") += info_landmark_entry: "Entry landmark" + [ + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_landmark") += info_landmark_exit: "Exit landmark" + [ + ] + +@PointClass base(StaticTargetName) + iconsprite("editor/info_lighting.vmt") + halfgridsnap + line(255 255 255, lightingorigin, targetname) += 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)." + [ + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/info_lighting_relative.vmt") + halfgridsnap += info_lighting_relative + [ + lightinglandmark(target_destination) : "Lighting Landmark" : : "Entity at which the reference origin is contained. If empty, the info_lighting_relative's origin will be used." + ] + +@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: "[1] Force human permission" : 0 + 2: "[2] Force small_centered permission" : 0 + 4: "[4] Force wide_human permission" : 0 + 8: "[8] Force tiny permission" : 0 + 16: "[16] Force wide_short permission" : 0 + 32: "[32] Force medium permission" : 0 + 64: "[64] Force tiny_centered permission" : 0 + 128: "[128] Force large permission" : 0 + 256: "[256] Force large_centered permission" : 0 + 512: "[512] Keep editor position" : 0 + ] + + ] + +@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(BaseEntityPoint) + color(220 180 0) + line(255 255 255, nodeid, StartNode, nodeid, EndNode) + iconsprite("editor/info_node_link.vmt") += 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" + 16: "Crawl" + ] + + allowuse(target_name_or_class) : "Allow Pass When Off" : : "Entity or class to allow passage even when node is off" + invertallow(boolean) : "Invert exclusion rules" : 0 : "Allowed entity is the only entity NOT allowed when this is set to 'yes'" + spawnflags(flags) = + [ + 1: "[1] Force human connect" : 0 + 2: "[2] Force small centered connect" : 0 + 4: "[4] Force wide human connect" : 0 + 8: "[8] Force tiny connect" : 0 + 16: "[16] Force wide_short connect" : 0 + 32: "[32] Force medium connect" : 0 + 64: "[64] Force tiny centered connect" : 0 + 128: "[128] Force large connect" : 0 + 256: "[256] Force large centered connect" : 0 + 512: "[512] Force medium tall connect" : 0 + 1024: "[1024] Force tiny_fluid connect" : 0 + ] + + precisemovement(boolean) : "Precise Movement" : 0 : "Movement through this link must be precise. Used for NPCs that have sloppy movement characteristics to move through things like doors or windows" + priority(choices) : "Priority" : 0 = + [ + 0: "Normal" + 1: "Use As Last Resort" + ] + + + // Inputs + input TurnOn(void) : "Turn the link on." + input TurnOff(void) : "Turn the link off." + ] + +@PointClass base(BaseEntityPoint) + wirebox(mins, maxs) + color(220 180 0) + iconsprite("editor/info_node_link_controller.vmt") + line(255 255 255, targetname, allowuse) += 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(boolean) : "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." + allowuse(target_name_or_class) : "Allow Pass When Off" : : "Entity or class to allow passage even when node is off" + invertallow(boolean) : "Invert exclusion rules" : 0 : "Allowed entity is the only entity NOT allowed when this is set to 'yes'" + priority(choices) : "Priority" : 0 = + [ + 0: "Normal" + 1: "Use As Last Resort" + ] + + + // 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 base(BaseEntityPoint) + iconsprite("editor/ficool2/info_npc_spawn_destination.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(target_source) : "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." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/ficool2/info_null.vmt") += info_null: "An entity that's immediately removed on spawning. Useful as a spotlight target." + [ + ] + +@PointClass base(BaseEntityPoint) + color(80 150 225) + studio("models/editor/overlay_helper_box.mdl") + sphere(fademindist) + sphere(fademaxdist) + overlay() += info_overlay: "An entity that places an overlay on the world." + [ + material(material) : "Material" : : "Material to use for the overlay." + sides(sidelist) : "Brush faces" : : "The brush faces this overlay is applied to." + renderorder(choices) : "Render Order" : 0 : "Higher values render after lower values. This value can be 0-3." = + [ + 0: "First" + 1: "Second" + 2: "Third" + 3: "Fourth" + ] + + startu(float) : "U Start" : "0.0" : "A value between 0-1, defining the starting X axis position in the overlay material." + endu(float) : "U End" : "1.0" : "A value between 0-1, defining the ending X axis position in the overlay material." + startv(float) : "V Start" : "0.0" : "A value between 0-1, defining the starting Y axis position in the overlay material." + endv(float) : "V End" : "1.0" : "A value between 0-1, defining the ending Y axis position in the overlay material." + basisorigin(vector) readonly : "Overlay Basis Origin(Read-Only)" : : "Center of the overlay on the surface(s) the overlay is applied to." + basisu(vector) : "Overlay Basis U" : : "The direction the X-axis of the material points." + basisv(vector) : "Overlay Basis V" : : "The direction the Y-axis of the material points." + basisnormal(vector) readonly : "Overlay Basis Normal(Read-Only)" : : "Normal of the surface(s) the overlay is applied to." + uv0(vector) : "Overlay Point 1" : : "Corner 1 of the overlay." + uv1(vector) : "Overlay Point 2" : : "Corner 2 of the overlay." + uv2(vector) : "Overlay Point 3" : : "Corner 3 of the overlay." + uv3(vector) : "Overlay Point 4" : : "Corner 4 of the overlay." + 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 base(BaseEntityPoint, BasePaintType) + line(255 255 255, targetname, light_position_name) + sphere(blob_spread_radius) + studio("models/editor/info_paint_sprayer.mdl") += info_paint_sprayer: "An entity that sprays Gel." + [ + maxblobcount(integer) : "Max number of blobs" : 250 : "Max number of blobs that sprayer can spawn in the world (1-250)." + light_position_name(target_destination) : "Light Position Name" : : "Name of the entity we want to use as blobs light position." + start_active(boolean) : "Start Active?" : 0 + silent(boolean) : "Silent?" : 0 : "If this flag is true, blobs will only paint, appearing entirely invisible." + drawonly(boolean) : "Draw Only?" : 0 : "If this flag is true, blobs will only render, vanishing on contact with surfaces." + rendermode(choices) : "Render Mode" : 0 : "The mode to render blobs. Appears non-functional." = + [ + 0: "Blobulator" + 1: "Fast Sphere" + ] + + ambientsound(choices) : "Ambient Sound" : 0 : "The sound to play when paint is flowing." = + [ + 0: "None (silent)" + 1: "Drip" + 2: "Medium Flow" + 3: "Heavy Flow" + ] + + blobs_per_second(float) : "Blobs per second" : 20 : "The number of paint blobs sprayed per second." + min_speed(float) : "Min blob speed" : 100 : "The minimum speed of the sprayed blobs." + max_speed(float) : "Max blob speed" : 100 : "The maximum speed of the sprayed blobs." + blob_spread_radius(float) : "Blob spread radius" : 0 : "Blobs will spawn randomly within this radius." + blob_spread_angle(float) : "Blob spread angle" : 8 : "The spread of the blobs along its direction vector (in degrees)." + blob_streak_percentage(float) : "Blob streak percentage" : 0 : "The percentage of blobs that will streak (0 - 100)." + min_streak_time(float) : "Blob min streak time" : "0.2" : "The minimum time that the blobs will streak for." + max_streak_time(float) : "Blob max streak time" : "0.5" : "The maximum time that the blobs will streak for." + min_streak_speed_dampen(float) : "Blob min streak speed dampen" : 500 : "The minimum speed dampening while streaking." + max_streak_speed_dampen(float) : "Blob max streak speed dampen" : 1000 : "The maximum speed dampening while streaking." + start_radius_min(float) : "Min blob start size" : "0.5" : "The minimum start size of the sprayed blobs." + start_radius_max(float) : "Max blob start size" : "0.7" : "The maximum start size of the sprayed blobs." + end_radius_min(float) : "Min blob end size" : "0.5" : "The minimum end size of the sprayed blobs." + end_radius_max(float) : "Max blob end size" : "0.7" : "The maximum end size of the sprayed blobs." + radius_grow_time_min(float) : "Min grow time" : "0.5" : "The minimum time to grow from start to end size." + radius_grow_time_max(float) : "Max grow time" : 1 : "The maximum time to grow from start to end size." + + // Inputs + input Start(void) : "Start shooting Gel." + input Stop(void) : "Stop shooting Gel." + input ChangePaintType(integer) : "Change the type of Gel being sprayed. Values between 0-4, higher values are unstable." + ] + +@PointClass base(BaseEntityPoint, Reflection) + 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) + color(200 200 0) += info_particle_system: "An entity that spawns a particle system built using the particle editor." + [ + effect_name(particlesystem) : "Particle System Name" + start_active(boolean) : "Start Active?" : 0 + 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 control 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 control 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 control 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 control 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 control 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 control 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 control 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." + input StopPlayEndCap(void) : "Tell the particle system to stop emitting and play its End Cap Effect." + input DestroyImmediately(void) : "Destroy the particle system and remove all particles immediately." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + line(255 255 0, targetname, proxy_name) + line(255 255 0, targetname, attach_target_name) + sphere(radius, 255 128 0) + studioprop("models/editor/placement_helper.mdl") += info_placement_helper: "Portal Placement Helper, indicates where portals will snap to. The arrow points to the 'up' diection for the portal." + [ + radius(float) : "Radius" : 16 : "Radius in which to influence placement." + proxy_name(target_destination) : "Proxy Entity Name" : : "Name of the entity we want to use for our real placement position." + attach_target_name(target_destination) : "Attach Entity Name" : : "Name of the entity we want to force our attachment to. Ensures this applies to the correct brush. Needs parent!" + snap_to_helper_angles(boolean) : "Use helper's angles" : 0 : "Portals will lock to the angles, instead of rotating in all directions." + force_placement(boolean) : "Force Placement" : 0 : "Force portals to lock to this helper, no matter what. With this disabled the helper will automatically deactivate temporarily, so that you can place portals finely." + + // Outputs + output OnObjectPlaced(void) : "A portal has been successfully placed using us as a guide." + output OnObjectPlacedSize(integer) : "When a portal is successfully placed, this sends the scale level as an out value" + ] + +@PointClass base(BaseEntityPoint) + color(0 255 0) + studio("models/editor/playerstart.mdl") += info_player_deathmatch + [ + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_player_ping_detector.vmt") + line(255 255 0, targetname, functankname) += info_player_ping_detector: "Detects a specific Co-op player's pings, and optionally rotates a func_tank to face towards them (as seen in the Calibration Course)" + [ + functankname(target_destination) : "Func_Tank Entity" : : "Name of the func_tank that will be told to look at the ping location when detected." + teamtolookat(choices) : "Player to Observe" : 2 : "Which player's pings to look at." = + [ + 1: "Both" + 3: "ATLAS" + 2: "P-Body" + ] + + enabled(choices) : "Default State" : 1 : "Is this entity enabled by default or not?" = + [ + 0: "Disabled" + 1: "Enabled" + ] + + + // Inputs + input Enable(void) : "Starts listening for pings and will fire outputs when found." + input Disable(void) : "Disable this entity from listening for pings." + input Toggle(void) : "Toggle from Enabled to Disabled and vice versa." + + // Outputs + output OnPingDetected(void) : "Fired when a ping is detected." + ] + +@PointClass base(BaseEntityPoint) + color(0 255 0) + 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: "[1] Master (Has priority if multiple info_player_starts exist)" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") += info_playtest_manager: "Manages playtest sessions." + [ + + // Inputs + input BeginPlaytest(void) : "Starts the playtest session" + input EndPlaytest(void) : "Ends playtest session" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") += info_portal_gamerules: "Determines game various rules for gameplay" + [ + enableregen(boolean) : "Enable health regeneration" : 1 + equipboots(boolean) : "Equip long-fall boots" : 1 : "Disabling this will essentially enable fall damage" + equipportalgun(choices) : "Equip Portal Gun" : 0 = + [ + 0: "None" + 1: "Orange" + 2: "Blue" + 3: "Dual Portal Device" + 4: "Potato Gun" + ] + + equippaintgun(choices) : "Equip paint gun" : 0 = + [ + 0: "None" + 1: "Basic paint gun" + 2: "Fully-upgraded paint gun" + ] + + maxhealth(integer) : "Max health for players" : 100 + gametype(choices) : "Co-op Game type" : 0 : "Sets the co-op game type. This is ignored if the game isn't running in co-op mode." = + [ + 0: "Default" + 1: "Co-op 2-guns" + 2: "Co-op versus mode" + 3: "Co-op versus mode and 2-guns" + ] + + ] + +@PointClass base(BaseEntityPoint) + decal() + studio("models/editor/decal_helper.mdl") + sphere(distance) += 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(material) : "Texture" : : "The texture used for the 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 base(BaseEntityPoint, 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" + 4: "Enemy" + 5: "Large Enemy (striders)" + ] + + mode(choices) : "Mode" : 0 = + [ + 0: "Default" + 1: "Sticky - once detected, ignore effective radius." + ] + + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) + color(220 180 0) + iconsprite("editor/info_radial_link_controller.vmt") += 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" : 120 + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") += info_snipertarget: "Sniper Target" + [ + speed(integer) : "Sweep to speed" : 2 + groupname(string) : "Group Name" + spawnflags(flags) = + [ + 1: "[1] Shoot Me" : 0 + 2: "[2] No Interruptions" : 0 + 8: "[8] Resume if Interrupted" : 0 + 16: "[16] Snap to me" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") + studio("models/editor/axis_helper.mdl") + halfgridsnap += 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: "[1] Transmit to client (respect PVS)" : 0 + 2: "[2] Always transmit to client (ignore PVS)" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") += info_target_gunshipcrash: "Gunship Crash Target" + [ + + // Inputs + input Enable(void) : "Enable the crash target." + input Disable(void) : "Disable the crash target." + + // Outputs + output OnCrashed(void) : "Fired when the gunship crashed on target." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/info_target.vmt") += info_target_helicopter_crash: "Helicopter Crash Target" + [ + ] + +@PointClass base(BaseEntityPoint) + halfgridsnap + studio("models/editor/axis_helper.mdl") + iconsprite("editor/info_target_instructor_hint.vmt") += info_target_instructor_hint: "A generic target that gets replicated to the client for hud hint targeting." + [ + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) += info_target_personality_sphere: "Personality Sphere Info Target" + [ + sphereline(string) : "Sphere Line" : : "Line sphere will speak when we are looking at this target." + radius(float) : "Radius" : 16 : "Radius of this object. " + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/info_target.vmt") += info_target_vehicle_transition: "Vehicle Transition Point" + [ + ] + +@PointClass base(BaseEntityPoint) + 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." + [ + ] + +@PointClass base(BaseEntityPoint) + 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(BaseEntityPoint) + decal() + studio("models/editor/decal_helper.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(material) : "Texture" : : "The texture used for the decal." + lowpriority(boolean) : "Low Priority" : 1 : "Allow the decal to be overwritten by other decals when needed. This also makes the decal not persist across savegames." + + // Inputs + input Activate(void) : "Force the decal to apply itself to the world." + ] + +@KeyframeClass base(BaseEntityPoint, KeyFrame) + line(255 255 255, targetname, nextkey) + size(-6 -6 -6, 6 6 6) + color(255 200 0) + keyframe() += keyframe_track: "Animation KeyFrame" + [ + ] + +@PointClass base(BaseEntityPoint, BaseLight, BaseLightFalloff) + color(255 255 0) + sphere(_fifty_percent_distance) + sphere(_zero_percent_distance) + sphere(_distance) + light() + iconsprite("editor/light.vmt") + line(255 255 255, targetname, target) += light: "An invisible omnidirectional light-source." + [ + _removeaftercompile(boolean) : "Remove After Compile" : 0 : "If set, removes this entity after processing the map with VRAD" + ] + +@PointClass base(BaseEntityPoint, BaseLight) + color(255 255 0) + iconsprite("editor/light_directional.vmt") += light_directional: "A directional light with no falloff. Similar to sunlight in light_environment." + [ + pitch(integer) : "Pitch" : 0 : "The downward pitch of the light from the sun. 0 is horizontal, -90 is straight down." + sunspreadangle(float) : "SpreadAngle" : 0 : "The angular extent of the light for casting soft shadows. Higher numbers are more diffuse. 5 is a good starting value." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/light_dynamic.vmt") + sphere(distance) + lightcone() + line(255 255 255, targetname, target) += 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 units." + spotlight_radius(float) : "Spotlight end radius" : 80 : "This is the radius of the light, in units, 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: "[1] Do not light world (better perf)" : 0 + 2: "[2] Do not light models" : 0 + 4: "[4] Add Displacement Alpha" : 0 + 8: "[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." + ] + +@PointClass base(BaseEntityPoint, BaseLight, Angles) + color(255 255 0) + iconsprite("editor/ficool2/light_environment.vmt") + lightprop("models/editor/spot.mdl") += light_environment: "Sets the color and angle of the light from the sun and sky." + [ + pitch(angle_negative_pitch) : "Pitch" : 0 : "The downward pitch of the light from the sun. 0 is horizontal, -90 is straight down." + _ambient(color255) : "Ambient light" : "255 255 255 20" + _ambienthdr(color255) : "AmbientHDR" : "-1 -1 -1 1" + _ambientscalehdr(float) : "AmbientScaleHDR" : 1 : "Amount to scale the ambient light by when compiling for hdr." + sunspreadangle(float) : "SunSpreadAngle" : 5 : "The angular extent of the sun for casting soft shadows. Higher numbers are more diffuse. 5 is a good starting value." + ] + +@PointClass base(BaseEntityPoint, BaseLight, BaseLightFalloff) + color(255 255 0) + sphere(_fifty_percent_distance) + sphere(_zero_percent_distance) + sphere(_distance) + lightprop("models/editor/spot.mdl") + lightcone() + line(255 255 255, targetname, target) += 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 + _removeaftercompile(boolean) : "Remove After Compile" : 0 : "If set, removes this entity after processing the map with VRAD" + pitch(angle_negative_pitch) : "Pitch" : -90 + ] + +@PointClass base(BaseEntityPoint, LinkedPortalDoor, ToggleDraw) + line(255 255 0, targetname, partnername) + studio("models/editor/angle_helper.mdl") + iconsprite("editor/portal_dual.vmt") += linked_portal_door: "A door which is linked by a portal to another 'linked_portal_door' entity. Portal shots will pass through, and no effect appears at the edges." + [ + partnername(target_destination) : "Linked Partner" : : "Another 'linked_portal_door' entity which will link to this one." + width(integer) : "Half-Width (G)" : 64 : "Half the width of the portal, on the Green axis." + height(integer) : "Half-Height (B)" : 64 : "Half the height of the portal, on the Blue axis." + isstatic(boolean) : "Static Portal" : 0 : "If set to true, this portal does not ever move or toggle, and allows VRAD to cast light through it." + startactive(boolean) : "Start Active" : 1 : "Whether to start the linkage as active from the start." + + // Inputs + input SetWidth(float) : "Sets the width of this portal and the partner. Clamped to 1-1024" + input SetHeight(float) : "Sets the height of this portal and the partner. Clamped to 1-1024" + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_achievement") += logic_achievement: "Sends an achievement system related event from the map to the achievement system." + [ + achievementname(string) : "Achievement Name" : : "The name of the achievement to be awarded when this entity receives a 'FireEvent' input." + + // Inputs + input Toggle(void) : "Toggle the relay between enabled and disabled." + input FireEvent(void) : "Tells the achievement system the specifed event has occured." + input SetTargetPlayer(target_destination) : "Set the player who will be awarded this achievement." + + // Outputs + output OnFired(void) : "When the event fires, this fires." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/logic_active_autosave.vmt") += 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(BaseEntityPoint) + iconsprite("editor/logic_auto.vmt") + color(0 100 250) += 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: "[1] Remove on fire" : 1 + ] + + globalstate(choices) : "Global State to Read" = + [ + "": "--- None ---" + "is_console": "Game is running on a console" + "is_pc": "Game is running on a PC" + "portalgun_nospawn": "Spawn without Portalgun" + "no_pinging_blue": "Prevent Pinging ATLAS" + "no_pinging_orange": "Prevent Pinging P-Body" + "no_taunting_blue": "Prevent Taunting ATLAS" + "no_taunting_orange": "Prevent Taunting P-Body" + ] + + + // 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(BaseEntityPoint) + iconsprite("editor/logic_autosave.vmt") + color(200 0 0) += logic_autosave: "An entity that is used to force an autosave." + [ + newlevelunit(boolean) : "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." + 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(BaseEntityPoint) + iconsprite("editor/logic_branch.vmt") + color(0 100 250) += 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." + [ + initialvalue(choices) : "Initial value" : 0 : "Initial value for the boolean value (0 or 1)." = + [ + 0: "0 (False)" + 1: "1 (True)" + ] + + + // 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(BaseEntityPoint) + color(0 100 250) + iconsprite("editor/logic_branch_listener.vmt") + line(255 255 0, targetname, branch01) + line(255 255 0, targetname, branch02) + line(255 255 0, targetname, branch03) + line(255 255 0, targetname, branch04) + line(255 255 0, targetname, branch05) + line(255 255 0, targetname, branch06) + line(255 255 0, targetname, branch07) + line(255 255 0, targetname, branch08) + line(255 255 0, targetname, branch09) + line(255 255 0, targetname, branch10) + line(255 255 0, targetname, branch11) + line(255 255 0, targetname, branch12) + line(255 255 0, targetname, branch13) + line(255 255 0, targetname, branch14) + line(255 255 0, targetname, branch15) + line(255 255 0, targetname, branch16) += logic_branch_listener: "Contains a list of logic_branch entities and fires outputs when the state of any of the logic_branches changes.\n\nThis 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)." + + // Inputs + input Test(void) : "Tests the state of all the logic_branches in the list and fires the appropriate output." + input UniqueStateOn(void) : "Set the state of a logic_branch unique to this input entity to 1. This will generate a branch added to the listener." + input UniqueStateOff(void) : "Set the state of a logic_branch unique to this input entity to 0. This will generate a branch added to the listener." + input UniqueStateSet(bool) : "Set the state of a logic_branch unique to this input entity to the provided value. This will generate a branch added to the listener." + input UniqueStateToggle(void) : "Toggle the state of a logic_branch unique to this input entity. This will generate a branch added to the listener." + + // Outputs + 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(BaseEntityPoint) + iconsprite("editor/logic_case.vmt") + color(0 100 250) += 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\nFor 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\nThis 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." + [ + multiplecasesallowed(boolean) : "Multiple case hits allowed" : 0 : "If an input value matches a given case, are we allowed to test the rest of the cases or should we stop there? Don't worry about this if you're only using this entity for PickRandom." + case01(string) : "Case 01" : : "If the input value matches this, fire the corresponding output." + case02(string) : "Case 02" : : "If the input value matches this, fire the corresponding output." + case03(string) : "Case 03" : : "If the input value matches this, fire the corresponding output." + case04(string) : "Case 04" : : "If the input value matches this, fire the corresponding output." + case05(string) : "Case 05" : : "If the input value matches this, fire the corresponding output." + case06(string) : "Case 06" : : "If the input value matches this, fire the corresponding output." + case07(string) : "Case 07" : : "If the input value matches this, fire the corresponding output." + case08(string) : "Case 08" : : "If the input value matches this, fire the corresponding output." + case09(string) : "Case 09" : : "If the input value matches this, fire the corresponding output." + case10(string) : "Case 10" : : "If the input value matches this, fire the corresponding output." + case11(string) : "Case 11" : : "If the input value matches this, fire the corresponding output." + case12(string) : "Case 12" : : "If the input value matches this, fire the corresponding output." + case13(string) : "Case 13" : : "If the input value matches this, fire the corresponding output." + case14(string) : "Case 14" : : "If the input value matches this, fire the corresponding output." + case15(string) : "Case 15" : : "If the input value matches this, fire the corresponding output." + case16(string) : "Case 16" : : "If the input value matches this, fire the corresponding output." + + // 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(string) : "Fired when the input value does not equal any of the Case values. Passes the input value." + output OnUsed(string) : "Fired when an input value is received, regardless of whether it matches a case. Passes the input value." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/choreo_scene.vmt") + color(240 180 250) + line(240 180 250, targetname, target1) + line(240 180 250, targetname, target2) + line(240 180 250, targetname, target3) + line(240 180 250, targetname, target4) + line(240 180 250, targetname, target5) + line(240 180 250, targetname, target6) + line(240 180 250, targetname, target7) + line(240 180 250, targetname, target8) += logic_choreographed_scene: "Manages a choreographed scene of one or more actors." + [ + scenefile(scene) : "Scene file" : : "The scene that will play when this entity is triggered." + 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" + ] + + 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" + ] + + + // 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." + input Trigger(integer) : "Fires the OnTrigger output of the specified number." + input SetTarget1(target_destination) : "Sets Target 1 to the specified entity." + input SetTarget2(target_destination) : "Sets Target 2 to the specified entity." + input SetTarget3(target_destination) : "Sets Target 3 to the specified entity." + input SetTarget4(target_destination) : "Sets Target 4 to the specified entity." + + // 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" + ] + +@PointClass base(BaseEntityPoint) + color(128 128 128) + iconsprite("editor/ficool2/logic_collision_pair.vmt") + line(128 128 128, attach1, attach2) += 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(boolean) : "Start with collisions disabled" : 1 + + // 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(BaseEntityPoint) + iconsprite("editor/logic_compare.vmt") + color(0 100 250) += 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." + [ + initialvalue(string) : "Initial value" : : "Initial value for the input value." + comparevalue(string) : "Compare value" : : "The value to compare against." + strlenallowed(boolean) : "Use string length" : 0 : "Use the length of the string in the compare value rather than its actual value." + + // Inputs + input Compare(void) : "Force a compare of the input value with the compare value." + input SetValue(string) : "Set the value that will be compared against the compare value." + input SetValueCompare(string) : "Set the value that will be compared against the compare value and performs the comparison." + input SetCompareValue(string) : "Set the compare value." + input SetCompareValueCompare(string) : "Sets the compare value and performs the comparison." + + // Outputs + output OnLessThan(string) : "Fired when the input value is less than the compare value. Sends the input value as data." + output OnEqualTo(string) : "Fired when the input value is equal to the compare value. Sends the input value as data." + output OnNotEqualTo(string) : "Fired when the input value is different from the compare value. Sends the input value as data." + output OnGreaterThan(string) : "Fired when the input value is greater than the compare value. Sends the input value as data." + output OnGreaterThanOrEqualTo(string) : "Fired when the input value is greater than or equal to the compare value. Sends the input value as data." + output OnLessThanOrEqualTo(string) : "Fired when the input value is greater than or equal to the compare value. Sends the input value as data." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_console.vmt") += logic_console: "Sends messages to the console. Not to be confused with point_clientcommand or point_servercommand." + [ + setdevlvl(integer) : "Developer Level" : 1 : "What level developer messages should appear at." + setmsgcolor(color255) : "Message Color" : "210 250 255 255" : "The color of standard messages." + setwarningcolor(color255) : "Warning Color" : "255 210 210 255" : "The color of warning messages." + setnewlinenotauto(boolean) : "Don't automatically append \n?" : 0 : "Prevents this logic_console from automatically appending a new line each time it prints." + + // Inputs + input SendMsg(string) : "Sends a message to the console." + input SendWarning(string) : "Sends a message to the console in red text." + input SendDevMsg(string) : "Sends a message to the console that can only be viewed in developer mode." + input SendDevWarning(string) : "Sends a red-colored message to the console that can only be viewed in developer mode." + input SetDevLvl(integer) : "Sets the level developer messages should appear at." + input SetMsgColor(color255) : "Sets the color of standard messages." + input SetWarningColor(color255) : "Sets the color of warning messages." + input SetNewLineNotAuto(bool) : "Enables or disables this logic_console's ability to append \n to each message." + input NewLine(void) : "Manually sends \n." + input DevNewLine(void) : "Manually sends \n in the specified developer level." + input ClearConsole(void) : "Clears the console of all output." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_context_accessor.vmt") + line(255 255 255, targetname, target) += logic_context_accessor: "A logic entity that could read an entity's response contexts. Use the target and context name keyvalues if you want to store a specific target and/or context. Use the 'Test' input to look for the context on the target. The 'OutValue' output will fire with the context's value if it is found." + [ + target(target_destination) : "Target Entity" : : "The entity with the context to measure." + context(string) : "Context Name" : : "The name of the context to measure." + + // Inputs + input Test(void) : "Gets the stored context's value from stored target." + input TestContext(string) : "Tests the specified context against the target instead of using the stored context. Does not change the stored context." + input TestTarget(target_destination) : "Tests the specified target against the context instead of using the stored target. Does not change the stored target." + input SetContext(string) : "Sets the context to measure." + input SetValue(string) : "Sets the stored target's stored context value to the specified string." + input SetTarget(target_destination) : "Sets the target entity." + + // Outputs + output OutValue(string) : "Fires when a context is found. Passes its value." + output OnFailed(void) : "Fires when this entity fails to find the specified context." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_convar.vmt") += logic_convar: "A powerful entity that can read the specified ConVar's value. It functions similarly to a logic_branch, except you could also output the value directly. Due to theoretical abuse, players have the option to disable logic_ConVar usage on a map. Use the 'OnDenied' output to prevent any issues from players who have disabled logic_ConVar." + [ + setconvar(string) : "ConVar" : : "The ConVar to read. Can be serverside or clientside(?)" + settestvalue(string) : "Compare value" : : "The value to compare with the ConVar's value during comparisons. You could use <, !=, etc. at the beginning similar to a Response System criterion." + + // Inputs + input SetConVar(string) : "Sets the ConVar whose variable will be retrieved." + input SetTestValue(string) : "Sets the value that will be compared with the ConVar variable during comparisons." + input GetValue(void) : "Retrieves the ConVar's value, firing OutValue with its value." + input Test(void) : "Compares the ConVar's value with the compare value." + + // Outputs + output OnTrue(void) : "Fired when a comparison is true." + output OnFalse(void) : "Fired when a comparison is false." + output OutValue(string) : "Fired with the GetValue input. Passes the ConVar's current value." + output OnDenied(void) : "Fires when the ConVar is requested and logic_convar is not allowed by the server." + ] + +@PointClass base(BaseEntityPoint) + color(0 100 250) + iconsprite("editor/logic_coop_manager.vmt") += logic_coop_manager: "Manages two sets of values and can fire outputs based on the state of those values. Useful in coop where you can have players independently setting states on buttons, switches, etc." + [ + defaultplayerstatea(choices) : "Default State A" : 0 : "The default state of A" = + [ + 0: "False" + 1: "True" + ] + + defaultplayerstateb(choices) : "Default State B" : 0 : "The default state of B" = + [ + 0: "False" + 1: "True" + ] + + + // Inputs + input SetStateATrue(void) : "Set A to TRUE" + input SetStateBTrue(void) : "Set B to TRUE" + input SetStateAFalse(void) : "Set A to FALSE" + input SetStateBFalse(void) : "Set B to FALSE" + input ToggleStateA(void) : "Toggle A" + input ToggleStateB(void) : "Toggle B" + + // Outputs + output OnChangeToAllTrue(void) : "Fires when ALL of the values change to TRUE for the first time." + output OnChangeToAnyTrue(void) : "Fires when ANY of the values change to TRUE for the first time." + output OnChangeToAllFalse(void) : "Fires when ALL of the values change to FALSE for the first time." + output OnChangeToAnyFalse(void) : "Fires when ANY of the values change to FALSE for the first time." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_datadesc_accessor.vmt") + line(255 255 255, targetname, target) += logic_datadesc_accessor: "A logic entity that could read or write any field in an entity's data description, keyvalue or not, based on its internal name. It otherwise functions identically to logic_keyfield.\n\nYou'd better know what you're doing." + [ + target(target_destination) : "Target Entity" : : "The entity whose data description will be measured." + keyname(string) : "Element Name" : : "The internal name (e.g. m_iName) of the field to measure. Use the ''ent_info_datatable'' command followed by an entity's class name to see all of their fields." + + // Inputs + input Test(void) : "Gets the stored field's value from stored target." + input TestKey(string) : "Tests the specified field against the target instead of using the stored field. Does not change the stored field." + input TestTarget(target_destination) : "Tests the specified target against the field instead of using the stored target. Does not change the stored target." + input SetKey(string) : "Sets the field to measure." + input SetValue(string) : "Sets the stored target's stored field to the specified string." + input SetTarget(target_destination) : "Sets the target entity." + + // Outputs + output OutValue(string) : "Fires when a field is found. Passes its value." + output OnFailed(void) : "Fires when this entity fails to find the specified field." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_entity_position.vmt") + line(255 255 255, targetname, target) += logic_entity_position: "Outputs an entity's position. Prediction operations can be performed as well." + [ + target(target_destination) : "Target" : : "Who's position should be measured? Use the SetTarget input to change mid-game." + positiontype(choices) : "Position Type" : 0 : "What position should be measured." = + [ + 0: "Origin (default)" + 1: "Local Origin" + 2: "Worldspace Center" + 3: "Eyes" + 4: "Ears" + 5: "Attachment (use parameter keyvalue)" + ] + + positionparameter(string) : "Position Type Parameter" : : "If using an attachment's position, enter the name of the attachment here." + + // Inputs + input GetPosition(void) : "Gets the target's position." + input SetPosition(vector) : "Sets the target's position. Using the default 'Origin' will set absolute origin while using 'Local Origin' will set local origin." + input PredictPosition(float) : "Predicts what position the target will be at in the specified number of seconds." + + // Outputs + output OutPosition(vector) : "Outputs the position." + output OutAngles(vector) : "Outputs the angles." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/logic_eventlistener.vmt") += logic_eventlistener: "An entity that can listen to events fired from code and fire an output when it happens." + [ + eventname(string) : "Event Name" : : "The name of the event that you want to listen for." + isenabled(boolean) : "Start Enabled" : 1 + teamnum(integer) : "Team Number" : -1 : "If set, will only fire its output if the event is generated from someone of the specified team." + fetcheventdata(boolean) : "Fetch Event Data" : 0 : "If set, will write the data from the event into the table 'event_data' on this entity." + + // Inputs + input Enable(void) : "Enable the logic_eventlistener." + input Disable(void) : "Disable the logic_eventlistener." + + // Outputs + output OnEventFired(void) : "Fired when the event has been detected." + ] + +@PointClass base(BaseEntityPoint) = logic_eventlistener_itemequip: "An entity that can listen to the item_equip event fired from code and fire and output when it happens and the weapon class or type defined, match." + [ + weapontype(choices) : "Weapon Type" : -1 = + [ + -1: "Don't care" + 0: "Knife" + 1: "Pistol" + 2: "Submachinegun" + 3: "Rifle" + 4: "Shotgun" + 5: "Sniper Rifle" + 6: "Machinegun" + 7: "C4" + 8: "Grenade" + ] + + weaponclassname(string) : "Weapon Classname" : : "The exact weapon class name you want to check for. i.e. weapon_deagle, weapon_awp, weapon_knife, etc." + isenabled(boolean) : "Start Enabled" : 1 + teamnum(choices) : "Team Number" : -1 : "If set, will only fire its output if the event is generated from someone of the specified team." = + [ + -1: "Don't care" + 1: "Team 1" + 2: "Team 2 (ORANGE)" + 3: "Team 3 (BLUE)" + ] + + + // Inputs + input Enable(void) : "Enable the logic_eventlistener_itemequip." + input Disable(void) : "Disable the logic_eventlistener_itemequip." + + // Outputs + output OnEventFired(void) : "Fired when the event has been detected." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_format.vmt") += logic_format: "Formats a line of text akin to C# String.Format.\nAs curly brackets cannot be used in the help window, please see Mapbase documentation for clear instructions." + [ + setinputvalue(string) : "Input Value" : : "The input value. Should contain {0}, {1}, etc, which will be replaced by the parameters and then output as OutFormattedValue." + setparameter0(string) : "Parameter 0" : : "Will replace all instances of {0} in the input value." + setparameter1(string) : "Parameter 1" : : "Will replace all instances of {1} in the input value." + setparameter2(string) : "Parameter 2" : : "Will replace all instances of {2} in the input value." + setparameter3(string) : "Parameter 3" : : "Will replace all instances of {3} in the input value." + setparameter4(string) : "Parameter 4" : : "Will replace all instances of {4} in the input value." + setparameter5(string) : "Parameter 5" : : "Will replace all instances of {5} in the input value." + setparameter6(string) : "Parameter 6" : : "Will replace all instances of {6} in the input value." + setparameter7(string) : "Parameter 7" : : "Will replace all instances of {7} in the input value." + setbackupparameter(string) : "Backup Parameter" : : "If an invalid parameter is used (e.g. null parameter or asks for a parameter beyond {7}), then this will be used instead. Otherwise just uses ''." + + // Inputs + input GetFormattedValue(void) : "Fires OutFormattedValue, which passes the formatted input value." + input SetInputValue(string) : "Sets the input value. Should contain {0}, {1}, etc. enclosed by curly brackets, which will be replaced by the parameters and then output as OutFormattedValue." + input SetParameter0(string) : "Sets the text that will replace all instances of {0}." + input SetParameter1(string) : "Sets the text that will replace all instances of {1}." + input SetParameter2(string) : "Sets the text that will replace all instances of {2}." + input SetParameter3(string) : "Sets the text that will replace all instances of {3}." + input SetParameter4(string) : "Sets the text that will replace all instances of {4}." + input SetParameter5(string) : "Sets the text that will replace all instances of {5}." + input SetParameter6(string) : "Sets the text that will replace all instances of {6}." + input SetParameter7(string) : "Sets the text that will replace all instances of {7}." + input SetBackupParameter(string) : "Sets the text that will replace all invalid parameters." + + // Outputs + output OutFormattedValue(string) : "Fired when the formatted value is requested. Outputs the formatted value." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_gate.vmt") + color(255 123 2) += logic_gate: "A general logic gate with two inputs. Supports AND, OR, NOT, NAND, NOR, XOR, and XNOR operations, which can also be changed through inputs." + [ + spawnflags(flags) = + [ + 1: "[1] Spawn A enabled" : 0 + 2: "[2] Spawn B enabled" : 0 + 4: "[4] Output on every input (even if result doesn't change)" : 0 + ] + + mode(choices) : "Compare mode" : 1 : "The current compare mode. This can be changed through the SetMode input." = + [ + 0: "AND (Both)" + 1: "OR (Either)" + 2: "NOT (Negation)" + 3: "NAND (Neither And)" + 4: "NOR (Neither Or)" + 5: "XOR (Odd)" + 6: "XNOR (Equals)" + ] + + + // Inputs + input GetValue(void) : "When triggered, the current state will be outputted as OutValue." + input SetStateA(integer) : "Sets the A state." + input SetStateB(integer) : "Sets the B state." + input SetMode(integer) : "Sets the mode. 0=AND,1=OR,2=NOT,3=NAND,4=NOR,5=XOR,6=XNOR" + + // Outputs + output OnResultTrue(void) : "Triggered when the state reaches true." + output OnResultFalse(void) : "Triggered when the state reaches false." + output OutValue(void) : "When this entity is triggered by GetValue, this output will be called with the current state as the parameter" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_keyfield.vmt") + line(255 255 255, targetname, target) += logic_keyfield: "A logic entity that could read an entity's keyfields. Use the target and key name options if you want to store a specific target and/or keyvalue. Use the 'Test' input to look for the key within the target's datadesc. The 'OutValue' output will fire with the keyfield's value if it is found.\n\nPlease note that some keyvalues do not work with this entity. (most do though, so don't worry about it)" + [ + target(target_destination) : "Target Entity" : : "The entity with the key to measure." + keyname(string) : "Key Name" : : "The name of the key to measure." + + // Inputs + input Test(void) : "Gets the stored key's value from stored target." + input TestKey(string) : "Tests the specified key against the target instead of using the stored key. Does not change the stored key." + input TestTarget(target_destination) : "Tests the specified target against the key instead of using the stored target. Does not change the stored target." + input SetKey(string) : "Sets the key to measure." + input SetValue(string) : "Sets the stored target's stored key value to the specified string." + input SetTarget(target_destination) : "Sets the target entity." + + // Outputs + output OutValue(string) : "Fires when a keyfield is found. Passes its value." + output OnFailed(void) : "Fires when this entity fails to find the specified keyfield." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/logic_lineto") + color(0 100 250) + line(255 255 0, targetname, source, targetname, target) += 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(BaseEntityPoint) + color(0 100 250) + iconsprite("editor/logic_measure_movement.vmt") + line(255 255 0, targetname, measureReference) + line(255 0 255, targetname, measureTarget, targetname, measureReference) + line(255 255 0, targetname, targetReference) + line(255 0 255, targetname, target, targetname, TargetReference) += 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." + shouldoutputposition(boolean) : "Fire position outputs" : 0 : "Allows OutPosition and OutAngles to be fired with the resulting position while this entity is active. Does not apply to the GetPosition input." + measuretype(choices) : "Measurement Type" : 0 = + [ + 0: "Position" + 1: "Eye position" + 2: "Attachment point" + ] + + spawnflags(flags) = + [ + 1: "[1] Ignore X" : 0 + 2: "[2] Ignore Y" : 0 + 4: "[4] Ignore Z" : 0 + 8: "[8] Use 'Ignore' flags for origin instead of angles" : 0 + 16: "[16] Use new teleportation rules (smoother movement)" : 1 + 32: "[32] Don't change target's angles" : 0 + ] + + measureattachment(string) : "Measurement Attachment" : : "Only useful for the ''Attachment point'' measurement type. This attachment should be on the Entity to Measure and measurements will correspond to its position and angles." + + // 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 SetMeasureType(integer) : "Sets the measurement type." + input SetMeasureAttachment(string) : "Sets the measurement attachment." + input ShouldOutputPosition(bool) : "Sets whether we are allowed to fire position outputs while this entity is active." + input GetPosition(void) : "Initiates a single measurement with the current settings, only firing OutPosition and OutAngles without moving anything. (it doesn't need a target to be available)\nThis input ignores the 'Fire position outputs' keyvalue and instead repurposes it to modify who the outputs' activator should be.\nIf 'Fire position outputs' is enabled, the target will be used as the activator if it is available.\nIf 'Fire position outputs' is disabled, the activator that fired GetPosition will be used instead." + input Enable(void) : "Enable the logic_measure_movement." + input Disable(void) : "Disable the logic_measure_movement." + + // Outputs + output OutPosition(vector) : "Outputs the resulting position when allowed." + output OutAngles(vector) : "Outputs the resulting angles when allowed." + ] + +@PointClass base(BaseEntityPoint) + size(-8 -8 -8, 8 8 8) + line(255 255 255, targetname, target) += logic_modelinfo: "Gets and outputs some model information from an entity." + [ + target(target_destination) : "Target" : : "The entity whose model will be evaluated." + poseparametername(string) : "Pose Parameter Name" : : "(Optional) The pose parameter to use for pose parameter-related I/O." + + // Inputs + input SetTarget(target_destination) : "Sets this entity's target." + input GetNumSkins(void) : "Gets the number of skins on the target entity." + input LookupSequence(string) : "Looks up the specified sequence on the target entity." + input LookupActivity(string) : "Looks up the specified activity on the target entity. Uses the sequence outputs and outputs the first sequence with the given activity." + input SetPoseParameterName(string) : "Sets the pose parameter to target." + input SetPoseParameterValue(float) : "Sets the target pose parameter's current value." + input GetPoseParameter(void) : "Gets the current value of the target pose parameter and fires OutPoseParameterValue with it." + + // Outputs + output OutNumSkins(integer) : "Outputs number of skins." + output OnHasSequence(integer) : "Fires when the target has the sequence requested. Outputs the sequence's index." + output OnLacksSequence(void) : "Fires when the target does not have the sequence requested." + output OutPoseParameterValue(float) : "Fires when the pose parameter value is requested, outputting its current value." + ] + +@PointClass base(BaseEntityPoint) + 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. It is not possible to clear the memory, so this only works once." + [ + integervalue(integer) : "Integer Value (optional)" : : "The value all inputs are compared to if ''Should use Reference Value'' is enabled." + shouldcomparetovalue(boolean) : "Should use Integer Value" : 0 : "If enabled, all inputs are compared to the reference value. If not enabled, they are instead compared to the last input added." + strlenallowed(boolean) : "Use string length" : 0 : "Use the length of the string in the compare value rather than its actual value." + + // Inputs + input InputValue(integer) : "Adds a value to our set of inputs and fires CompareValues automatically, comparing existing inputs to this one if set to do so." + input CompareValues(void) : "Compares the values and fires appropriate outputs." + + // Outputs + output OnEqual(void) : "Fires if all of the values are equal." + output OnNotEqual(void) : "Fires if any of the values are not equal." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/logic_navigation") + line(128 128 128, targetname, target) += 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: "[1] Start On" : 1 + ] + + navprop(string) : "Nav Property" : "Ignore" : "The only valid property is to ignore this entity, so NPCs will 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(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/logic_player_slowtime.vmt") += logic_player_slowtime: "Start/stops player being in slow time" + [ + + // Inputs + input StartSlowingTime(float) : "Start slowing time for the player (with a set duration)." + input StopSlowingTime(void) : "Stop slowing time for the player." + ] + +@PointClass base(BaseEntityPoint, DamageFilter) + color(200 0 0) + iconsprite("editor/logic_playerproxy.vmt") += logic_playerproxy: "An entity that is used to relay inputs/outputs to the player and back to the world." + [ + + // Inputs + input AddPotatosToPortalgun(void) : "Change portalgun bodygroup to show potatos." + input RemovePotatosFromPortalgun(void) : "Change portalgun bodygroup to not show potatos." + input SetDropEnabled(bool) : "Set wether the player is allowed to drop a carried object." + input ForceVMGrabController(void) : "Force the player to use the view model grab controller for all objects that are picked up." + input ForcePhysicsGrabController(void) : "Force the player to use the physics grab controller for all objects that are picked up." + input ResetGrabControllerBehavior(void) : "Resets the grab controller used by the player to its default behavior." + input SetMotionBlurAmount(float) : "Forces the motion blur effect on the player. Set to < 0 to disable this override." + input GivePortalGunFull(void) : "Gives the player a portal gun with both colors. (Overrides if player is already holding one)" + input GivePortalGunPrimary(void) : "Gives the player a portal gun with primary color. (Overrides if player is already holding one)" + input GivePortalGunSecondary(void) : "Gives the player a portal gun with only secondary color. (Overrides if player is already holding one)" + input GivePortalGunNone(void) : "Gives the player a portal gun with no activated colors. (Overrides if player is already holding one)" + input GiveBoots(void) : "Gives the player long fall boots." + input RemoveBoots(void) : "Removes long fall boots from the player, if they have them." + input GivePaintGunFull(void) : "Gives the player a fully upgraded paint gun." + input GivePaintGunBasic(void) : "Gives the player a non-upgraded paint gun." + input RemovePortalGun(void) : "Removes the portal gun from the player, if they have it." + input RemovePaintGun(void) : "Removes the paint gun from the player, if they have it." + input SetFallDamageEnabled(bool) : "Whether or not fall damage is enabled" + + // Outputs + output PlayerDied(void) : "Fires when the player dies." + output OnStartSlowingTime(void) : "Fired when a Portal player initiates slow time." + output OnStopSlowingTime(void) : "Fired when a Portal player stops slowing time." + output OnPrimaryPortalPlaced(void) : "Fired when a Portal player successfully places the primary portal." + output OnSecondaryPortalPlaced(void) : "Fired when a Portal player successfully places the secondary portal." + output OnCoopPing(void) : "Fired when a Portal player pings in coop." + output OnDuck(void) : "Fired when a player starts to duck." + output OnUnDuck(void) : "Fired when a player releases the duck button." + output OnJump(void) : "Fired when a player jumps." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_playmovie") += logic_playmovie: "Plays a movie and allows for various playback options" + [ + moviefilename(choices) : "Movie to display" : "aperture_logo.bik" : "The movie to display. You can also type in the filename of a custom movie that is present in the media/ folder. The BIK file extension must be included." = + [ + "coop_black_screen.bik": "Black Screen" + "aperture_logo.bik": "Aperture Logo" + "animalking.bik": "Animal King" + "aperture_appear_horiz.bik": "Aperture Appear (Horizontal)" + "aperture_appear_vert.bik": "Aperture Appear (Vertical)" + "bluescreen.bik": "Blue Screen Of Death" + "exercises_horiz.bik": "Evacuation Training (Horizontal)" + "exercises_vert.bik": "Evacuation Training (Vertical)" + "faithplate.bik": "Aerial Faith Plate" + "fizzler.bik": "Emancipation Grid" + "hard_light.bik": "Light Bridge" + "laser_danger_horiz.bik": "Laser Danger (Horizontal)" + "laser_danger_vert.bik": "Laser Danger (Vertical)" + "laser_portal.bik": "Laser Through Portal" + "plc_blue_horiz.bik": "Please Remain Calm (Horizontal)" + "plc_blue_vert.bik": "Please Remain Calm (Vertical)" + "turret_colours_type.bik": "Turret Case Options" + "turret_dropin.bik": "Turret Drop In" + "turret_exploded_grey.bik": "Exploded Turret" + "menu_act01.bik": "Menu Background: Act 1" + "menu_act02.bik": "Menu Background: Act 2" + "menu_act03.bik": "Menu Background: Act 3" + "menu_act04.bik": "Menu Background: Act 4" + "menu_act05.bik": "Menu Background: Act 5" + "sp_30_a4_finale5.bik": "SP Ending" + "sp_credits_bg.bik": "Want You Gone Background" + "sp_a5_credits.bik": "Space" + "sp_ending_callback.bik": "Space Wheatley" + "coop_bluebot_load.bik": "ATLAS Schematic" + "coop_orangebot_load.bik": "P-Body Schematic" + "coop_bots_load.bik": "Conveyor Bots" + "coop_bots_load_wave.bik": "Waving Bots" + "coop_intro.bik": "Coop Intro" + "coop_outro.bik": "Coop Outro" + "coop_bts_blueprints.bik": "Coop Disc: Blueprints" + "coop_bts_powergrid_01.bik": "Coop Disc: Power Grid 1" + "coop_bts_powergrid_02.bik": "Coop Disc: Power Grid 2" + "coop_bts_radar_01.bik": "Coop Disc: Radar 1" + "coop_bts_radar_02.bik": "Coop Disc: Radar 2" + "coop_bts_security_01.bik": "Coop Disc: Security 1" + "coop_bts_security_02.bik": "Coop Disc: Security 2" + "coop_bts_radar.bik": "Coop Disc: Unused Radar" + "coop_bts_security.bik": "Coop Disc: Unused Security" + "insert_disc.bik": "Insert Disc" + "dlc1_endmovie.bik": "Art Therapy Outro" + "community_bg1.bik": "Community Maps Background" + "intro_movie.bik": "Community Maps Intro" + "attract01.bik": "Extras: Coop Trailer" + "attract02.bik": "Extras: SP Trailer" + "attrct_boots.bik": "Extras: Long Fall Boots" + "attract_bot_trust.bik": "Extras: Bot Trust" + "attract_panels.bik": "Extras: Panels" + "attract_turrets.bik": "Extras: Turrets" + ] + + allowskip(boolean) : "Allow User to Skip" : 0 : "Whether or not the user may skip the video with common keys" + loopvideo(boolean) : "Loop Video" : 0 : "If set to true, the movie will loop forever" + fadeintime(float) : "Fade In Time" : 0 : "Time it takes for the video to fade in" + + // Inputs + input PlayMovie(void) : "Play the movie." + input PlayMovieForAllPlayers(void) : "Play the movie for all connected players." + input PlayLevelTransitionMovie(string) : "Plays a movie with specific settings used for level transitions. Pass the name of the movie in the parameters. To be fired at the end of a level." + input FadeAllMovies(void) : "Fade movies out for all players connected." + + // Outputs + output OnPlaybackFinished(void) : "Fired when the movie has completed playing back or was skipped by the user." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_random_outputs.vmt") + color(0 100 250) += logic_random_outputs: "A message forwarder. Fires up to eight separate outputs, each with a different chance of firing." + [ + spawnflags(flags) = + [ + 1: "[1] Only trigger once" : 0 + 2: "[2] Allow fast retrigger" : 0 + ] + + ontriggerchance1(float) : "OnTrigger1 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger1 output firing when this entity is triggered." + ontriggerchance2(float) : "OnTrigger2 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger2 output firing when this entity is triggered." + ontriggerchance3(float) : "OnTrigger3 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger3 output firing when this entity is triggered." + ontriggerchance4(float) : "OnTrigger4 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger4 output firing when this entity is triggered." + ontriggerchance5(float) : "OnTrigger5 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger5 output firing when this entity is triggered." + ontriggerchance6(float) : "OnTrigger6 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger6 output firing when this entity is triggered." + ontriggerchance7(float) : "OnTrigger7 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger7 output firing when this entity is triggered." + ontriggerchance8(float) : "OnTrigger8 Chance" : "1.0" : "Chance (from 0 to 1) of the OnTrigger8 output firing when this entity is triggered." + + // Inputs + input Trigger(void) : "Trigger this entity, causing its OnTrigger outputs to fire if it is enabled." + input Toggle(void) : "Toggle this entity between enabled and disabled." + input EnableRefire(void) : "Allow this relay to trigger again quickly, if fast retrigger is disabled." + + // Outputs + output OnSpawn(void) : "Fired when this entity is spawned. If this entity is set to only trigger once, it will delete itself after firing this output." + output OnTrigger1(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger2(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger3(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger4(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger5(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger6(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger7(void) : "This output has a chance to fire when the entity is triggered." + output OnTrigger8(void) : "This output has a chance to fire when the entity is triggered." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + color(0 100 250) + iconsprite("editor/logic_register_activator") += logic_register_activator: "Stores an entity and sends messages with it as the activator\nUseful for keeping track of entities with mangled names due to template spawners and instances." + [ + + // Inputs + input Toggle(void) : "Toggle between enabled and disabled." + input FireRegisteredAsActivator1(void) : "Trigger the OnRegisteredActivate1 output, with the activator being registered entity." + input FireRegisteredAsActivator2(void) : "Trigger the OnRegisteredActivate2 output, with the activator being registered entity." + input FireRegisteredAsActivator3(void) : "Trigger the OnRegisteredActivate3 output, with the activator being registered entity." + input FireRegisteredAsActivator4(void) : "Trigger the OnRegisteredActivate4 output, with the activator being registered entity." + input RegisterEntity(target_destination) : "Stores an entity to later be used as an activator." + + // Outputs + output OnRegisteredActivate1(void) : "Fired to send a message using the registered entity as the activator." + output OnRegisteredActivate2(void) : "Fired to send a message using the registered entity as the activator." + output OnRegisteredActivate3(void) : "Fired to send a message using the registered entity as the activator." + output OnRegisteredActivate4(void) : "Fired to send a message using the registered entity as the activator." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_relay.vmt") + color(0 100 250) += logic_relay: "A message forwarder. Fires an OnTrigger output when triggered, and can be disabled to prevent forwarding outputs.\n\nUseful 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: "[1] Only trigger once" : 0 + 2: "[2] Allow fast retrigger" : 0 + ] + + + // Inputs + input Trigger(void) : "Trigger the relay, causing its OnTrigger output to fire if it is enabled." + input TriggerWithParameter(string) : "Triggers the relay with a parameter, causing its OnTriggerParameter output to fire if it is enabled." + input Toggle(void) : "Toggle the relay between enabled and disabled." + input EnableRefire(void) : "Allow this relay to trigger again quickly, if fast retrigger is disabled. This input allows the relay to fire again early if it is in this state.This is automatically triggered 0.01s after the last OnTrigger output." + + // 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." + output OnTriggerParameter(string) : "Fired when the relay is triggered with a parameter. If the relay is set to only trigger once, it will delete itself after firing this output." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_relay_queue.vmt") += logic_relay_queue: "A special variant of logic_relay designed to queue trigger inputs. If the relay is still handling its I/O connections after being triggered, additional Trigger inputs will be queued and automatically fire when the relay is able to be re-fired. Activator, output ID, and parameter are all kept and saved. Inputs are added to the queue each time Trigger or TriggerWithParameter are received while the relay is disabled or still handling its current I/O connections. The first one in the queue will trigger the moment an opportunity becomes available and the next one in the queue will wait for that one.\n\nThis is useful for when you don't want something to happen multiple times at once, but don't want to discard further requests either." + [ + setmaxqueueitems(integer) : "Maximum Items" : 3 : "The maximum number of Trigger and TriggerWithParameter inputs allowed in the queue. Any others received while this value is full will be discarded. Keep in mind this does not count the I/O chain currently being handled." + dontqueuewhendisabled(boolean) : "Don't queue when disabled" : 0 : "Prevents the relay from queuing inputs when disabled. This means inputs will only be queued when enabled and still handling its current I/O connections." + spawnflags(flags) = + [ + 1: "[1] Only trigger once" : 0 + 2: "[2] Allow fast retrigger" : 0 + ] + + + // Inputs + input Trigger(void) : "Triggers the relay, causing its OnTrigger output to fire if it is enabled." + input TriggerWithParameter(string) : "Triggers the relay with a parameter, causing its OnTriggerParameter output to fire if it is enabled." + input Toggle(void) : "Toggle the relay between enabled and disabled." + input EnableRefire(void) : "If fast retrigger is disabled, the relay will not be able to fire again until its most delayed output has been fired. This input allows the relay to fire again early if it is in this state.This is automatically triggered 0.01s after the last OnTrigger output." + input ClearQueue(void) : "Clears the input queue." + input SetMaxQueueItems(integer) : "Sets the maximum queue items." + + // Outputs + output OnTrigger(void) : "Fired when the relay is triggered." + output OnTriggerParameter(string) : "Fired when the relay is triggered with a parameter." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/logic_scene_list_manager.vmt") + color(240 180 250) + line(240 180 250, targetname, scene0) + line(240 180 250, targetname, scene1) + line(240 180 250, targetname, scene2) + line(240 180 250, targetname, scene3) + line(240 180 250, targetname, scene4) + line(240 180 250, targetname, scene5) + line(240 180 250, targetname, scene6) + line(240 180 250, targetname, scene7) + line(240 180 250, targetname, scene8) + line(240 180 250, targetname, scene9) + line(240 180 250, targetname, scene10) + line(240 180 250, targetname, scene11) + line(240 180 250, targetname, scene12) + line(240 180 250, targetname, scene13) + line(240 180 250, targetname, scene14) + line(240 180 250, targetname, scene15) += 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(BaseEntityPoint) + iconsprite("editor/logic_script.vmt") + color(200 200 200) + line(200 200 200, targetname, group00) + line(200 200 200, targetname, group08) + line(200 200 200, targetname, group01) + line(200 200 200, targetname, group09) + line(200 200 200, targetname, group02) + line(200 200 200, targetname, group10) + line(200 200 200, targetname, group03) + line(200 200 200, targetname, group11) + line(200 200 200, targetname, group04) + line(200 200 200, targetname, group12) + line(200 200 200, targetname, group05) + line(200 200 200, targetname, group13) + line(200 200 200, targetname, group06) + line(200 200 200, targetname, group14) + line(200 200 200, targetname, group07) + line(200 200 200, targetname, group15) += logic_script: "An entity that acts as a container for scripts." + [ + group00(target_destination) : "EntityGroup[0]" + group01(target_destination) : "EntityGroup[1]" + group02(target_destination) : "EntityGroup[2]" + group03(target_destination) : "EntityGroup[3]" + group04(target_destination) : "EntityGroup[4]" + group05(target_destination) : "EntityGroup[5]" + group06(target_destination) : "EntityGroup[6]" + group07(target_destination) : "EntityGroup[7]" + group08(target_destination) : "EntityGroup[8]" + group09(target_destination) : "EntityGroup[9]" + group10(target_destination) : "EntityGroup[10]" + group11(target_destination) : "EntityGroup[11]" + group12(target_destination) : "EntityGroup[12]" + group13(target_destination) : "EntityGroup[13]" + group14(target_destination) : "EntityGroup[14]" + group15(target_destination) : "EntityGroup[15]" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/logic_sequence.vmt") += logic_sequence: "Coordinates a sequence out of up to 16 preset values. If the input value matches the sequence's current case value, an output is fired and (by default) the sequence increments to the next case.\n\nThis is intended for things like passwords in keypads, which usually demand a specific combination of numbers." + [ + initialcase(integer) : "Initial Case" : 1 : "Which case to start on, meaning inputs will initially compare with this case. Uses the case's index. (e.g. 4 for Case 04)" + startdisabled(boolean) : "Start Disabled" : 0 : "If this entity is disabled, it will not accept any case tests. It will still accept other inputs, like SetSequenceIndex." + 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" + dontincrementonpass(boolean) : "Suppress auto increment" : 0 : "Prevents automatically incrementing the sequence each time a case passes." + + // Inputs + input Enable(void) : "Enables this entity." + input Disable(void) : "Disables this entity." + input Toggle(void) : "Toggles whether this entity is disabled." + input InValue(string) : "Tests the input value against the current case." + input SetCurrentCase(integer) : "Sets the sequence's current case. This will fire OutCurCase." + input SetCurrentCaseNoFire(integer) : "Sets the sequence's current case without firing OutCurCase." + input IncrementSequence(integer) : "Increments the current case by the specified number. (1 if blank)" + input ResetSequence(void) : "Resets the sequence to Case 01." + + // Outputs + output OutCurCase(integer) : "Fires each time the sequence's current case value changes, e.g. when it's incremented by a passing case." + output OnCasePass(string) : "Fires when a case is matched, passing the input value." + output OnCaseFail(string) : "Fires when a case fails, passing the input value." + output OnSequenceComplete(string) : "Fires when the last case is matched and sequence is complete." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/logic_timer.vmt") + color(0 100 250) += 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." + [ + spawnflags(flags) = + [ + 1: "[1] Oscillator (alternates between OnTimerHigh and OnTimerLow outputs)" : 0 + ] + + userandomtime(boolean) : "Use Random Time" : 0 + 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." + input UseRandomTime(integer) : "0 or 1, whether random time is enabled. If random time starts enabled and gets disabled here, the refire interval is set to the Maximum Random 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(BaseEntityPoint) + color(0 100 250) + iconsprite("editor/logic_timescale.vmt") += logic_timescale: "Changes the server's timescale." + [ + blendtime(float) : "Blend Time" : 0 : "The amount of time it takes to ramp to the desired timescale when triggered." + + // Inputs + input SetDesiredTimescale(float) : "Sets the desired timescale and starts slowing time (will blend to desired using the specified blend time)." + input SetTimescaleBlendTime(float) : "Set the amount of time that it takes to ramp to the desired timescale when triggered." + ] + +@PointClass base(BaseEntityPoint) + color(0 100 250) + line(255 255 0, targetname, parentname) + iconsprite("editor/ficool2/material_modify_control.vmt") += material_modify_control: "An entity that can be used to directly control material vars. To use it, you need to add the MaterialModify or MaterialModifyAnimated proxy to the material you intend to change. Parent this entity the entity who's material you want to control. If not parented, this applies to all materials in the map with the given name." + [ + 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: . Setting to -1 uses the last frame of the texture. should be 1 or 0." + input StartFloatLerp(string) : "Force a material with the MaterialModify proxy to lerp a material var between two floating point values. Format is: . should be 1 or 0." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_bits.vmt") += math_bits: "A math_counter variant that specializes in bitwise operations." + [ + startvalue(integer) : "Initial Value" : 0 : "The bits this entity should start with." + + // Inputs + input Add(integer) : "Adds bit(s) to this entity's value and fires the OutValue output with the result." + input Subtract(integer) : "Subtracts bit(s) to this entity's value and fires the OutValue output with the result." + input ShiftLeft(integer) : "Shifts this entity's value to the left by the specified number and fires the OutValue output with the result." + input ShiftRight(integer) : "Shifts this entity's value to the right by the specified number and fires the OutValue output with the result." + input SetValue(integer) : "Changes this entity's value and fires the OutValue output with the result." + input SetValueNoFire(integer) : "Changes this entity's value without firing any outputs." + input GetValue(void) : "Causes this entity to fire its OnGetValue output with its current bits. Used for polling the current bits when you don't want constant updates from the OutValue output." + input ContainsBits(integer) : "Tests whether this entity's current value contains at least one of the specified bit(s)." + input ContainsAllBits(integer) : "Tests whether this entity's current value contains all of the specified bit(s)." + + // Outputs + output OutValue(integer) : "Fired when the value changes." + output OnGetValue(integer) : "Fired in response to the GetValue input. Used for polling the current bits when you don't want constant updates from the OutValue output." + output OnTrue(void) : "Fired by ContainsBits when the current value contains the specified bit." + output OnFalse(void) : "Fired by ContainsBits when the current value does not contain the specified bit." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_clamp.vmt") += math_clamp: "Clamps a value between two values. Supports integers, floats, and vectors." + [ + setmax(string) : "Max" : : "The maximum value. Can be an integer, a float, or a vector." + setmin(string) : "Min" : : "The minimum value. Can be an integer, a float, or a vector." + + // Inputs + input ClampValue(string) : "Clamps the specified value. Can be an integer, a float, or a vector." + input SetMax(string) : "Sets the max value. Can be an integer, a float, or a vector." + input SetMin(string) : "Sets the max value. Can be an integer, a float, or a vector." + + // Outputs + output OutValue(string) : "Outputs the clamped value." + output OnBeforeMin(string) : "Fires when a clamped value was before the minimum value. Outputs the clamped value." + output OnBeyondMax(string) : "Fires when a clamped value was beyond the maximum value. Outputs the clamped value." + ] + +@PointClass base(BaseEntityPoint) + color(0 100 250) + iconsprite("editor/math_colorblend.vmt") += math_colorblend: "Used to create a blend between two colors for controlling the color of another entity." + [ + spawnflags(flags) = + [ + 1: "[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 a 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(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_counter.vmt") + color(0 100 250) += 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." + [ + startvalue(float) : "Initial Value" : 0 : "Starting value for the counter." + min(float) : "Minimum Legal Value" : 0 : "Minimum legal value for the counter. If min=0 and max=0, no clamping is performed." + max(float) : "Maximum Legal Value" : 0 : "Maximum legal value for the counter. If min=0 and max=0, no clamping is performed." + + // Inputs + input Add(float) : "Add an amount to the counter and fire the OutValue output with the result." + input Divide(float) : "Divide the counter by an amount and fire the OutValue output with the result." + input Multiply(float) : "Multiply the counter by an amount and fire the OutValue output with the result." + input SetValue(float) : "Set the counter to a new value and fire the OutValue output with the result." + input SetValueNoFire(float) : "Set the counter to a new value without firing any outputs." + input Subtract(float) : "Subtract an amount from the counter and fire the OutValue output with the result." + input SetHitMax(float) : "Set the upper bound of the counter and fire the OutValue output with the current value." + input SetHitMin(float) : "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." + input SetMaxValueNoFire(float) : "Set the upper bound of the counter without firing any outputs." + input SetMinValueNoFire(float) : "Set the lower bound of the counter without firing any outputs." + + // Outputs + output OutValue(float) : "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(float) : "Fired in response to the GetValue input. Used for polling the counter when you don't want constant updates from the OutValue output." + output OnChangedFromMin(void) : "Fired when the counter value changes from the minimum value." + output OnChangedFromMax(void) : "Fired when the counter value changes from the max value." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_generate.vmt") += math_generate: "Continuously generates numbers using various generation modes based on material proxies." + [ + startdisabled(boolean) : "Start Disabled" : 1 + generatetype(choices) : "Generation Type" : 1 = + [ + 0: "Sine Wave (param 1 = time offset, param 2 = sine period)" + 1: "Linear Ramp (param 1 = rate)" + 2: "Uniform Noise" + 3: "Gaussian Noise (param 1 = mean, param 2 = half width)" + 4: "Exponential (param 1 = scale, param 2 = offset)" + ] + + initialvalue(float) : "Initial Value" : 0 : "Starting value for the math_generate." + sethitmin(float) : "Minimum Legal Value" : 0 : "Minimum legal value for generation." + sethitmax(float) : "Maximum Legal Value" : 1 : "Maximum legal value for generation." + setparam1(float) : "Parameter 1" : 0 : "Multi-purpose parameter #1 for the generation algorithms to use for their own needs." + setparam2(float) : "Parameter 2" : 0 : "Multi-purpose parameter #2 for the generation algorithms to use for their own needs." + + // Inputs + input SetValue(float) : "Sets the math_generate to a new value and fires the OutValue output with the result, performing all generation from that value." + input SetValueNoFire(float) : "Sets the math_generate to a new value without firing any outputs." + input GetValue(void) : "Causes the math_generate to fire its OnGetValue output with the current value. Used for polling the value when you don't want constant updates from the OutValue output." + input SetGenerateType(integer) : "Sets the type of generation this math_generate should perform." + input Enable(void) : "Enables this entity." + input Disable(void) : "Disables this entity." + input Toggle(void) : "Toggles whether this entity is disabled." + input SetHitMin(float) : "Set minimum legal value for generation" + input SetHitMax(float) : "Set maximum legal value for generation" + input SetParam1(float) : "Set the value for parameter one" + input SetParam2(float) : "Set the value for parameter two" + + // Outputs + output OutValue(string) : "Fires each tick while generation is active, passing the value continuously generated by the math_generate." + output OnHitMin(void) : "Fired when generation meets the min value. Generation must go back above the min value before the output will fire again." + output OnHitMax(void) : "Fired when generation meets the max value. Generation must go below the max value before the output will fire again." + output OnGetValue(float) : "Fired in response to the GetValue input. Used for polling the value when you don't want constant updates from the OutValue output." + output OnChangedFromMin(void) : "Fired when the current generation value changes from the minimum value." + output OnChangedFromMax(void) : "Fired when the current generation value changes from the maximum value." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_lightpattern.vmt") += math_lightpattern: "A logic entity that attempts to replicate light patterns that can be used on named lights.\n\nWARNING: This is currently out of sync with default light patterns. TODO: Fix that!" + [ + style(choices) : "Appearance" : : "Which preset pattern to use." = + [ + "": "None" + 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 custom pattern to use. a = fully dark, z = fully bright. This should always contain lowercase letters for light patterns. Uppercase letters or other types of characters won't work with actual light patterns. (although they shouldn't break the whole entity either)" + patternspeed(float) : "Pattern Speed" : "0.1" : "The speed of the pattern." + + // Inputs + input SetStyle(integer) : "Sets the pattern from the style presets." + input SetPattern(string) : "Sets the pattern directly." + input Enable(void) : "Enables this entity." + input Disable(void) : "Disables this entity." + input Toggle(void) : "Toggles this entity." + + // Outputs + output OutValue(float) : "Outputs with a brightness equivalent to the current letter." + output OutLetter(string) : "Outputs with the current letter itself." + output OnLightOn(void) : "Fires when the current letter is equivalent to 'on' (greater than a)." + output OnLightOff(void) : "Fires when the current letter is equivalent to 'off' (equal to a)." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_mod.vmt") += math_mod: "A lightweight entity that performs simple calculations on the fly without needing a complicated I/O chain. This is useful for values that are outputted on a per-frame basis and might not work with a math_counter chain." + [ + startvalue(string) : "Mod Value" : 0 : "The value that is applied to input values." + setoperator(choices) : "Operator" : 43 : "What calculation to perform with the mod value. (input value _ mod value)" = + [ + 43: "Addition" + 45: "Subtraction" + 42: "Multiplication" + 47: "Division" + ] + + + // Inputs + input SetMod(string) : "Sets the mod value." + input ModInt(integer) : "Applies modification to the specified integer." + input ModFloat(float) : "Applies modification to the specified float." + input ModVector(vector) : "Applies modification to the specified vector." + input SetOperator(string) : "Sets the operator. Use +, -, *, or / to choose addition, subtraction, multiplication, or division respectively." + + // Outputs + output OutInt(integer) : "Outputs the modified integer." + output OutFloat(float) : "Outputs the modified float." + output OutVector(vector) : "Outputs the modified vector." + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + color(0 100 250) + iconsprite("editor/math_remap.vmt") += math_remap: "An entity that remaps a range of input values to a given range of output values." + [ + spawnflags(flags) = + [ + 1: "[1] Ignore out of range input values" : 1 + 2: "[2] Clamp output to output range" : 0 + ] + + 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 a 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(BaseEntityPoint, EnableDisable) + iconsprite("editor/math_vector.vmt") += math_vector: "A math_counter variant that specializes in vector operations." + [ + startvalue(vector) : "Initial Value" : "0 0 0" : "The vector this entity shuold start with." + spawnflags(flags) = + [ + 1: "[1] Disable X" : 0 + 2: "[2] Disable Y" : 0 + 4: "[4] Disable Z" : 0 + ] + + + // Inputs + input Add(vector) : "Adds a vector to this entity's current value and fires the OutValue output with the result." + input Divide(vector) : "Divides a vector from this entity's current value and fire the OutValue output with the result." + input Multiply(vector) : "Multiplies a vector from this entity's current value and fires the OutValue output with the result." + input SetValue(vector) : "Sets this entity's current vector to a new value and fires the OutValue output with the result." + input SetValueNoFire(vector) : "Sets this entity's current vector to a new value without firing any outputs." + input Subtract(vector) : "Subtracts a vector from this entity's current value and fires the OutValue output with the result." + input GetValue(void) : "Causes this entity to fire its OnGetValue output with its current vector. Used for polling the counter when you don't want constant updates from the OutValue output." + input PointAtLocation(vector) : "Creates an angle pointing from the entity's current vector to the specified point and fires the OutValue output with the result." + input PointAtEntity(target_destination) : "Creates an angle pointing from the entity's current vector to the specified entity and fires the OutValue output with the result." + input VectorAngles(void) : "Converts this entity's vector to an angle, assuming the current vector is a direction vector. Fires the OutValue output with the result." + input AngleVectorForward(void) : "Converts this entity's vector angles to a vector in the forward direction. Fires the OutValue output with the result." + input AngleVectorRight(void) : "Converts this entity's vector angles to a vector in the right direction. Fires the OutValue output with the result." + input AngleVectorUp(void) : "Converts this entity's vector angles to a vector in the up direction. Fires the OutValue output with the result." + input Normalize(void) : "Normalizes this entity's vector and fires the OutValue output with the result." + input NormalizeAngles(void) : "Normalizes this entity's vector as angles and fires the OutValue output with the result." + input SetX(float) : "Sets this entity's X coordinate." + input SetY(float) : "Sets this entity's Y coordinate." + input SetZ(float) : "Sets this entity's Z coordinate." + input GetX(void) : "Gets this entity's X coordinate." + input GetY(void) : "Gets this entity's Y coordinate." + input GetZ(void) : "Gets this entity's Z coordinate." + input AddX(float) : "Adds to this entity's X coordinate." + input AddY(float) : "Adds to this entity's Y coordinate." + input AddZ(float) : "Adds to this entity's Z coordinate." + input SubtractX(float) : "Subtracts from this entity's X coordinate." + input SubtractY(float) : "Subtracts from this entity's Y coordinate." + input SubtractZ(float) : "Subtracts from this entity's Z coordinate." + + // Outputs + output OutValue(vector) : "Fired when the value changes." + output OutX(float) : "Fired when the value changes, passing the resulting X coordinate." + output OutY(float) : "Fired when the value changes, passing the resulting Y coordinate." + output OutZ(float) : "Fired when the value changes, passing the resulting Z coordinate." + output OnGetValue(vector) : "Fired in response to the GetValue input. Used for polling this entity's current value when you don't want constant updates from the OutValue output." + output OnGetX(float) : "Fired in response to the GetX input." + output OnGetY(float) : "Fired in response to the GetY input." + output OnGetZ(float) : "Fired in response to the GetZ input." + ] + +@MoveClass base(BaseEntityPoint, KeyFrame, Mover) + line(255 255 255, targetname, nextkey) + size(-8 -8 -8, 8 8 8) + color(255 170 0) + animator() += move_keyframed: "Keyframed Move Behavior" + [ + ] + +@MoveClass base(BaseEntityPoint, Mover, KeyFrame) + line(255 255 255, targetname, nextkey) + 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(boolean) : "Turn to face down path" : 0 + ] + +@SolidClass base(BaseEntityBrush) + color(255 255 0) += npc_heli_avoidbox: "Helicopter avoidance box" + [ + spawnflags(flags) = + [ + 65536: "[65536] Avoid the box above and below" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/env_firesource") + color(255 255 0) + sphere(radius) += npc_heli_avoidsphere: "Helicopter avoidance sphere" + [ + spawnflags(flags) = + [ + 65536: "[65536] Avoid the sphere above and below" : 0 + ] + + radius(float) : "Radius" : 128 + ] + +@SolidClass base(BaseEntityBrush) + color(255 255 0) += npc_heli_nobomb: "Helicopter bombing suppressor" + [ + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) + iconsprite("editor/paint_sphere.vmt") += paint_sphere: "Paint brushes inside the sphere." + [ + paint_type(choices) : "Paint Type" : 0 : "The type of Gel created." = + [ + 0: "Repulsion Gel" + 1: "Reflection Gel" + 2: "Propulsion Gel" + 3: "Conversion Gel" + 4: "Cleansing Gel" + 5: "Adhesion Gel" + ] + + radius(float) : "Radius" : "60.f" : "Radius of paint sphere" + alpha_percent(float) : "Alpha Percent" : "1.0" : "Alpha percent to control the density of paint, the value must be between 0 to 1" + + // Inputs + input Paint(void) : "Apply paint with specified paint type inside the paint sphere" + ] + +@PointClass base(BaseEntityPoint) + line(255 255 255, targetname, target) + iconsprite("editor/ficool2/path_corner") + studio("models/editor/angle_helper.mdl") + color(247 181 82) += path_corner: "Path points for func_train or NPC entities to follow." + [ + spawnflags(flags) = + [ + 1: "[1] Wait for retrigger" : 0 + 2: "[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(target_destination) : "Sets next pathcorner" + + // Outputs + output OnPass(void) : "Fires when a path follower passes this point" + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/ficool2/path_corner_crash") + color(255 0 0) += path_corner_crash: "Helicopter Crash Path" + [ + target(target_destination) : "Next stop target" + ] + +@PointClass base(BaseEntityPoint) + cylinder(255 255 255, targetname, target, radius, targetname, targetname, radius) + color(255 192 0) + studio("models/editor/angle_helper.mdl") + sphere(radius) + iconsprite("editor/ficool2/path_track") += 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: "[1] Disabled" : 0 + 4: "[4] Branch Reverse" : 0 + 8: "[8] Disable train" : 0 + 16: "[16] Teleport to THIS path track" : 0 + 32768: "[32768] Alternate 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." + ] + +@MoveClass base(BaseEntityPoint) + cylinder(255 255 255, targetname, target, radius, targetname, targetname, radius) + color(255 192 0) + studio("models/editor/angle_helper.mdl") + sphere(radius) + animator() + keyframe("target") += path_vphysics: "An entity that spawns invisible tractor beams in the path specified" + [ + spawnflags(flags) = + [ + ] + + target(target_destination) : "Next Target" : : "The next path_vphysics in the path." + speed(float) : "Speed" : 100 : "Speed at which to move the objects." + radius(float) : "Radius" : 32 : "Radius of the triggers." + damping(float) : "Damping" : 5 : "How much to dampen the movement." + filtername(filterclass) : "Filter" : : "Filter to apply to the spawned triggers." + + // Inputs + input Enable(void) : "Enables the trigger." + input Disable(void) : "Disables the trigger." + input Toggle(void) : "Toggles the trigger." + ] + +@PointClass base(BaseEntityPoint) + color(128 128 128) + iconsprite("editor/phys_constraintsystem.vmt") += 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(BaseEntityPoint) + color(128 128 128) + line(255 255 0, targetname, target) + iconsprite("editor/phys_convert.vmt") += 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: "[1] Convert Asleep" : 0 + 2: "[2] Convert As Debris" : 0 + ] + + target(target_destination) : "Entity to convert" : : "Name of the entity or entities that will be converted to a physics object when the ConvertTarget input is fired. Maximum of 512 entities." + swapmodel(target_destination) : "Model Swap Entity" : : "If specified, the entity will be switched to use this entity's model instead of its own. Only one entity will be converted." + massoverride(float) : "Mass Override" : 0 : "Sets the mass when the object(s) are converted (0 means auto-calculate)" + + // Inputs + input ConvertTarget(void) : "Converts this entity's target to a physically simulated object." + + // Outputs + output OnConvert(void) : "Fires after the conversion has taken place." + ] + +@PointClass base(BaseEntityPoint) + color(128 128 128) + iconsprite("editor/ficool2/phys_keepupright.vmt") + line(128 128 128, targetname, attach1) += phys_keepupright: "A controller that tries to keep an entity facing a particular direction." + [ + spawnflags(flags) = + [ + 1: "[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(BaseEntityPoint) + halfgridsnap + color(128 128 128) + line(128 128 128, targetname, attach1) + iconsprite("editor/ficool2/phys_motor") += phys_motor: "An entity that tries to spin a target entity at a particular speed." + [ + speed(float) : "Rotation Speed" : 0 : "Angular speed (units are degress/second)" + spinup(float) : "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) = + [ + 1: "[1] Start On" : 1 + 2: "[2] No world collision" : 0 + 4: "[4] Hinge Object" : 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(BaseEntityPoint, EnableDisable) + iconsprite("editor/ficool2/phys_ragdollmagnet") + sphere(radius) + line(255 255 0, targetname, target) + color(128 128 128) += 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" : : "If the Bar Magnet spawnflag is set, ragdolls will be attracted to any point on this line." + 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 unit per second. So a force of 1000 will add 10 units/second to a 100kg man. It will add 100 units per second to a 10kg headcrab." + target(target_destination) : "Entity to affect" : : "If specified, the phys_ragdollmagnet will only affect the target entity." + spawnflags(flags) = + [ + 2: "[2] Bar Magnet (use axis helper)" : 0 + ] + + ] + +@PointClass base(BaseEntityPoint) + halfgridsnap + color(128 128 128) + iconsprite("editor/ficool2/phys_spring") + line(128 128 128, targetname, attach1) + line(128 128 128, targetname, attach2) + line(128 128 128, targetname, attach1, targetname, attach2) + sphere(length) + sphere(breaklength) += 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: "[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." + 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 base(BaseEntityPoint) + iconsprite("editor/ficool2/player_loadsaved") += 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(BaseEntityPoint) + iconsprite("editor/player_speedmod.vmt") += player_speedmod: "Speeds up or slows down player velocity over time (slow mo/fast forward)" + [ + spawnflags(flags) = + [ + 1: "[1] Suppress weapons" : 0 + 2: "[2] Suppress HUD" : 0 + 4: "[4] Suppress jump" : 0 + 8: "[8] Suppress duck" : 0 + 16: "[16] Suppress use" : 0 + 32: "[32] Suppress sprint" : 0 + 64: "[64] Suppress attack" : 0 + 128: "[128] Suppress zoom" : 0 + 256: "[256] Don't suppress flashlight" : 0 + ] + + additionalbuttons(integer) : "Additional Buttons" : 0 : "Additional buttons to suppress, other than those listed in the spawnflags. Advanced users only." + + // Inputs + input ModifySpeed(float) : "Modifies player speed by X amount." + input Enable(void) : "Enables the spawnflag abilities without actually modifying the player's speed." + input Disable(void) : "Disables the spawnflag abilities without actually modifying the player's speed." + input SetAdditionalButtons(integer) : "Sets the additional suppressed buttons." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/player_weaponstrip.vmt") += player_weaponstrip: "Removes weapons from the player." + [ + + // Inputs + input Strip(void) : "Removes all weapons." + input StripWeaponsAndSuit(void) : "Strip player's weapons and suit" + ] + +@PointClass base(BaseEntityPoint, EnableDisable) + iconsprite("editor/ficool2/point_anglesensor") + color(0 100 250) + line(0 100 250, targetname, target) + line(0 100 250, targetname, target, targetname, lookatname) += 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: "[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." + input SetTargetEntity(string) : "Set the target entity" + + // 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(BaseEntityPoint) + iconsprite("editor/ficool2/point_angularvelocitysensor") + color(0 100 250) + line(0 100 250, targetname, target) += 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(boolean) : "Use Axis Helper" : 0 : "Use axis helper to determine rotation values (clockwise/counter-clockwise)." + + // 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(BaseEntityPoint) + sphere(repelradius) + iconsprite("editor/point_antlion_repellant.vmt") + color(0 0 255) += point_antlion_repellant: "Antlion Repellant" + [ + repelradius(float) : "Repell radius" : 512 : "Antlions aren't allowed to be inside this radius" + + // Inputs + input Enable(void) : "Enable" + input Disable(void) : "Disable" + ] + +@PointClass base(BaseEntityPoint) + line(255 255 255, targetname, targetentityname) + iconsprite("editor/point_apc_controller.vmt") += point_apc_controller: "APC Controller" + [ + spawnflags(flags) = + [ + 1: "[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(BaseEntityPoint) + iconsprite("editor/ficool2/point_bonusmaps_accessor") + color(200 0 0) += 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(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/point_clientcommand.vmt") += point_broadcastclientcommand: "An entity that issues commands to each valid client's console, as if it was typed in by that player locally." + [ + + // Inputs + input Command(string) : "Command to execute for all players." + ] + +@PointClass base(BaseEntityPoint) + size(-8 -8 -8, 8 8 8) + sphere(radius) + color(255 255 0) += point_bugbait: "Bugbait sensor point" + [ + enabled(boolean) : "Start Enabled" : 1 + spawnflags(flags) = + [ + 1: "[1] Do not call antlions to position" : 0 + 2: "[2] Don't activate on thrown bugbait splashes" : 0 + 4: "[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(BaseEntityPoint) + studioprop("models/editor/camera.mdl") + frustum(FOV, fogstart, fogend, _frustum_color, -1) += point_camera: "Camera" + [ + spawnflags(flags) = + [ + 1: "[1] Start Off" : 0 + ] + + fov(float) : "FOV" : 90 : "Field of view in degrees" + usescreenaspectratio(boolean) : "Screen Aspect Ratio" : 0 + fogenable(boolean) : "Fog Enable" : 0 + 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." + input Activate(void) : "Turn the camera on, activate it and deactivate all other cameras." + input Deactivate(void) : "Turn the camera off, deactivate it." + ] + +@PointClass base(BaseEntityPoint) + iconsprite("editor/game_end.vmt") += point_changelevel: "Level Change Entity" + [ + + // Inputs + input ChangeLevel(string) : "Changes the level to the map name supplied as a parameter." + input ChangeLevelPostFade(string) : "Immediately set screen to black rather than fade out, then change the level to the map name supplied." + + // Outputs + output OnChangeLevel(void) : "Fired when the level is about to change." + ] + +@PointClass base(BaseEntityPoint) + color(200 0 0) + iconsprite("editor/point_clientcommand.vmt") += 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(BaseEntityPoint) + studioprop("models/editor/camera.mdl") + iconsprite("editor/point_devshot_camera.vmt") + frustum(fov, _frustum_near, _frustum_far, _frustum_color, -1) += 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" : 90 : "FOV of this camera." + _frustum_far(integer) readonly : "" : 1024 : "Ignore, needed to display the view frustum preview." + + // Inputs + input TakeScreenshot(void) : "Takes a single screenshot from this camera only" + ] + +@PointClass base(BaseEntityPoint) + line(255 255 255, targetname, parentname) + iconsprite("editor/ficool2/point_enable_motion_fixup") += 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(BaseEntityPoint) + line(255 255 0, targetname, referencename) + line(255 255 0, targetname, filtername) + color(0 100 250) + iconsprite("editor/point_entity_finder") += point_entity_finder: "An entity that will find an entity and pass it along as the !caller with the OutEntity output. Requires using !caller as the parameter on the input." + [ + filtername(filterclass) : "Filter Name" : : "Filter to use to narrow set of findable entities. See filter_activator_name for more explanation." + referencename(target_destination) : "Reference Entity" : : "Name of the entity to use when evaluating criteria. For example, when using 'Nearest', this is the entity that distance will be measured from. If left blank will use the point_entity_finder." + method(choices) : "Search Method" : 0 = + [ + 0: "Nearest" + 1: "Farthest" + 2: "Random" + ] + + + // Inputs + input FindEntity(void) : "Find an entity that meets the specified criteria. Will fire OutEntity if found and pass the entity as !Caller." + + // Outputs + output OnFoundEntity(void) : "Fired when FindEntity is input and an entity was found. Passes the found entity as !Caller." + ] + +@PointClass base(BaseEntityPoint) + sphere(radius) += point_flesh_effect_target: "Area of affect for the $flesh shader effect." + [ + radius(float) : "Radius" : 8 : "Radius of the effect when active" + + // Inputs + input SetRadius(vector) : "Sets a new radius and time to interpolate to it(as a vector