@@ -203,19 +203,7 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
203203
204204 if ( !bWelding )
205205 {
206- m_iAutomaticWeldDirection = 0 ;
207- m_bShotDelayed = false ;
208- #ifdef GAME_DLL
209- if ( pMarine->GetMarineResource () )
210- {
211- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
212- }
213-
214- m_pWeldDoor = NULL ;
215-
216- pMarine->OnWeldFinished ();
217- #endif
218- m_bIsFiring = false ;
206+ FinishWeld ( pMarine, false );
219207 }
220208 else
221209 {
@@ -230,29 +218,37 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
230218 }
231219}
232220
221+ void CASW_Weapon_Welder::FinishWeld ( CASW_Marine* pMarine, bool bKeepWeldDirection )
222+ {
223+ if ( !bKeepWeldDirection )
224+ m_iAutomaticWeldDirection = 0 ;
225+ m_bShotDelayed = false ;
226+ #ifdef GAME_DLL
227+ if ( pMarine )
228+ {
229+ if ( pMarine->GetMarineResource () )
230+ {
231+ pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
232+ }
233+ pMarine->OnWeldFinished ();
234+ }
235+ m_pWeldDoor = NULL ;
236+ #endif
237+ m_bIsFiring = false ;
238+ }
239+
233240// make the weapon weld if needed
234241
235242void CASW_Weapon_Welder::ItemPostFrame ()
236243{
244+ CASW_Marine *pMarine = NULL ;
237245#ifndef CLIENT_DLL
238- CASW_Marine * pMarine = GetMarine ();
246+ pMarine = GetMarine ();
239247 if ( !pMarine || !pMarine->GetCommander () )
240248 {
241249 if ( m_bPlayingWelderSound )
242250 {
243- m_bIsFiring = false ;
244-
245- m_pWeldDoor = NULL ;
246-
247- if (pMarine)
248- {
249- if (pMarine->GetMarineResource ())
250- {
251- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
252- }
253-
254- pMarine->OnWeldFinished ();
255- }
251+ FinishWeld ( pMarine, true );
256252 // Msg( "Clearing weld door as no marine\n" );
257253 }
258254 return BaseItemPostFrame ();
@@ -317,33 +313,14 @@ void CASW_Weapon_Welder::ItemPostFrame()
317313 if ( ( m_iAutomaticWeldDirection > 0 && m_pWeldDoor->GetSealAmount () >= 1 .0f ) ||
318314 ( m_iAutomaticWeldDirection < 0 && m_pWeldDoor->GetSealAmount () <= 0 .0f ) )
319315 {
320- m_iAutomaticWeldDirection = 0 ;
321- m_bShotDelayed = false ;
322- #ifdef GAME_DLL
323- if ( pMarine->GetMarineResource () )
324- {
325- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
326- }
327- m_pWeldDoor = NULL ;
328- pMarine->OnWeldFinished ();
329- #endif
330- m_bIsFiring = false ;
316+ FinishWeld ( pMarine, false );
331317 }
332318 }
333319 else
334320 {
335321 if ( !FindDoor () )
336322 {
337- m_bShotDelayed = false ;
338- #ifdef GAME_DLL
339- if ( pMarine->GetMarineResource () )
340- {
341- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
342- }
343- m_pWeldDoor = NULL ;
344- pMarine->OnWeldFinished ();
345- #endif
346- m_bIsFiring = false ;
323+ FinishWeld ( pMarine, true );
347324 }
348325 }
349326 }
0 commit comments