Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Gregor

Arch-Vile attack thrust direction

Recommended Posts

I just wanna understand why the thrust part of the A_VileAttack pushes you away from the caster, even though, according to the online sources, the thrust induced should only apply vertically, and so should not add any specific direction, outside of you're own vector of course. But when you play, it is pretty clear that you're not gonna generate much momentum if you're trying to Arch-Vile jump towards the Arch-Vile rather than away from it. You can very much see and feel the direction of the push: it is in a straight line pointing away from the AV. So does anyone know the answer? Why does the thrust seem to have direction? What am i missing?

Share this post


Link to post

A_VileAttack has no horizontal component, but P_RadiusAttack does! https://github.com/id-Software/DOOM/blob/master/linuxdoom-1.10/p_map.c#L1206 After the player is launched upwards in A_VileAttack, a call to this causes the explosion damage with the Archvile fire as the origin point. https://github.com/id-Software/DOOM/blob/77735c3ff0772609e9c8d29e3ce2ab42ff54d20b/linuxdoom-1.10/p_enemy.c#L1310

Share this post


Link to post
1 hour ago, DavidN said:

A_VileAttack has no horizontal component, but P_RadiusAttack does! https://github.com/id-Software/DOOM/blob/master/linuxdoom-1.10/p_map.c#L1206 After the player is launched upwards in A_VileAttack, a call to this causes the explosion damage with the Archvile fire as the origin point. https://github.com/id-Software/DOOM/blob/77735c3ff0772609e9c8d29e3ce2ab42ff54d20b/linuxdoom-1.10/p_enemy.c#L1310

 

But just so i understand this correctly: P_RadiusAttack is still being called as part of A_VileAttack, right? As far as i can see, A_VileAttack is the only codepointer that Mr Flames calls for its attack, so it should be included there.  

Share this post


Link to post

I was interested in this too after recently practicing an arch-vile jump on Scythe Map 27. I had not really thought about it before that. As you say it is the two stage attack of the arch-vile that causes this effect.

I can't control the movement well so found it easiest to get targeted, quickly reposition, wait, run on a line between the arch-vile and the place I wanted to get to. This helped me a lot for reaching small areas, for launching to larger ledges you can be much less precise.

For further info Decino has covered some of the arch-vile mechanics:

 

Share this post


Link to post
14 hours ago, DavidN said:

That's right, A_VileAttack includes a call to P_RadiusAttack. It's called on the last line of A_VileAttack in the source code here: https://github.com/id-Software/DOOM/blob/77735c3ff0772609e9c8d29e3ce2ab42ff54d20b/linuxdoom-1.10/p_enemy.c#L1310

Ah, that makes sense then. Thank you for your help! I suppose the tracer, the source of P_RadiusAttack, is positioned in a straight line between the player and the Arch-Vile, even though the flames themselves are displayed in the direction the target is facing; so technically they are not the source of the blast, just an indication that the target has the tracer set. Apparently, the source of the blast is set 24 units away from the center of the target.

 

What i don't quite understand yet is why activating the noclip cheat will negate the blast effect of P_RadiusAttack. I know noclip turns off collison detection. But the player still has the vertical thrust applied to them normally and the flames still appear in front of them, implying that the tracer is set and P_RadiusAttack is being called, but while the blast damage is still applied, the horizontal thrust from P_RaduisAttack is canceled. This is obviously just how blasts work in general in Doom, but i still would like to understand why it's canceled.

How does P_RadiusAttack depend on collision detection for its thrust but not for its damage? And why is the vertical thrust of A_VileAttack still applied regardless?

Share this post


Link to post
8 hours ago, Gregor said:

How does P_RadiusAttack depend on collision detection for its thrust but not for its damage? And why is the vertical thrust of A_VileAttack still applied regardless?

P_DamageMobj (in p_inter.c) specifically checks the noclip flag before applying thrust, but A_VileAttack doesn't do that check and adjusts the target's Z-momentum directly.

Share this post


Link to post
1 hour ago, Shepardus said:

P_DamageMobj (in p_inter.c) specifically checks the noclip flag before applying thrust, but A_VileAttack doesn't do that check and adjusts the target's Z-momentum directly.

Awesome. Thanx very much.

Share this post


Link to post
18 hours ago, ImproversGaming said:

For further info Decino has covered some of the arch-vile mechanics:

Ducino's video about explosions is actually even better for info about the Arch-Vile blast. But both videos are great resources, though they don't explain everything about the in and outs of A_VileAttack.

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×