@@ -214,19 +214,7 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
214214
215215 if ( !bWelding )
216216 {
217- m_iAutomaticWeldDirection = 0 ;
218- m_bShotDelayed = false ;
219- #ifdef GAME_DLL
220- if ( pMarine->GetMarineResource () )
221- {
222- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
223- }
224-
225- m_pWeldDoor = NULL ;
226-
227- pMarine->OnWeldFinished ();
228- #endif
229- m_bIsFiring = false ;
217+ FinishWeld ( pMarine, false );
230218 }
231219 else
232220 {
@@ -241,29 +229,41 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
241229 }
242230}
243231
232+ void CASW_Weapon_Welder::FinishWeld ( CASW_Marine* pMarine, bool bKeepWeldDirection )
233+ {
234+ m_bShotDelayed = false ;
235+ #ifdef GAME_DLL
236+ if ( pMarine )
237+ {
238+ if ( pMarine->GetMarineResource () )
239+ {
240+ pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
241+ }
242+ pMarine->OnWeldFinished ();
243+ }
244+ #endif // GAME_DLL
245+ #ifndef CLIENT_DLL
246+ m_pWeldDoor = NULL ;
247+ #endif // CLIENT_DLL
248+ if ( !bKeepWeldDirection )
249+ {
250+ m_iAutomaticWeldDirection = 0 ;
251+ }
252+ m_bIsFiring = false ;
253+ }
254+
244255// make the weapon weld if needed
245256
246257void CASW_Weapon_Welder::ItemPostFrame ()
247258{
259+ CASW_Marine *pMarine = NULL ;
248260#ifndef CLIENT_DLL
249- CASW_Marine * pMarine = GetMarine ();
261+ pMarine = GetMarine ();
250262 if ( !pMarine || !pMarine->GetCommander () )
251263 {
252264 if ( m_bPlayingWelderSound )
253265 {
254- m_bIsFiring = false ;
255-
256- m_pWeldDoor = NULL ;
257-
258- if (pMarine)
259- {
260- if (pMarine->GetMarineResource ())
261- {
262- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
263- }
264-
265- pMarine->OnWeldFinished ();
266- }
266+ FinishWeld ( pMarine, true );
267267 // Msg( "Clearing weld door as no marine\n" );
268268 }
269269 return BaseItemPostFrame ();
@@ -328,32 +328,14 @@ void CASW_Weapon_Welder::ItemPostFrame()
328328 if ( ( m_iAutomaticWeldDirection > 0 && m_pWeldDoor->GetSealAmount () >= 1 .0f ) ||
329329 ( m_iAutomaticWeldDirection < 0 && m_pWeldDoor->GetSealAmount () <= 0 .0f ) )
330330 {
331- m_bShotDelayed = false ;
332- #ifdef GAME_DLL
333- if ( pMarine->GetMarineResource () )
334- {
335- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
336- }
337- m_pWeldDoor = NULL ;
338- pMarine->OnWeldFinished ();
339- #endif
340- m_bIsFiring = false ;
331+ FinishWeld ( pMarine, false );
341332 }
342333 }
343334 else
344335 {
345336 if ( !FindDoor () )
346337 {
347- m_bShotDelayed = false ;
348- #ifdef GAME_DLL
349- if ( pMarine->GetMarineResource () )
350- {
351- pMarine->GetMarineResource ()->m_hWeldingDoor = NULL ;
352- }
353- m_pWeldDoor = NULL ;
354- pMarine->OnWeldFinished ();
355- #endif
356- m_bIsFiring = false ;
338+ FinishWeld ( pMarine, true );
357339 }
358340 }
359341 }
0 commit comments