Difference between revisions of "Arch-vile fire spawned at the wrong location"

From DoomWiki.org

[checked revision][checked revision]
(Fixed the source code which was not displayed correctly)
m (youtube now uses HTTPS by default)
Line 33: Line 33:
  
 
== Links ==
 
== Links ==
* [http://www.youtube.com/watch?v=w-1VYKRpVjA YouTube video]
+
* [https://www.youtube.com/watch?v=w-1VYKRpVjA YouTube video]
  
 
[[Category:Errors and bugs]]
 
[[Category:Errors and bugs]]

Revision as of 17:06, 1 July 2017

Under construction icon-yellow.svgThis article or section is a stub. Please help the Doom Wiki by adding to it.


A screenshot of this bug in Doom II MAP16: Suburbs.

Due to a bug in the Doom engine, the fire from the arch-vile's attack can be spawned at the wrong location.

When the fog is initially spawned, the following code is used, which contains a blatant programming error:

   //
   // A_VileTarget
   // Spawn the hellfire
   //
   void A_VileTarget (mobj_t*	actor)
   {
       mobj_t*	fog;
   
       if (!actor->target)
   	return;
   
       A_FaceTarget (actor);
   
       fog = P_SpawnMobj (actor->target->x,
   		       actor->target->x,
   		       actor->target->z, MT_FIRE);
   
       actor->tracer = fog;
       fog->target = actor;
       fog->tracer = actor->target;
       A_Fire (fog);
   }

On line 15, the actor's target's x coordinate is used again where the code should instead use the target's y coordinate. This causes the initial position of the fire to be shifted on the x-y plane relative to the target of the arch-vile's attack. Should the target become hidden from the arch-vile's line of sight before the fire's position is updated, the fire will remain in this incorrect position until it dissipates completely.

Links