FANDOM


La ametralladora en los juegos de Doom, igual que su predecesor en Wolfenstein 3D, normalmente dispara un número par de balas cada vez que se presiona la tecla o el botón de disparo.

Cuando solo queda una bala en el suministro del jugador, esa bala se deduce y se lanza un solo disparo, como se esperaba. Pero dado que el motor no comprueba si la munición se ha agotado al producir el disparo, el sonido (DSPISTOL) todavía se reproduce dos veces como si se hubieran disparado efectivamente dos tiros.

Algunos source ports han solucionado este error. Sin embargo, jugadores de deathmatch señalaron que esto cambia la jugabilidad, porque puedes saber si tu oponente se ha quedado sin munición si su ametralladora emite un número impar de sonidos de disparo.

Aspectos técnicos

La causa del error se puede encontrar en A_FireCGun. La función inicia el sonido de la ametralladora e inmediatamente después, verifica si el jugador no tiene munición. Simplemente es posible solucionarlo moviendo la línea S_StartSound debajo del retorno, por lo que el sonido se inicia solo después de esta verificación.

   void A_FireCGun ( player_t* player, pspdef_t* psp ) 
   {
       S_StartSound (player->mo, sfx_pistol);
   
       if (!player->ammo[weaponinfo[player->readyweapon].ammo])
           return;
   
       P_SetMobjState (player->mo, S_PLAY_ATK2);
       player->ammo[weaponinfo[player->readyweapon].ammo]--;
   
       P_SetPsprite (player,
                     ps_flash,
                     weaponinfo[player->readyweapon].flashstate
                     + psp->state
                     - &states[S_CHAIN1] );
   
       P_BulletSlope (player->mo);
   	
       P_GunShot (player->mo, !player->refire);
   }
El contenido de la comunidad está disponible bajo CC-BY-SA a menos que se indique lo contrario.