• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Stuck in siege after mid-air death

Newbie Spellweaver
Joined
May 7, 2017
Messages
34
Reaction score
6
After reading the following thread: http://forum.ragezone.com/f651/guild-siege-stuck-bug-765741/

I realized that they are having the same issues as I am having. What I noticed is that this 'stuck' bug occurs whenever you die mid-air or mid-jump during a siege.

It causes your character to not be able to use any skills/attacks and it untargetable/does not move on other client's screen. Sometimes after a couple minutes of waiting this is automatically fixed but usually you have to relog ingame to fix it (which causes you to lose all your siege lives).

I'd like to fix this bug but I am not super well known in the code, but I know it has to do with the fact that you are in a mid-jump and then death occurs. Any ideas or tips where in the code this could be fixed or anyone have had this problem before and fixed it?

I am on cuvvie's v15 for reference.
 
Inactive
Joined
Jan 20, 2009
Messages
1,014
Reaction score
1,830
WndWorldControlPlayer.cpp
Find
Code:
if( bSpace && pMover->m_pActMover->m_bGround  )

Replace With
Code:
if( bSpace )

Find
Code:
if( m_bLButtonDown == TRUE && m_bRButtonDown == TRUE )

Replace With
Code:
if( m_bLButtonDown == TRUE && m_bRButtonDown == TRUE && pMover->m_pActMover->m_bGround )

ActionMoverDmg.cpp

Find
Code:
	if( !bValid || IsState( OBJSTA_DIE_ALL ) )
		return 0;

	if( IsSit() )
		ResetState( OBJSTA_MOVE_ALL );

	SendActMsg( OBJMSG_STAND );

Replace With
Code:
	if( !bValid || IsState( OBJSTA_DIE_ALL ) )
		return 0;

	if (IsSit())
		ResetState(OBJSTA_MOVE_ALL);

	if (IsActJump() == FALSE)
		SendActMsg(OBJMSG_STAND);

Find
Code:
		dwSfxObj = pAttackerProp->dwSfxObj5;
		if (NULL_ID != dwSfxObj)
			CreateSfx(D3DDEVICE, dwSfxObj, pAttacker->GetPos());
	}

	pMover->m_nDmgCnt = 10;

	pMover->SetDamagedMotion( pAttacker, dwAtkFlags );

Replace With
Code:
		dwSfxObj = pAttackerProp->dwSfxObj5;
		if (NULL_ID != dwSfxObj)
			CreateSfx(D3DDEVICE, dwSfxObj, pAttacker->GetPos());
	}

	pMover->m_nDmgCnt = 10;

	if (IsActJump() == FALSE)
		pMover->SetDamagedMotion(pAttacker, dwAtkFlags);
 
Newbie Spellweaver
Joined
May 7, 2017
Messages
34
Reaction score
6
Thanks for the solution, It worked!

This thread can be locked and marked fixed so other people can see it :).
 
Back
Top