Linedef
Mais ações
Linedefs são o que formam o “formato” (por falta de palavra melhor) do seu mapa. Todo linedef fica entre dois vértices e contém um ou dois sidedefs (que contêm dados de texturas). Existem dois propósitos principais para linedefs. O primeiro é dar ao seu mapa um limite definitivo entre o jogador e o vazio (qualquer área atrás de um linedef de um lado só é considerada espaço vazio), e o segundo é disparar action specials.
Linedefs podem receber qualquer action special e dispará-lo quando ocorrer uma ação especificada. Você pode marcar linedefs para executar seu special quando o jogador cruzar a linha, quando o jogador “usar” a linha (interruptores), ou quando o jogador empurrar a linha (similar a switches de Quake ou Quake 2). Monstros também podem disparar specials ao cruzar a linha e, por fim, um impacto ou cruzamento por projétil também pode disparar um special se você quiser.
Especificação (formato Doom)
| Bytes | Tipo de dado | Descrição |
|---|---|---|
| 0-1 | Unsigned short | Vértice inicial |
| 2-3 | Unsigned short | Vértice final |
| 4-5 | Unsigned short | Flags |
| 6-7 | Unsigned short | Tipo de linha |
| 8-9 | Unsigned short | Sector tag |
| 10-11 | Unsigned short | sidedef direita — 0xFFFF significa que não há sidedef |
| 12-13 | Unsigned short | Sidedef esquerda — 0xFFFF significa que não há sidedef |
Especificação (formato Hexen)
| Bytes | Tipo de dado | Descrição |
|---|---|---|
| 0-1 | Unsigned short | Vértice inicial |
| 2-3 | Unsigned short | Vértice final |
| 4-5 | Unsigned short | Flags |
| 6 | Unsigned byte | Action special |
| 7 | Unsigned byte | Argumento 1 do action |
| 8 | Unsigned byte | Argumento 2 do action |
| 9 | Unsigned byte | Argumento 3 do action |
| 10 | Unsigned byte | Argumento 4 do action |
| 11 | Unsigned byte | Argumento 5 do action |
| 12-13 | Unsigned short | sidedef direita — 0xFFFF significa que não há sidedef |
| 14-15 | Unsigned short | Sidedef esquerda — 0xFFFF significa que não há sidedef |
Flags do linedef
Há vários conflitos na lista de flags, dependendo do jogo. Map translators são usados para definir como valores são associados a flags em um mapa binário. UDMF resolve esses conflitos ao não usar um bitfield, e sim referenciar cada flag pelo nome. O UDMF também permite definir os demais flags sem precisar de uma função como Line_SetIdentification, e vários flags só estão disponíveis neste formato de mapa.
| Flag | Bit | Hex | Descrição | Modo | Nome no UDMF | Nome no Line_SetBlocking |
|---|---|---|---|---|---|---|
| BLOCKING | 0 | 0x0001 | bloqueia jogadores e monstros | Doom | blocking | BLOCKF_CREATURES |
| BLOCKMONSTERS | 1 | 0x0002 | bloqueia monstros | Doom | blockmonsters | BLOCKF_MONSTERS |
| TWOSIDED | 2 | 0x0004 | dois lados | Doom | twosided | |
| DONTPEGTOP | 3 | 0x0008 | textura superior “despregada” | Doom | dontpegtop | |
| DONTPEGBOTTOM | 4 | 0x0010 | textura inferior “despregada” | Doom | dontpegbottom | |
| SECRET | 5 | 0x0020 | secreto (mostra como one-sided no automap) | Doom | secret | |
| SOUNDBLOCK | 6 | 0x0040 | bloqueia som | Doom | blocksound | BLOCKF_SOUND |
| DONTDRAW | 7 | 0x0080 | nunca aparece no automap | Doom | dontdraw | |
| MAPPED | 8 | 0x0100 | sempre aparece no automap | Doom | mapped | |
| RAILING | 9 | 0x0200 | linha é uma grade/corrimão | Strife | jumpover | BLOCKF_RAILING |
| PASSUSE | 9 | 0x0200 | passa ação de “use” | Boom | passuse | |
| REPEAT_SPECIAL | 9 | 0x0200 | pode ser ativada mais de uma vez | ZDoom | repeatspecial | |
| BLOCK_FLOATERS | 10 | 0x0400 | bloqueia monstros flutuantes | Strife | blockfloating | BLOCKF_FLOATERS |
| 3DMIDTEX | 10 | 0x0400 | atores podem andar sobre a mid texture | Eternity | midtex3d | |
| SPAC_Use | 10-12 | 0x0400 | ativado quando usado pelo jogador | ZDoom | playeruse | |
| SPAC_MCross | 10-12 | 0x0800 | ativado quando cruzado por monstro | ZDoom | monstercross | |
| SPAC_Impact | 10-12 | 0x0C00 | ativado quando atingido por projétil | ZDoom | impact | |
| SPAC_Push | 10-12 | 0x1000 | ativado quando “esbarrado” pelo jogador | ZDoom | playerpush | |
| SPAC_PCross | 10-12 | 0x1400 | ativado quando cruzado por projétil | ZDoom | missilecross | |
| SPAC_UseThrough | 10-12 | 0x1800 | ativado quando usado pelo jogador (através da linha) | ZDoom | playeruseback | |
| TRANSLUCENT | 12 | 0x1000 | linha é 25% translúcida (alpha 0.75) | Strife | translucent | |
| 13 | 0x2000 | linha é 75% translúcida (alpha 0.25) | Strife | transparent | ||
| MONSTERSCANACTIVATE | 13 | 0x2000 | linha pode ser ativada por jogadores e monstros | ZDoom | monsteractivate | |
| BLOCK_PLAYERS | 14 | 0x4000 | bloqueia jogadores | ZDoom | blockplayers | BLOCKF_PLAYERS |
| BLOCKEVERYTHING | 15 | 0x8000 | bloqueia tudo (inclui tiros e mísseis) | ZDoom | blockeverything | BLOCKF_EVERYTHING |
| SPAC_Cross | - | - | ativado quando cruzado pelo jogador (padrão) | ZDoom | playercross | |
| SPAC_AnyCross | - | - | ativado por qualquer coisa que o cruze | ZDoom | anycross | |
| SPAC_MUse | - | - | ativado por monstros usando | ZDoom | monsteruse | |
| SPAC_MPush | - | - | ativado por monstros esbarrando | ZDoom | monsterpush | |
| FIRSTSIDEONLY | - | - | linha só pode ser disparada pelo lado da frente | ZDoom | firstsideonly | |
| ZONEBOUNDARY | - | - | linha é limite de zonas de reverb | ZDoom | zoneboundary | |
| CLIP_MIDTEX | - | - | mid textures são recortadas ao piso e teto (padrão em Strife) | Strife | clipmidtex | |
| WRAP_MIDTEX | - | - | mid textures são “wrap” (repetidas) | ZDoom | wrapmidtex | |
| CHECKSWITCHRANGE | - | - | switches só ativam se alcançáveis verticalmente | ZDoom | checkswitchrange | |
| BLOCKPROJECTILE | - | - | linha bloqueia todos os projéteis | ZDoom | blockprojectiles | BLOCKF_PROJECTILES |
| BLOCKUSE | - | - | linha bloqueia todas as ações de use | ZDoom | blockuse | BLOCKF_USE |
| BLOCKSIGHT | - | - | linha bloqueia linha de visão para monstros | ZDoom | blocksight | BLOCKF_SIGHT |
| BLOCKHITSCAN | - | - | linha bloqueia ataques hitscan | ZDoom | blockhitscan | BLOCKF_HITSCAN |
| 3DMIDTEX_IMPASS | - | - | faz a mid texture agir como linha intransponível (projéteis passam). Usado com midtex3d | ZDoom | midtex3dimpassible | |
| BLOCKLANDMONSTERS | - | - | linha bloqueia monstros de chão (sem FLOAT) | ZDoom | blocklandmonsters | BLOCKF_LANDMONSTERS |
Propriedades UDMF
Além dos flags acima, o Universal Doom Map Format permite definir várias propriedades em linedefs. A menos que especificado, valores padrão para inteiros e floats são 0, e false para booleanos. Elas incluem:
| Nome | Tipo | Descrição |
|---|---|---|
| alpha | float | Translucidez desta linha, padrão é 1.0. |
| arg0str | string | Versão alternativa em string de arg0, usada para named scripts. |
| arg0 | integer | Primeiro parâmetro. |
| arg1 | integer | Segundo parâmetro. |
| arg2 | integer | Terceiro parâmetro. |
| arg3 | integer | Quarto parâmetro. |
| arg4 | integer | Quinto parâmetro. |
| comment | string | Um comentário. Serve só para conveniência do autor e é ignorado pela engine. |
| locknumber | integer | O special do linedef é “trancado”; veja key types e LOCKDEFS. |
| renderstyle | string | Render style; pode ser "translucent" ou "add", padrão é "translucent". |
| sidefront | integer | Índice do sidedef da frente. Sem padrão: um linedef sem sidedef frontal invalida o mapa inteiro. |
| sideback | integer | Índice do sidedef de trás. Padrão = -1 para “sem lado de trás”. |
| special | integer | Action special da linha. |
| moreids | string | tags adicionais da linha, como uma lista de números separados por espaço, por exemplo "2 666 1003 4505". |
