View Issue Details

IDProjectCategoryView StatusLast Update
0000125Gameplay + OpenGL[All Projects] Bugpublic2017-01-27 11:03
ReporterMajor Cooke 
Assigned To 
Status resolvedResolutionfixed 
Summary0000125: [PR] More bouncing bugfixes

After this commit, I did some digging around and found out that P_ExplodeMissile is supposed to be passing the BlockingMobj to the actor responsible for making it explode.

if (BlockingMobj)
                    if (mo->BounceFlags & BOUNCE_Actors)
                        // Bounce test and code moved to P_BounceActor
                        if (!P_BounceActor(mo, BlockingMobj, false))
                        {	// Struck a player/creature
                            P_ExplodeMissile (mo, NULL, BlockingMobj);
                        return Oldfloorz;

As you can see, the new behavior in the commit above passes true right off the bat and does not transfer BlockingMobj.

While doing some digging into P_ExplodeMissile I also discovered that HITTARGET/MASTER/TRACER was also misbehaving because of the checks added onto the target actor so it truly sets the appropriate pointers now. It was meant to set the target/master/tracer to EVERYTHING that makes it explode, not just shootable entities.
TagsNo tags attached.



Major Cooke

Major Cooke

2017-01-27 10:45

reporter   ~0000257

Last edited: 2017-01-27 10:46

View 2 revisions

I just realized something. Taking the pasted code from above and looking at P_BounceActor a little more closely...
if (!P_BounceActor(mo, BlockingMobj, false))
This should be factoring in when on top of an actor, shouldn't it?
if (!P_BounceActor(mo, BlockingMobj, (mo->flags2 & MF2_ONMOBJ)))

Issue History

Date Modified Username Field Change
2017-01-27 10:35 Major Cooke New Issue
2017-01-27 10:45 Major Cooke Note Added: 0000257
2017-01-27 10:46 Major Cooke Note Edited: 0000257 View Revisions
2017-01-27 11:03 Graf Zahl Status new => resolved
2017-01-27 11:03 Graf Zahl Resolution open => fixed