@@ -221,20 +221,20 @@ setup_destructibles()
221221 if ( isdefined ( level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " health" ] ) )
222222 self .destructible_parts[ i ].v[ " health" ] = level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " health" ];
223223
224- if ( !i )
225- continue ;
226-
227- modelName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " modelName" ];
228- tagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " tagName" ];
229-
230- stateIndex = 1 ;
231- while ( isDefined( level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ] ) )
224+ if ( i )
232225 {
233- stateTagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ].v[ " tagName" ];
234- stateModelName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ].v[ " modelName" ];
235- if ( isDefined( stateTagName ) && stateTagName != tagName )
236- self hideapart( stateTagName );
237- stateIndex++;
226+ modelName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " modelName" ];
227+ tagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ 0 ].v[ " tagName" ];
228+
229+ stateIndex = 1 ;
230+ while ( isDefined( level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ] ) )
231+ {
232+ stateTagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ].v[ " tagName" ];
233+ stateModelName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ stateIndex ].v[ " modelName" ];
234+ if ( isDefined( stateTagName ) && stateTagName != tagName )
235+ self hidepart( stateTagName );
236+ stateIndex++;
237+ }
238238 }
239239 }
240240 }
@@ -387,19 +387,19 @@ destructible_update_part( damage, modelName, tagName, point, direction_vec, atta
387387
388388 if ( isdefined ( level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ] ) )
389389 {
390- if ( ! partIndex )
390+ if ( partIndex )
391391 {
392- newModel = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ " modelName" ];
393- self setModel( newModel );
394- }
395- else
396- {
397- self hideapart( tagName );
392+ self hidepart( tagName );
398393 modelName = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ " modelName" ];
399394 tagName = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ " tagName" ];
400395
401396 if ( isdefined ( modelName ) && isdefined ( tagName ) )
402- self showapart( tagName );
397+ self showpart( tagName );
398+ }
399+ else
400+ {
401+ newModel = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ " modelName" ];
402+ self setModel( newModel );
403403 }
404404 }
405405
@@ -489,6 +489,7 @@ destructible_update_part( damage, modelName, tagName, point, direction_vec, atta
489489 return ;
490490
491491 updateHealthValue = true ;
492+ wait 0.05 ;
492493 }
493494}
494495
@@ -512,15 +513,15 @@ destructible_splash_damage( damage, point, direction_vec, attacker, damageType )
512513 {
513514 modelName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ j ].v[ " modelName" ];
514515
515- if ( ! i )
516+ if ( i )
516517 {
517- d = distance( point, self .origin ) ;
518- tagName = undefined ;
518+ tagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ j ].v[ " tagName " ] ;
519+ d = distance( point, self getTagOrigin( tagName ) ) ;
519520 }
520521 else
521522 {
522- tagName = level .destructible_type[ self .destuctableInfo ].parts[ i ][ j ].v[ " tagName " ] ;
523- d = distance( point, self getTagOrigin( tagName ) );
523+ tagName = undefined ;
524+ d = distance( point, self .origin );
524525 }
525526
526527 if ( ( !isdefined ( closestPartDist ) ) || ( d < closestPartDist ) )
@@ -554,22 +555,14 @@ destructible_splash_damage( damage, point, direction_vec, attacker, damageType )
554555isValidSoundCause( soundCauseVar, partIndex, stateIndex, soundIndex, damageType )
555556{
556557 soundCause = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ soundCauseVar ][ soundIndex ];
557- if ( !isdefined ( soundCause ) || soundCause == damageType )
558- return true ;
559-
560- return false ;
558+
559+ return !isdefined ( soundCause ) || soundCause == damageType;
561560}
562561
563562isValidDamageCause( partIndex, stateIndex, damageType )
564563{
565564 validType = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ stateIndex ].v[ " validDamageCause" ];
566- if ( !isdefined ( damageType ) || !isdefined ( validType ) )
567- return true ;
568-
569- if ( ( validType == " no_melee" ) && damageType == " melee" || damageType == " impact" )
570- return false ;
571-
572- return true ;
565+ return !isdefined ( damageType ) || !isdefined ( validType ) || (validType != " no_melee" || damageType != " melee" ) && damageType != " impact" ;
573566}
574567
575568getDamageType( type )
@@ -628,35 +621,35 @@ health_drain( amount, interval, partIndex, modelName, tagName )
628621
629622explode( partIndex, force_min, force_max, range, mindamage, maxdamage )
630623{
631- if ( isdefined ( self .exploded ) )
632- return ;
624+ if ( !isdefined ( self .exploded ) )
625+ {
626+ self .exploded = true ;
633627
634- self .exploded = true ;
628+ if (self .classname == " script_vehicle" )
629+ self notify (" death" );
635630
636- if (self .classname == " script_vehicle" )
637- self notify (" death" );
631+ wait 0.05 ;
638632
639- wait 0.05 ;
633+ tagName = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ self .destructible_parts[ partIndex ].v[ " currentState" ] ].v[ " tagName" ];
634+ if ( isdefined ( tagName ) )
635+ explosionOrigin = self getTagOrigin( tagName );
636+ else
637+ explosionOrigin = self .origin;
640638
641- tagName = level .destructible_type[ self .destuctableInfo ].parts[ partIndex ][ self .destructible_parts[ partIndex ].v[ " currentState" ] ].v[ " tagName" ];
642- if ( isdefined ( tagName ) )
643- explosionOrigin = self getTagOrigin( tagName );
644- else
645- explosionOrigin = self .origin;
639+ self notify ( " damage" , maxdamage, self , ( 0 , 0 , 0 ), explosionOrigin, " MOD_EXPLOSIVE" , " " , " " );
646640
647- self notify ( " damage" , maxdamage, self , ( 0 , 0 , 0 ), explosionOrigin, " MOD_EXPLOSIVE" , " " , " " );
648-
649- waittillframeend ;
641+ waittillframeend ;
650642
651- self notify ( " stop_taking_damage" );
652- wait 0.05 ;
643+ self notify ( " stop_taking_damage" );
644+ wait 0.05 ;
653645
654- if ( !isDefined( self .damageOwner ) )
655- self radiusDamage( explosionOrigin + ( 0 , 0 , 80 ), range, maxdamage, mindamage );
656- else
657- {
658- self radiusDamage( explosionOrigin + ( 0 , 0 , 80 ), range, maxdamage, mindamage, self .damageOwner );
659- self .damageOwner notify ( " destroyed_car" );
646+ if ( isDefined( self .damageOwner ) )
647+ {
648+ self radiusDamage( explosionOrigin + ( 0 , 0 , 80 ), range, maxdamage, mindamage, self .damageOwner );
649+ self .damageOwner notify ( " destroyed_car" );
650+ }
651+ else
652+ self radiusDamage( explosionOrigin + ( 0 , 0 , 80 ), range, maxdamage, mindamage );
660653 }
661654}
662655
@@ -697,14 +690,4 @@ string( num )
697690deleteEnt( ent )
698691{
699692 ent delete();
700- }
701-
702- hideapart( tagName )
703- {
704- self hidepart( tagName );
705- }
706-
707- showapart( tagName )
708- {
709- self showpart( tagName );
710693}
0 commit comments