Doom Wiki
Advertisement
Doom Wiki


En varias versiones de Doom y Doom II, es posible que una linedef de paso sea activada por el disparo de proyectiles que atraviesan la linedef.

Curiosamente, el mismo error sucede tanto en las versiones más antiguas como también en las últimas.

Tipos afectados[]

Esto afecta a los siguientes tipos de línea:

# Disp TIPO Monstruo Jugador
4 W1 Puertas Si - -
10 W1 Plataformas No - -
39 W1 Teletransportadores Si Si
88 WR Plataformas No - -
97 WR Teletransportadores Si Si
125 W1 Teletransportadores Si No
126 WR Teletransportadores Si No
Error Proyectil-linea

Ascensor activado por un disparo de plasma

Doom v1.3[]

En Doom v1.3 e inferiores, cualquier proyectil es capaz de activar las linedefs de paso, tal como se ve en las capturas de pantalla a la derecha donde el fusil de plasma del jugador ha sido disparado y los proyectiles resultantes han causado que un ascensor cercano descienda.

Esto fue reparado por id Software a partir de la v1.4 mediante la adición del siguiente código a la función P_CrossSpecialLine en p_spec.c, en la línea 509:

 // Things that should NOT trigger specials...
 switch(thing->type)
 {
    case MT_ROCKET:
    case MT_PLASMA:
    case MT_BFG:
    case MT_TROOPSHOT:
    case MT_HEADSHOT:
    case MT_BRUISERSHOT:
       return;
       break;
    
    default: break;
 }

Doom v1.666[]

A partir del lanzamiento de Doom II, fueron agregados varios monstruos adicionales que disparan nuevos tipos de proyectiles, incluyendo el Aracnotrón, el Revenant y el Mancubus. Sin embargo, los tipos de proyectil correspondientes no se agregaron como casos en la instrucción switch añadida para reparar originalmente el problema.

Esto significa que en la v1.666 y todas las versiones superiores, las acciones de las linedef de paso pueden ser activadas de nuevo por estos proyectiles.

Es notable que este problema podría haber sido evitado mediante el uso de una simple

if (thing-> flags & MF_MISSILE) return;

similar al ya existente en el código de los teletransportadores.

Otros juegos[]

Como el código base de Heretic se deriva de Doom v1.2, no presenta una cláusula de excepción para los proyectiles en P_CrossSpecialLine, lo que significa que cada proyectil u otro actor en movimiento (como las vainas de esporas explosivas, por ejemplo) pueden activarlas. Sin embargo, el conjunto de tipos de líneas afectadas se reduce a sólo tres: 4, 39 y 97. Los tipos de plataforma elevadora (10 y 88) fueron comentados, retirados del juego. Y los nuevos tipos de monstruos de teletransporte agregados al motor para Doom II, por lo tanto, nunca estuvieron presentes en el código base que entró en Heretic.

El error no existe en Hexen o Strife.

Hexen utiliza un sistema generalizado en el que la activación de la línea está desconectada de la línea especial. Los proyectiles con el indicador MF2_PCROSS pueden activar las linedefs que sean activadas por cruce de proyectiles.

Strife usa una comprobación adicional que rechaza misiles y cadáveres basados en los indicadores MF_MISSILE y MF_CORPSE, excepto para el tipo de línea 182-G1-Romper cristal, donde se desea explícitamente la capacidad de activar el efecto con un proyectil.

Véase también[]

Advertisement