@@ -207,19 +207,7 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
207207
208208 if ( !bWelding )
209209 {
210- m_iAutomaticWeldDirection = 0 ;
211- m_bShotDelayed = false ;
212- #ifdef GAME_DLL
213- if ( pMarine->GetMarineResource () )
214- {
215- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
216- }
217-
218- m_pWeldDoor = NULL ;
219-
220- pMarine->OnWeldFinished ();
221- #endif
222- m_bIsFiring = false ;
210+ FinishWeld ( pMarine, false );
223211 }
224212 else
225213 {
@@ -234,29 +222,41 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
234222 }
235223}
236224
225+ void CASW_Weapon_Welder::FinishWeld ( CASW_Marine* pMarine, bool bKeepWeldDirection )
226+ {
227+ if ( !bKeepWeldDirection )
228+ {
229+ m_iAutomaticWeldDirection = 0 ;
230+ }
231+ m_bShotDelayed = false ;
232+ #ifdef GAME_DLL
233+ if ( pMarine )
234+ {
235+ if ( pMarine->GetMarineResource () )
236+ {
237+ pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
238+ }
239+ pMarine->OnWeldFinished ();
240+ }
241+ #endif // GAME_DLL
242+ #ifndef CLIENT_DLL
243+ m_pWeldDoor = NULL ;
244+ #endif // CLIENT_DLL
245+ m_bIsFiring = false ;
246+ }
247+
237248// make the weapon weld if needed
238249
239250void CASW_Weapon_Welder::ItemPostFrame ()
240251{
252+ CASW_Marine *pMarine = NULL ;
241253#ifndef CLIENT_DLL
242- CASW_Marine * pMarine = GetMarine ();
254+ pMarine = GetMarine ();
243255 if ( !pMarine || !pMarine->GetCommander () )
244256 {
245257 if ( m_bPlayingWelderSound )
246258 {
247- m_bIsFiring = false ;
248-
249- m_pWeldDoor = NULL ;
250-
251- if (pMarine)
252- {
253- if (pMarine->GetMarineResource ())
254- {
255- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
256- }
257-
258- pMarine->OnWeldFinished ();
259- }
259+ FinishWeld ( pMarine, true );
260260 // Msg( "Clearing weld door as no marine\n" );
261261 }
262262 return BaseItemPostFrame ();
@@ -321,32 +321,14 @@ void CASW_Weapon_Welder::ItemPostFrame()
321321 if ( ( m_iAutomaticWeldDirection > 0 && m_pWeldDoor->GetSealAmount () >= 1 .0f ) ||
322322 ( m_iAutomaticWeldDirection < 0 && m_pWeldDoor->GetSealAmount () <= 0 .0f ) )
323323 {
324- m_bShotDelayed = false ;
325- #ifdef GAME_DLL
326- if ( pMarine->GetMarineResource () )
327- {
328- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
329- }
330- m_pWeldDoor = NULL ;
331- pMarine->OnWeldFinished ();
332- #endif
333- m_bIsFiring = false ;
324+ FinishWeld ( pMarine, false );
334325 }
335326 }
336327 else
337328 {
338329 if ( !FindDoor () )
339330 {
340- m_bShotDelayed = false ;
341- #ifdef GAME_DLL
342- if ( pMarine->GetMarineResource () )
343- {
344- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
345- }
346- m_pWeldDoor = NULL ;
347- pMarine->OnWeldFinished ();
348- #endif
349- m_bIsFiring = false ;
331+ FinishWeld ( pMarine, true );
350332 }
351333 }
352334 }
0 commit comments