<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brdoom.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MegaManx3</id>
	<title>Brdoom wiki - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brdoom.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MegaManx3"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php/Especial:Contribui%C3%A7%C3%B5es/MegaManx3"/>
	<updated>2026-04-14T12:37:02Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Predefini%C3%A7%C3%A3o:STFeature&amp;diff=231</id>
		<title>Predefinição:STFeature</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Predefini%C3%A7%C3%A3o:STFeature&amp;diff=231"/>
		<updated>2026-03-19T19:25:49Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{| align=center border=0 cellpadding=4 cellspacing=4 style=&amp;quot;border: solid 1px #a3b1bf; background-color: #cee0f2; padding: 0.4em 1em; width: 55%; margin: 1em auto; text-align: center;&amp;quot; |- | {{{image|link=}}} | &amp;#039;&amp;#039;&amp;#039;Warning:&amp;#039;&amp;#039;&amp;#039; This feature is Skulltag specific, and is not compatible with ZDoom!&amp;lt;br&amp;gt;&amp;lt;font size=1&amp;gt;&amp;#039;&amp;#039;To see all of Skulltag&amp;#039;s specific features, see Skulltag features.&amp;#039;&amp;#039;&amp;lt;/font&amp;gt; |} {{SkulltagColors}} &amp;lt;includeonly&amp;gt;Category:Sku...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=center border=0 cellpadding=4 cellspacing=4 style=&amp;quot;border: solid 1px #a3b1bf; background-color: #cee0f2; padding: 0.4em 1em; width: 55%; margin: 1em auto; text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| {{{image|[[File:SkulltagIcon.png|link=]]}}}&lt;br /&gt;
| &#039;&#039;&#039;Warning:&#039;&#039;&#039; This feature is [[Skulltag]] specific, and is not compatible with [[ZDoom]]!&amp;lt;br&amp;gt;&amp;lt;font size=1&amp;gt;&#039;&#039;To see all of Skulltag&#039;s specific features, see [[Skulltag features]].&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{SkulltagColors}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Skulltag features]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Player_SetTeam&amp;diff=230</id>
		<title>Player SetTeam</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Player_SetTeam&amp;diff=230"/>
		<updated>2026-03-19T19:25:15Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Player_SetTeam}} {{STFeature}}  &amp;#039;&amp;#039;&amp;#039;145:Player_SetTeam (team)&amp;#039;&amp;#039;&amp;#039;  * &amp;#039;&amp;#039;team&amp;#039;&amp;#039;: What team to set the player to.  Sets the player&amp;#039;s team. Usually used at the start of a CTF map in the team selection area. A valid team is anywhere between 0 and sv_maxteams (so 2, 3, 4). The teams are 0 = Blue, 1 = Red, 2 = Green, 3 = Gold. Using the current value of sv_maxteams removes the player from his current team without making him join another.  ==Example== {{noexamples}}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Player_SetTeam}}&lt;br /&gt;
{{STFeature}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;145:Player_SetTeam (team)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;team&#039;&#039;: What team to set the player to.&lt;br /&gt;
&lt;br /&gt;
Sets the player&#039;s team. Usually used at the start of a CTF map in the team selection area. A valid team is anywhere between 0 and sv_maxteams (so 2, 3, 4). The teams are 0 = Blue, 1 = Red, 2 = Green, 3 = Gold. Using the current value of sv_maxteams removes the player from his current team without making him join another.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Line_Horizon&amp;diff=229</id>
		<title>Line Horizon</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Line_Horizon&amp;diff=229"/>
		<updated>2026-03-17T17:00:50Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Line_Horizon}} {{Special|9|nenhum parâmetro necessário|Renderer|use=line}}  Este special deve ser colocado em uma linha do mapa, que então é “estendida” ao infinito. Ele só cria uma visão infinita nessa linha específica, então talvez você precise colocá-lo em várias linhas para obter o efeito desejado. Útil para skyboxes. Não use com inclinações!  == Exemplos == {{noexamples}}  == Conversões a partir de tipos de li...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Line_Horizon}}&lt;br /&gt;
{{Special|9|nenhum parâmetro necessário|Renderer|use=line}}&lt;br /&gt;
&lt;br /&gt;
Este special deve ser colocado em uma linha do mapa, que então é “estendida” ao infinito. Ele só cria uma visão infinita nessa linha específica, então talvez você precise colocá-lo em várias linhas para obter o efeito desejado. Útil para [[skybox|skyboxes]]. Não use com [[slopes|inclinações]]!&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
&lt;br /&gt;
== Conversões a partir de tipos de linedef ==&lt;br /&gt;
Os seguintes tipos do formato Doom podem ser convertidos para Line Horizon:&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!Tipo!!Conversão!!Gatilho&lt;br /&gt;
|-&lt;br /&gt;
|{{icon|ZDoom}} 337:Line Horizon||Line_Horizon ()||&lt;br /&gt;
|-&lt;br /&gt;
|{{icon|Eternity}} 450:Line Horizon||Line_Horizon ()||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links externos ==&lt;br /&gt;
* {{oldref}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly06.png&amp;diff=228</id>
		<title>Arquivo:Poly06.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly06.png&amp;diff=228"/>
		<updated>2026-03-15T18:08:18Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly05.png&amp;diff=227</id>
		<title>Arquivo:Poly05.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly05.png&amp;diff=227"/>
		<updated>2026-03-15T18:08:12Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly04.png&amp;diff=226</id>
		<title>Arquivo:Poly04.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly04.png&amp;diff=226"/>
		<updated>2026-03-15T18:08:05Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly03.png&amp;diff=225</id>
		<title>Arquivo:Poly03.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly03.png&amp;diff=225"/>
		<updated>2026-03-15T18:07:57Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly02.png&amp;diff=224</id>
		<title>Arquivo:Poly02.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly02.png&amp;diff=224"/>
		<updated>2026-03-15T18:07:48Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Arquivo:Poly01.png&amp;diff=223</id>
		<title>Arquivo:Poly01.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Arquivo:Poly01.png&amp;diff=223"/>
		<updated>2026-03-15T18:07:39Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobject&amp;diff=222</id>
		<title>Polyobject</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobject&amp;diff=222"/>
		<updated>2026-03-15T18:05:16Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{doomwiki|link=Polyobject|name=polyobject}}Como o uso de um {{dw|BSP}} pré-calculado para renderização força a geometria vertical do mapa a permanecer constante, é impossível mover uma estrutura nos eixos X e Y no vanilla Doom. O ZDoom resolve isso oferecendo &amp;#039;&amp;#039;&amp;#039;PolyObjects&amp;#039;&amp;#039;&amp;#039;. Um PolyObject normalmente consiste em um grupo de linhas unilaterais (one-sided) conectadas, contidas dentro de um único subsector.  == Criando polyobjects simples ==  Fazer um polyobj...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{doomwiki|link=Polyobject|name=polyobject}}Como o uso de um {{dw|BSP}} pré-calculado para renderização força a geometria vertical do mapa a permanecer constante, é impossível mover uma estrutura nos eixos X e Y no [[vanilla Doom]]. O ZDoom resolve isso oferecendo &#039;&#039;&#039;PolyObjects&#039;&#039;&#039;. Um PolyObject normalmente consiste em um grupo de linhas unilaterais (one-sided) conectadas, contidas dentro de um único subsector.&lt;br /&gt;
&lt;br /&gt;
== Criando polyobjects simples ==&lt;br /&gt;
&lt;br /&gt;
Fazer um polyobject é bem simples, embora possa parecer difícil no começo. Depois que você pega o jeito, dá pra fazer vários rapidinho.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Poly01.png|right]]||Primeiro precisamos do mapa em si. Vamos fazer uma porta deslizante como polyobject (provavelmente o tipo mais fácil), então vamos precisar de duas salas com teto a 192 e um corredor central (onde os polys vão aparecer) com teto a 128. Todos os pisos ficam na altura 0.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly02.png|right]]||Depois você precisa construir os polyobjects. Eles devem ficar em um setor “dummy” ou em algum lugar inacessível, porque o espaço que eles ocupam no mapa normalmente ainda é considerado bloqueado, o que pode causar situações indesejadas — por exemplo, uma porta giratória que, ao abrir, deixa uma barreira invisível no lugar. Além disso, os setores de “armazenamento” serão automaticamente ocultados no [[automap]].&lt;br /&gt;
&lt;br /&gt;
Note que os polyobjects são colunas “sólidas” de vazio, compostas apenas por linedefs de 1 lado (one-sided).&lt;br /&gt;
&lt;br /&gt;
As linhas marcadas em amarelo devem ter o special &amp;lt;tt&amp;gt;[[Polyobj_StartLine]]&amp;lt;/tt&amp;gt;, que recebe três argumentos: o número do polyobject, o polyobject espelhado (mirror) e o som que ele faz enquanto se move (definido em [[SNDSEQ]]). Para o poly de cima, use o número 0; e para o de baixo, use o número 1 (mas qualquer número serviria). Como esses polys vão espelhar um ao outro (as ações serão as mesmas, só que invertidas — por exemplo, o poly1 abre para a direita e o poly0 abre para a esquerda), você deve colocar o número do poly “oposto” no segundo campo. O som não é importante agora, então deixe 0.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly03.png|right]]||Agora você precisa colocar as âncoras (polyobject anchors) e os start spots. Eles determinam onde os polyobjects realmente vão aparecer no mapa. Primeiro coloque as âncoras, que têm DoomEdNum 9300. Elas devem ficar dentro dos polyobjects do jeito que você desenhou no mapa (ou perto da borda), como na imagem. A coisa mais importante das âncoras é o ângulo, que deve corresponder ao número do polyobject. Então a âncora de cima tem ângulo 0 e a âncora de baixo tem ângulo 1.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly04.png|right]]||Em seguida, coloque os start spots. Eles são colocados de forma parecida com as âncoras: em um local onde você quer que o polyobject apareça no jogo, relativo à âncora. Neste caso, colocamos a âncora no centro do poly, então queremos o start spot no centro de onde queremos que o poly apareça, como mostrado na imagem. Start spots têm DoomEdNum 9301, 9302 ou 9303:&lt;br /&gt;
:&#039;&#039;&#039;9301:&#039;&#039;&#039; Polyobject normal — ele aborta o movimento se colidir com um ator.&lt;br /&gt;
:&#039;&#039;&#039;9302:&#039;&#039;&#039; Polyobject “crush” — ele continua movendo e os atores no caminho são esmagados.&lt;br /&gt;
:&#039;&#039;&#039;9303:&#039;&#039;&#039; Polyobject “harmful” — ele causa dano ao toque mesmo antes do ator ser esmagado.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:poly05.png|right]]||Aqui temos a configuração completa. Note que desde o ZDoom 2.5.0, é possível ter geometria complexa para polyobjects e fazer eles se moverem para qualquer lugar do mapa. Versões anteriores tinham limitações rígidas sobre o que um polyobject podia ser e fazer. Como este exemplo já é antigo, ele mostra uma configuração bem simples.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly06.png|right]]||Por fim, você provavelmente quer que os polyobjects realmente abram. Isso é bem simples: dê às “laterais largas” dos polyobjects o special &amp;lt;tt&amp;gt;[[Polyobj_DoorSlide]]&amp;lt;/tt&amp;gt;, com os argumentos 0, 32, 128, 64, 105 — que são: número do polyobject, velocidade do movimento, [[angle|ângulo]], distância a mover e o atraso antes dos polys voltarem à posição original (em [[tic]]s; 105 são 3 segundos, pois são 35 tics por segundo). Você não precisa se preocupar com o polyobject 1 neste caso, porque ele vai espelhar tudo o que o polyobject 0 fizer. Pronto — terminou!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[:Image:Polyexample.zip|Baixar o WAD de exemplo (729 bytes)]]&lt;br /&gt;
&lt;br /&gt;
== Criando polyobjects avançados ==&lt;br /&gt;
Embora os polyobjects simples acima sejam suficientes na maioria dos casos, às vezes não dá. Por exemplo: e se você quiser um polyobject “vazado/see-through”? Nesse caso, você vai precisar usar linedefs de dois lados (two-sided). Porém, o engine não consegue criar o polyobject automaticamente nesses casos, então você precisa usar [[Polyobj_ExplicitLine]] em cada linha do polyobject.&lt;br /&gt;
&lt;br /&gt;
# Construa seu polyobject em um setor de “armazenamento” como antes, mas transforme-o em um setor autorreferente (os dois lados do polyobject pertencem ao setor de armazenamento).&lt;br /&gt;
# Cada linha do polyobject deve ser marcada com Polyobj_ExplicitLine. Para a ordem de renderização, você pode usar o valor 1 em todas elas, já que esse parâmetro é um resquício da implementação original do &#039;&#039;[[Hexen]]&#039;&#039;.&lt;br /&gt;
# Se você quiser que algumas linhas do polyobject sejam ativáveis, você precisa dar um lineid a elas. No [[Hexen format]], isso é feito por um dos parâmetros do Polyobj_ExplicitLine; no [[UDMF]] isso é uma das propriedades do [[linedef]]. Depois, você vai precisar de um script [[OPEN]] em [[ACS]] chamando [[SetLineSpecial]] no lineid escolhido para atribuir um special diferente.&lt;br /&gt;
# Como o polyobject agora é two-sided, garanta que ele realmente tenha uma textura no middle!&lt;br /&gt;
# O setor de armazenamento deve ter as mesmas alturas de piso e teto do setor de destino — não porque o engine exija, mas porque isso facilita MUITO ajustar os offsets verticais das texturas do polyobject. Use o flag “lower unpegged” se você quer que o polyobject encoste no chão.&lt;br /&gt;
# Dê às linhas do polyobject o flag de &amp;quot;[[3D middle texture]]&amp;quot; para que ele tenha uma caixa de colisão vertical finita. Note que o setor de armazenamento do polyobject será usado como referência para checar se há espaço acima/abaixo dele, e não o setor onde ele realmente está!&lt;br /&gt;
&lt;br /&gt;
== Personalizando o dano de polyobjects ==&lt;br /&gt;
[[Image:Polyobject Damage.png|500px|right]]&lt;br /&gt;
Para mudar o dano exato que polyobjects do tipo “crushing” e “hurts-to-touch” causam a cada toque em um ator, você precisa (no [[Ultimate Doom Builder]] ou no [[Doom_Builder#GZDB-Bugfix|GZDoom Builder (Bugfix)]]) ir na aba Action/Tag/Misc das coisas âncora (anchors) e alterar o valor de health das âncoras — do mesmo jeito que polyobjects são ligados entre si usando o ângulo do start spot e das âncoras.&lt;br /&gt;
&lt;br /&gt;
O health padrão 1 significa que o polyobject usa o dano padrão dele, que é 3. Qualquer valor acima de 1 mata instantaneamente qualquer coisa no caminho. E valores negativos definem o dano exato que o polyobject causa em cada impacto. Por exemplo, health = -10 causa 10 de dano por hit em vez de 3.&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
&lt;br /&gt;
Para specials relacionados a PolyObjects, veja:&lt;br /&gt;
* [[Polyobj_DoorSlide]]&lt;br /&gt;
* [[Polyobj_DoorSwing]]&lt;br /&gt;
* [[Polyobj_ExplicitLine]]&lt;br /&gt;
* [[Polyobj_Move]]&lt;br /&gt;
* [[Polyobj_MoveTimes8]]&lt;br /&gt;
* [[Polyobj_MoveTo]]&lt;br /&gt;
* [[Polyobj_MoveToSpot]]&lt;br /&gt;
* [[Polyobj_OR_Move]]&lt;br /&gt;
* [[Polyobj_OR_MoveTimes8]]&lt;br /&gt;
* [[Polyobj_OR_MoveTo]]&lt;br /&gt;
* [[Polyobj_OR_MoveToSpot]]&lt;br /&gt;
* [[Polyobj_OR_RotateLeft]]&lt;br /&gt;
* [[Polyobj_OR_RotateRight]]&lt;br /&gt;
* [[Polyobj_RotateLeft]]&lt;br /&gt;
* [[Polyobj_RotateRight]]&lt;br /&gt;
* [[Polyobj_StartLine]]&lt;br /&gt;
* [[Polyobj_Stop]]&lt;br /&gt;
* [[GetPolyobjX]]&lt;br /&gt;
* [[GetPolyobjY]]&lt;br /&gt;
&lt;br /&gt;
Para scripting com PolyObjects:&lt;br /&gt;
* [[PolyWait]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Features]][[Category:Glossary]][[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobj_DoorSlide&amp;diff=221</id>
		<title>Polyobj DoorSlide</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobj_DoorSlide&amp;diff=221"/>
		<updated>2026-03-15T18:03:45Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Polyobj_DoorSlide}} {{Special|8|po, speed, angle, dist, delay|Polyobject|DoorSlide}}  Move um polyobject, espera e então o move de volta para sua posição original.  * &amp;#039;&amp;#039;po&amp;#039;&amp;#039;: polyobject a ser movido * &amp;#039;&amp;#039;speed&amp;#039;&amp;#039;: quão rápido mover o polyobject * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: direção para mover o polyobject (isto é um ângulo em byte) * &amp;#039;&amp;#039;dist&amp;#039;&amp;#039;: distância para mover o polyobject * &amp;#039;&amp;#039;delay&amp;#039;&amp;#039;: atraso em tics antes de retornar à posiçã...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Polyobj_DoorSlide}}&lt;br /&gt;
{{Special|8|po, speed, angle, dist, delay|Polyobject|DoorSlide}}&lt;br /&gt;
&lt;br /&gt;
Move um [[polyobject]], espera e então o move de volta para sua posição original.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;po&#039;&#039;: polyobject a ser movido&lt;br /&gt;
* &#039;&#039;speed&#039;&#039;: quão rápido mover o polyobject&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: direção para mover o polyobject (isto é um [[Definitions#Byte_Angles|ângulo em byte]])&lt;br /&gt;
* &#039;&#039;dist&#039;&#039;: distância para mover o polyobject&lt;br /&gt;
* &#039;&#039;delay&#039;&#039;: atraso em tics antes de retornar à posição original&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
* [https://www.mediafire.com/file/4cx4x5xkxdp9d7h/PolySLIDE_2.wad Mapa de exemplo: abre uma porta em 2 partes com atraso de fechamento quase infinito]&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
[[PolyObjects]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobj_DoorSwing&amp;diff=220</id>
		<title>Polyobj DoorSwing</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobj_DoorSwing&amp;diff=220"/>
		<updated>2026-03-15T17:50:49Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Polyobj_DoorSwing}} {{Special|7|po, speed, angle, delay|Polyobject|DoorSwing}}  Gira (rotaciona) um polyobject, espera, e então o gira na direção oposta até ele voltar à orientação original.  * &amp;#039;&amp;#039;po&amp;#039;&amp;#039;: polyobj a ser movido * &amp;#039;&amp;#039;speed&amp;#039;&amp;#039;: quão rápido o polyobj deve girar * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: ângulo em byte pelo qual o polyobj será rotacionado * &amp;#039;&amp;#039;delay&amp;#039;&amp;#039;: atraso em tics antes de retornar à orientação original  Por padrão, o...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Polyobj_DoorSwing}}&lt;br /&gt;
{{Special|7|po, speed, angle, delay|Polyobject|DoorSwing}}&lt;br /&gt;
&lt;br /&gt;
Gira (rotaciona) um polyobject, espera, e então o gira na direção oposta até ele voltar à orientação original.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;po&#039;&#039;: polyobj a ser movido&lt;br /&gt;
* &#039;&#039;speed&#039;&#039;: quão rápido o polyobj deve girar&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: [[Definitions#Byte_angles|ângulo em byte]] pelo qual o polyobj será rotacionado&lt;br /&gt;
* &#039;&#039;delay&#039;&#039;: atraso em tics antes de retornar à orientação original&lt;br /&gt;
&lt;br /&gt;
Por padrão, o polyobj gira no sentido anti-horário.&lt;br /&gt;
&lt;br /&gt;
Usando esta função em ACS, ou ao usar [[Universal Doom Map Format|UDMF]], você pode inverter essa direção fornecendo um valor negativo no parâmetro &#039;&#039;speed&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
[[PolyObjects]]&lt;br /&gt;
&lt;br /&gt;
== Links externos ==&lt;br /&gt;
* [http://www.mediafire.com/file/aja3dqqwwgfrkia/poly-swing.WAD/file Mapa de exemplo po_swing usando o formato Doom:Hexen]&lt;br /&gt;
* [https://www.mediafire.com/file/xlsrd0yplsyr5js/U_poly-swing.WAD/file Mapa de exemplo U_poly-swing usando Doom:UDMF]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobj_MoveTimes8&amp;diff=219</id>
		<title>Polyobj MoveTimes8</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobj_MoveTimes8&amp;diff=219"/>
		<updated>2026-03-15T17:50:03Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Polyobj_MoveTimes8}} {{Special|6:|po, speed, angle, dist|Polyobject|MoveTimes8}}  Move um polyobject por (&amp;#039;&amp;#039;dist&amp;#039;&amp;#039; * 8) unidades.  * &amp;#039;&amp;#039;po&amp;#039;&amp;#039;: polyobj a ser movido * &amp;#039;&amp;#039;speed&amp;#039;&amp;#039;: quão rapidamente o polyobj deve se mover * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: direção em que o polyobj deve se mover (este é um ângulo em byte) * &amp;#039;&amp;#039;dist&amp;#039;&amp;#039;: distância a mover, em unidades de 8  ==Veja também==  * Polyobj_OR_MoveTimes8 * PolyObjects&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Polyobj_MoveTimes8}}&lt;br /&gt;
{{Special|6:|po, speed, angle, dist|Polyobject|MoveTimes8}}&lt;br /&gt;
&lt;br /&gt;
Move um polyobject por (&#039;&#039;dist&#039;&#039; * 8) unidades.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;po&#039;&#039;: polyobj a ser movido&lt;br /&gt;
* &#039;&#039;speed&#039;&#039;: quão rapidamente o polyobj deve se mover&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: direção em que o polyobj deve se mover (este é um [[Definitions#Byte_Angles|ângulo em byte]])&lt;br /&gt;
* &#039;&#039;dist&#039;&#039;: distância a mover, em unidades de 8&lt;br /&gt;
&lt;br /&gt;
==Veja também==&lt;br /&gt;
&lt;br /&gt;
* [[Polyobj_OR_MoveTimes8]]&lt;br /&gt;
* [[PolyObjects]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobj_ExplicitLine&amp;diff=218</id>
		<title>Polyobj ExplicitLine</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobj_ExplicitLine&amp;diff=218"/>
		<updated>2026-03-15T17:44:46Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Polyobj_ExplicitLine}} {{Special|5|po, order, mirror, sound, lineid|Polyobject|ExplicitLine|use=line}}  {{warning|text=Este special não é totalmente suportado pelo formato de mapa UDMF. Certos parâmetros, observados abaixo, tornaram-se obsoletos pela capacidade de especificar propriedades diretamente na estrutura do linedef. Esses parâmetros devem ser definidos como 0 ao usar o formato UDMF.}}  Inclui explicitamente um linedef como parte de um poly...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Polyobj_ExplicitLine}}&lt;br /&gt;
{{Special|5|po, order, mirror, sound, lineid|Polyobject|ExplicitLine|use=line}}&lt;br /&gt;
&lt;br /&gt;
{{warning|text=Este special não é totalmente suportado pelo formato de mapa [[UDMF]]. Certos parâmetros, observados abaixo, tornaram-se obsoletos pela capacidade de especificar propriedades diretamente na estrutura do linedef. Esses parâmetros devem ser definidos como 0 ao usar o formato UDMF.}}&lt;br /&gt;
&lt;br /&gt;
Inclui explicitamente um linedef como parte de um polyobject.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;po&#039;&#039;: polyobj que está sendo definido&lt;br /&gt;
* &#039;&#039;order&#039;&#039;: ordem de renderização deste linedef&lt;br /&gt;
* &#039;&#039;mirror&#039;&#039;: polyobj que irá espelhar os movimentos deste&lt;br /&gt;
* &#039;&#039;sound&#039;&#039;: [[sound sequence|sequência de som]] de porta a tocar quando este polyobj se mover&lt;br /&gt;
* &#039;&#039;lineid&#039;&#039;: também define o id deste linedef se não for zero. &#039;&#039;Obsoleto em UDMF.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
[[PolyObjects]]&lt;br /&gt;
&lt;br /&gt;
== Links externos ==&lt;br /&gt;
*[https://www.mediafire.com/file/5rtpq9b89s8q4eh/po_ex_door_example2b.wad/file Mapa de exemplo]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobj_RotateRight&amp;diff=217</id>
		<title>Polyobj RotateRight</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobj_RotateRight&amp;diff=217"/>
		<updated>2026-03-15T17:34:45Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:Polyobj_RotateRight}} {{special|3|po, speed, angle|Polyobject|RotateRight}}  Gira um polyobject para a direita pelo ângulo especificado. Se &amp;#039;&amp;#039;angle&amp;#039;&amp;#039; for 255, então o polyobject irá girar continuamente e nunca vai parar.   * &amp;#039;&amp;#039;po&amp;#039;&amp;#039;: polyobj a ser girado * &amp;#039;&amp;#039;speed&amp;#039;&amp;#039;: quão rápido o polyobj deve girar * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: ângulo em byte pelo qual o polyobj deve girar  ==Veja também==  * Polyobj_RotateLeft * Polyobj_OR_Rota...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Polyobj_RotateRight}}&lt;br /&gt;
{{special|3|po, speed, angle|Polyobject|RotateRight}}&lt;br /&gt;
&lt;br /&gt;
Gira um [[polyobject]] para a direita pelo ângulo especificado. Se &#039;&#039;angle&#039;&#039; for 255, então o polyobject irá girar continuamente e nunca vai parar.&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;po&#039;&#039;: polyobj a ser girado&lt;br /&gt;
* &#039;&#039;speed&#039;&#039;: quão rápido o polyobj deve girar&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: [[Definitions#Byte_Angles|ângulo em byte]] pelo qual o polyobj deve girar&lt;br /&gt;
&lt;br /&gt;
==Veja também==&lt;br /&gt;
&lt;br /&gt;
* [[Polyobj_RotateLeft]]&lt;br /&gt;
* [[Polyobj_OR_RotateRight]]&lt;br /&gt;
* [[PolyObjects]]&lt;br /&gt;
&lt;br /&gt;
== Links externos ==&lt;br /&gt;
*[http://www.mediafire.com/download/9d8bbwakmdco4ub/poly-rotate.WAD Mapa de exemplo]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Pow&amp;diff=216</id>
		<title>Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Pow&amp;diff=216"/>
		<updated>2026-03-08T19:41:33Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;Esta função calcula a potência n-ésima de x.&amp;lt;pre&amp;gt;  function int pow (int x, int n)  {      int y = 1;      while (n-- &amp;gt; 0) y *= x;      return y;  }  &amp;lt;/pre&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Esta função calcula a potência n-ésima de x.&amp;lt;pre&amp;gt;&lt;br /&gt;
function int pow (int x, int n)&lt;br /&gt;
{&lt;br /&gt;
    int y = 1;&lt;br /&gt;
    while (n-- &amp;gt; 0) y *= x;&lt;br /&gt;
    return y;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Fixed_floor&amp;diff=215</id>
		<title>Fixed floor</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Fixed_floor&amp;diff=215"/>
		<updated>2026-03-08T19:35:05Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapeia um valor em ponto fixo para o número inteiro anterior.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function int floor (int x)&lt;br /&gt;
{&lt;br /&gt;
    return x &amp;amp; 0xFFFF0000;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Fixed_floor&amp;diff=214</id>
		<title>Fixed floor</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Fixed_floor&amp;diff=214"/>
		<updated>2026-03-08T19:27:22Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;Map a fixed point value to the previous whole number. &amp;lt;pre&amp;gt; function int floor (int x) {     return x &amp;amp; 0xFFFF0000; } &amp;lt;/pre&amp;gt;  category:Sample ACS functions&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map a fixed point value to the previous whole number.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function int floor (int x)&lt;br /&gt;
{&lt;br /&gt;
    return x &amp;amp; 0xFFFF0000;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Abs&amp;diff=213</id>
		<title>Abs</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Abs&amp;diff=213"/>
		<updated>2026-03-08T19:26:26Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:abs}} This function can be used to return the absolute value of a negative integer. &amp;lt;pre&amp;gt; function int abs (int x) {     if (x &amp;lt; 0)         return -x;      return x; } &amp;lt;/pre&amp;gt;  category:Sample ACS functions&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:abs}}&lt;br /&gt;
This function can be used to return the absolute value of a negative integer.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function int abs (int x)&lt;br /&gt;
{&lt;br /&gt;
    if (x &amp;lt; 0)&lt;br /&gt;
        return -x;&lt;br /&gt;
&lt;br /&gt;
    return x;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Other_useful_functions&amp;diff=212</id>
		<title>Other useful functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Other_useful_functions&amp;diff=212"/>
		<updated>2026-03-08T19:25:50Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;* abs * floor * ceil * pow * sqrt * round * logN * min and max * printsprite * distance * getspawnid * spawnradius * gettargetangle * gettargetpitch * acs_terminaterange * hudmessagetime * syncspeed * getaspectratio * hudmessageonactor * adjustedhudwidth * rad2deg * deg2rad Category:ACS&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[abs]]&lt;br /&gt;
* [[fixed_floor|floor]]&lt;br /&gt;
* [[ceil]]&lt;br /&gt;
* [[pow]]&lt;br /&gt;
* [[sqrt]]&lt;br /&gt;
* [[round]]&lt;br /&gt;
* [[logN]]&lt;br /&gt;
* [[min and max]]&lt;br /&gt;
* [[printsprite]]&lt;br /&gt;
* [[distance]]&lt;br /&gt;
* [[getspawnid]]&lt;br /&gt;
* [[spawnradius]]&lt;br /&gt;
* [[gettargetangle]]&lt;br /&gt;
* [[gettargetpitch]]&lt;br /&gt;
* [[acs_terminaterange]]&lt;br /&gt;
* [[hudmessagetime]]&lt;br /&gt;
* [[syncspeed]]&lt;br /&gt;
* [[getaspectratio]]&lt;br /&gt;
* [[hudmessageonactor]]&lt;br /&gt;
* [[adjustedhudwidth]]&lt;br /&gt;
* [[rad2deg]]&lt;br /&gt;
* [[deg2rad]]&lt;br /&gt;
[[Category:ACS]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Libraries&amp;diff=211</id>
		<title>Libraries</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Libraries&amp;diff=211"/>
		<updated>2026-03-08T17:22:58Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;Uma &amp;#039;&amp;#039;&amp;#039;biblioteca&amp;#039;&amp;#039;&amp;#039; é um script ACS independente que define scripts, funções e constantes comuns, que podem ser usados por outros scripts ACS. Ela é diferente das diretivas padrão &amp;#039;&amp;#039;&amp;#039;#include&amp;#039;&amp;#039;&amp;#039; do ACS porque o arquivo incluído **não é compilado dentro** do binário final resultante.  Usar bibliotecas pode ajudar a economizar espaço nos seus scripts (útil se você usa um editor de scripts com limite de tamanho, como o WadA...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uma &#039;&#039;&#039;biblioteca&#039;&#039;&#039; é um script [[ACS]] independente que define [[scripts]], [[functions|funções]] e [[constants|constantes]] comuns, que podem ser usados por outros scripts ACS.&lt;br /&gt;
Ela é diferente das diretivas padrão &#039;&#039;&#039;#include&#039;&#039;&#039; do ACS porque o arquivo incluído **não é compilado dentro** do binário final resultante.&lt;br /&gt;
&lt;br /&gt;
Usar bibliotecas pode ajudar a economizar espaço nos seus scripts (útil se você usa um editor de scripts com limite de tamanho, como o [[WadAuthor]]), além de reduzir duplicação de código e erros de copy-paste.&lt;br /&gt;
Quaisquer mudanças nas bibliotecas serão refletidas automaticamente em todos os scripts que as utilizam.&lt;br /&gt;
&lt;br /&gt;
O uso mais comum de bibliotecas é em projetos grandes, onde múltiplos mapas compartilham ACS, e também em mods auxiliares de gameplay que incluem seu próprio ACS via [[LOADACS]].&lt;br /&gt;
&lt;br /&gt;
== Criando bibliotecas ==&lt;br /&gt;
Um script ACS normal é marcado como biblioteca usando a diretiva &#039;&#039;&#039;#library&#039;&#039;&#039;, que deve ser a primeira instrução no arquivo:&lt;br /&gt;
&lt;br /&gt;
 #library &amp;quot;LIBNAME&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
O nome passado para a diretiva &#039;&#039;&#039;#library&#039;&#039;&#039; especifica o nome da biblioteca, limitado pelas regras padrão de nomes de lumps em WAD.&lt;br /&gt;
Depois de [[ACC|compilado]], o lump binário deve ser colocado no [[namespace|namespace]] de bibliotecas ACS com o mesmo nome usado na diretiva &#039;&#039;&#039;#library&#039;&#039;&#039;.&lt;br /&gt;
Editores modernos de recursos, como o [[SLADE 3]], conseguem automatizar esse processo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota:&#039;&#039;&#039; ao usar [[LOADACS]], scripts {{SType|enter}} e {{SType|open}} dentro da sua biblioteca serão executados em **todo** mapa (seguindo as regras de cada tipo de script).&lt;br /&gt;
&lt;br /&gt;
== Importando bibliotecas ==&lt;br /&gt;
Scripts podem importar bibliotecas usando a diretiva &#039;&#039;&#039;#import&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;libname.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
O caminho passado em &#039;&#039;&#039;#import&#039;&#039;&#039; especifica o fonte &#039;&#039;não compilado&#039;&#039; da biblioteca (e não o binário compilado). O caminho pode ser absoluto ou relativo (por exemplo, &amp;quot;/doom/levels/mymaps/foomap/lumps/lib/foolib.acs&amp;quot;).&lt;br /&gt;
Os seguintes elementos são importados da biblioteca:&lt;br /&gt;
&lt;br /&gt;
* [[Scripts]], tanto [[named script|nomeados]] quanto numerados (em caso de conflito número/nome, o que for carregado por último é usado {{verification}})&lt;br /&gt;
* [[Functions|Funções]]&lt;br /&gt;
* [[Constants|Constantes]] declaradas com a diretiva &#039;&#039;&#039;#libdefine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota:&#039;&#039;&#039; quando o [[ACC]] varre bibliotecas importadas, todas as diretivas &#039;&#039;&#039;#include&#039;&#039;&#039; dentro da biblioteca são ignoradas e esses arquivos não são varridos.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Abaixo há um exemplo curto e (espero) simples: uma biblioteca de objetivos de fase. Eu comentei mais do que normalmente comentaria, e isso assume que você já tem conhecimento básico de ACS (como [[loops|loops]], if, [[HudMessage]], #define, funções, [[arrays|arrays]] e variáveis). Se você não tiver, não fique tentando “quebrar a cabeça” com isso (e, se você não conhece essas coisas, provavelmente ainda não deveria estar usando bibliotecas).&lt;br /&gt;
&lt;br /&gt;
 //foolib.acs, o arquivo texto do script (biblioteca)&lt;br /&gt;
 #library &amp;quot;foolib&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_OBJECTIVES 4 // número máximo de objetivos por mapa&lt;br /&gt;
 &lt;br /&gt;
 // este array guarda os objetivos; ele é alterado cada vez que você entra em um novo mapa&lt;br /&gt;
 world str 0:objectives[];&lt;br /&gt;
 &lt;br /&gt;
 // esta função é chamada pelo script 999 (veja abaixo)&lt;br /&gt;
 function void printobjs(void)&lt;br /&gt;
 {&lt;br /&gt;
     [[HudMessage]](s:&amp;quot;Objectives\n\n&amp;quot;; &lt;br /&gt;
         {{const|HUDMSG_PLAIN}} | {{const|HUDMSG_LOG}}, 0, {{const|CR_RED}}, 0.0, 0.0, 5.0 );&lt;br /&gt;
     &lt;br /&gt;
     // imprime cada objetivo&lt;br /&gt;
     for(int x = 0; x &amp;lt; MAX_OBJECTIVES; x++)&lt;br /&gt;
     {&lt;br /&gt;
         [[HudMessage]](s:objectives[x]; &lt;br /&gt;
             {{const|HUDMSG_PLAIN}} | {{const|HUDMSG_LOG}}, 0, {{const|CR_WHITE}}, 0.0, (x * 0.1) + 0.1, 5.0);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // Este script roda toda vez que você entra em um novo mapa, mostrando os&lt;br /&gt;
 // objetivos de missão daquele mapa. Se você quiser que o jogador consiga&lt;br /&gt;
 // ver os objetivos depois que eles sumirem, você precisa configurar um alias&lt;br /&gt;
 // para “puke 999” em um lump [[KEYCONF]].&lt;br /&gt;
 script 999 {{SType|Enter}}&lt;br /&gt;
 {&lt;br /&gt;
     printobjs();&lt;br /&gt;
     [[delay]](35 * 5); // atraso de cinco segundos&lt;br /&gt;
     // note que delays não podem ser colocados em funções, por isso aparece aqui&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
 // este é um lump SCRIPTS para o map01&lt;br /&gt;
 #import &amp;quot;foolib.acs&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 script 100 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;Find the shotgun&amp;quot;;&lt;br /&gt;
     objectives[1] = &amp;quot;Get the blue key&amp;quot;;&lt;br /&gt;
     objectives[2] = &amp;quot;Destroy the computer&amp;quot;;&lt;br /&gt;
     objectives[3] = &amp;quot;Escape from the complex&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // Depois você coloca aqui embaixo os scripts que precisar para o mapa.&lt;br /&gt;
 // Se quiser, ao completar um objetivo você pode alterar a cor do objetivo&lt;br /&gt;
 // completado, para o jogador saber que concluiu. Por exemplo: o HudMessage&lt;br /&gt;
 // imprime tudo em branco; então o script abaixo roda quando você completa&lt;br /&gt;
 // o primeiro objetivo (objectives[0]).&lt;br /&gt;
 &lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;\cFFind the shotgun&amp;quot;;&lt;br /&gt;
     // o \cF no começo da string muda a cor para amarelo (ou dourado)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
 // este é um lump SCRIPTS para o map02&lt;br /&gt;
 #import &amp;quot;foolib.acs&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 script 100 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;Kill some imps&amp;quot;;&lt;br /&gt;
     objectives[1] = &amp;quot;Eat a cheeseburger&amp;quot;;&lt;br /&gt;
     objectives[2] = &amp;quot;Find a BFG&amp;quot;;&lt;br /&gt;
     objectives[3] = &amp;quot;&amp;quot;;&lt;br /&gt;
     // se você não quer que um objetivo apareça, deixe como string vazia&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note que este exemplo armazena cada objetivo nos scripts do mapa; você poderia armazenar na biblioteca, mas aí precisaria que os scripts de saída do mapa anotassem para qual mapa você está indo (não é difícil) e então selecionassem o array apropriado na biblioteca ao imprimir os objetivos.&lt;br /&gt;
[[Category:ACS]][[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Doom_Builder_ACS_Configuration&amp;diff=210</id>
		<title>Doom Builder ACS Configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Doom_Builder_ACS_Configuration&amp;diff=210"/>
		<updated>2026-03-08T17:09:43Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;A &amp;#039;&amp;#039;&amp;#039;Configuração ACS do Doom Builder&amp;#039;&amp;#039;&amp;#039; é a configuração que o Doom Builder usa no editor de scripts para fornecer realce de sintaxe e autocompletar com CTRL+SPACE. Ela existe aqui na wiki do ZDoom para que possa ser mantida atualizada da mesma forma que a documentação. Novas versões do Doom Builder usarão isto como fonte para o arquivo de configuração ACS e, quando possível, até para o arquivo de configuração de jogo do ZDoom.  Note que esta é a...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Configuração ACS do Doom Builder&#039;&#039;&#039; é a configuração que o [[Doom Builder]] usa no editor de scripts para fornecer realce de sintaxe e autocompletar com CTRL+SPACE. Ela existe aqui na wiki do ZDoom para que possa ser mantida atualizada da mesma forma que a documentação. Novas versões do [[Doom Builder]] usarão isto como fonte para o arquivo de configuração ACS e, quando possível, até para o arquivo de configuração de jogo do ZDoom.&lt;br /&gt;
&lt;br /&gt;
Note que esta é a configuração de scripts para o Doom Builder 1. Para usar esta lista no Doom Builder 2, você precisará modificar as configurações no topo (veja o ZDoom_ACS.cfg do Doom Builder 2 como exemplo).&lt;br /&gt;
&lt;br /&gt;
== Diretrizes de atualização ==&lt;br /&gt;
&lt;br /&gt;
Use estas diretrizes ao atualizar esta configuração, para que dê menos trabalho converter esta página em um arquivo acs.cfg do Doom Builder.&lt;br /&gt;
&lt;br /&gt;
* Sempre use MixedCase para nomes de funções, exatamente como o ACS define. &#039;&#039;&#039;Não&#039;&#039;&#039; force para UPPERCASE ou lowercase; isso pode ser feito no Doom Builder se necessário.&lt;br /&gt;
* Sempre use lowercase para os argumentos das funções.&lt;br /&gt;
* Cada linha deve ficar assim:  FunctionName = &amp;quot;FunctionName(argument, argument,...)&amp;quot;;&lt;br /&gt;
* Depois da vírgula entre argumentos, adicione um espaço. (fica mais legível)&lt;br /&gt;
* Não deixe espaços *dentro* dos argumentos.&lt;br /&gt;
** Errado: FunctionName = &amp;quot;FunctionName(first id, second id)&amp;quot;;&lt;br /&gt;
** Certo: FunctionName = &amp;quot;FunctionName(first, second)&amp;quot;;&lt;br /&gt;
* Tente manter um pouco em ordem alfabética para conseguirmos achar uma função facilmente ao procurar aqui. Porém, o Doom Builder não se importa com isso.&lt;br /&gt;
* Adicione um espaço no início de cada linha para que ela fique formatada em monospace.&lt;br /&gt;
&lt;br /&gt;
== A configuração ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*******************************************************************\&lt;br /&gt;
	Doom Builder Script highlighting definitions for ACS&lt;br /&gt;
\*******************************************************************/&lt;br /&gt;
&lt;br /&gt;
type = &amp;quot;Doom Builder Script Configuration&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
casesensitive = 0;&lt;br /&gt;
insertcase = 0;		// 0=Normal, 1=Lowercase, 2=Uppercase&lt;br /&gt;
linecomment = &amp;quot;//&amp;quot;;&lt;br /&gt;
commentopen = &amp;quot;/*&amp;quot;;&lt;br /&gt;
commentclose = &amp;quot;*/&amp;quot;;&lt;br /&gt;
string = &amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
escape = &amp;quot;\\&amp;quot;;&lt;br /&gt;
terminator = &amp;quot;;&amp;quot;;&lt;br /&gt;
scopeopen = &amp;quot;{&amp;quot;;&lt;br /&gt;
scopeclose = &amp;quot;}&amp;quot;;&lt;br /&gt;
delimiters = &amp;quot; \n\r\t(){}[]:;!%^&amp;amp;*-+=.,&amp;lt;&amp;gt;/\?|\&amp;quot;&amp;quot;;&lt;br /&gt;
functionopen = &amp;quot;(&amp;quot;;&lt;br /&gt;
functionclose = &amp;quot;)&amp;quot;;&lt;br /&gt;
argumentdelimiter = &amp;quot;,&amp;quot;;&lt;br /&gt;
keywordhelp = &amp;quot;http://www.zdoom.org/wiki/index.php?title=%K&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
keywords&lt;br /&gt;
{&lt;br /&gt;
	#Define = &amp;quot;#Define identifier expression&amp;quot;;&lt;br /&gt;
	#EncryptStrings = &amp;quot;#EncryptStrings&amp;quot;;&lt;br /&gt;
	#Import = &amp;quot;#Import&amp;quot;;&lt;br /&gt;
	#Include = &amp;quot;#Include&amp;quot;;&lt;br /&gt;
	#LibDefine = &amp;quot;#LibDefine identifier expression&amp;quot;;&lt;br /&gt;
	#Library = &amp;quot;#Library&amp;quot;;&lt;br /&gt;
	#NoCompact = &amp;quot;#NoCompact&amp;quot;;&lt;br /&gt;
	#NoWadAuthor = &amp;quot;#NoWadAuthor&amp;quot;;&lt;br /&gt;
	#WadAuthor = &amp;quot;#WadAuthor&amp;quot;;&lt;br /&gt;
	#region = &amp;quot;#region block&amp;quot;;&lt;br /&gt;
	#endregion = &amp;quot;end of #region block&amp;quot;;&lt;br /&gt;
	ACS_Execute = &amp;quot;ACS_Execute(script, map, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_ExecuteAlways = &amp;quot;ACS_ExecuteAlways(script, map, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_ExecuteWait = &amp;quot;ACS_ExecuteWait(script, unused, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_ExecuteWithResult = &amp;quot;ACS_ExecuteWithResult(script, arg1, arg2, arg3, arg4)&amp;quot;;&lt;br /&gt;
	ACS_LockedExecute = &amp;quot;ACS_LockedExecute(script, map, arg1, arg2, lock)&amp;quot;;&lt;br /&gt;
	ACS_LockedExecuteDoor = &amp;quot;ACS_LockedExecuteDoor(script, map, arg1, arg2, lock)&amp;quot;;&lt;br /&gt;
	ACS_NamedExecute = &amp;quot;ACS_NamedExecute(script, map, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_NamedExecuteAlways = &amp;quot;ACS_NamedExecuteAlways(script, map, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_NamedExecuteWait = &amp;quot;ACS_NamedExecuteWait(script, unused, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ACS_NamedExecuteWithResult = &amp;quot;ACS_NamedExecuteWithResult(script, arg1, arg2, arg3, arg4)&amp;quot;;&lt;br /&gt;
	ACS_NamedLockedExecute = &amp;quot;ACS_NamedLockedExecute(script, map, arg1, arg2, lock)&amp;quot;;&lt;br /&gt;
	ACS_NamedLockedExecuteDoor = &amp;quot;ACS_NamedLockedExecuteDoor(script, map, arg1, arg2, lock)&amp;quot;;&lt;br /&gt;
	ACS_NamedSuspend = &amp;quot;ACS_NamedSuspend(script, map)&amp;quot;;&lt;br /&gt;
	ACS_NamedTerminate = &amp;quot;ACS_NamedTerminate(script, map)&amp;quot;;&lt;br /&gt;
	ACS_Suspend = &amp;quot;ACS_Suspend(script, map)&amp;quot;;&lt;br /&gt;
	ACS_Terminate = &amp;quot;ACS_Terminate(script, map)&amp;quot;;&lt;br /&gt;
	ActivatorSound = &amp;quot;ActivatorSound(sound, volume)&amp;quot;;&lt;br /&gt;
	ActivatorTID = &amp;quot;ActivatorTID()&amp;quot;;&lt;br /&gt;
	AmbientSound = &amp;quot;AmbientSound(sound, volume)&amp;quot;;&lt;br /&gt;
	AnnouncerSound = &amp;quot;AnnouncerSound(sound, flags)&amp;quot;;&lt;br /&gt;
	Autosave = &amp;quot;Autosave()&amp;quot;;&lt;br /&gt;
	BeginDBTransaction = &amp;quot;BeginDBTransaction()&amp;quot;;&lt;br /&gt;
	BlueCount = &amp;quot;BlueCount()&amp;quot;;&lt;br /&gt;
	BlueReturn = &amp;quot;Script expression BlueReturn&amp;quot;;&lt;br /&gt;
	BlueScore = &amp;quot;BlueScore()&amp;quot;;&lt;br /&gt;
	BlueTeamCount = &amp;quot;BlueTeamCount()&amp;quot;;&lt;br /&gt;
	BlueTeamScore = &amp;quot;BlueTeamScore()&amp;quot;;&lt;br /&gt;
	Bool = &amp;quot;Bool expression&amp;quot;;&lt;br /&gt;
	Break = &amp;quot;Break&amp;quot;;&lt;br /&gt;
	CancelFade = &amp;quot;CancelFade()&amp;quot;;&lt;br /&gt;
	CanRaiseActor = &amp;quot;CanRaiseActor(tid)&amp;quot;;&lt;br /&gt;
	Case = &amp;quot;Case expression:&amp;quot;;&lt;br /&gt;
	Ceil = &amp;quot;Ceil(value)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushAndRaise = &amp;quot;Ceiling_CrushAndRaise(tag, speed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushAndRaiseA = &amp;quot;Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushAndRaiseDist = &amp;quot;Ceiling_CrushAndRaiseDist(tag, dist, speed, damage, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushAndRaiseSilentA = &amp;quot;Ceiling_CrushAndRaiseSilentA(tag, dspeed, uspeed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushAndRaiseSilentDist = &amp;quot;Ceiling_CrushAndRaiseSilentDist(tag, dist, speed, damage, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushRaiseAndStay = &amp;quot;Ceiling_CrushRaiseAndStay(tag, speed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushRaiseAndStayA = &amp;quot;Ceiling_CrushRaiseAndStayA(tag, dspeed, uspeed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushRaiseAndStaySilA = &amp;quot;Ceiling_CrushRaiseAndStaySilA(tag, dspeed, uspeed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_CrushStop = &amp;quot;Ceiling_CrushStop(tag)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerAndCrush = &amp;quot;Ceiling_LowerAndCrush(tag, speed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerAndCrushDist = &amp;quot;Ceiling_LowerAndCrushDist(tag, speed, crush, dist, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerByTexture = &amp;quot;Ceiling_LowerByTexture(tag, speed, change, crush)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerByValue = &amp;quot;Ceiling_LowerByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerByValueTimes8 = &amp;quot;Ceiling_LowerByValueTimes8(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerInstant = &amp;quot;Ceiling_LowerInstant(tag, unused, height)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerToFloor = &amp;quot;Ceiling_LowerToFloor(tag, speed)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerToHighestFloor = &amp;quot;Ceiling_LowerToHighestFloor(tag, speed)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerToLowest = &amp;quot;Ceiling_LowerToLowest(tag, speed)&amp;quot;;&lt;br /&gt;
	Ceiling_LowerToNearest = &amp;quot;Ceiling_LowerToNearest(tag, speed, change, crush)&amp;quot;;&lt;br /&gt;
	Ceiling_MoveToValue = &amp;quot;Ceiling_MoveToValue(tag, speed, height, neg)&amp;quot;;&lt;br /&gt;
	Ceiling_MoveToValueAndCrush = &amp;quot;Ceiling_MoveToValueAndCrush(tag, speed, height, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Ceiling_MoveToValueTimes8 = &amp;quot;Ceiling_MoveToValueTimes8(tag, speed, height, neg)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseByTexture = &amp;quot;Ceiling_RaiseByTexture(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseByValue = &amp;quot;Ceiling_RaiseByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseByValueTimes8 = &amp;quot;Ceiling_RaiseByValueTimes8(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseInstant = &amp;quot;Ceiling_RaiseInstant(tag, unused, height)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseToHighest = &amp;quot;Ceiling_RaiseToHighest(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseToHighestFloor = &amp;quot;Ceiling_RaiseToHighestFloor(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseToLowest = &amp;quot;Ceiling_RaiseToLowest(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Ceiling_RaiseToNearest = &amp;quot;Ceiling_RaiseToNearest(tag, speed)&amp;quot;;&lt;br /&gt;
	Ceiling_Stop = &amp;quot;Ceiling_Stop(tag)&amp;quot;;&lt;br /&gt;
	Ceiling_ToFloorInstant = &amp;quot;Ceiling_ToFloorInstant(tag, change, crush, gap)&amp;quot;;&lt;br /&gt;
	Ceiling_ToHighestInstant = &amp;quot;Ceiling_ToHighestInstant(tag, change, crush)&amp;quot;;&lt;br /&gt;
	Ceiling_Waggle = &amp;quot;Ceiling_Waggle(tag, amp, freq, offset, time)&amp;quot;;&lt;br /&gt;
	ChangeActorAngle = &amp;quot;ChangeActorAngle(tid, angle, interpolate)&amp;quot;;&lt;br /&gt;
	ChangeActorPitch = &amp;quot;ChangeActorPitch(tid, pitch, interpolate)&amp;quot;;&lt;br /&gt;
	ChangeActorRoll = &amp;quot;ChangeActorRoll(tid, angle, interpolate)&amp;quot;;&lt;br /&gt;
	ChangeCamera = &amp;quot;ChangeCamera(tid, who, revert)&amp;quot;;&lt;br /&gt;
	ChangeCeiling = &amp;quot;ChangeCeiling(tag, flat)&amp;quot;;&lt;br /&gt;
	ChangeFloor = &amp;quot;ChangeFloor(tag, flat)&amp;quot;;&lt;br /&gt;
	ChangeLevel = &amp;quot;ChangeLevel(mapname, position, flags, skill)&amp;quot;;&lt;br /&gt;
	ChangeSkill = &amp;quot;ChangeSkill(skill)&amp;quot;;&lt;br /&gt;
	ChangeSky = &amp;quot;ChangeSky(sky1, sky2)&amp;quot;;&lt;br /&gt;
	CheckActorCeilingTexture = &amp;quot;CheckActorCeilingTexture(tid, texture)&amp;quot;;&lt;br /&gt;
	CheckActorClass = &amp;quot;CheckActorClass(tid, class)&amp;quot;;&lt;br /&gt;
	CheckActorFloorTexture = &amp;quot;CheckActorFloorTexture(tid, texture)&amp;quot;;&lt;br /&gt;
	CheckActorInventory = &amp;quot;CheckActorInventory(tid, inventoryitem)&amp;quot;;&lt;br /&gt;
	CheckActorProperty = &amp;quot;CheckActorProperty(tid, property, value)&amp;quot;;&lt;br /&gt;
	CheckActorState = &amp;quot;CheckActorState(tid, statename, exact)&amp;quot;;&lt;br /&gt;
	CheckClass = &amp;quot;CheckClass(classname)&amp;quot;;&lt;br /&gt;
	CheckFlag = &amp;quot;CheckFlag(tid, flag)&amp;quot;;&lt;br /&gt;
	CheckFont = &amp;quot;CheckFont(fontname)&amp;quot;;&lt;br /&gt;
	CheckInventory = &amp;quot;CheckInventory(inventoryitem)&amp;quot;;&lt;br /&gt;
	CheckPlayerCamera = &amp;quot;CheckPlayerCamera(player)&amp;quot;;&lt;br /&gt;
	CheckProximity = &amp;quot;CheckProximity(tid, classname, distance, count, flags, pointer)&amp;quot;;&lt;br /&gt;
	CheckSight = &amp;quot;CheckSight(source, dest, flags)&amp;quot;;&lt;br /&gt;
	CheckWeapon = &amp;quot;CheckWeapon(weapon)&amp;quot;;&lt;br /&gt;
	ClassifyActor = &amp;quot;ClassifyActor(tid)&amp;quot;;&lt;br /&gt;
	ClearActorInventory = &amp;quot;ClearActorInventory(tid)&amp;quot;;&lt;br /&gt;
	ClearForceField = &amp;quot;ClearForceField(tag)&amp;quot;;&lt;br /&gt;
	ClearInventory = &amp;quot;ClearInventory()&amp;quot;;&lt;br /&gt;
	ClearLineSpecial = &amp;quot;ClearLineSpecial()&amp;quot;;&lt;br /&gt;
	ConsoleCommand = &amp;quot;ConsoleCommand(command)&amp;quot;;&lt;br /&gt;
	ConsolePlayerNumber = &amp;quot;ConsolePlayerNumber()&amp;quot;;&lt;br /&gt;
	Const = &amp;quot;Const&amp;quot;;&lt;br /&gt;
	Continue = &amp;quot;Continue&amp;quot;;&lt;br /&gt;
	cos = &amp;quot;cos(angle)&amp;quot;;&lt;br /&gt;
	CountDBResults = &amp;quot;CountDBResults(results)&amp;quot;;&lt;br /&gt;
	CreateTranslation = &amp;quot;CreateTranslation(transnumber, translation, translation, translation, ...)&amp;quot;;&lt;br /&gt;
	DamageActor = &amp;quot;DamageActor(target_tid, target_pointer, inflictor_tid, inflictor_pointer, amount, damagetype)&amp;quot;;&lt;br /&gt;
	DamageThing = &amp;quot;DamageThing(amount, mod)&amp;quot;;&lt;br /&gt;
	Death = &amp;quot;Script expression Death&amp;quot;;&lt;br /&gt;
	Default = &amp;quot;Default:&amp;quot;;&lt;br /&gt;
	Delay = &amp;quot;Delay(tics)&amp;quot;;&lt;br /&gt;
	Disconnect = &amp;quot;Script expression Disconnect&amp;quot;;&lt;br /&gt;
	Do = &amp;quot;Do&amp;quot;;&lt;br /&gt;
	Door_Animated = &amp;quot;Door_Animated(tag, speed, delay, lock)&amp;quot;;&lt;br /&gt;
	Door_AnimatedClose = &amp;quot;Door_AnimatedClose(tag, speed)&amp;quot;;&lt;br /&gt;
	Door_Close = &amp;quot;Door_Close(tag, speed, lighttag)&amp;quot;;&lt;br /&gt;
	Door_CloseWaitOpen = &amp;quot;Door_CloseWaitOpen(tag, speed, delay, lighttag)&amp;quot;;&lt;br /&gt;
	Door_LockedRaise = &amp;quot;Door_LockedRaise(tag, speed, delay, lock, lighttag)&amp;quot;;&lt;br /&gt;
	Door_Open = &amp;quot;Door_Open(tag, speed, lighttag)&amp;quot;;&lt;br /&gt;
	Door_Raise = &amp;quot;Door_Raise(tag, speed, delay, lighttag)&amp;quot;;&lt;br /&gt;
	Door_WaitClose = &amp;quot;Door_WaitClose(tag, speed, wait, lighttag)&amp;quot;;&lt;br /&gt;
	Door_WaitRaise = &amp;quot;Door_WaitRaise(tag, speed, delay, wait, lighttag)&amp;quot;;&lt;br /&gt;
	DropInventory = &amp;quot;DropInventory(tid, item)&amp;quot;;&lt;br /&gt;
	DropItem = &amp;quot;DropItem(tid, item, dropamount, chance)&amp;quot;;&lt;br /&gt;
	Elevator_LowerToNearest = &amp;quot;Elevator_LowerToNearest(tag, speed)&amp;quot;;&lt;br /&gt;
	Elevator_MoveToFloor = &amp;quot;Elevator_MoveToFloor(tag, speed)&amp;quot;;&lt;br /&gt;
	Elevator_RaiseToNearest = &amp;quot;Elevator_RaiseToNearest(tag, speed)&amp;quot;;&lt;br /&gt;
	Else = &amp;quot;Else&amp;quot;;&lt;br /&gt;
	EndDBTransaction = &amp;quot;EndDBTransaction()&amp;quot;;&lt;br /&gt;
	Enter = &amp;quot;Script expression Enter&amp;quot;;&lt;br /&gt;
	Exit_Normal = &amp;quot;Exit_Normal(pos)&amp;quot;;&lt;br /&gt;
	Exit_Secret = &amp;quot;Exit_Secret(pos)&amp;quot;;&lt;br /&gt;
	FadeRange = &amp;quot;FadeRange(red1, green1, blue1, amount1, red2, green2, blue2, amount2, seconds)&amp;quot;;&lt;br /&gt;
	FadeTo = &amp;quot;FadeTo(red, green, blue, amount, seconds)&amp;quot;;&lt;br /&gt;
	FixedDiv = &amp;quot;FixedDiv(a, b)&amp;quot;;&lt;br /&gt;
	FixedMul = &amp;quot;FixedMul(a, b)&amp;quot;;&lt;br /&gt;
	FixedSqrt = &amp;quot;FixedSqrt(number)&amp;quot;;&lt;br /&gt;
	Floor = &amp;quot;Floor(value)&amp;quot;;&lt;br /&gt;
	Floor_CrushStop = &amp;quot;Floor_CrushStop(tag)&amp;quot;;&lt;br /&gt;
	Floor_Donut = &amp;quot;Floor_Donut(ptag, pspeed, sspeed)&amp;quot;;&lt;br /&gt;
	Floor_LowerByTexture = &amp;quot;Floor_LowerByTexture(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Floor_LowerByValue = &amp;quot;Floor_LowerByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Floor_LowerByValueTimes8 = &amp;quot;Floor_LowerByValueTimes8(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Floor_LowerInstant = &amp;quot;Floor_LowerInstant(tag, unused, height)&amp;quot;;&lt;br /&gt;
	Floor_LowerToHighest = &amp;quot;Floor_LowerToHighest(tag, speed, adjust, force_adjust)&amp;quot;;&lt;br /&gt;
	Floor_LowerToHighestEE = &amp;quot;Floor_LowerToHighestEE(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Floor_LowerToLowest = &amp;quot;Floor_LowerToLowest(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_LowerToLowestCeiling = &amp;quot;Floor_LowerToLowestCeiling(tag, speed, change)&amp;quot;;&lt;br /&gt;
	Floor_LowerToLowestTxTy = &amp;quot;Floor_LowerToLowestTxTy(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_LowerToNearest = &amp;quot;Floor_LowerToNearest(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_MoveToValue = &amp;quot;Floor_MoveToValue(tag, speed, height, neg)&amp;quot;;&lt;br /&gt;
	Floor_MoveToValueAndCrush = &amp;quot;Floor_MoveToValueAndCrush(tag, speed, height, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Floor_MoveToValueTimes8 = &amp;quot;Floor_MoveToValueTimes8(tag, speed, height, neg)&amp;quot;;&lt;br /&gt;
	Floor_RaiseAndCrush = &amp;quot;Floor_RaiseAndCrush(tag, speed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Floor_RaiseAndCrushDoom = &amp;quot;Floor_RaiseAndCrushDoom(tag, speed, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Floor_RaiseByTexture = &amp;quot;Floor_RaiseByTexture(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_RaiseByValue = &amp;quot;Floor_RaiseByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Floor_RaiseByValueTimes8 = &amp;quot;Floor_RaiseByValueTimes8(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Floor_RaiseByValueTxTy = &amp;quot;Floor_RaiseByValueTxTy(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Floor_RaiseInstant = &amp;quot;Floor_RaiseInstant(tag, unused, height)&amp;quot;;&lt;br /&gt;
	Floor_RaiseToCeiling = &amp;quot;Floor_RaiseToCeiling(tag, speed, change, crush, gap)&amp;quot;;&lt;br /&gt;
	Floor_RaiseToHighest = &amp;quot;Floor_RaiseToHighest(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_RaiseToLowest = &amp;quot;Floor_RaiseToLowest(tag, change, crush)&amp;quot;;&lt;br /&gt;
	Floor_RaiseToLowestCeiling = &amp;quot;Floor_RaiseToLowestCeiling(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_RaiseToNearest = &amp;quot;Floor_RaiseToNearest(tag, speed)&amp;quot;;&lt;br /&gt;
	Floor_Stop = &amp;quot;Floor_Stop(tag)&amp;quot;;&lt;br /&gt;
	Floor_ToCeilingInstant = &amp;quot;Floor_ToCeilingInstant(tag, change, crush, gap)&amp;quot;;&lt;br /&gt;
	Floor_TransferNumeric = &amp;quot;Floor_TransferNumeric(tag)&amp;quot;;&lt;br /&gt;
	Floor_TransferTrigger = &amp;quot;Floor_TransferTrigger(tag)&amp;quot;;&lt;br /&gt;
	Floor_Waggle = &amp;quot;Floor_Waggle(tag, amp, freq, offset, time)&amp;quot;;&lt;br /&gt;
	FloorAndCeiling_LowerByValue = &amp;quot;FloorAndCeiling_LowerByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	FloorAndCeiling_LowerRaise = &amp;quot;FloorAndCeiling_LowerRaise(tag, fspeed, cspeed, boomemu)&amp;quot;;&lt;br /&gt;
	FloorAndCeiling_RaiseByValue = &amp;quot;FloorAndCeiling_RaiseByValue(tag, speed, height)&amp;quot;;&lt;br /&gt;
	For = &amp;quot;For(initialization; condition; iteration)&amp;quot;;&lt;br /&gt;
	ForceField = &amp;quot;ForceField()&amp;quot;;&lt;br /&gt;
	FreeDBResults = &amp;quot;FreeDBResults(results)&amp;quot;;&lt;br /&gt;
	FS_Execute = &amp;quot;FS_Execute(script, side, keynum, message)&amp;quot;;&lt;br /&gt;
	Function = &amp;quot;Function Void expression (Void)&amp;quot;;&lt;br /&gt;
	GameSkill = &amp;quot;GameSkill()&amp;quot;;&lt;br /&gt;
	GameType = &amp;quot;GameType()&amp;quot;;&lt;br /&gt;
	Generic_Ceiling = &amp;quot;Generic_Ceiling(tag, speed, height, target, flag)&amp;quot;;&lt;br /&gt;
	Generic_Crusher = &amp;quot;Generic_Crusher(tag, dspeed, uspeed, silent, crush)&amp;quot;;&lt;br /&gt;
	Generic_CrusherDist = &amp;quot;Generic_CrusherDist(tag, dspeed, uspeed, silent, crush)&amp;quot;;&lt;br /&gt;
	Generic_Crusher2 = &amp;quot;Generic_Crusher2(tag, dspeed, uspeed, silent, crush)&amp;quot;;&lt;br /&gt;
	Generic_Door = &amp;quot;Generic_Door(tag, speed, kind, delay, lock)&amp;quot;;&lt;br /&gt;
	Generic_Floor = &amp;quot;Generic_Floor(tag, speed, height, target, flags)&amp;quot;;&lt;br /&gt;
	Generic_Lift = &amp;quot;Generic_Lift(tag, speed, delay, type, height)&amp;quot;;&lt;br /&gt;
	Generic_Stairs = &amp;quot;Generic_Stairs(tag, speed, height, flags, reset)&amp;quot;;&lt;br /&gt;
	GetActorAngle = &amp;quot;GetActorAngle(tid)&amp;quot;;&lt;br /&gt;
	GetActorCeilingZ = &amp;quot;GetActorCeilingZ(tid)&amp;quot;;&lt;br /&gt;
	GetActorClass = &amp;quot;GetActorClass(tid)&amp;quot;;&lt;br /&gt;
	GetActorFloorTerrain = &amp;quot;GetActorFloorTerrain(tid)&amp;quot;;&lt;br /&gt;
	GetActorFloorTexture = &amp;quot;GetActorFloorTexture(tid)&amp;quot;;&lt;br /&gt;
	GetActorFloorZ = &amp;quot;GetActorFloorZ(tid)&amp;quot;;&lt;br /&gt;
	GetActorLightLevel = &amp;quot;GetActorLightLevel(tid)&amp;quot;;&lt;br /&gt;
	GetActorPitch = &amp;quot;GetActorPitch(tid)&amp;quot;;&lt;br /&gt;
	GetActorPowerupTics = &amp;quot;GetActorPowerupTics(tid, powerup)&amp;quot;;&lt;br /&gt;
	GetActorProperty = &amp;quot;GetActorProperty(tid, property)&amp;quot;;&lt;br /&gt;
	GetActorRoll = &amp;quot;GetActorRoll(tid)&amp;quot;;&lt;br /&gt;
	GetActorVelX = &amp;quot;GetActorVelX(tid)&amp;quot;;&lt;br /&gt;
	GetActorVelY = &amp;quot;GetActorVelY(tid)&amp;quot;;&lt;br /&gt;
	GetActorVelZ = &amp;quot;GetActorVelZ(tid)&amp;quot;;&lt;br /&gt;
	GetActorViewHeight = &amp;quot;GetActorViewHeight(tid)&amp;quot;;&lt;br /&gt;
	GetActorX = &amp;quot;GetActorX(tid)&amp;quot;;&lt;br /&gt;
	GetActorY = &amp;quot;GetActorY(tid)&amp;quot;;&lt;br /&gt;
	GetActorZ = &amp;quot;GetActorZ(tid)&amp;quot;;&lt;br /&gt;
	GetAirSupply = &amp;quot;GetAirSupply(playernumber)&amp;quot;;&lt;br /&gt;
	GetAmmoCapacity = &amp;quot;GetAmmoCapacity(ammotype)&amp;quot;;&lt;br /&gt;
	GetArmorInfo = &amp;quot;GetArmorInfo(infotype)&amp;quot;;&lt;br /&gt;
	GetArmorType = &amp;quot;GetArmorType(armortype, playernumber)&amp;quot;;&lt;br /&gt;
	GetChar = &amp;quot;GetChar(string, index)&amp;quot;;&lt;br /&gt;
	GetCVar = &amp;quot;GetCVar(cvarname)&amp;quot;;&lt;br /&gt;
	GetCVarString = &amp;quot;GetCVarString(cvarname)&amp;quot;;&lt;br /&gt;
	GetDBEntries = &amp;quot;GetDBEntries(namespace)&amp;quot;;&lt;br /&gt;
	GetDBEntry = &amp;quot;GetDBEntry(namespace, key)&amp;quot;;&lt;br /&gt;
	GetDBEntryRank = &amp;quot;GetDBEntryRank(namespace, key, order)&amp;quot;;&lt;br /&gt;
	GetDBEntryString = &amp;quot;GetDBEntryString(namespace, key, order)&amp;quot;;&lt;br /&gt;
	GetDBResultKeyString = &amp;quot;GetDBResultKeyString(results, row)&amp;quot;;&lt;br /&gt;
	GetDBResultValue = &amp;quot;GetDBResultValue(results, row)&amp;quot;;&lt;br /&gt;
	GetDBResultValueString = &amp;quot;GetDBResultValueString(results, row)&amp;quot;;&lt;br /&gt;
	GetGamemodeState = &amp;quot;GetGamemodeState()&amp;quot;;&lt;br /&gt;
	GetInvasionState = &amp;quot;GetInvasionState()&amp;quot;;&lt;br /&gt;
	GetInvasionWave = &amp;quot;GetInvasionWave()&amp;quot;;&lt;br /&gt;
	GetLevelInfo = &amp;quot;GetLevelInfo(levelinfo)&amp;quot;;&lt;br /&gt;
	GetLineActivation = &amp;quot;GetLineActivation(lineid)&amp;quot;;&lt;br /&gt;
	GetLineHealth = &amp;quot;GetLineHealth(lineid)&amp;quot;;&lt;br /&gt;
	GetLineRowOffset = &amp;quot;GetLineRowOffset()&amp;quot;;&lt;br /&gt;
	GetLineUDMFFixed = &amp;quot;GetLineUDMFFixed(lineid, key)&amp;quot;;&lt;br /&gt;
	GetLineUDMFInt = &amp;quot;GetLineUDMFInt(lineid, key)&amp;quot;;&lt;br /&gt;
	GetLineX = &amp;quot;GetLineX(unknown parameter list)&amp;quot;;&lt;br /&gt;
	GetLineY = &amp;quot;GetLineY(unknown parameter list)&amp;quot;;&lt;br /&gt;
	GetMaxInventory = &amp;quot;GetMaxInventory(tid, inventory)&amp;quot;;&lt;br /&gt;
	GetNetID = &amp;quot;GetNetID(tid, index, pointer)&amp;quot;;&lt;br /&gt;
	GetPlayerAccountName = &amp;quot;GetPlayerAccountName(player)&amp;quot;;&lt;br /&gt;
	GetPlayerInfo = &amp;quot;GetPlayerInfo(playernumber, playerinfo)&amp;quot;;&lt;br /&gt;
	GetPlayerInput = &amp;quot;GetPlayerInput(playernumber, input)&amp;quot;;&lt;br /&gt;
	GetPlayerLivesLeft = &amp;quot;GetPlayerLivesLeft(player)&amp;quot;;&lt;br /&gt;
	GetPolyobjX = &amp;quot;GetPolyobjX(polyid)&amp;quot;;&lt;br /&gt;
	GetPolyobjY = &amp;quot;GetPolyobjY(polyid)&amp;quot;;&lt;br /&gt;
	GetScreenHeight = &amp;quot;GetScreenHeight()&amp;quot;;&lt;br /&gt;
	GetScreenWidth = &amp;quot;GetScreenWidth()&amp;quot;;&lt;br /&gt;
	GetSectorCeilingZ = &amp;quot;GetSectorCeilingZ(tag, x, y)&amp;quot;;&lt;br /&gt;
	GetSectorFloorZ = &amp;quot;GetSectorFloorZ(tag, x, y)&amp;quot;;&lt;br /&gt;
	GetSectorHealth = &amp;quot;GetSectorHealth(tag, part)&amp;quot;;&lt;br /&gt;
	GetSectorLightLevel = &amp;quot;GetSectorLightLevel(tag)&amp;quot;;&lt;br /&gt;
	GetSectorUDMFFixed = &amp;quot;GetSectorUDMFFixed(tag, key)&amp;quot;;&lt;br /&gt;
	GetSectorUDMFInt = &amp;quot;GetSectorUDMFInt(tag, key)&amp;quot;;&lt;br /&gt;
	GetSideUDMFFixed = &amp;quot;GetSideUDMFFixed(lineid, side, key)&amp;quot;;&lt;br /&gt;
	GetSideUDMFInt = &amp;quot;GetSideUDMFInt(lineid, side, key)&amp;quot;;&lt;br /&gt;
	GetSigilPieces = &amp;quot;GetSigilPieces()&amp;quot;;&lt;br /&gt;
	GetTeamProperty = &amp;quot;GetTeamProperty(team, property)&amp;quot;;&lt;br /&gt;
	GetThingUDMFFixed = &amp;quot;GetThingUDMFFixed(tid, key)&amp;quot;;&lt;br /&gt;
	GetThingUDMFInt = &amp;quot;GetThingUDMFInt(tid, key)&amp;quot;;&lt;br /&gt;
	GetTimeProperty = &amp;quot;GetTimeProperty(timestamp, which, utc)&amp;quot;;&lt;br /&gt;
	GetUserArray = &amp;quot;GetUserArray(tid, name, pos)&amp;quot;;&lt;br /&gt;
	GetUserCVar = &amp;quot;GetUserCVar(playernum, cvarname)&amp;quot;;&lt;br /&gt;
	GetUserCVarString = &amp;quot;GetUserCVarString(playernum, cvarname)&amp;quot;;&lt;br /&gt;
	GetUserVariable = &amp;quot;GetUserVariable(tid, name)&amp;quot;;&lt;br /&gt;
	GetWeapon = &amp;quot;GetWeapon()&amp;quot;;&lt;br /&gt;
	GiveActorInventory = &amp;quot;GiveActorInventory(tid, inventoryitem, amount)&amp;quot;;&lt;br /&gt;
	GiveInventory = &amp;quot;GiveInventory(inventoryitem, amount)&amp;quot;;&lt;br /&gt;
	GlassBreak = &amp;quot;GlassBreak(dontspawnjunk)&amp;quot;;&lt;br /&gt;
	Global = &amp;quot;Global Int expression:identifier&amp;quot;;&lt;br /&gt;
	HealThing = &amp;quot;HealThing(amount)&amp;quot;;&lt;br /&gt;
	HudMessage = &amp;quot;HudMessage(text; type, id, color, x, y, holdtime, alpha)&amp;quot;;&lt;br /&gt;
	HudMessageBold = &amp;quot;HudMessageBold(text; type, id, color, x, y, holdtime, alpha)&amp;quot;;&lt;br /&gt;
	If = &amp;quot;If(expression)&amp;quot;;&lt;br /&gt;
	IncrementDBEntry = &amp;quot;IncrementDBEntry(namespace, key, value)&amp;quot;;&lt;br /&gt;
	Int = &amp;quot;Int expression&amp;quot;;&lt;br /&gt;
	IsMultiplayer = &amp;quot;IsMultiplayer()&amp;quot;;&lt;br /&gt;
	IsNetworkGame = &amp;quot;IsNetworkGame()&amp;quot;;&lt;br /&gt;
	IsOneFlagCTF = &amp;quot;IsOneFlagCTF()&amp;quot;;&lt;br /&gt;
	IsPointerEqual = &amp;quot;IsPointerEqual(ptr_select1, ptr_select2, tid1, tid2)&amp;quot;;&lt;br /&gt;
	IsTIDUsed = &amp;quot;IsTIDUsed(tid)&amp;quot;;&lt;br /&gt;
	KickFromGame = &amp;quot;KickFromGame(player, reason)&amp;quot;;&lt;br /&gt;
	Kill = &amp;quot;Script expression Kill&amp;quot;;&lt;br /&gt;
	Light_ChangeToValue = &amp;quot;Light_ChangeToValue(tag, value)&amp;quot;;&lt;br /&gt;
	Light_Fade = &amp;quot;Light_Fade(tag, value, tics)&amp;quot;;&lt;br /&gt;
	Light_Flicker = &amp;quot;Light_Flicker(tag, upper, lower)&amp;quot;;&lt;br /&gt;
	Light_ForceLightning = &amp;quot;Light_ForceLightning(mode)&amp;quot;;&lt;br /&gt;
	Light_Glow = &amp;quot;Light_Glow(tag, upper, lower, tics)&amp;quot;;&lt;br /&gt;
	Light_LowerByValue = &amp;quot;Light_LowerByValue(tag, value)&amp;quot;;&lt;br /&gt;
	Light_MaxNeighbor = &amp;quot;Light_MaxNeighbor(tag)&amp;quot;;&lt;br /&gt;
	Light_MinNeighbor = &amp;quot;Light_MinNeighbor(tag)&amp;quot;;&lt;br /&gt;
	Light_RaiseByValue = &amp;quot;Light_RaiseByValue(tag, value)&amp;quot;;&lt;br /&gt;
	Light_Stop = &amp;quot;Light_Stop(tag)&amp;quot;;&lt;br /&gt;
	Light_Strobe = &amp;quot;Light_Strobe(tag, upper, lower, u-tics, l-tics)&amp;quot;;&lt;br /&gt;
	Light_StrobeDoom = &amp;quot;Light_StrobeDoom(tag, u-tics, l-tics)&amp;quot;;&lt;br /&gt;
	Lightning = &amp;quot;Script expression Lightning&amp;quot;;&lt;br /&gt;
	Line_AlignCeiling = &amp;quot;Line_AlignCeiling(lineid, side)&amp;quot;;&lt;br /&gt;
	Line_AlignFloor = &amp;quot;Line_AlignFloor(lineid, side)&amp;quot;;&lt;br /&gt;
	Line_SetAutomapFlags = &amp;quot;Line_SetAutomapFlags(lineid, setflags, clearflags)&amp;quot;;&lt;br /&gt;
	Line_SetAutomapStyle = &amp;quot;Line_SetAutomapStyle(lineid, style)&amp;quot;;&lt;br /&gt;
	Line_SetBlocking = &amp;quot;Line_SetBlocking(lineid, setflags, clearflags)&amp;quot;;&lt;br /&gt;
	Line_SetHealth = &amp;quot;Line_SetHealth(lineid, health)&amp;quot;;&lt;br /&gt;
	Line_SetPortalTarget = &amp;quot;Line_SetPortalTarget(sourceline, targetline)&amp;quot;;&lt;br /&gt;
	Line_SetTextureOffset = &amp;quot;Line_SetTextureOffset(lineid, x, y, side, flags)&amp;quot;;&lt;br /&gt;
	Line_SetTextureScale = &amp;quot;Line_SetTextureScale(lineid, x, y, side, flags)&amp;quot;;&lt;br /&gt;
	LineAttack = &amp;quot;LineAttack(tid, angle, pitch, damage, pufftype, damagetype, range, flags, pufftid)&amp;quot;;&lt;br /&gt;
	LineSide = &amp;quot;LineSide()&amp;quot;;&lt;br /&gt;
	LocalAmbientSound = &amp;quot;LocalAmbientSound(sound, volume)&amp;quot;;&lt;br /&gt;
	LocalSetMusic = &amp;quot;LocalSetMusic(song, order, unused)&amp;quot;;&lt;br /&gt;
	Log = &amp;quot;Log(type:expression)&amp;quot;;&lt;br /&gt;
	MorphActor = &amp;quot;MorphActor(tid, playerclass, monsterclass, duration, style, morphflash, unmorphflash)&amp;quot;;&lt;br /&gt;
	Music_Change = &amp;quot;Music_Change(music, pattern)&amp;quot;;&lt;br /&gt;
	NamedRequestScriptPuke = &amp;quot;NamedRequestScriptPuke(script, arg0, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	NamedScriptWait = &amp;quot;NamedScriptWait(script)&amp;quot;;&lt;br /&gt;
	Net = &amp;quot;Script expression Net&amp;quot;;&lt;br /&gt;
	NoiseAlert = &amp;quot;NoiseAlert(target_tid, emiter_tid)&amp;quot;;&lt;br /&gt;
	Open = &amp;quot;Script expression Open&amp;quot;;&lt;br /&gt;
	PickActor = &amp;quot;PickActor(source_tid, angle, pitch, distance, new_tid, actor_mask, wall_mask, flags)&amp;quot;;&lt;br /&gt;
	Pickup = &amp;quot;Script expression Pickup&amp;quot;;&lt;br /&gt;
	Pillar_Build = &amp;quot;Pillar_Build(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Pillar_BuildAndCrush = &amp;quot;Pillar_BuildAndCrush(tag, speed, height, crush, crushmode)&amp;quot;;&lt;br /&gt;
	Pillar_Open = &amp;quot;Pillar_Open(tag, speed, fdist, cdist)&amp;quot;;&lt;br /&gt;
	Plat_DownByValue = &amp;quot;Plat_DownByValue(tag, speed, delay, height)&amp;quot;;&lt;br /&gt;
	Plat_DownWaitUpStay = &amp;quot;Plat_DownWaitUpStay(tag, speed, delay)&amp;quot;;&lt;br /&gt;
	Plat_DownWaitUpStayLip = &amp;quot;Plat_DownWaitUpStayLip(tag, speed, delay, lip, sound)&amp;quot;;&lt;br /&gt;
	Plat_PerpetualRaise = &amp;quot;Plat_PerpetualRaise(tag, speed, delay)&amp;quot;;&lt;br /&gt;
	Plat_PerpetualRaiseLip = &amp;quot;Plat_PerpetualRaiseLip(tag, speed, delay, lip)&amp;quot;;&lt;br /&gt;
	Plat_RaiseAndStayTx0 = &amp;quot;Plat_RaiseAndStayTx0(tag, speed, lockout)&amp;quot;;&lt;br /&gt;
	Plat_Stop = &amp;quot;Plat_Stop(tag)&amp;quot;;&lt;br /&gt;
	Plat_ToggleCeiling = &amp;quot;Plat_ToggleCeiling(tag)&amp;quot;;&lt;br /&gt;
	Plat_UpByValue = &amp;quot;Plat_UpByValue(tag, speed, delay, height)&amp;quot;;&lt;br /&gt;
	Plat_UpByValueStayTx = &amp;quot;Plat_UpByValueStayTx(tag, speed, height)&amp;quot;;&lt;br /&gt;
	Plat_UpNearestWaitDownStay = &amp;quot;Plat_UpNearestWaitDownStay(tag, speed, delay)&amp;quot;;&lt;br /&gt;
	Plat_UpWaitDownStay = &amp;quot;Plat_UpWaitDownStay(tag, speed, delay)&amp;quot;;&lt;br /&gt;
	PlayActorSound = &amp;quot;PlayActorSound(tid, sound, channel, volume, looping, attenuation)&amp;quot;;&lt;br /&gt;
	Player_GiveItem = &amp;quot;Player_GiveItem(unknown parameters list)&amp;quot;;&lt;br /&gt;
	Player_RemoveItem = &amp;quot;Player_RemoveItem(unknown parameters list)&amp;quot;;&lt;br /&gt;
	Player_SetTeam = &amp;quot;Player_SetTeam(team)&amp;quot;;&lt;br /&gt;
	PlayerArmorpoints = &amp;quot;PlayerArmorpoints()&amp;quot;;&lt;br /&gt;
	PlayerClass = &amp;quot;PlayerClass(playernumber)&amp;quot;;&lt;br /&gt;
	PlayerCount = &amp;quot;PlayerCount()&amp;quot;;&lt;br /&gt;
	PlayerFrags = &amp;quot;PlayerFrags()&amp;quot;;&lt;br /&gt;
	PlayerHealth = &amp;quot;PlayerHealth()&amp;quot;;&lt;br /&gt;
	PlayerInGame = &amp;quot;PlayerInGame(playernumber)&amp;quot;;&lt;br /&gt;
	PlayerIsBot = &amp;quot;PlayerIsBot(playernumber)&amp;quot;;&lt;br /&gt;
	PlayerIsLoggedIn = &amp;quot;PlayerIsLoggedIn(playernumber)&amp;quot;;&lt;br /&gt;
	PlayerIsSpectator = &amp;quot;PlayerIsSpectator(player)&amp;quot;;&lt;br /&gt;
	PlayerNumber = &amp;quot;PlayerNumber()&amp;quot;;&lt;br /&gt;
	PlayerTeam = &amp;quot;PlayerTeam()&amp;quot;;&lt;br /&gt;
	PlayMovie = &amp;quot;PlayMovie(moviename)&amp;quot;;&lt;br /&gt;
	PlaySound = &amp;quot;PlaySound(tid, sound, channel, volume, looping, attenuation, local)&amp;quot;;&lt;br /&gt;
	Polyobj_DoorSlide = &amp;quot;Polyobj_DoorSlide(po, speed, angle, dist, delay)&amp;quot;;&lt;br /&gt;
	Polyobj_DoorSwing = &amp;quot;Polyobj_DoorSwing(po, speed, angle, delay)&amp;quot;;&lt;br /&gt;
	Polyobj_Move = &amp;quot;Polyobj_Move(po, speed, angle, dist)&amp;quot;;&lt;br /&gt;
	Polyobj_MoveTimes8 = &amp;quot;Polyobj_MoveTimes8(po, speed, angle, dist)&amp;quot;;&lt;br /&gt;
	Polyobj_MoveTo = &amp;quot;Polyobj_MoveTo(po, speed, pos_x, pos_y)&amp;quot;;&lt;br /&gt;
	Polyobj_MoveToSpot = &amp;quot;Polyobj_MoveToSpot(po, speed, target)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_Move = &amp;quot;Polyobj_OR_Move(po, speed, angle, distance)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_MoveTimes8 = &amp;quot;Polyobj_OR_MoveTimes8(po, speed, angle, distance)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_MoveTo = &amp;quot;Polyobj_OR_MoveTo(po, speed, pos_x, pos_y)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_MoveToSpot = &amp;quot;Polyobj_OR_MoveToSpot(po, speed, target)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_RotateLeft = &amp;quot;Polyobj_OR_RotateLeft(po, speed, angle)&amp;quot;;&lt;br /&gt;
	Polyobj_OR_RotateRight = &amp;quot;Polyobj_OR_RotateRight(po, speed, angle)&amp;quot;;&lt;br /&gt;
	Polyobj_RotateLeft = &amp;quot;Polyobj_RotateLeft(po, speed, angle)&amp;quot;;&lt;br /&gt;
	Polyobj_RotateRight = &amp;quot;Polyobj_RotateRight(po, speed, angle)&amp;quot;;&lt;br /&gt;
	Polyobj_Stop = &amp;quot;Polyobj_Stop(po)&amp;quot;;&lt;br /&gt;
	Polyobj_StopSound = &amp;quot;Polyobj_StopSound(po)&amp;quot;;&lt;br /&gt;
	PolyWait = &amp;quot;PolyWait(polyid)&amp;quot;;&lt;br /&gt;
	Print = &amp;quot;Print(type:expression)&amp;quot;;&lt;br /&gt;
	PrintBold = &amp;quot;PrintBold(type:expression)&amp;quot;;&lt;br /&gt;
	QuakeEx = &amp;quot;QuakeEx(tid, intensity_x, intensity_y, intensity_z, duration, damrad, tremrad, sfx, flags, mulwave_x, mulwave_y, mulwave_z, falloff, highpoint, rollintensity, rollwave, damagemultiplier, thrustmultiplier, damage)&amp;quot;;&lt;br /&gt;
	Radius_Quake = &amp;quot;Radius_Quake(intensity, duration, damrad, tremrad, tid)&amp;quot;;&lt;br /&gt;
	Radius_Quake2 = &amp;quot;Radius_Quake2(tid, intensity, duration, damrad, tremrad, sound)&amp;quot;;&lt;br /&gt;
	Random = &amp;quot;Random(min, max)&amp;quot;;&lt;br /&gt;
	RedCount = &amp;quot;RedCount()&amp;quot;;&lt;br /&gt;
	RedReturn = &amp;quot;Script expression RedReturn&amp;quot;;&lt;br /&gt;
	RedScore = &amp;quot;RedScore()&amp;quot;;&lt;br /&gt;
	RedTeamCount = &amp;quot;RedTeamCount()&amp;quot;;&lt;br /&gt;
	RedTeamScore = &amp;quot;RedTeamScore()&amp;quot;;&lt;br /&gt;
	ReOpen = &amp;quot;Script expression ReOpen&amp;quot;;&lt;br /&gt;
	ReplaceTextures = &amp;quot;ReplaceTextures(oldtexture, newtexture, flags)&amp;quot;;&lt;br /&gt;
	RequestScriptPuke = &amp;quot;RequestScriptPuke(script, arg0, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	ResetMap = &amp;quot;ResetMap()&amp;quot;;&lt;br /&gt;
	Respawn = &amp;quot;Script expression Respawn&amp;quot;;&lt;br /&gt;
	Restart = &amp;quot;Restart&amp;quot;;&lt;br /&gt;
	Return = &amp;quot;Return&amp;quot;;&lt;br /&gt;
	Round = &amp;quot;Round(value)&amp;quot;;&lt;br /&gt;
	Script = &amp;quot;Script expression (Void)&amp;quot;;&lt;br /&gt;
	ScriptCall = &amp;quot;ScriptCall(classname, funcname, args)&amp;quot;;&lt;br /&gt;
	ScriptWait = &amp;quot;ScriptWait(script)&amp;quot;;&lt;br /&gt;
	Scroll_Ceiling = &amp;quot;Scroll_Ceiling(tag, x-move, y-move, unused)&amp;quot;;&lt;br /&gt;
	Scroll_Floor = &amp;quot;Scroll_Floor(tag, x-move, y-move, type)&amp;quot;;&lt;br /&gt;
	Scroll_Texture_Both = &amp;quot;Scroll_Texture_Both(lineid, left, right, down, up)&amp;quot;;&lt;br /&gt;
	Scroll_Wall = &amp;quot;Scroll_Wall(lineid, x, y, side, flags)&amp;quot;;&lt;br /&gt;
	Sector_ChangeFlags = &amp;quot;Sector_ChangeFlags(tag, setflags, clearflags)&amp;quot;;&lt;br /&gt;
	Sector_ChangeSound = &amp;quot;Sector_ChangeSound(tag, newsequence)&amp;quot;;&lt;br /&gt;
	Sector_SetCeilingGlow = &amp;quot;Sector_SetCeilingGlow(tag, height, red, green, blue)&amp;quot;;&lt;br /&gt;
	Sector_SetCeilingPanning = &amp;quot;Sector_SetCeilingPanning(tag, u-int, u-frac, v-int, v-frac)&amp;quot;;&lt;br /&gt;
	Sector_SetCeilingScale = &amp;quot;Sector_SetCeilingScale(tag, u-int, u-frac, v-int, v-frac)&amp;quot;;&lt;br /&gt;
	Sector_SetCeilingScale2 = &amp;quot;Sector_SetCeilingScale2(tag, u-fixed, v-fixed)&amp;quot;;&lt;br /&gt;
	Sector_SetColor = &amp;quot;Sector_SetColor(tag, red, green, blue, desaturation)&amp;quot;;&lt;br /&gt;
	Sector_SetCurrent = &amp;quot;Sector_SetCurrent(tag, amount, angle, useline)&amp;quot;;&lt;br /&gt;
	Sector_SetDamage = &amp;quot;Sector_SetDamage(tag, amount, mod, interval, leaky)&amp;quot;;&lt;br /&gt;
	Sector_SetFade = &amp;quot;Sector_SetFade(tag, red, green, blue)&amp;quot;;&lt;br /&gt;
	Sector_SetFloorGlow = &amp;quot;Sector_SetFloorGlow(tag, height, red, green, blue)&amp;quot;;&lt;br /&gt;
	Sector_SetFloorPanning = &amp;quot;Sector_SetFloorPanning(tag, u-int, u-frac, v-int, v-frac)&amp;quot;;&lt;br /&gt;
	Sector_SetFloorScale = &amp;quot;Sector_SetFloorScale(tag, u-int, u-frac, v-int, v-frac)&amp;quot;;&lt;br /&gt;
	Sector_SetFloorScale2 = &amp;quot;Sector_SetFloorScale2(tag, u-fixed, v-fixed)&amp;quot;;&lt;br /&gt;
	Sector_SetFriction = &amp;quot;Sector_SetFriction(tag, amount)&amp;quot;;&lt;br /&gt;
	Sector_SetGravity = &amp;quot;Sector_SetGravity(tag, ipart, fpart)&amp;quot;;&lt;br /&gt;
	Sector_SetHealth = &amp;quot;Sector_SetHealth(tag, part, health)&amp;quot;;&lt;br /&gt;
	Sector_SetLink = &amp;quot;Sector_SetLink(controltag, tag, surface, movetype)&amp;quot;;&lt;br /&gt;
	Sector_SetPlaneReflection = &amp;quot;Sector_SetPlaneReflection(tag, floor, ceiling)&amp;quot;;&lt;br /&gt;
	Sector_SetRotation = &amp;quot;Sector_SetRotation(tag, floor-angle, ceiling-angle)&amp;quot;;&lt;br /&gt;
	Sector_SetTranslucent = &amp;quot;Sector_SetTranslucent(tag, plane, amount, type)&amp;quot;;&lt;br /&gt;
	Sector_SetWind = &amp;quot;Sector_SetWind(tag, amount, angle, useline)&amp;quot;;&lt;br /&gt;
	SectorDamage = &amp;quot;SectorDamage(tag, amount, type, protectionitem, flags)&amp;quot;;&lt;br /&gt;
	SectorSound = &amp;quot;SectorSound(sound, volume)&amp;quot;;&lt;br /&gt;
	SendToCommunicator = &amp;quot;SendToCommunicator(voc_id, front_only, indentify, nolog)&amp;quot;;&lt;br /&gt;
	SetActivator = &amp;quot;SetActivator(tid, pointer_selector)&amp;quot;;&lt;br /&gt;
	SetActivatorByNetID = &amp;quot;SetActivatorByNetID(netid, pointer)&amp;quot;;&lt;br /&gt;
	SetActivatorToTarget = &amp;quot;SetActivatorToTarget(tid)&amp;quot;;&lt;br /&gt;
	SetActorAngle = &amp;quot;SetActorAngle(tid, angle)&amp;quot;;&lt;br /&gt;
	SetActorFlag = &amp;quot;SetActorFlag(tid, flagname, set)&amp;quot;;&lt;br /&gt;
	SetActorPitch = &amp;quot;SetActorPitch(tid, pitch)&amp;quot;;&lt;br /&gt;
	SetActorPosition = &amp;quot;SetActorPosition(tid, x, y, z, fog)&amp;quot;;&lt;br /&gt;
	SetActorProperty = &amp;quot;SetActorProperty(tid, property, value)&amp;quot;;&lt;br /&gt;
	SetActorRoll = &amp;quot;SetActorRoll(tid, angle)&amp;quot;;&lt;br /&gt;
	SetActorState = &amp;quot;SetActorState(tid, state, exact)&amp;quot;;&lt;br /&gt;
	SetActorTeleFog = &amp;quot;SetActorTeleFog(tid, sourcefog, destfog)&amp;quot;;&lt;br /&gt;
	SetActorVelocity = &amp;quot;SetActorVelocity(tid, velx, vely, velz, add, setbob)&amp;quot;;&lt;br /&gt;
	SetAirControl = &amp;quot;SetAirControl(amount)&amp;quot;;&lt;br /&gt;
	SetAirSupply = &amp;quot;SetAirSupply(playernumber, tics)&amp;quot;;&lt;br /&gt;
	SetAmmoCapacity = &amp;quot;SetAmmoCapacity(ammotype, maxamount)&amp;quot;;&lt;br /&gt;
	SetCameraToTexture = &amp;quot;SetCameraToTexture(cameratid, texture, fov)&amp;quot;;&lt;br /&gt;
	SetCeilingTrigger = &amp;quot;SetCeilingTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)&amp;quot;;&lt;br /&gt;
	SetCVar = &amp;quot;SetCVar(cvarname, newvalue)&amp;quot;;&lt;br /&gt;
	SetCVarString = &amp;quot;SetCVarString(cvarname, newvalue)&amp;quot;;&lt;br /&gt;
	SetDBEntry = &amp;quot;SetDBEntry(namespace, key, value)&amp;quot;;&lt;br /&gt;
	SetDBEntryString = &amp;quot;SetDBEntryString(namespace, key, value)&amp;quot;;&lt;br /&gt;
	SetFloorTrigger = &amp;quot;SetFloorTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)&amp;quot;;&lt;br /&gt;
	SetFogDensity = &amp;quot;SetFogDensity(tag, amount)&amp;quot;;&lt;br /&gt;
	SetFont = &amp;quot;SetFont(font)&amp;quot;;&lt;br /&gt;
	SetGlobalFogParameter = &amp;quot;SetGlobalFogParameter(property, value)&amp;quot;;&lt;br /&gt;
	SetGravity = &amp;quot;SetGravity(amount)&amp;quot;;&lt;br /&gt;
	SetHUDClipRect = &amp;quot;SetHUDClipRect(x, y, width, height, wrapwidth, aspectratio)&amp;quot;;&lt;br /&gt;
	SetHudSize = &amp;quot;SetHudSize(width, height, statusbar)&amp;quot;;&lt;br /&gt;
	SetHUDWrapWidth = &amp;quot;SetHUDWrapWidth(wrapwidth)&amp;quot;;&lt;br /&gt;
	SetLineActivation = &amp;quot;SetLineActivation(lineid, activation, repeat)&amp;quot;;&lt;br /&gt;
	SetLineBlocking = &amp;quot;SetLineBlocking(lineid, setting)&amp;quot;;&lt;br /&gt;
	SetLineMonsterBlocking = &amp;quot;SetLineMonsterBlocking(lineid, setting)&amp;quot;;&lt;br /&gt;
	SetLineSpecial = &amp;quot;SetLineSpecial(lineid, special, arg1, arg2, arg3, arg4, arg5)&amp;quot;;&lt;br /&gt;
	SetLineTexture = &amp;quot;SetLineTexture(lineid, side, position, texture)&amp;quot;;&lt;br /&gt;
	SetMarineSprite = &amp;quot;SetMarineSprite(tid, actorclass)&amp;quot;;&lt;br /&gt;
	SetMarineWeapon = &amp;quot;SetMarineWeapon(tid, weapon)&amp;quot;;&lt;br /&gt;
	SetMugShotState = &amp;quot;SetMugShotState(state)&amp;quot;;&lt;br /&gt;
	SetMusic = &amp;quot;SetMusic(song, order, unused)&amp;quot;;&lt;br /&gt;
	SetMusicVolume = &amp;quot;volume&amp;quot;;&lt;br /&gt;
	SetPlayerLivesLeft = &amp;quot;SetPlayerLivesLeft(player, amount)&amp;quot;;&lt;br /&gt;
	SetPlayerProperty = &amp;quot;SetPlayerProperty(who, set, which)&amp;quot;;&lt;br /&gt;
	SetPointer = &amp;quot;SetPointer(assign_slot, tid, pointer_selector, flags)&amp;quot;;&lt;br /&gt;
	SetResultValue = &amp;quot;SetResultValue(value)&amp;quot;;&lt;br /&gt;
	SetSectorDamage = &amp;quot;SetSectorDamage(tag, amount, damagetype, interval, leaky)&amp;quot;;&lt;br /&gt;
	SetSectorGlow = &amp;quot;SetSectorGlow(tag, which, red, green, blue, height)&amp;quot;;&lt;br /&gt;
	SetSectorTerrain = &amp;quot;SetSectorTerrain(tag, whichplane, terraintype)&amp;quot;;&lt;br /&gt;
	SetSkyScrollSpeed = &amp;quot;SetSkyScrollSpeed(skynumber, speed)&amp;quot;;&lt;br /&gt;
	SetSubtitleNumber = &amp;quot;SetSubtitleNumber(num, sound)&amp;quot;;&lt;br /&gt;
	SetThingSpecial = &amp;quot;SetThingSpecial(tid, special, arg1, arg2, arg3, arg4, arg5)&amp;quot;;&lt;br /&gt;
	SetTranslation = &amp;quot;SetTranslation(tid, transname)&amp;quot;;&lt;br /&gt;
	SetUserArray = &amp;quot;SetUserArray(tid, name, pos, value)&amp;quot;;&lt;br /&gt;
	SetUserCVar = &amp;quot;SetUserCVar(playernum, cvarname, newvalue)&amp;quot;;&lt;br /&gt;
	SetUserCVarString = &amp;quot;SetUserCVarString(playernum, cvarname, newvalue)&amp;quot;;&lt;br /&gt;
	SetUserVariable = &amp;quot;SetUserVariable(tid, name, value)&amp;quot;;&lt;br /&gt;
	SetWeapon = &amp;quot;SetWeapon(weapon)&amp;quot;;&lt;br /&gt;
	sin = &amp;quot;sin(angle)&amp;quot;;&lt;br /&gt;
	SinglePlayer = &amp;quot;SinglePlayer()&amp;quot;;&lt;br /&gt;
	SortDBEntries = &amp;quot;SortDBEntries(namespace, limit, offset, order)&amp;quot;;&lt;br /&gt;
	SoundSequence = &amp;quot;SoundSequence(sndseq)&amp;quot;;&lt;br /&gt;
	SoundSequenceOnActor = &amp;quot;SoundSequenceOnActor(tid, sndseq)&amp;quot;;&lt;br /&gt;
	SoundSequenceOnPolyObj = &amp;quot;SoundSequenceOnPolyObj(polyid, sndseq)&amp;quot;;&lt;br /&gt;
	SoundSequenceOnSector = &amp;quot;SoundSequenceOnSector(tag, sndseq, location)&amp;quot;;&lt;br /&gt;
	SoundVolume = &amp;quot;SoundVolume(tid, channel, volume)&amp;quot;;&lt;br /&gt;
	Spawn = &amp;quot;Spawn(classname, x, y, z, newtid, angle)&amp;quot;;&lt;br /&gt;
	SpawnDecal = &amp;quot;SpawnDecal(tid, decalname, flags, angle, zoffset, distance)&amp;quot;;&lt;br /&gt;
	SpawnForced = &amp;quot;SpawnForced(classname, x, y, z, newtid, angle)&amp;quot;;&lt;br /&gt;
	SpawnParticle = &amp;quot;SpawnParticle(color, fullbright, lifetime, size, x, y, z, velx, vely, velz, accelx, accely, accelz, startalpha, fadestep, endsize)&amp;quot;;&lt;br /&gt;
	SpawnProjectile = &amp;quot;SpawnProjectile(tid, classname, angle, speed, vspeed, gravity, newtid)&amp;quot;;&lt;br /&gt;
	SpawnSpot = &amp;quot;SpawnSpot(classname, spottid, newtid, angle)&amp;quot;;&lt;br /&gt;
	SpawnSpotFacing = &amp;quot;SpawnSpotFacing(classname, spottid, newtid)&amp;quot;;&lt;br /&gt;
	SpawnSpotFacingForced = &amp;quot;SpawnSpotFacingForced(classname, spottid, newtid)&amp;quot;;&lt;br /&gt;
	SpawnSpotForced = &amp;quot;SpawnSpotForced(classname, spottid, newtid, angle)&amp;quot;;&lt;br /&gt;
	Special = &amp;quot;Special&amp;quot;;&lt;br /&gt;
	Sqrt = &amp;quot;Sqrt(number)&amp;quot;;&lt;br /&gt;
	Stairs_BuildDown = &amp;quot;Stairs_BuildDown(tag, speed, height, delay, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildDownDoom = &amp;quot;Stairs_BuildDownDoom(tag, speed, height, delay, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildDownDoomSync = &amp;quot;Stairs_BuildDownDoomSync(tag, speed, height, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildDownSync = &amp;quot;Stairs_BuildDownSync(tag, speed, height, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildUp = &amp;quot;Stairs_BuildUp(tag, speed, height, delay, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildUpDoom = &amp;quot;Stairs_BuildUpDoom(tag, speed, height, delay, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildUpDoomCrush = &amp;quot;Stairs_BuildUpDoomCrush(tag, speed, height, delay, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildUpDoomSync = &amp;quot;Stairs_BuildUpDoomSync(tag, speed, height, reset)&amp;quot;;&lt;br /&gt;
	Stairs_BuildUpSync = &amp;quot;Stairs_BuildUpSync(tag, speed, height, reset)&amp;quot;;&lt;br /&gt;
	StartConversation = &amp;quot;StartConversation(talker_tid, facetalker)&amp;quot;;&lt;br /&gt;
	StartSlideshow = &amp;quot;StartSlideshow(unknown parameter list)&amp;quot;;&lt;br /&gt;
	StopSound = &amp;quot;StopSound(tid, channel)&amp;quot;;&lt;br /&gt;
	Str = &amp;quot;Str expression&amp;quot;;&lt;br /&gt;
	StrArg = &amp;quot;StrArg(unknown parameter list)&amp;quot;;&lt;br /&gt;
	StrCaseCmp = &amp;quot;StrCaseCmp(string1, string2, maxcomparenum)&amp;quot;;&lt;br /&gt;
	StrCmp = &amp;quot;StrCmp(string1, string2, maxcomparenum)&amp;quot;;&lt;br /&gt;
	StrCpy = &amp;quot;StrCpy(a:destination, source, sourceindex)&amp;quot;;&lt;br /&gt;
	Strftime = &amp;quot;Strftime(timestamp, format, utc)&amp;quot;;&lt;br /&gt;
	StrIcmp = &amp;quot;StrIcmp(string1, string2, maxcomparenum)&amp;quot;;&lt;br /&gt;
	StrLeft = &amp;quot;StrLeft(string, length)&amp;quot;;&lt;br /&gt;
	StrLen = &amp;quot;StrLen(string)&amp;quot;;&lt;br /&gt;
	StrMid = &amp;quot;StrMid(string, start, length)&amp;quot;;&lt;br /&gt;
	StrParam = &amp;quot;StrParam(type:expression)&amp;quot;;&lt;br /&gt;
	StrRight = &amp;quot;StrRight(string, length)&amp;quot;;&lt;br /&gt;
	Suspend = &amp;quot;Suspend&amp;quot;;&lt;br /&gt;
	SwapActorTeleFog = &amp;quot;SwapActorTeleFog(tid)&amp;quot;;&lt;br /&gt;
	Switch = &amp;quot;Switch(expression)&amp;quot;;&lt;br /&gt;
	SystemTime = &amp;quot;SystemTime()&amp;quot;;&lt;br /&gt;
	TagWait = &amp;quot;TagWait(tag)&amp;quot;;&lt;br /&gt;
	TakeActorInventory = &amp;quot;TakeActorInventory(tid, inventoryitem, amount)&amp;quot;;&lt;br /&gt;
	TakeInventory = &amp;quot;TakeInventory(inventoryitem, amount)&amp;quot;;&lt;br /&gt;
	Team_GivePoints = &amp;quot;Team_GivePoints(team, points, announce)&amp;quot;;&lt;br /&gt;
	Team_Score = &amp;quot;Team_Score(points, nogrin)&amp;quot;;&lt;br /&gt;
	Teleport = &amp;quot;Teleport(tid, tag, nosourcefog)&amp;quot;;&lt;br /&gt;
	Teleport_EndGame = &amp;quot;Teleport_EndGame()&amp;quot;;&lt;br /&gt;
	Teleport_NewMap = &amp;quot;Teleport_NewMap(map, pos, face)&amp;quot;;&lt;br /&gt;
	Teleport_NoFog = &amp;quot;Teleport_NoFog(tid, useangle, tag)&amp;quot;;&lt;br /&gt;
	Teleport_NoStop = &amp;quot;Teleport_NoStop(tid, tag, nofog)&amp;quot;;&lt;br /&gt;
	Teleport_ZombieChanger = &amp;quot;Teleport_ZombieChanger(tid, tag)&amp;quot;;&lt;br /&gt;
	TeleportGroup = &amp;quot;TeleportGroup(groupid, sourceid, destinationid, movesource, fog)&amp;quot;;&lt;br /&gt;
	TeleportInSector = &amp;quot;TeleportInSector(tag, sourceid, destinationid, fog, groupid)&amp;quot;;&lt;br /&gt;
	TeleportOther = &amp;quot;TeleportOther(tid, destinationid, fog)&amp;quot;;&lt;br /&gt;
	Terminate = &amp;quot;Terminate&amp;quot;;&lt;br /&gt;
	Thing_Activate = &amp;quot;Thing_Activate(tid)&amp;quot;;&lt;br /&gt;
	Thing_ChangeTID = &amp;quot;Thing_ChangeTID(oldtid, newtid)&amp;quot;;&lt;br /&gt;
	Thing_Damage = &amp;quot;Thing_Damage(tid, amount, mod)&amp;quot;;&lt;br /&gt;
	Thing_Damage2 = &amp;quot;Thing_Damage2(tid, amount, damagetype)&amp;quot;;&lt;br /&gt;
	Thing_Deactivate = &amp;quot;Thing_Deactivate(tid)&amp;quot;;&lt;br /&gt;
	Thing_Destroy = &amp;quot;Thing_Destroy(tid, extreme, tag)&amp;quot;;&lt;br /&gt;
	Thing_Hate = &amp;quot;Thing_Hate(hater, hatee, type)&amp;quot;;&lt;br /&gt;
	Thing_Move = &amp;quot;Thing_Move(tid, destid, nofog)&amp;quot;;&lt;br /&gt;
	Thing_Projectile = &amp;quot;Thing_Projectile(tid, type, angle, speed, vspeed)&amp;quot;;&lt;br /&gt;
	Thing_Projectile2 = &amp;quot;Thing_Projectile2(tid, classname, angle, speed, vspeed, gravity, newtid)&amp;quot;;&lt;br /&gt;
	Thing_ProjectileAimed = &amp;quot;Thing_ProjectileAimed(tid, type, speed, target, newtid)&amp;quot;;&lt;br /&gt;
	Thing_ProjectileGravity = &amp;quot;Thing_ProjectileGravity(tid, type, angle, speed, vspeed)&amp;quot;;&lt;br /&gt;
	Thing_ProjectileIntercept = &amp;quot;Thing_ProjectileIntercept(tid, type, speed, target, newtid)&amp;quot;;&lt;br /&gt;
	Thing_Raise = &amp;quot;Thing_Raise(tid)&amp;quot;;&lt;br /&gt;
	Thing_Remove = &amp;quot;Thing_Remove(tid)&amp;quot;;&lt;br /&gt;
	Thing_SetConversation = &amp;quot;Thing_SetConversation(tid, conversationid)&amp;quot;;&lt;br /&gt;
	Thing_SetGoal = &amp;quot;Thing_SetGoal(tid, goal, delay, dontchasetarget)&amp;quot;;&lt;br /&gt;
	Thing_SetSpecial = &amp;quot;Thing_SetSpecial(tid, special, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	Thing_SetTranslation = &amp;quot;Thing_SetTranslation(tid, translation)&amp;quot;;&lt;br /&gt;
	Thing_Spawn = &amp;quot;Thing_Spawn(tid, type, angle, newtid)&amp;quot;;&lt;br /&gt;
	Thing_SpawnFacing = &amp;quot;Thing_SpawnFacing(tid, type, nofog, newtid)&amp;quot;;&lt;br /&gt;
	Thing_SpawnNoFog = &amp;quot;Thing_SpawnNoFog(tid, type, angle, newtid)&amp;quot;;&lt;br /&gt;
	Thing_Stop = &amp;quot;Thing_Stop(tid)&amp;quot;;&lt;br /&gt;
	ThingCount = &amp;quot;ThingCount(type, tid)&amp;quot;;&lt;br /&gt;
	ThingCountName = &amp;quot;ThingCountName(classname, tid)&amp;quot;;&lt;br /&gt;
	ThingCountNameSector = &amp;quot;ThingCountNameSector(classname, tid, tag)&amp;quot;;&lt;br /&gt;
	ThingCountSector = &amp;quot;ThingCountSector(type, tid, tag)&amp;quot;;&lt;br /&gt;
	ThingSound = &amp;quot;ThingSound(tid, sound, volume)&amp;quot;;&lt;br /&gt;
	ThrustThing = &amp;quot;ThrustThing(angle, force, nolimit, tid)&amp;quot;;&lt;br /&gt;
	ThrustThingZ = &amp;quot;ThrustThingZ(tid, speed, up_or_down, add_or_set)&amp;quot;;&lt;br /&gt;
	Timer = &amp;quot;Timer()&amp;quot;;&lt;br /&gt;
	TranslucentLine = &amp;quot;TranslucentLine(lineid, amount, additive, moreflags)&amp;quot;;&lt;br /&gt;
	UniqueTID = &amp;quot;UniqueTID(tid, limit)&amp;quot;;&lt;br /&gt;
	Unloading = &amp;quot;Script expression Unloading&amp;quot;;&lt;br /&gt;
	UnMorphActor = &amp;quot;UnMorphActor(tid, force)&amp;quot;;&lt;br /&gt;
	Until = &amp;quot;Until(expression)&amp;quot;;&lt;br /&gt;
	UseActorInventory = &amp;quot;UseActorInventory(tid, inventoryitem)&amp;quot;;&lt;br /&gt;
	UseInventory = &amp;quot;UseInventory(inventoryitem)&amp;quot;;&lt;br /&gt;
	UsePuzzleItem = &amp;quot;UsePuzzleItem(item, script, arg1, arg2, arg3)&amp;quot;;&lt;br /&gt;
	VectorAngle = &amp;quot;VectorAngle(x, y)&amp;quot;;&lt;br /&gt;
	VectorLength = &amp;quot;VectorLength(x, y)&amp;quot;;&lt;br /&gt;
	Void = &amp;quot;Void&amp;quot;;&lt;br /&gt;
	Warp = &amp;quot;Warp(tid, xofs, yofs, zofs, angle, flags, success_state, exact, heightoffset, radiusoffset, pitch)&amp;quot;;&lt;br /&gt;
	While = &amp;quot;While(expression)&amp;quot;;&lt;br /&gt;
	WhiteReturn = &amp;quot;Script expression WhiteReturn&amp;quot;;&lt;br /&gt;
	World = &amp;quot;World Int expression:identifier&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
constants&lt;br /&gt;
{&lt;br /&gt;
	...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:ACS]][[Category:Tools]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=FOR_and_WHILE_loops&amp;diff=209</id>
		<title>FOR and WHILE loops</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=FOR_and_WHILE_loops&amp;diff=209"/>
		<updated>2026-03-07T18:14:15Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;&amp;#039;&amp;#039;&amp;#039;Loops&amp;#039;&amp;#039;&amp;#039; podem reduzir dramaticamente o tamanho de um script quando uma ação precisa ser executada repetidamente.  Neste script há vários setores, aqui de 1 até X. É claro, X deve ser substituído pelo maior número de ID de setor. Cada setor tem o special Floor_Waggle.  Isso é fácil de configurar com copiar e colar, mas aí os IDs dos setores precisam ser alterados manualmente. O script poderia ser escrito assim:   #include &amp;quot;zcommon.acs&amp;quot;  SCRIPT 1 {{SType...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Loops&#039;&#039;&#039; podem reduzir dramaticamente o tamanho de um script quando uma ação precisa ser executada repetidamente.&lt;br /&gt;
&lt;br /&gt;
Neste script há vários setores, aqui de 1 até X. É claro, X deve ser substituído pelo maior número de ID de setor.&lt;br /&gt;
Cada setor tem o special [[Floor_Waggle]].&lt;br /&gt;
&lt;br /&gt;
Isso é fácil de configurar com copiar e colar, mas aí os IDs dos setores precisam ser alterados manualmente.&lt;br /&gt;
O script poderia ser escrito assim:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 SCRIPT 1 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
      [[Floor_Waggle]] (1, 200, 50, 0, 0);&lt;br /&gt;
      [[delay]] (7);&lt;br /&gt;
      [[Floor_Waggle]] (2, 200, 50, 0, 0);&lt;br /&gt;
      [[delay]] (7);&lt;br /&gt;
      [[Floor_Waggle]] (3, 200, 50, 0, 0);&lt;br /&gt;
      [[delay]] (7);&lt;br /&gt;
 &lt;br /&gt;
                       |&lt;br /&gt;
                       |&lt;br /&gt;
                       |&lt;br /&gt;
 &lt;br /&gt;
     [[Floor_Waggle]] (X, 200, 50, 0, 0);&lt;br /&gt;
     [[delay]] (7);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Uma forma mais fácil seria se um script atualizasse os IDs de setor em um loop.&lt;br /&gt;
Tanto um loop FOR quanto um loop WHILE podem ser usados.&lt;br /&gt;
&lt;br /&gt;
===Loop FOR===&lt;br /&gt;
&lt;br /&gt;
O loop for pode ser escrito de duas maneiras; a diferença é como a variável é declarada.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 SCRIPT 1 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     for ( int sid = 1; sid &amp;lt; X; sid++ )  // sid é o ID do setor&lt;br /&gt;
     {&lt;br /&gt;
         [[Floor_Waggle]] (sid, 200, 50, 0, 0);&lt;br /&gt;
         [[delay]] (7); &lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ou assim&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 script 1 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     int sid = 0;&lt;br /&gt;
 &lt;br /&gt;
     for ( sid = 1; sid &amp;lt; X; sid++ )  // sid é o ID do setor&lt;br /&gt;
     {&lt;br /&gt;
         [[Floor_Waggle]] (sid, 100, 20, 0, 0 );&lt;br /&gt;
         [[delay]] (7);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
A primeira parte da instrução for (aqui &amp;lt;tt&amp;gt;sid = 1&amp;lt;/tt&amp;gt;) é executada uma vez antes do loop começar a rodar. A terceira parte da instrução for (aqui &amp;lt;tt&amp;gt;sid++&amp;lt;/tt&amp;gt;) é executada a cada iteração do loop, logo antes de ele reiniciar ou terminar. A segunda parte da instrução for (aqui &amp;lt;tt&amp;gt;sid &amp;lt; X&amp;lt;/tt&amp;gt;) é a condição que precisa ser verdadeira para continuar repetindo.&lt;br /&gt;
&lt;br /&gt;
Neste exemplo, o loop for define sid como 1 (&amp;lt;tt&amp;gt;sid = 1&amp;lt;/tt&amp;gt;) antes que qualquer coisa dentro do loop execute. Depois do delay, ele incrementa sid em um (&amp;lt;tt&amp;gt;sid++&amp;lt;/tt&amp;gt;). Enquanto sid for menor que X (&amp;lt;tt&amp;gt;sid &amp;lt; X&amp;lt;/tt&amp;gt;), ele repetirá tudo dentro das chaves.&lt;br /&gt;
&lt;br /&gt;
===Loop WHILE===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 script 1 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     int sid = 1;  // sid é o ID do setor&lt;br /&gt;
 &lt;br /&gt;
     while ( sid &amp;lt; X )&lt;br /&gt;
     {&lt;br /&gt;
         [[Floor_Waggle]] (sid, 100, 20, 0, 0);&lt;br /&gt;
         [[delay]] (7);  &lt;br /&gt;
         sid++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Num caso como este, a decisão de usar for ou while depende da preferência do programador, porque no for todas as instruções de controle do loop ficam em um único lugar.&lt;br /&gt;
&lt;br /&gt;
===Loop UNTIL===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 script 1 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     int sid = 1;  // sid é o ID do setor&lt;br /&gt;
 &lt;br /&gt;
     until ( sid &amp;gt;= X )&lt;br /&gt;
     {&lt;br /&gt;
         [[Floor_Waggle]] (sid, 100, 20, 0, 0);&lt;br /&gt;
         [[delay]] (7);  &lt;br /&gt;
         sid++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Um loop until é o oposto de um loop while. Um until continuará repetindo até que uma condição se torne verdadeira, enquanto um while continuará repetindo até que uma condição se torne falsa.&lt;br /&gt;
&lt;br /&gt;
[[Category:ACS]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Thing&amp;diff=208</id>
		<title>Thing</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Thing&amp;diff=208"/>
		<updated>2026-03-07T18:08:24Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{doomwiki}} Em Doom, &amp;#039;&amp;#039;&amp;#039;things&amp;#039;&amp;#039;&amp;#039; são usados para representar jogadores, monstros, itens coletáveis e projéteis. Dentro do jogo, eles são conhecidos como atores (actors). Existem três maneiras de colocar um ator no seu mapa. A maioria das things são actors, então os nomes frequentemente são usados de forma intercambiável. Algumas things, no entanto, não são atores, como pontos de player start.  ==Referenciando things== DoomEd numbers são os núme...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{doomwiki}}&lt;br /&gt;
Em Doom, &#039;&#039;&#039;things&#039;&#039;&#039; são usados para representar jogadores, monstros, itens coletáveis e projéteis. Dentro do jogo, eles são conhecidos como atores (actors). Existem três maneiras de colocar um ator no seu mapa. A maioria das things são [[actor]]s, então os nomes frequentemente são usados de forma intercambiável. Algumas things, no entanto, não são atores, como pontos de [[player start]].&lt;br /&gt;
&lt;br /&gt;
==Referenciando things==&lt;br /&gt;
[[DoomEd numbers]] são os números usados no editor para representar um ator. Quando o mapa é carregado, um ator correspondente àquele número será spawned no local daquela thing do mapa. Embora muitos atores tenham números DoomEd, nem todos têm. Por exemplo, um cartão-chave azul tem um número DoomEd, mas um foguete voando pelo ar não tem.&lt;br /&gt;
&lt;br /&gt;
[[Spawn numbers]] são os números usados por specials como [[Thing_Spawn]] para spawnar atores no jogo depois que o usuário começa a jogar o mapa. Embora números DoomEd e números de spawn ambos descrevam atores, eles não são intercambiáveis&amp;amp;mdash;você não deve usar um número de spawn em uma thing do mapa, e você não deve usar um número DoomEd, por exemplo, como parâmetro de Thing_Spawn.&lt;br /&gt;
&lt;br /&gt;
[[classes|Nomes de ator]] são os nomes reais que cada ator tem internamente (para testar isso, você pode querer experimentar o [[console commands|comando do console]] &#039;&#039;&#039;summon&#039;&#039;&#039;). Eles são usados com as funções [[SpawnSpot]] e [[Spawn]], que permitem spawnar qualquer ator disponível com [[Thing_Spawn]] e também todos os outros atores (embora alguns atores não devam ser spawnados), como câmeras, cenário ou qualquer outra coisa que você precisar.&lt;br /&gt;
&lt;br /&gt;
Se você criar um novo ator com o lump [[DECORATE]], você pode especificar tanto o número de spawn (SpawnID) quanto o número DoomEd (DoomEdNum). O nome que você dá ao novo item [[DECORATE]] também é o seu nome de ator, então você também pode spawná-lo usando esse nome.&lt;br /&gt;
&lt;br /&gt;
Há também um terceiro conjunto de números usado para representar atores que é importante apenas para [[DeHackEd]] e similares. Esses números correspondem à ordem em que os atores foram definidos no exe vanilla. Eles não têm significado fora do [[DEHSUPP|carregador DeHackEd]] do ZDoom e, como resultado, não são uma propriedade. Em &#039;&#039;[[Strife]]&#039;&#039;, eles eram usados para identificar classes de ator em conversas, mas o ZDoom transformou isso na propriedade {{Property|ConversationID}} porque atores idênticos tinham números diferentes nas diferentes versões de Strife disponíveis.&lt;br /&gt;
&lt;br /&gt;
==Especificação (formato Doom)==&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!Bytes!!Tipo de dado!!Descrição!!Notas&lt;br /&gt;
|-&lt;br /&gt;
|0-1||Signed short||Posição X||&lt;br /&gt;
|-&lt;br /&gt;
|2-3||Signed short||Posição Y||&lt;br /&gt;
|-&lt;br /&gt;
|4-5||Unsigned short||Ângulo||0=Leste, 45=NE, 90=Norte 135=NO, 180=Oeste, 225=SO, 270=Sul&lt;br /&gt;
|-&lt;br /&gt;
|6-7||Unsigned short||Tipo||Veja a lista de [[standard editor numbers]]&lt;br /&gt;
|-&lt;br /&gt;
|8-9||Unsigned Short||Flags de spawn||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Especificação (formato Hexen)==&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!Bytes!!Tipo de dado!!Descrição!!Notas&lt;br /&gt;
|-&lt;br /&gt;
|0-1||Unsigned short||[[Thing ID]]||Este valor é usado para scripts e specials&lt;br /&gt;
|-&lt;br /&gt;
|2-3||Signed short||Posição X||&lt;br /&gt;
|-&lt;br /&gt;
|4-5||Signed short||Posição Y||&lt;br /&gt;
|-&lt;br /&gt;
|6-7||Signed short||Posição Z||&lt;br /&gt;
|-&lt;br /&gt;
|8-9||Unsigned short||Ângulo||0=Leste, 45=NE, 90=Norte 135=NO, 180=Oeste, 225=SO, 270=Sul&lt;br /&gt;
|-&lt;br /&gt;
|10-11||Unsigned short||Tipo||Veja a lista de [[standard editor numbers]]&lt;br /&gt;
|-&lt;br /&gt;
|12-13||Unsigned short||Flags de spawn||&lt;br /&gt;
|-&lt;br /&gt;
|14||Unsigned byte||[[Action special]]||Uma ação a ser executada quando esta thing for destruída ou coletada&lt;br /&gt;
|-&lt;br /&gt;
|15||Unsigned byte||Argumento de ação 1||&lt;br /&gt;
|-&lt;br /&gt;
|16||Unsigned byte||Argumento de ação 2||&lt;br /&gt;
|-&lt;br /&gt;
|17||Unsigned byte||Argumento de ação 3||&lt;br /&gt;
|-&lt;br /&gt;
|18||Unsigned byte||Argumento de ação 4||&lt;br /&gt;
|-&lt;br /&gt;
|19||Unsigned byte||Argumento de ação 5||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Flags de spawn==&lt;br /&gt;
Há vários conflitos na lista de flags, dependendo do jogo. [[Map translator]]s são usados para definir como os valores são associados às flags em um mapa binário. [[UDMF]] permite resolver esses conflitos por não usar um array de bitfield e, em vez disso, referir-se a cada flag pelo nome. Várias flags só estão disponíveis neste [[map format|formato de mapa]].&lt;br /&gt;
&lt;br /&gt;
{| {{PrettySortable}}&lt;br /&gt;
!Flag!!Z-Bit!!Z-Hex!!D-Bit!!D-Hex!!S-Bit!!S-Hex!!Descrição!!Nome em [[UDMF]]&lt;br /&gt;
|-&lt;br /&gt;
|EASY||0||0x0001||0||0x0001||0||0x0001||Thing é spawnada nas habilidades #1 e #2 ||&amp;lt;tt&amp;gt;skill1&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;skill2&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEDIUM||1||0x0002||1||0x0002||1||0x0002||Thing é spawnada na habilidade #3||&amp;lt;tt&amp;gt;skill3&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|HARD||2||0x0004||2||0x0004||2||0x0004||Thing é spawnada nas habilidades #4 e #5||&amp;lt;tt&amp;gt;skill4&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;skill5&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|AMBUSH||3||0x0008||3||0x0008||5||0x0020||Thing fica em emboscada (a flag {{flag|AMBUSH}} está definida)||&amp;lt;tt&amp;gt;ambush&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|DORMANT||4||0x0010|| || || || ||Thing fica {{flag|DORMANT}} até ser ativada||&amp;lt;tt&amp;gt;dormant&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|FIGHTER||5||0x0020|| || || || ||Thing é spawnada quando a classe de jogador #1 está presente||&amp;lt;tt&amp;gt;class1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CLERIC||6||0x0040|| || || || ||Thing é spawnada quando a classe de jogador #2 está presente||&amp;lt;tt&amp;gt;class2&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MAGE||7||0x0080|| || || || ||Thing é spawnada quando a classe de jogador #3 está presente||&amp;lt;tt&amp;gt;class3&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|SINGLE||8||0x0100|| || || || ||Thing aparece em jogos single-player||&amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|COOPERATIVE||9||0x0200|| || || || ||Thing aparece em jogos cooperativos||&amp;lt;tt&amp;gt;coop&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|DEATHMATCH||10||0x0400|| || || || ||Thing aparece em jogos deathmatch||&amp;lt;tt&amp;gt;dm&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|SHADOW||11||0x0800|| || ||8||0x0100||Thing é 25% translúcida||&amp;lt;tt&amp;gt;translucent&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|ALTSHADOW||12||0x1000|| || ||9||0x0200||Thing é invisível||&amp;lt;tt&amp;gt;invisible&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|FRIENDLY||13||0x2000|| || ||6||0x0040||Isto é um monstro {{Flag|FRIENDLY}} usando a lógica de [[Strife]]||&amp;lt;tt&amp;gt;strifeally&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|STANDSTILL||14||0x4000|| || ||3||0x0008||Thing fica parada (só útil para monstros específicos de Strife ou friendlys)||&amp;lt;tt&amp;gt;standing&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|SECRET|| || || || || || ||Thing é um item de [[secret]]||&amp;lt;tt&amp;gt;countsecret&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;!-- |-&lt;br /&gt;
|NOINFIGHTING|| || || || || || ||Thing não faz infighting -- sem referência a isso, código morto?||&amp;lt;tt&amp;gt;???&amp;lt;/tt&amp;gt; --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|NOTSINGLE|| || ||4||0x0010||4||0x0010||Thing não aparece no single player&lt;br /&gt;
|-&lt;br /&gt;
|NOTDEATHMATCH|| || ||5||0x0020|| || ||Thing não aparece no deathmatch single&lt;br /&gt;
|-&lt;br /&gt;
|NOTCOOPERATIVE|| || ||6||0x0040|| || ||Thing não aparece no cooperativo&lt;br /&gt;
|-&lt;br /&gt;
|FRIEND|| || ||6||0x0040|| || ||Thing é um monstro amigável usando a lógica [[MBF]] (remapeado para FRIENDLY)||friend&lt;br /&gt;
|-&lt;br /&gt;
|BADEDITORCHECK|| || ||8||0x0100|| || ||Thing foi colocada em um editor de mapas que define flags indefinidas||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #1||skill1&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #2||skill2&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #4||skill4&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #5||skill5&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #6||skill6&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #7||skill7&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #8||skill8&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #9||skill9&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #10||skill10&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #11||skill11&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #12||skill12&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #13||skill13&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #14||skill14&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #15||skill15&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada na habilidade #16||skill16&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #4 está presente||class4&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #5 está presente||class5&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #6 está presente||class6&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #7 está presente||class7&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #8 está presente||class8&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #9 está presente||class9&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #10 está presente||class10&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #11 está presente||class11&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #12 está presente||class12&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #13 está presente||class13&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #14 está presente||class14&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #15 está presente||class15&lt;br /&gt;
|-&lt;br /&gt;
| || || || || || || ||Thing é spawnada quando a classe de jogador #16 está presente||class16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Propriedades UDMF==&lt;br /&gt;
Além das flags de spawn exclusivas de UDMF acima, as seguintes propriedades só podem ser usadas em uma thing no modo UDMF. A menos que especificado de outra forma, os valores padrão para inteiros e float são 0, e {{c|false}} para booleanos. Elas incluem:&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!Nome!!Tipo!!Descrição&lt;br /&gt;
|-&lt;br /&gt;
|{{c|alpha}}||float||Define a {{Property|Alpha|translucência}} do ator. Ela só se aplica aos estilos de renderização {{c|Translucent}}, {{c|Add}}, {{c|Subtract}} e {{c|TranslucentStencil}}. O padrão é 1.0.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|arg0str}}||string||Atribui um valor string ao primeiro argumento. Isso é usado para [[named script]]s e [[Hexen breakable items]].&lt;br /&gt;
|-&lt;br /&gt;
|{{c|arg1str}}||string||Atribui um valor string ao segundo argumento. Isso é usado por certos [[:Category:Thing specials|specials de spawn de thing]].&lt;br /&gt;
|-&lt;br /&gt;
|{{c|conversation}}||integer||Atribui um ID de [[ZDoom Strife Dialog Format|conversa]] à thing. Isso corresponde à propriedade {{c|id}} de uma conversa, permitindo árvores de diálogo específicas para uma determinada thing, em vez de para uma classe de ator inteira.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|fillcolor}}||integer||Define o {{Property|StencilColor|fillcolor}} do ator, que é usado pelos estilos de renderização {{c|Stencil}} e {{c|TranslucentStencil}}, como valor {{c|RRGGBB}}.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|floatbobphase}}||integer||Define o {{Property|FloatBobPhase|floatbobphase}} do ator. Valores de fase válidos estão no intervalo 0-63. Definir isso como -1 fará com que seja usado o próprio valor da propriedade do ator. O padrão é -1.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|friendlyseeblocks}}||integer||Define o {{Property|FriendlySeeBlocks|friendlyseeblocks}} do ator. Se isso for definido como 0 ou menos, o padrão do ator para essa propriedade, conforme definido na sua definição de ator, é usado no lugar. O padrão é -1.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|gravity}}||float||Define a [[gravity|gravidade]] do ator. Valores positivos são multiplicados pelo valor da {{Property|Gravity|propriedade gravity}} da classe; valores negativos são usados pelo seu valor absoluto. O padrão é 1.0.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|health}}||float||Define a [[health|vida]] do ator. Valores positivos são multiplicados pela propriedade {{c|{{Property|Health}}}} da classe e valores negativos são usados pelo seu valor absoluto. Se o valor for definido como 0, o ator nasce morto (útil para cadáveres de monstros ressuscitáveis). O padrão é 1.0.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|pitch}}||integer||Define o pitch do ator em graus (útil para [[model]]s).&lt;br /&gt;
|-&lt;br /&gt;
|{{c|renderstyle}}||string||Define o {{Property|RenderStyle|estilo de renderização}} do ator, substituindo o padrão da classe. Os valores possíveis podem ser:&lt;br /&gt;
*{{c|Normal}}&lt;br /&gt;
*{{c|None}}&lt;br /&gt;
*{{c|Add}} ou {{c|Additive}}&lt;br /&gt;
*{{c|Subtract}} ou {{c|Subtractive}}&lt;br /&gt;
*{{c|Stencil}}&lt;br /&gt;
*{{c|AddStencil}}&lt;br /&gt;
*{{c|TranslucentStencil}}&lt;br /&gt;
*{{c|Translucent}}&lt;br /&gt;
*{{c|Fuzzy}}&lt;br /&gt;
*{{c|OptFuzzy}}&lt;br /&gt;
*{{c|Soultrans}}&lt;br /&gt;
*{{c|Shaded}}&lt;br /&gt;
*{{c|AddShaded}}&lt;br /&gt;
*{{c|Shadow}}&lt;br /&gt;
O valor padrão é uma string vazia para não alterar.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|roll}}||integer||Define o roll do ator em graus (útil para [[model]]s).&lt;br /&gt;
|-&lt;br /&gt;
|{{c|scale}}||float||Define a escala vertical e horizontal do ator.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|scalex}}||float||Define a escala vertical do ator.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|scaley}}||float||Define a escala horizontal do ator.&lt;br /&gt;
|-&lt;br /&gt;
|{{c|score}}||integer||Define o [[score]] do ator, substituindo o padrão da classe.&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Tag&amp;diff=207</id>
		<title>Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Tag&amp;diff=207"/>
		<updated>2026-03-06T20:42:35Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;O &amp;#039;&amp;#039;&amp;#039;tag&amp;#039;&amp;#039;&amp;#039; é um número anexado a um sector, uma linedef ou um thing. O tag de uma coisa (thing) geralmente é chamado de TID. O tag é usado para se referir ao setor, linedef ou thing marcado por meio de vários action specials e built-in ACS functions. Vários objetos podem compartilhar o mesmo tag e serão afetados pelos mesmos efeitos.  Mapas UDMF têm a capacidade de ter múltiplos tags por linha ou setor. Os formatos de mapa Doom e Hexen n...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O &#039;&#039;&#039;tag&#039;&#039;&#039; é um número anexado a um [[sector]], uma [[linedef]] ou um [[thing]]. O tag de uma coisa (thing) geralmente é chamado de [[TID]]. O tag é usado para se referir ao setor, linedef ou thing marcado por meio de vários [[action specials]] e [[built-in ACS functions]]. Vários objetos podem compartilhar o mesmo tag e serão afetados pelos mesmos efeitos.&lt;br /&gt;
&lt;br /&gt;
Mapas UDMF têm a capacidade de ter múltiplos tags por linha ou setor. Os formatos de mapa Doom e Hexen não permitem isso. Things não podem ter múltiplos TIDs independentemente do formato do mapa.&lt;br /&gt;
&lt;br /&gt;
Veja a seção de propriedades UDMF de [[Sector|esta página]] para mais informações sobre como aplicar múltiplos IDs a setores e [[linedef|linhas]].&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=TID&amp;diff=206</id>
		<title>TID</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=TID&amp;diff=206"/>
		<updated>2026-03-06T20:38:48Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;O &amp;#039;&amp;#039;&amp;#039;TID&amp;#039;&amp;#039;&amp;#039;, ou &amp;#039;&amp;#039;&amp;#039;Thing ID&amp;#039;&amp;#039;&amp;#039;, é o tag de uma coisa (thing). Este identificador não deve ser confundido com nenhum dos outros números mágicos que podem se referir a um thing: um mesmo TID pode ser compartilhado por vários actors de diferentes classes, e ele não corresponde a uma classe de ator em particular. Category:Glossary&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O &#039;&#039;&#039;TID&#039;&#039;&#039;, ou &#039;&#039;&#039;Thing ID&#039;&#039;&#039;, é o [[tag]] de uma coisa (thing). Este identificador não deve ser confundido com nenhum dos outros [[magic numbers|números mágicos]] que podem se referir a um [[thing]]: um mesmo TID pode ser compartilhado por vários [[actor]]s de diferentes [[classes]], e ele não corresponde a uma classe de ator em particular.&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ActivatorTID&amp;diff=205</id>
		<title>ActivatorTID</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ActivatorTID&amp;diff=205"/>
		<updated>2026-03-06T20:38:23Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;int &amp;#039;&amp;#039;&amp;#039;ActivatorTID&amp;#039;&amp;#039;&amp;#039; (void)  == Uso ==  Retorna o TID do ator que ativou o script.  === Valor de retorno ===  O TID do ator que ativou o script.  == Exemplos ==  Pode ser usado para uma linha que monstros podem acionar, para verificar se foi um monstro que a acionou.   script 1 (void)  {      if (ActivatorTID () == 999)          Print (s:&amp;quot;Você não é um zumbi&amp;quot;);      else          DamageThing (0); // mata ele  }    script 10 {{SType|ENTER}}  {      ...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;int &#039;&#039;&#039;ActivatorTID&#039;&#039;&#039; (void)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna o [[TID]] do ator que ativou o script.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
O TID do ator que ativou o script.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
Pode ser usado para uma linha que monstros podem acionar, para verificar se foi um monstro que a acionou.&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     if ([[ActivatorTID]] () == 999)&lt;br /&gt;
         [[Print]] (s:&amp;quot;Você não é um zumbi&amp;quot;);&lt;br /&gt;
     else&lt;br /&gt;
         [[DamageThing]] (0); // mata ele&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 script 10 {{SType|ENTER}}&lt;br /&gt;
 {&lt;br /&gt;
     [[Thing_ChangeTID]] (0, 999);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
O script ENTER define os TIDs do jogador como 999 (já que 0 normalmente implica o ativador do script). O script número 1 verifica se o ativador tem TID 999, ou seja, se é um jogador, e se for, avisa isso. Caso contrário, ele mata.&lt;br /&gt;
&lt;br /&gt;
Isso pode ser útil se você tiver marines com script como aliados e não quiser que eles sejam submetidos ao mesmo tratamento que outros monstros.&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Information functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=VectorAngle&amp;diff=204</id>
		<title>VectorAngle</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=VectorAngle&amp;diff=204"/>
		<updated>2026-03-06T20:28:00Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ {{note|Esta página é sobre uma função de ACS. Para uma expressão {{c|atan2}} em ZScript, veja &amp;#039;&amp;#039;&amp;#039;aqui&amp;#039;&amp;#039;&amp;#039;.}}  fixed &amp;#039;&amp;#039;&amp;#039;VectorAngle&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;x&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;y&amp;#039;&amp;#039;)  == Uso ==  Retorna o ângulo em ponto fixo do vetor (&amp;#039;&amp;#039;x&amp;#039;&amp;#039;,&amp;#039;&amp;#039;y&amp;#039;&amp;#039;). Os ângulos são medidos a partir do leste e avançando no sentido anti-horário.  Esta função é mais comumente conhecida como &amp;#039;&amp;#039;atan2&amp;#039;&amp;#039;. Para obter o valor de &amp;#039;...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{note|Esta página é sobre uma função de [[ACS]]. Para uma expressão {{c|atan2}} em [[ZScript]], veja [[DECORATE_expressions#Trigonometry_functions|&#039;&#039;&#039;aqui&#039;&#039;&#039;]].}}&lt;br /&gt;
&lt;br /&gt;
fixed &#039;&#039;&#039;VectorAngle&#039;&#039;&#039; (int &#039;&#039;x&#039;&#039;, int &#039;&#039;y&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna o [[Definitions|ângulo em ponto fixo]] do vetor (&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;). Os ângulos são medidos a partir do leste e avançando no sentido anti-horário.&lt;br /&gt;
&lt;br /&gt;
Esta função é mais comumente conhecida como &#039;&#039;atan2&#039;&#039;. Para obter o valor de &#039;&#039;atan(x)&#039;&#039;, use &amp;lt;tt&amp;gt;VectorAngle(1.0, x)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039;: Coordenadas do ponto final do vetor.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
[[Definitions|Ângulo em ponto fixo]] do vetor (&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
Este script vai imprimir um pequeno ^ na parte de baixo da tela do jogador apontando para o ator com TID definido como 1:&lt;br /&gt;
&lt;br /&gt;
 script 1 [[Script types|ENTER]]&lt;br /&gt;
 {&lt;br /&gt;
     int vang, angle;&lt;br /&gt;
     while({{const|TRUE}})&lt;br /&gt;
     {    &lt;br /&gt;
         vang = [[VectorAngle]] ([[GetActorX]] (1) - [[GetActorX]] (0), [[GetActorY]] (1) - [[GetActorY]] (0));&lt;br /&gt;
         angle = (vang - [[GetActorAngle]] (0) + 1.0) % 1.0;&lt;br /&gt;
 &lt;br /&gt;
         if (angle &amp;lt; 0.2 || angle &amp;gt; 0.8)&lt;br /&gt;
         {&lt;br /&gt;
             int sx = 320 - (320 * [[Sin]] (angle) / [[Cos]] (angle));&lt;br /&gt;
 &lt;br /&gt;
             [[SetHudSize]] (640, 480, 0);&lt;br /&gt;
             [[HudMessage]] (s:&amp;quot;^&amp;quot;; {{const|HUDMSG_PLAIN}}, 1, {{const|CR_RED}}, sx * 1.0, 480.2, 0);&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             [[HudMessage]] (s:&amp;quot;&amp;quot;; {{const|HUDMSG_PLAIN}}, 1, 0, 0, 0, 0);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         [[Delay]] (1);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=StrLen&amp;diff=203</id>
		<title>StrLen</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=StrLen&amp;diff=203"/>
		<updated>2026-03-06T18:48:16Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ int &amp;#039;&amp;#039;&amp;#039;StrLen&amp;#039;&amp;#039;&amp;#039; (str &amp;#039;&amp;#039;string&amp;#039;&amp;#039;)  == Uso ==  Retorna o comprimento da string especificada por &amp;#039;&amp;#039;string&amp;#039;&amp;#039;. Note que todas as strings em ACS são estáticas, ou seja, elas não são criadas dinamicamente, então não é realmente necessário usar esta função a menos que você tenha muitas strings armazenadas em uma library em algum lugar&amp;amp;nbsp;&amp;amp;mdash; como em &amp;#039;&amp;#039;Daedalus&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;mdash; e você precise de delays corretos para um HudMessage. A existência...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
int &#039;&#039;&#039;StrLen&#039;&#039;&#039; (str &#039;&#039;string&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna o comprimento da string especificada por &#039;&#039;string&#039;&#039;. Note que todas as strings em ACS são estáticas, ou seja, elas não são criadas dinamicamente, então não é realmente necessário usar esta função a menos que você tenha muitas strings armazenadas em uma [[library]] em algum lugar&amp;amp;nbsp;&amp;amp;mdash; como em &#039;&#039;Daedalus&#039;&#039;&amp;amp;nbsp;&amp;amp;mdash; e você precise de delays corretos para um [[HudMessage]]. A existência de [[StrParam]] torna esta função mais útil, no entanto.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;string&#039;&#039;: A string cujo comprimento queremos saber.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Comprimento (a contagem de caracteres) da string fornecida.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
Este script imprime uma string e seu comprimento:&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     str thestring = &amp;quot;This is the string.&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
     [[Print]] (s:thestring, i:[[StrLen]] (thestring));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]] [[category:ACS String operations]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Sqrt&amp;diff=202</id>
		<title>Sqrt</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Sqrt&amp;diff=202"/>
		<updated>2026-03-06T18:47:40Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;int &amp;#039;&amp;#039;&amp;#039;Sqrt&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   fixed &amp;#039;&amp;#039;&amp;#039;FixedSqrt&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   == Uso ==  Retorna a raiz quadrada de um número inteiro ou de ponto fixo.  === Parâmetros ===  * &amp;#039;&amp;#039;number&amp;#039;&amp;#039;: Valor do qual obter a raiz quadrada.  === Valor de retorno ===  Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.  == Cálculo manual == Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, pa...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;int &#039;&#039;&#039;Sqrt&#039;&#039;&#039; (int &#039;&#039;number&#039;&#039;) &lt;br /&gt;
&lt;br /&gt;
fixed &#039;&#039;&#039;FixedSqrt&#039;&#039;&#039; (fixed &#039;&#039;number&#039;&#039;) &lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna a raiz quadrada de um número inteiro ou de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;number&#039;&#039;: Valor do qual obter a raiz quadrada.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.&lt;br /&gt;
&lt;br /&gt;
== Cálculo manual ==&lt;br /&gt;
Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, para a distância entre dois objetos, a função [[distance]] pode ser mais rápida.&lt;br /&gt;
&lt;br /&gt;
Esta versão usa o método de Newton, em que a solução converge quadraticamente a partir do chute inicial. Esta função foi comparada com as duas seguintes e é pelo menos 5 a 10 vezes mais rápida em uso normal.&lt;br /&gt;
 function int sqrt(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	if(number &amp;lt;= 3) { return number &amp;gt; 0; }&lt;br /&gt;
 &lt;br /&gt;
 	int oldAns = number &amp;gt;&amp;gt; 1,                     // chute inicial&lt;br /&gt;
 	    newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1; // primeira iteração&lt;br /&gt;
 &lt;br /&gt;
 	// método iterativo principal&lt;br /&gt;
 	while(newAns &amp;lt; oldAns)&lt;br /&gt;
 	{&lt;br /&gt;
 		oldAns = newAns;&lt;br /&gt;
 		newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return oldAns;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Esta é uma versão mais simples, porém mais lenta, de uma função de raiz quadrada. Ela arredonda a raiz para cima ou para baixo.&lt;br /&gt;
&lt;br /&gt;
 function int sqrt (int x)&lt;br /&gt;
 {&lt;br /&gt;
 	int r;&lt;br /&gt;
 	x = x + 1 &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	while (x &amp;gt; r)&lt;br /&gt;
 		x -= r++;&lt;br /&gt;
 	return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Se você precisar de uma função que arredonde para baixo, esta funcionará. Baseada em [http://snippets.dzone.com/posts/show/2715 este algoritmo].&lt;br /&gt;
 function int isqrt (int n)&lt;br /&gt;
 {&lt;br /&gt;
 	int a;&lt;br /&gt;
 	for (a=0;n&amp;gt;=(2*a)+1;n-=(2*a++)+1);&lt;br /&gt;
 	return a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esta fórmula baseada em amostragem processa valores fixos e retorna um resultado fixo cuja precisão é definida pelo inteiro &#039;&#039;samples&#039;&#039;, e retorna zero se o número de entrada for negativo.&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 { &lt;br /&gt;
   int samples=15; // Amostras para precisão&lt;br /&gt;
 &lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = samples&amp;lt;&amp;lt;17 + samples&amp;lt;&amp;lt;19; //x*10 = x&amp;lt;&amp;lt;1 + x&amp;lt;&amp;lt;3&lt;br /&gt;
   for (int i=0; i&amp;lt;samples; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Este é o mesmo de cima, mas otimizado para 15 amostras&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 {&lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = 150.0;&lt;br /&gt;
   for (int i=0; i&amp;lt;15; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Sin&amp;diff=201</id>
		<title>Sin</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Sin&amp;diff=201"/>
		<updated>2026-03-06T18:46:54Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ fixed &amp;#039;&amp;#039;&amp;#039;Sin&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;)  == Uso ==  Retorna o valor do seno de &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;.  === Parâmetros ===  * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: O valor de ângulo em ponto fixo para o qual calcular o seno.  === Valor de retorno ===  Retorna o valor do seno em ponto fixo.  == Exemplo ==  Este script spawna dois {{Class|Medikit}}s à esquerda e à direita do ativador quando ativado.   script 1 (void)  {      int x = GetActorX (0...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
fixed &#039;&#039;&#039;Sin&#039;&#039;&#039; (int &#039;&#039;angle&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna o valor do seno de &#039;&#039;angle&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: O valor de [[Definitions#Fixed point angles|ângulo em ponto fixo]] para o qual calcular o seno.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Retorna o valor do seno em [[Fixed point number|ponto fixo]].&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Este script spawna dois {{Class|Medikit}}s à esquerda e à direita do ativador quando ativado.&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     int x = [[GetActorX]] (0);&lt;br /&gt;
     int y = [[GetActorY]] (0);&lt;br /&gt;
     int z = [[GetActorZ]] (0) + 32.0;&lt;br /&gt;
     int angle = [[GetActorAngle]] (0);&lt;br /&gt;
 &lt;br /&gt;
     [[Spawn]] (&amp;quot;{{Class|Medikit}}&amp;quot;, x + [[cos]] (angle + 0.25) * 32, y + [[sin]] (angle + 0.25) * 32, z);&lt;br /&gt;
     [[Spawn]] (&amp;quot;{{Class|Medikit}}&amp;quot;, x + [[cos]] (angle + 0.75) * 32, y + [[sin]] (angle + 0.75) * 32, z);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Veja também==&lt;br /&gt;
* [[Cos]]&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Round&amp;diff=200</id>
		<title>Round</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Round&amp;diff=200"/>
		<updated>2026-03-06T18:46:17Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ fixed &amp;#039;&amp;#039;&amp;#039;Round&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;value&amp;#039;&amp;#039;)  ==Uso== Arredonda o valor especificado para o número inteiro mais próximo.  ===Valor de retorno=== O valor após o arredondamento, como um número de ponto fixo.  ==Função customizada== {{note|A seguir está uma implementação não nativa da função, para versões do GZDoom anteriores à 2.4.0.}} Esta função implementa arredondamento. Ao realizar a operação de bitshift em um número de ponto fixo, o...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
fixed &#039;&#039;&#039;Round&#039;&#039;&#039; (fixed &#039;&#039;value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==Uso==&lt;br /&gt;
Arredonda o valor especificado para o número inteiro mais próximo.&lt;br /&gt;
&lt;br /&gt;
===Valor de retorno===&lt;br /&gt;
O valor após o arredondamento, como um número de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
==Função customizada==&lt;br /&gt;
{{note|A seguir está uma implementação não nativa da função, para versões do GZDoom anteriores à 2.4.0.}}&lt;br /&gt;
Esta função implementa arredondamento. Ao realizar a operação de bitshift em um número de [[fixed point|ponto fixo]], o que você está fazendo na prática é simplesmente cortar o final do número, a parte que é menor que 1. Então &#039;&#039;&#039;0.5 &amp;gt;&amp;gt; 16&#039;&#039;&#039; retornará &#039;&#039;&#039;0&#039;&#039;&#039;. Pode haver casos em que você queira, em vez disso, arredondar valores de 0.5 ou maiores para o inteiro mais próximo ao convertê-los para um inteiro, por exemplo ao definir uma posição absoluta para um hudmessage.&lt;br /&gt;
&lt;br /&gt;
Se você precisa arredondar um número para o inteiro mais próximo, mas precisa que o número resultante seja um [[fixed point|ponto fixo]], você pode simplesmente fazer o bitshift de volta na direção oposta usando &#039;&#039;&#039;round(number) &amp;lt;&amp;lt; 16&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 // Retorna valor inteiro&lt;br /&gt;
 function int round(int fixedNumber)&lt;br /&gt;
 {&lt;br /&gt;
 	return (fixedNumber + 0.5) &amp;gt;&amp;gt; 16;&lt;br /&gt;
 }&lt;br /&gt;
Versão que corta a parte decimal&lt;br /&gt;
 // Retorna valor em ponto fixo&lt;br /&gt;
 function int floor(int fixedNumber)&lt;br /&gt;
 {&lt;br /&gt;
 	return fixedNumber &amp;amp; 0xFFFF0000;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]]&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Random&amp;diff=199</id>
		<title>Random</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Random&amp;diff=199"/>
		<updated>2026-03-06T18:45:13Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ {{note|Esta página é sobre uma função de ACS. Para funções de geração aleatória em ZScript, veja &amp;#039;&amp;#039;&amp;#039;aqui&amp;#039;&amp;#039;&amp;#039;.}}  int &amp;#039;&amp;#039;&amp;#039;Random&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;min&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;max&amp;#039;&amp;#039;)  == Uso ==  Retorna um inteiro aleatório entre &amp;#039;&amp;#039;min&amp;#039;&amp;#039; e &amp;#039;&amp;#039;max&amp;#039;&amp;#039; (inclusive).  === Parâmetros ===  * &amp;#039;&amp;#039;min&amp;#039;&amp;#039;: O valor mínimo a retornar. * &amp;#039;&amp;#039;max&amp;#039;&amp;#039;: O valor máximo a retornar.  === Valor de retorno ===  Um inteiro aleatório entre &amp;#039;&amp;#039;min&amp;#039;&amp;#039; e...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{note|Esta página é sobre uma função de [[ACS]]. Para funções de geração aleatória em [[ZScript]], veja &#039;&#039;&#039;[[DECORATE_expressions#Random_number_functions|aqui]]&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;Random&#039;&#039;&#039; (int &#039;&#039;min&#039;&#039;, int &#039;&#039;max&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna um inteiro aleatório entre &#039;&#039;min&#039;&#039; e &#039;&#039;max&#039;&#039; (inclusive).&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;min&#039;&#039;: O valor mínimo a retornar.&lt;br /&gt;
* &#039;&#039;max&#039;&#039;: O valor máximo a retornar.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Um inteiro aleatório entre &#039;&#039;min&#039;&#039; e &#039;&#039;max&#039;&#039; (inclusive).&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
Este script causa dano ao ativador com um valor de 1 a 10 quando ativado:&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     [[DamageThing]] ([[Random]] (1, 10));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Você também pode usar números de ponto fixo; este script faz o ativador olhar para uma direção aleatória:&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     [[SetActorAngle]] (0, [[Random]] (0, 1.0));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Floor_(ACS_function)&amp;diff=198</id>
		<title>Floor (ACS function)</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Floor_(ACS_function)&amp;diff=198"/>
		<updated>2026-03-06T18:44:28Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ fixed &amp;#039;&amp;#039;&amp;#039;Floor&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;value&amp;#039;&amp;#039;)  ==Uso== Arredonda o valor especificado para o menor número inteiro.  ===Valor de retorno=== O valor após o arredondamento, como um número de ponto fixo.  ==Exemplos== Isto irá print &amp;quot;Value is 2&amp;quot;: &amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt; script &amp;quot;FlooredTest&amp;quot; (void) {     PrintBold(s: &amp;quot;Value is &amp;quot;, f: Floor(2.5)); } &amp;lt;/syntaxhighlight&amp;gt;  category:ACS Math functions&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
fixed &#039;&#039;&#039;Floor&#039;&#039;&#039; (fixed &#039;&#039;value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==Uso==&lt;br /&gt;
Arredonda o valor especificado para o menor número inteiro.&lt;br /&gt;
&lt;br /&gt;
===Valor de retorno===&lt;br /&gt;
O valor após o arredondamento, como um número de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
Isto irá [[print]] &amp;quot;Value is 2&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
script &amp;quot;FlooredTest&amp;quot; (void)&lt;br /&gt;
{&lt;br /&gt;
    PrintBold(s: &amp;quot;Value is &amp;quot;, f: Floor(2.5));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=FixedSqrt&amp;diff=197</id>
		<title>FixedSqrt</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=FixedSqrt&amp;diff=197"/>
		<updated>2026-03-06T15:18:48Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;int &amp;#039;&amp;#039;&amp;#039;Sqrt&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   fixed &amp;#039;&amp;#039;&amp;#039;FixedSqrt&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   == Uso ==  Retorna a raiz quadrada de um número inteiro ou de ponto fixo.  === Parâmetros ===  * &amp;#039;&amp;#039;number&amp;#039;&amp;#039;: Valor do qual obter a raiz quadrada.  === Valor de retorno ===  Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.  == Cálculo manual == Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, pa...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;int &#039;&#039;&#039;Sqrt&#039;&#039;&#039; (int &#039;&#039;number&#039;&#039;) &lt;br /&gt;
&lt;br /&gt;
fixed &#039;&#039;&#039;FixedSqrt&#039;&#039;&#039; (fixed &#039;&#039;number&#039;&#039;) &lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna a raiz quadrada de um número inteiro ou de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;number&#039;&#039;: Valor do qual obter a raiz quadrada.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.&lt;br /&gt;
&lt;br /&gt;
== Cálculo manual ==&lt;br /&gt;
Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, para a distância entre dois objetos, a função [[distance]] pode ser mais rápida.&lt;br /&gt;
&lt;br /&gt;
Esta versão usa o método de Newton, em que a solução converge quadraticamente a partir do chute inicial. Esta função foi comparada com as duas seguintes e é pelo menos 5 a 10 vezes mais rápida em uso normal.&lt;br /&gt;
 function int sqrt(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	if(number &amp;lt;= 3) { return number &amp;gt; 0; }&lt;br /&gt;
 &lt;br /&gt;
 	int oldAns = number &amp;gt;&amp;gt; 1,                     // chute inicial&lt;br /&gt;
 	    newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1; // primeira iteração&lt;br /&gt;
 &lt;br /&gt;
 	// método iterativo principal&lt;br /&gt;
 	while(newAns &amp;lt; oldAns)&lt;br /&gt;
 	{&lt;br /&gt;
 		oldAns = newAns;&lt;br /&gt;
 		newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return oldAns;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Esta é uma versão mais simples, porém mais lenta, de uma função de raiz quadrada. Ela arredonda a raiz para cima ou para baixo.&lt;br /&gt;
&lt;br /&gt;
 function int sqrt (int x)&lt;br /&gt;
 {&lt;br /&gt;
 	int r;&lt;br /&gt;
 	x = x + 1 &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	while (x &amp;gt; r)&lt;br /&gt;
 		x -= r++;&lt;br /&gt;
 	return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Se você precisar de uma função que arredonde para baixo, esta funcionará. Baseada em [http://snippets.dzone.com/posts/show/2715 este algoritmo].&lt;br /&gt;
 function int isqrt (int n)&lt;br /&gt;
 {&lt;br /&gt;
 	int a;&lt;br /&gt;
 	for (a=0;n&amp;gt;=(2*a)+1;n-=(2*a++)+1);&lt;br /&gt;
 	return a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esta fórmula baseada em amostragem processa valores fixos e retorna um resultado fixo cuja precisão é definida pelo inteiro &#039;&#039;samples&#039;&#039;, e retorna zero se o número de entrada for negativo.&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 { &lt;br /&gt;
   int samples=15; // Amostras para precisão&lt;br /&gt;
 &lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = samples&amp;lt;&amp;lt;17 + samples&amp;lt;&amp;lt;19; //x*10 = x&amp;lt;&amp;lt;1 + x&amp;lt;&amp;lt;3&lt;br /&gt;
   for (int i=0; i&amp;lt;samples; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Este é o mesmo de cima, mas otimizado para 15 amostras&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 {&lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = 150.0;&lt;br /&gt;
   for (int i=0; i&amp;lt;15; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Cos&amp;diff=196</id>
		<title>Cos</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Cos&amp;diff=196"/>
		<updated>2026-03-06T15:17:42Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ fixed &amp;#039;&amp;#039;&amp;#039;Cos&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;)  == Uso ==  Retorna o valor do cosseno de &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;.  === Parâmetros ===  * &amp;#039;&amp;#039;angle&amp;#039;&amp;#039;: O valor de ângulo em ponto fixo para o qual calcular o cosseno.  === Valor de retorno ===  Retorna o valor do cosseno em ponto fixo.  == Exemplo ==  Este script spawna dois {{Class|Medikit}}s à esquerda e à direita do ativador quando ativado.   script 1 (void)  {      int x = GetAc...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
fixed &#039;&#039;&#039;Cos&#039;&#039;&#039; (int &#039;&#039;angle&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna o valor do cosseno de &#039;&#039;angle&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;angle&#039;&#039;: O valor de [[Definitions#Fixed point angles|ângulo em ponto fixo]] para o qual calcular o cosseno.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Retorna o valor do cosseno em [[fixed point number|ponto fixo]].&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Este script spawna dois {{Class|Medikit}}s à esquerda e à direita do ativador quando ativado.&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     int x = [[GetActorX]] (0);&lt;br /&gt;
     int y = [[GetActorY]] (0);&lt;br /&gt;
     int z = [[GetActorZ]] (0) + 32.0;&lt;br /&gt;
     int angle = [[GetActorAngle]] (0);&lt;br /&gt;
 &lt;br /&gt;
     [[Spawn]] (&amp;quot;{{Class|Medikit}}&amp;quot;, x + [[cos]] (angle + 0.25) * 32, y + [[sin]] (angle + 0.25) * 32, z);&lt;br /&gt;
     [[Spawn]] (&amp;quot;{{Class|Medikit}}&amp;quot;, x + [[cos]] (angle + 0.75) * 32, y + [[sin]] (angle + 0.75) * 32, z);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Veja também==&lt;br /&gt;
* [[Sin]]&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Ceil&amp;diff=195</id>
		<title>Ceil</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Ceil&amp;diff=195"/>
		<updated>2026-03-06T15:17:02Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ fixed &amp;#039;&amp;#039;&amp;#039;Ceil&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;value&amp;#039;&amp;#039;)  ==Uso== Arredonda o valor especificado para o maior número inteiro.  ===Valor de retorno=== O valor após o arredondamento, como um número de ponto fixo.  ==Função customizada== {{note|A seguir está uma implementação não nativa da função, para versões do GZDoom anteriores à 2.4.0.}} Mapeia um valor de ponto fixo para o maior número inteiro.   function int ceil (Data_types#In...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
fixed &#039;&#039;&#039;Ceil&#039;&#039;&#039; (fixed &#039;&#039;value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==Uso==&lt;br /&gt;
Arredonda o valor especificado para o maior número inteiro.&lt;br /&gt;
&lt;br /&gt;
===Valor de retorno===&lt;br /&gt;
O valor após o arredondamento, como um número de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
==Função customizada==&lt;br /&gt;
{{note|A seguir está uma implementação não nativa da função, para versões do GZDoom anteriores à 2.4.0.}}&lt;br /&gt;
Mapeia um valor de ponto fixo para o maior número inteiro.&lt;br /&gt;
  [[Functions|function]] [[Data_types#Integer|int]] ceil ([[Data_types#Integer|int]] x)&lt;br /&gt;
  {&lt;br /&gt;
      return (x + 65535) &amp;amp; 0xFFFF0000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Math functions]]&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=TagWait&amp;diff=194</id>
		<title>TagWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=TagWait&amp;diff=194"/>
		<updated>2026-03-06T15:15:01Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;TagWait&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;tag&amp;#039;&amp;#039;);  == Uso ==  Atrasa o script de onde &amp;#039;&amp;#039;&amp;#039;TagWait&amp;#039;&amp;#039;&amp;#039; é chamado até que o setor com o tag especificado por &amp;#039;&amp;#039;tag&amp;#039;&amp;#039; tenha parado de se mover (certifique-se de não fazer isso com um setor oscilando (waggling) ou um que esteja em movimento perpétuo, porque o script ficará aguardando para sempre). &amp;#039;&amp;#039;&amp;#039;TagWait&amp;#039;&amp;#039;&amp;#039; sempre aguardará 1 tic mesmo que o setor não esteja se movendo.  ===...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;TagWait&#039;&#039;&#039; (int &#039;&#039;tag&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Atrasa o script de onde &#039;&#039;&#039;TagWait&#039;&#039;&#039; é chamado até que o setor com o tag especificado por &#039;&#039;tag&#039;&#039; tenha parado de se mover (certifique-se de não fazer isso com um setor [[Floor_Waggle|oscilando (waggling)]] ou um que esteja em movimento [[Plat_PerpetualRaise|perpétuo]], porque o script ficará aguardando para sempre). &#039;&#039;&#039;TagWait&#039;&#039;&#039; sempre aguardará 1 [[Definitions#Tic|tic]] mesmo que o setor não esteja se movendo.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
* &#039;&#039;tag&#039;&#039;: O tag de setor a aguardar.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
Este script faz uma porta com tag abrir e imprime uma mensagem para todos os jogadores quando isso estiver concluído.&lt;br /&gt;
&lt;br /&gt;
 script 1 (int sector)&lt;br /&gt;
 {&lt;br /&gt;
     [[PrintBold]] (s:&amp;quot;Abrindo as portas do hangar...&amp;quot;);&lt;br /&gt;
     [[Door_Open]] (sector, 5, 0);&lt;br /&gt;
     [[TagWait]] (sector);&lt;br /&gt;
     [[PrintBold]] (s:&amp;quot;Portas do hangar agora abertas!&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
As duas primeiras linhas iniciam a abertura da porta e avisam ao(s) jogador(es) que isso está acontecendo. Note que a porta está abrindo a uma velocidade de 5, que é bem lenta (o que você esperaria para uma grande porta de hangar). O script então usa &#039;&#039;&#039;TagWait&#039;&#039;&#039; para esperar um tempo não especificado antes de a porta realmente abrir. Quando abre, isso é informado.&lt;br /&gt;
&lt;br /&gt;
A vantagem de &#039;&#039;&#039;TagWait&#039;&#039;&#039; aqui é que você pode usar o mesmo script em muitas portas de hangar apesar de diferenças de altura e, portanto, de tempo de abertura. Ou então, você pode modificar o tamanho da sua própria porta de hangar ou a velocidade do script e a mensagem de “aberta” sempre chegará exatamente no momento certo.&lt;br /&gt;
&lt;br /&gt;
Note que, ao usar isso com um elevador, o script esperará até que o elevador tenha terminado completamente sua sequência de movimento, isto é, até que ele tenha retornado com sucesso à sua posição inicial.&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ScriptWait&amp;diff=193</id>
		<title>ScriptWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ScriptWait&amp;diff=193"/>
		<updated>2026-03-06T15:13:51Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;ScriptWait&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;script&amp;#039;&amp;#039;);  == Uso ==  Atrasa o script em que ele está contido até que o script especificado por &amp;#039;&amp;#039;script&amp;#039;&amp;#039; tenha concluído a execução. Se o script especificado não estiver em execução, este comando aguardará até que ele seja executado. Para named scripts, use NamedScriptWait.  === Parâmetros ===  * &amp;#039;&amp;#039;script&amp;#039;&amp;#039;: O número do script a aguardar.  == Exemplos ==  A vantagem de &amp;#039;&amp;#039;&amp;#039;ScriptWait&amp;#039;&amp;#039;&amp;#039; é que ele pode segurar um scr...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;ScriptWait&#039;&#039;&#039; (int &#039;&#039;script&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Atrasa o [[script]] em que ele está contido até que o script especificado por &#039;&#039;script&#039;&#039; tenha concluído a execução. Se o script especificado não estiver em execução, este comando aguardará até que ele seja executado. Para [[named script]]s, use [[NamedScriptWait]].&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: O número do script a aguardar.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
A vantagem de &#039;&#039;&#039;ScriptWait&#039;&#039;&#039; é que ele pode segurar um script que só deve rodar uma vez. Digamos que exista um script que deve ser executado apenas uma vez para abrir uma porta (por exemplo, ele ativa quando o jogador destrói um painel de controle, o que só pode ser feito uma vez), mas o mapa exige que a porta seja destrancada antes disso. Caso a porta ainda esteja trancada, &#039;&#039;&#039;ScriptWait&#039;&#039;&#039; pode ser usado para segurar o script de execução única até que o script que destranca a porta tenha começado e terminado.&lt;br /&gt;
&lt;br /&gt;
A seguir está um exemplo de implementação desse código. Ele é um tanto longo, mas bem direto.&lt;br /&gt;
&lt;br /&gt;
 bool locked = {{const|TRUE}};&lt;br /&gt;
 script 1 (int sector)&lt;br /&gt;
 {&lt;br /&gt;
     if (locked)&lt;br /&gt;
     {&lt;br /&gt;
         [[Print]] (s:&amp;quot;Acesso de segurança necessário!&amp;quot;);&lt;br /&gt;
         [[ScriptWait]] (2);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     [[Door_Open]] (sector, 20);&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 script 2 (int count)&lt;br /&gt;
 {&lt;br /&gt;
     while (count &amp;gt; 0)&lt;br /&gt;
     {&lt;br /&gt;
         [[HudMessage]] (i:count--; {{const|HUDMSG_PLAIN}}, 1,&lt;br /&gt;
             {{const|CR_RED}}, 0.05, 0.95, 1.0);&lt;br /&gt;
         [[Delay]] (1);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     [[HudMessage]] (s:&amp;quot;Verificado!&amp;quot;; {{const|HUDMSG_PLAIN}}, 1,&lt;br /&gt;
         {{const|CR_GOLD}}, 0.05, 0.95, 1.0);&lt;br /&gt;
 	&lt;br /&gt;
     locked = {{const|FALSE}};&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
O primeiro script é o script de execução única. Se a porta estiver trancada, ele avisa o usuário e espera o script de destrancar rodar e terminar. Depois disso, ou se a porta já estiver destrancada, a porta abre.&lt;br /&gt;
&lt;br /&gt;
O segundo script recebe um parâmetro, que é a quantidade de frames para contar antes de destrancar. Note que count é exibido como &amp;lt;code&amp;gt;count--&amp;lt;/code&amp;gt;, onde os dois sinais de menos são o operador de decremento. Depois que a contagem termina, a porta é destrancada.&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=PolyWait&amp;diff=192</id>
		<title>PolyWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=PolyWait&amp;diff=192"/>
		<updated>2026-03-06T15:12:38Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;PolyWait&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;polyid&amp;#039;&amp;#039;);  == Uso ==  &amp;#039;&amp;#039;&amp;#039;PolyWait&amp;#039;&amp;#039;&amp;#039; atrasa o script em que ele está até que o polyobject com o número de id especificado (&amp;#039;&amp;#039;polyid&amp;#039;&amp;#039;) tenha terminado seu movimento. Por exemplo, se for especificada uma porta de polyobject, então o script irá aguardar até que ela tenha sido redefinida para sua localização original. Esta função é útil se você quer que algo aconteça exatamente depois que um polyobject para de se mover (ou algo...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;PolyWait&#039;&#039;&#039; (int &#039;&#039;polyid&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PolyWait&#039;&#039;&#039; atrasa o script em que ele está até que o [[polyobject]] com o número de id especificado (&#039;&#039;polyid&#039;&#039;) tenha terminado seu movimento. Por exemplo, se for especificada uma porta de polyobject, então o script irá aguardar até que ela tenha sido redefinida para sua localização original. Esta função é útil se você quer que algo aconteça exatamente depois que um polyobject para de se mover (ou algo semelhante).&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;polyid&#039;&#039;: O id do [[polyobject]] a aguardar.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
O uso mais direto deste comando seria após [[Polyobj_Move]].&lt;br /&gt;
&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     [[Polyobj_Move]] (0, 10, 128, 64);&lt;br /&gt;
     [[PolyWait]] (0);&lt;br /&gt;
     [[Print]] (s:&amp;quot;Entryway is open.&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Este script pode ser usado em uma adaptação do [http://zdoom.org/wiki/upload/polyexample.zip wad de exemplo (729 bytes)] na página [[polyobject]]. Em vez de usar um action special de linha nas portas, este script poderia ser acessado via um switch ou um thing special. Ele abre a porta e informa ao jogador que isso aconteceu.&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=NamedScriptWait&amp;diff=191</id>
		<title>NamedScriptWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=NamedScriptWait&amp;diff=191"/>
		<updated>2026-03-06T15:11:22Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;NamedScriptWait&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;)  == Uso ==  Atrasa o script em que ele está contido até que o named script especificado por &amp;#039;&amp;#039;script&amp;#039;&amp;#039; tenha concluído a execução. Se o script especificado não estiver em execução, este comando aguardará até que ele seja executado. Para scripts numerados, use ScriptWait.  === Parâmetros ===  * &amp;#039;&amp;#039;script&amp;#039;&amp;#039;: O nome do script a aguardar.  == Exemplos == {{noexamples}}  {{script functions}} category:ACS Wait...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;NamedScriptWait&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Atrasa o script em que ele está contido até que o [[named script]] especificado por &#039;&#039;script&#039;&#039; tenha concluído a execução. Se o script especificado não estiver em execução, este comando aguardará até que ele seja executado. Para scripts numerados, use [[ScriptWait]].&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: O nome do script a aguardar.&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Delay&amp;diff=190</id>
		<title>Delay</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Delay&amp;diff=190"/>
		<updated>2026-03-06T15:10:39Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;Delay&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;tics&amp;#039;&amp;#039;);  == Uso ==  Atrasa o script pelo tempo especificado.  === Parâmetros ===  * &amp;#039;&amp;#039;tics&amp;#039;&amp;#039;: A quantidade de tempo para esperar em tics.  == Exemplos ==  &amp;#039;&amp;#039;&amp;#039;Delay&amp;#039;&amp;#039;&amp;#039; é um comando muito comum. Uma aplicação útil dele é evitar loops infinitos e o consequente erro “Runaway script x terminated”. Por exemplo:   script 1 {{SType|Enter}}  {      int health;      while ({{const|TRUE}})      {          health = GetActorPr...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;Delay&#039;&#039;&#039; (int &#039;&#039;tics&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Atrasa o script pelo tempo especificado.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;tics&#039;&#039;: A quantidade de tempo para esperar em [[Definitions#Tics|tics]].&lt;br /&gt;
&lt;br /&gt;
== Exemplos ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delay&#039;&#039;&#039; é um comando muito comum. Uma aplicação útil dele é evitar loops infinitos e o consequente erro “Runaway script x terminated”. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
 script 1 {{SType|Enter}}&lt;br /&gt;
 {&lt;br /&gt;
     int health;&lt;br /&gt;
     while ({{const|TRUE}})&lt;br /&gt;
     {&lt;br /&gt;
         health = [[GetActorProperty]] (0, {{const|APROP_HEALTH}});&lt;br /&gt;
         [[Print]] (s:&amp;quot;You have &amp;quot;, d:health, s:&amp;quot; health!&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Este script causará um erro de runaway porque ele tentará dizer ao jogador a vida dele infinitamente em um único tic, sem parar. Adicionar um pequeno delay resultará no efeito desejado: uma atualização inútil de vida que dura para sempre, informando ao jogador a própria vida.&lt;br /&gt;
&lt;br /&gt;
 script 1 {{SType|Enter}}&lt;br /&gt;
 {&lt;br /&gt;
     int health;&lt;br /&gt;
     while ({{const|TRUE}})&lt;br /&gt;
     {&lt;br /&gt;
         health = [[GetActorProperty]] (0, {{const|APROP_HEALTH}});&lt;br /&gt;
         [[Print]] (s:&amp;quot;You have &amp;quot;, d:health, s:&amp;quot; health!&amp;quot;);&lt;br /&gt;
         [[Delay]] (1); // Espera o próximo frame&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
O outro uso óbvio é atrasar eventos em um script. Por exemplo, o comportamento da porta usada na armadilha para a primeira chave em E1M6 de Doom pode ser simulado com um script assim:&lt;br /&gt;
&lt;br /&gt;
 script 12 (int sector, int speed, int seconds)&lt;br /&gt;
 {     &lt;br /&gt;
     [[Door_Close]] (sector, speed);&lt;br /&gt;
     [[Delay]] (35*seconds);&lt;br /&gt;
     [[Door_Open]] (sector, speed);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Embora esse comportamento possa ser obtido usando [[Door_CloseWaitOpen]] de qualquer forma.&lt;br /&gt;
&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteWait&amp;diff=189</id>
		<title>ACS NamedExecuteWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteWait&amp;diff=189"/>
		<updated>2026-03-06T15:09:19Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:ACS_NamedExecuteWait}}__NOTOC__ void &amp;#039;&amp;#039;&amp;#039;ACS_NamedExecuteWait&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;unused&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg3&amp;#039;&amp;#039;)  == Uso ==  Usar &amp;#039;&amp;#039;&amp;#039;ACS_NamedExecuteWait&amp;#039;&amp;#039;&amp;#039; é exatamente equivalente aos dois comandos a seguir:   ACS_NamedExecute (script, 0, arg1, arg2, arg3);  NamedScriptWait (script);  Note que, enquanto você especificaria um número de mapa com ACS_NamedExecute, aqui você deve especificar 0 porque você só pod...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ACS_NamedExecuteWait}}__NOTOC__&lt;br /&gt;
void &#039;&#039;&#039;ACS_NamedExecuteWait&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;unused&#039;&#039;, int &#039;&#039;arg1&#039;&#039;, int &#039;&#039;arg2&#039;&#039;, int &#039;&#039;arg3&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;ACS_NamedExecuteWait&#039;&#039;&#039; é exatamente equivalente aos dois comandos a seguir:&lt;br /&gt;
&lt;br /&gt;
 [[ACS_NamedExecute]] (script, 0, arg1, arg2, arg3);&lt;br /&gt;
 [[NamedScriptWait]] (script);&lt;br /&gt;
&lt;br /&gt;
Note que, enquanto você especificaria um número de mapa com [[ACS_NamedExecute]], aqui você deve especificar 0 porque você só pode esperar por scripts no mapa atual.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;script&#039;&#039;: O nome do script a executar.&lt;br /&gt;
*&#039;&#039;unused&#039;&#039;: Não é usado atualmente. Deve sempre ser definido como 0.&lt;br /&gt;
*&#039;&#039;arg1&#039;&#039;: Primeiro argumento passado para o script.&lt;br /&gt;
*&#039;&#039;arg2&#039;&#039;: Segundo argumento passado para o script.&lt;br /&gt;
*&#039;&#039;arg3&#039;&#039;: Terceiro argumento passado para o script.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
Assim como [[ACS_ExecuteWait]], frequentemente há outras soluções para atingir o efeito desejado; no entanto, este método pode economizar repetição desnecessária de código.&lt;br /&gt;
  script &amp;quot;WaitOnMonsters&amp;quot; (int tid)&lt;br /&gt;
  {&lt;br /&gt;
      while (ThingCount(T_NONE, tid))&lt;br /&gt;
          ;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  script &amp;quot;MonsterChallengeA&amp;quot; (int tid, int tag, int speed)&lt;br /&gt;
  {&lt;br /&gt;
      [[print]](s:&amp;quot;Mate todos os monstros para abrir a porta.&amp;quot;);&lt;br /&gt;
      ACS_NamedExecuteWait(&amp;quot;WaitOnMonsters&amp;quot;, 0, tid);&lt;br /&gt;
      [[Door_Open]](tag, speed, TRUE);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  script &amp;quot;MonsterCallengeB&amp;quot; (int tid, int tag, int speed)&lt;br /&gt;
  {&lt;br /&gt;
      Print(s:&amp;quot;Mate todos os monstros para baixar o chão.&amp;quot;);&lt;br /&gt;
      ACS_NamedExecuteWait(&amp;quot;WaitOnMonsters&amp;quot;, 0, tid);&lt;br /&gt;
      [[Floor_LowerToLowest]](tag, speed);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;br /&gt;
[[category:ACS Wait functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_ExecuteWait&amp;diff=188</id>
		<title>ACS ExecuteWait</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_ExecuteWait&amp;diff=188"/>
		<updated>2026-03-06T15:08:18Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;void &amp;#039;&amp;#039;&amp;#039;ACS_ExecuteWait&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;unused&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;arg3&amp;#039;&amp;#039;);  == Usage ==  Using &amp;#039;&amp;#039;&amp;#039;ACS_ExecuteWait&amp;#039;&amp;#039;&amp;#039; is exactly equivalent to the following two commands:   ACS_Execute (script, 0, arg1, arg2, arg3);  ScriptWait (script);  Note that where you would specify a map number with ACS_Execute, you must specify 0 here because you can only wait on scripts in the current map.  === Parameters ===  *&amp;#039;&amp;#039;script&amp;#039;&amp;#039;: The script number...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;ACS_ExecuteWait&#039;&#039;&#039; (int &#039;&#039;script&#039;&#039;, int &#039;&#039;unused&#039;&#039;, int &#039;&#039;arg1&#039;&#039;, int &#039;&#039;arg2&#039;&#039;, int &#039;&#039;arg3&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;&#039;ACS_ExecuteWait&#039;&#039;&#039; is exactly equivalent to the following two commands:&lt;br /&gt;
&lt;br /&gt;
 [[ACS_Execute]] (script, 0, arg1, arg2, arg3);&lt;br /&gt;
 [[ScriptWait]] (script);&lt;br /&gt;
&lt;br /&gt;
Note that where you would specify a map number with [[ACS_Execute]], you must specify 0 here because you can only wait on scripts in the current map.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;script&#039;&#039;: The script number to execute.&lt;br /&gt;
*&#039;&#039;unused&#039;&#039;: Not currently used. Should always be set to 0.&lt;br /&gt;
*&#039;&#039;arg1&#039;&#039;: First argument passed to the script.&lt;br /&gt;
*&#039;&#039;arg2&#039;&#039;: Second argument passed to the script.&lt;br /&gt;
*&#039;&#039;arg3&#039;&#039;: Third argument passed to the script.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
This function is rather uncommon, but does have its uses. A common use would be to wait on a scripted event. For example, if there were some sort of event or challenge that used a script at various points in the level, and at one point the player had to complete the event as part of another script, this command can be used rather than copying the challenge script twice. To elaborate, here is a script.&lt;br /&gt;
&lt;br /&gt;
 script 15 (int armytid, int sector)&lt;br /&gt;
 {&lt;br /&gt;
     [[Print]] (s:&amp;quot;Defeat the monsters for a prize!&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     [[ACS_ExecuteWait]] (5, 0, armytid, 0, 0);&lt;br /&gt;
 &lt;br /&gt;
     [[Ceiling_RaiseByValue]] (sector, 10, 64);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This script tells the player to defeat the monsters for a prize. Then it executes script 5 which could be script 5 as used [[ThingCount|here]]. After the success of script 5, a ceiling is raised, supposedly to reveal a prize. As this script can be used elsewhere, script 15 is like a wrapper for script 5 which offers a prize.&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;br /&gt;
[[category:ACS Wait functions]]&lt;br /&gt;
{{DISPLAYTITLE:ACS_ExecuteWait}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ScriptCall&amp;diff=187</id>
		<title>ScriptCall</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ScriptCall&amp;diff=187"/>
		<updated>2026-03-06T15:07:09Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;__NOTOC__ &amp;#039;&amp;#039;&amp;#039;ScriptCall&amp;#039;&amp;#039;&amp;#039; (str &amp;#039;&amp;#039;classname&amp;#039;&amp;#039;, str &amp;#039;&amp;#039;funcname&amp;#039;&amp;#039;, &amp;#039;&amp;#039;args&amp;#039;&amp;#039;)  ==Uso== Executa uma função definida em script. Se o primeiro argumento da função a executar for do tipo {{c|Actor}}, o ativador do script é passado e armazenado nesse argumento. Isso permite que o ativador seja acessado por essa função.  ===Parâmetros=== *&amp;#039;&amp;#039;classname&amp;#039;&amp;#039;: o nome da classe de actor em que a função está definida. *&amp;#039;&amp;#039;funcname&amp;#039;&amp;#039;: o nome da função a executar. Ap...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;ScriptCall&#039;&#039;&#039; (str &#039;&#039;classname&#039;&#039;, str &#039;&#039;funcname&#039;&#039;, &#039;&#039;args&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==Uso==&lt;br /&gt;
Executa uma função [[ZScript|definida em script]]. Se o primeiro argumento da função a executar for do tipo {{c|Actor}}, o ativador do script é passado e armazenado nesse argumento. Isso permite que o ativador seja acessado por essa função.&lt;br /&gt;
&lt;br /&gt;
===Parâmetros===&lt;br /&gt;
*&#039;&#039;classname&#039;&#039;: o nome da classe de actor em que a função está definida.&lt;br /&gt;
*&#039;&#039;funcname&#039;&#039;: o nome da função a executar. Apenas funções &#039;&#039;&#039;[[ZScript_functions#Static|static]]&#039;&#039;&#039; são executáveis.&lt;br /&gt;
*&#039;&#039;args&#039;&#039;: os argumentos, se houver, a serem passados para a função especificada. Os tipos de argumentos que a função pode ter são &#039;&#039;int&#039;&#039;, &#039;&#039;bool&#039;&#039;, &#039;&#039;double&#039;&#039;, &#039;&#039;string&#039;&#039;, &#039;&#039;name&#039;&#039;, &#039;&#039;color&#039;&#039; e &#039;&#039;sound&#039;&#039;. &#039;&#039;double&#039;&#039; é passado como um valor de ponto fixo, &#039;&#039;color&#039;&#039; como um valor inteiro, e &#039;&#039;name&#039;&#039; e &#039;&#039;sound&#039;&#039; como strings.&lt;br /&gt;
&lt;br /&gt;
===Valor de retorno===&lt;br /&gt;
O valor que a função executada retorna. O tipo do valor é o mesmo dos tipos dos argumentos passados, além de &#039;&#039;void&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
Este script dá ao jogador um [[TID]] único. Isso é obtido executando {{c|[[FindUniqueTid]]}}, que é definido em {{c|{{Class|Actor}}}}.&lt;br /&gt;
 script &amp;quot;SetPlayerTID&amp;quot; {{SType|Enter}}&lt;br /&gt;
 {&lt;br /&gt;
     // Apenas se o jogador ainda não tiver um TID.&lt;br /&gt;
     if([[ActivatorTID]]() == 0)&lt;br /&gt;
     {&lt;br /&gt;
         int ptid = [[ScriptCall]](&amp;quot;Actor&amp;quot;, &amp;quot;FindUniqueTid&amp;quot;, 0, 0);&lt;br /&gt;
         [[Thing_ChangeTID]](0, ptid);&lt;br /&gt;
         [[Log]](s:&amp;quot;TID alterado para &amp;quot;, d:ptid); // Mostra uma mensagem.&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note que o ACS já tem [[UniqueTID|uma função que pode obter um TID único]]. O exemplo acima é para fins educacionais.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se executada, esta função {{c|GivePresent}} dá ao ativador do script um item e registra uma mensagem. O item é especificado pelo argumento &#039;&#039;present&#039;&#039;.&lt;br /&gt;
 // Em [[ZScript]]:&lt;br /&gt;
 class ExampleClass&lt;br /&gt;
 {&lt;br /&gt;
     static void GivePresent (Actor activator, string present)&lt;br /&gt;
     {&lt;br /&gt;
         // Apenas jogadores recebem o item.&lt;br /&gt;
         if(activator &amp;amp;&amp;amp; activator.player)&lt;br /&gt;
         {&lt;br /&gt;
             activator.[[A_GiveInventory]](present);&lt;br /&gt;
             activator.[[A_Log]](&amp;quot;You received a wonderful present!&amp;quot;, true);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // Em [[ACS]]:&lt;br /&gt;
 script &amp;quot;GetGift&amp;quot; (void)&lt;br /&gt;
 {&lt;br /&gt;
     [[ScriptCall]](&amp;quot;ExampleClass&amp;quot;, &amp;quot;GivePresent&amp;quot;, &amp;quot;{{Class|Soulsphere}}&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:ACS]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteAlways&amp;diff=186</id>
		<title>ACS NamedExecuteAlways</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteAlways&amp;diff=186"/>
		<updated>2026-03-06T15:06:06Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:ACS_NamedExecuteAlways}}  bool &amp;#039;&amp;#039;&amp;#039;ACS_NamedExecuteAlways&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg3&amp;#039;&amp;#039;)&amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;ACS_NamedExecuteAlways&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg3&amp;#039;&amp;#039;)  == Uso == Variante de ACS_ExecuteAlways para named scripts.  Há uma versão desta função em ACS e outra em DECORATE. Ambas se comportam de forma idêntica.  No entanto, ela não está...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ACS_NamedExecuteAlways}}&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;ACS_NamedExecuteAlways&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;s_arg3&#039;&#039;)&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ACS_NamedExecuteAlways&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;s_arg3&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
Variante de [[ACS_ExecuteAlways]] para [[named script]]s.&lt;br /&gt;
&lt;br /&gt;
Há uma versão desta função em [[ACS]] e outra em [[DECORATE]]. Ambas se comportam de forma idêntica.&lt;br /&gt;
&lt;br /&gt;
No entanto, ela não está disponível como um [[action special]]: para chamar scripts nomeados a partir de um [[special]] de line ou thing, você precisa usar a variante não nomeada ([[ACS_ExecuteAlways]]) em [[UDMF]], com o argumento customizado &amp;lt;tt&amp;gt;arg0str&amp;lt;/tt&amp;gt; definido para o nome do script &amp;amp;mdash; isso sobrescreverá o primeiro parâmetro.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: Nome do script a executar &lt;br /&gt;
* &#039;&#039;map&#039;&#039;: Mapa que contém o script &lt;br /&gt;
* &#039;&#039;s_arg1&#039;&#039;: Primeiro argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg2&#039;&#039;: Segundo argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg3&#039;&#039;: Terceiro argumento passado para o script &lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
Retorna true se o script pôde ser executado com sucesso, false caso contrário. [[Deferred script]]s são sempre considerados bem-sucedidos.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
Este exemplo dá uma cura completa única a um jogador quando ele está quase morto, se o jogador pegou um item especial. O item executa o script, enquanto o script monitora o status do jogador e ativa quando a vida do jogador é reduzida a 1.&lt;br /&gt;
&lt;br /&gt;
Item em Decorate:&lt;br /&gt;
 Actor AvoidDeath : {{Class|CustomInventory}}&lt;br /&gt;
 {&lt;br /&gt;
   {{Property|Inventory.MaxAmount}} 0&lt;br /&gt;
   +{{flag|INVENTORY.AUTOACTIVATE}}&lt;br /&gt;
   States&lt;br /&gt;
   {&lt;br /&gt;
   Use:&lt;br /&gt;
     TNT1 A 0 [[ACS_NamedExecuteAlways]](&amp;quot;AvoidDeathScript&amp;quot;, 0)&lt;br /&gt;
     [[Stop]]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
Script ACS:&lt;br /&gt;
 script &amp;quot;AvoidDeathScript&amp;quot; (void)&lt;br /&gt;
 {&lt;br /&gt;
   [[SetPlayerProperty]](0, 1, {{const|PROP_BUDDHA}});  // Ativa o modo buddha para o jogador&lt;br /&gt;
   while(1) // Loop permanente&lt;br /&gt;
   {&lt;br /&gt;
     if([[GetActorProperty]](0, {{const|APROP_HEALTH}}) &amp;lt;= 1) // Verifica se o jogador está ferido o suficiente para curar&lt;br /&gt;
     {&lt;br /&gt;
       [[SetPlayerProperty]](0, 0, {{const|PROP_BUDDHA}}); // Remove o modo buddha&lt;br /&gt;
       [[GiveInventory]](&amp;quot;{{Class|Health}}&amp;quot;, 100);        // e cura o jogador&lt;br /&gt;
       [[terminate]];&lt;br /&gt;
     }&lt;br /&gt;
     ;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:ExecuteAlways}}[[Category:ACS Script functions]][[Category:Decorate Script functions]]&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteWithResult&amp;diff=185</id>
		<title>ACS NamedExecuteWithResult</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_NamedExecuteWithResult&amp;diff=185"/>
		<updated>2026-03-06T15:04:57Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:ACS_NamedExecuteWithResult}}__NOTOC__ int &amp;#039;&amp;#039;&amp;#039;ACS_NamedExecuteWithResult&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg3&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg4&amp;#039;&amp;#039;)  == Uso == Variante de ACS_ExecuteWithResult para named scripts.  Há uma versão desta função em ACS e outra em DECORATE. Ambas se comportam de forma idêntica. A versão DECORATE também pode ser chamada pelo alias mais curto &amp;#039;&amp;#039;&amp;#039;CallACS&amp;#039;&amp;#039;&amp;#039; em DECORATE expressions. Outro alias...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ACS_NamedExecuteWithResult}}__NOTOC__&lt;br /&gt;
int &#039;&#039;&#039;ACS_NamedExecuteWithResult&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;s_arg3&#039;&#039;, int &#039;&#039;s_arg4&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
Variante de [[ACS_ExecuteWithResult]] para [[named script]]s.&lt;br /&gt;
&lt;br /&gt;
Há uma versão desta função em [[ACS]] e outra em [[DECORATE]]. Ambas se comportam de forma idêntica. A versão DECORATE também pode ser chamada pelo alias mais curto &#039;&#039;&#039;CallACS&#039;&#039;&#039; em [[DECORATE expressions]]. Outro alias para esta função é &#039;&#039;&#039;ACS_ScriptCall&#039;&#039;&#039;, que introduz a capacidade de a função ser chamada por objetos actor arbitrários, assim como pelo objeto {{c|self}} (veja o segundo exemplo abaixo). Este alias é exclusivo de DECORATE e [[ZScript]].&lt;br /&gt;
&lt;br /&gt;
ACS_(Named)ExecuteWithResult tem uma pequena diferença além de retornar um valor. Eles executam imediatamente assim que são chamados, enquanto os outros tipos geralmente esperam um tic antes de agir.&lt;br /&gt;
&lt;br /&gt;
No entanto, ela não está disponível como um [[action special]]: para chamar scripts nomeados a partir de um [[special]] de line ou thing, você precisa usar a variante não nomeada ([[ACS_ExecuteWithResult]]) em [[UDMF]], com o argumento customizado &amp;lt;tt&amp;gt;arg0str&amp;lt;/tt&amp;gt; definido para o nome do script &amp;amp;mdash; isso sobrescreverá o primeiro parâmetro.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: Nome do script a executar &lt;br /&gt;
* &#039;&#039;s_arg1&#039;&#039;: Primeiro argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg2&#039;&#039;: Segundo argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg3&#039;&#039;: Terceiro argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg4&#039;&#039;: Quarto argumento passado para o script &lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
Retorna o valor de retorno do script executado. Veja [[SetResultValue]].&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
Este exemplo mostra um item similar ao item {{Class|ArtiHealingRadius|Mystic Ambit}} de &#039;&#039;[[Hexen]]&#039;&#039;: verifica qual classe de jogador usa um item e aplica um efeito diferente.&lt;br /&gt;
&lt;br /&gt;
Item em Decorate:&lt;br /&gt;
 Actor ClassBoost : CustomInventory&lt;br /&gt;
 {&lt;br /&gt;
   {{Property|Inventory.MaxAmount}} 25&lt;br /&gt;
   {{Property|Inventory.InterHubAmount}} 25&lt;br /&gt;
   +{{flag|INVENTORY.INVBAR}}&lt;br /&gt;
   {{Property|Inventory.Icon}} &amp;quot;ARTIHRAD&amp;quot;&lt;br /&gt;
   States&lt;br /&gt;
   {&lt;br /&gt;
   Spawn:&lt;br /&gt;
     HRAD ABCDEFGHIJKLMNOP 4 Bright&lt;br /&gt;
     [[Loop]]&lt;br /&gt;
   Use:&lt;br /&gt;
     TNT1 A 0 [[A_JumpIf]]([[ACS_NamedExecuteWithResult|CallACS]](&amp;quot;CheckPlayerClass&amp;quot;, 0, 0, 0) == 0, &amp;quot;NormalPlayer&amp;quot;)&lt;br /&gt;
     TNT1 A 0 [[A_JumpIf]]([[ACS_NamedExecuteWithResult|CallACS]](&amp;quot;CheckPlayerClass&amp;quot;, 0, 0, 0) == 1, &amp;quot;AlternatePlayer&amp;quot;)&lt;br /&gt;
     [[Fail]]&lt;br /&gt;
   NormalPlayer:&lt;br /&gt;
     TNT1 A 0 [[A_RadiusGive]](&amp;quot;{{Class|Health}}&amp;quot;, 256, {{const|RGF_PLAYERS}} | {{const|RGF_GIVESELF}}, random(50, 90))&lt;br /&gt;
     [[Stop]]&lt;br /&gt;
   AlternatePlayer:&lt;br /&gt;
     TNT1 A 0 [[A_RadiusGive]](&amp;quot;PowerImproveDamage&amp;quot;, 256, {{const|RGF_PLAYERS}} | {{const|RGF_GIVESELF}}, 1)&lt;br /&gt;
     [[Stop]]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
Script ACS:&lt;br /&gt;
 script &amp;quot;CheckPlayerClass&amp;quot; (void)&lt;br /&gt;
 {&lt;br /&gt;
   if([[CheckActorClass]](0, &amp;quot;DoomPlayer&amp;quot;))&lt;br /&gt;
   {&lt;br /&gt;
     ;&lt;br /&gt;
     [[terminate]];&lt;br /&gt;
   }&lt;br /&gt;
   else if([[CheckActorClass]](0, &amp;quot;AlternateDoomPlayer&amp;quot;))&lt;br /&gt;
   {&lt;br /&gt;
     ;&lt;br /&gt;
     [[terminate]];&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este item de exemplo demonstra o uso de ACS_ScriptCall. Ao ser pego, ele spawna um {{Class|BaronOfHell|baron of hell}} e faz duas chamadas de script ACS: uma feita pelo próprio baron of hell, e outra feita pelo actor que pegou o item.&lt;br /&gt;
 class BaronSummoner : [[CustomInventory]]&lt;br /&gt;
 {&lt;br /&gt;
     States&lt;br /&gt;
     {&lt;br /&gt;
     Spawn:&lt;br /&gt;
         SOUL ABCD 6 Bright;&lt;br /&gt;
         Loop;&lt;br /&gt;
 &lt;br /&gt;
     Pickup:&lt;br /&gt;
         TNT1 A 0&lt;br /&gt;
         {&lt;br /&gt;
             bool res;&lt;br /&gt;
             Actor mobj;&lt;br /&gt;
             [res, mobj] = [[A_SpawnItemEx]](&amp;quot;{{Class|BaronOfHell}}&amp;quot;, 100);&lt;br /&gt;
 &lt;br /&gt;
             if (res &amp;amp;&amp;amp; mobj)&lt;br /&gt;
             {&lt;br /&gt;
                 // O chamador é o objeto baron of hell.&lt;br /&gt;
                 // Usar &#039;&#039;&#039;ACS_NamedExecuteWithResult&#039;&#039;&#039;, em vez disso, é inaceitável aqui.&lt;br /&gt;
                 mobj.&#039;&#039;&#039;ACS_ScriptCall&#039;&#039;&#039;(&amp;quot;SomeScript&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
                 // O chamador é o objeto &#039;&#039;self&#039;&#039; (o actor que pegou o item).&lt;br /&gt;
                 // Usar &#039;&#039;&#039;ACS_NamedExecuteWithResult&#039;&#039;&#039;, em vez disso, é aceitável aqui.&lt;br /&gt;
                 &#039;&#039;&#039;ACS_ScriptCall&#039;&#039;&#039;(&amp;quot;SomeOtherScript&amp;quot;);&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         Stop;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:ExecuteWithResult}}[[Category:ACS Script functions]][[Category:Decorate Script functions]]&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Predefini%C3%A7%C3%A3o:Noexamples&amp;diff=184</id>
		<title>Predefinição:Noexamples</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Predefini%C3%A7%C3%A3o:Noexamples&amp;diff=184"/>
		<updated>2026-03-06T15:03:20Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;&amp;lt;noinclude&amp;gt;Place this template on action functions, ACS functions, and relevant action specials pages where no examples are listed.  The proper location for this is under an Examples heading, which will of course be blank&amp;amp;nbsp;&amp;amp;mdash; otherwise this template wouldn&amp;#039;t be needed. For instance:   ==Examples==  &amp;lt;nowiki&amp;gt;{{noexamples}}&amp;lt;/nowiki&amp;gt; This code will result in this: ==Examples== &amp;lt;/noinclude&amp;gt;{{note|image=link=...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Place this template on [[action functions]], [[built-in ACS functions|ACS functions]], and relevant [[action specials]] pages where no examples are listed.  The proper location for this is under an Examples heading, which will of course be blank&amp;amp;nbsp;&amp;amp;mdash; otherwise this template wouldn&#039;t be needed. For instance:&lt;br /&gt;
&lt;br /&gt;
 ==Examples==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{noexamples}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
This code will result in this:&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{note|image=[[File:Nuvolachalk.png|link=]]|text=This article lists no examples.  If you make use of this feature in your own project(s) or know of any basic examples that could be shared, please {{plainlink|[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} add them]}}.  This will make it easier to understand for future authors seeking assistance.  Your contributions are greatly appreciated.}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The template should be removed when any examples are added.&lt;br /&gt;
&lt;br /&gt;
===Exceptions===&lt;br /&gt;
Do not use this template on pages that cannot list a practical example (Ex: [[Line_SetIdentification]] can&#039;t be used in a script, so the only example we could provide would be a map, which is not practical for a wiki manual).  This template is also unnecessary for articles that are unlikely to be updated, such as for features that have been [[:Category:Deprecated features|deprecated]] or are superseded and obsolete.&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[category:Articles without examples]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Maintenance templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_NamedLockedExecuteDoor&amp;diff=183</id>
		<title>ACS NamedLockedExecuteDoor</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_NamedLockedExecuteDoor&amp;diff=183"/>
		<updated>2026-03-06T15:02:59Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:ACS_NamedLockedExecuteDoor}}  bool &amp;#039;&amp;#039;&amp;#039;ACS_NamedLockedExecuteDoor&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;lock&amp;#039;&amp;#039;)&amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;ACS_NamedLockedExecuteDoor&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;lock&amp;#039;&amp;#039;)  == Uso == Variante de ACS_LockedExecuteDoor para named scripts.  Há uma versão desta função em ACS e outra em DECORATE. Ambas se comportam de forma idêntica.  No entanto, el...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ACS_NamedLockedExecuteDoor}}&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;ACS_NamedLockedExecuteDoor&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;lock&#039;&#039;)&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ACS_NamedLockedExecuteDoor&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;lock&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
Variante de [[ACS_LockedExecuteDoor]] para [[named script]]s.&lt;br /&gt;
&lt;br /&gt;
Há uma versão desta função em [[ACS]] e outra em [[DECORATE]]. Ambas se comportam de forma idêntica.&lt;br /&gt;
&lt;br /&gt;
No entanto, ela não está disponível como um [[action special]]: para chamar scripts nomeados a partir de um [[special]] de line ou thing, você precisa usar a variante não nomeada ([[ACS_LockedExecuteDoor]]) em [[UDMF]], com o argumento customizado &amp;lt;tt&amp;gt;arg0str&amp;lt;/tt&amp;gt; definido para o nome do script &amp;amp;mdash; isso sobrescreverá o primeiro parâmetro.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: Nome do script a executar &lt;br /&gt;
* &#039;&#039;map&#039;&#039;: Mapa que contém o script &lt;br /&gt;
* &#039;&#039;s_arg1&#039;&#039;: Primeiro argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg2&#039;&#039;: Segundo argumento passado para o script &lt;br /&gt;
* &#039;&#039;lock&#039;&#039;: Chave necessária, se houver (veja [[key types]]) &lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
Retorna true se o script pôde ser executado com sucesso, false caso contrário. [[Deferred script]]s são sempre considerados bem-sucedidos.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
{{DEFAULTSORT:LockedExecuteDoor}}[[Category:ACS Script functions]][[Category:Decorate Script functions]]&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ACS_NamedLockedExecute&amp;diff=182</id>
		<title>ACS NamedLockedExecute</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ACS_NamedLockedExecute&amp;diff=182"/>
		<updated>2026-03-06T15:02:09Z</updated>

		<summary type="html">&lt;p&gt;MegaManx3: Criou página com &amp;#039;{{DISPLAYTITLE:ACS_NamedLockedExecute}}  bool &amp;#039;&amp;#039;&amp;#039;ACS_NamedLockedExecute&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;lock&amp;#039;&amp;#039;)&amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;ACS_NamedLockedExecute&amp;#039;&amp;#039;&amp;#039; (string &amp;#039;&amp;#039;script&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg1&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;s_arg2&amp;#039;&amp;#039;, int &amp;#039;&amp;#039;lock&amp;#039;&amp;#039;)  == Uso == Variante de ACS_LockedExecute para named scripts.  Há uma versão desta função em ACS e outra em DECORATE. Ambas se comportam de forma idêntica.  No entanto, ela não está dis...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ACS_NamedLockedExecute}}&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;ACS_NamedLockedExecute&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;lock&#039;&#039;)&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ACS_NamedLockedExecute&#039;&#039;&#039; (string &#039;&#039;script&#039;&#039;, int &#039;&#039;map&#039;&#039;, int &#039;&#039;s_arg1&#039;&#039;, int &#039;&#039;s_arg2&#039;&#039;, int &#039;&#039;lock&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
Variante de [[ACS_LockedExecute]] para [[named script]]s.&lt;br /&gt;
&lt;br /&gt;
Há uma versão desta função em [[ACS]] e outra em [[DECORATE]]. Ambas se comportam de forma idêntica.&lt;br /&gt;
&lt;br /&gt;
No entanto, ela não está disponível como um [[action special]]: para chamar scripts nomeados a partir de um [[special]] de line ou thing, você precisa usar a variante não nomeada ([[ACS_LockedExecute]]) em [[UDMF]], com o argumento customizado &amp;lt;tt&amp;gt;arg0str&amp;lt;/tt&amp;gt; definido para o nome do script &amp;amp;mdash; isso sobrescreverá o primeiro parâmetro.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
* &#039;&#039;script&#039;&#039;: Nome do script a executar &lt;br /&gt;
* &#039;&#039;map&#039;&#039;: Mapa que contém o script &lt;br /&gt;
* &#039;&#039;s_arg1&#039;&#039;: Primeiro argumento passado para o script &lt;br /&gt;
* &#039;&#039;s_arg2&#039;&#039;: Segundo argumento passado para o script &lt;br /&gt;
* &#039;&#039;lock&#039;&#039;: Chave necessária, se houver (veja [[key types]]) &lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
Retorna true se o script pôde ser executado com sucesso, false caso contrário. [[Deferred script]]s são sempre considerados bem-sucedidos.&lt;br /&gt;
&lt;br /&gt;
==Exemplos==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
{{DEFAULTSORT:LockedExecute}}[[Category:ACS Script functions]][[Category:Decorate Script functions]]&lt;br /&gt;
&lt;br /&gt;
{{script functions}}&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>