iw6-scripts-dev/destructible_scripts/toy_tv_flatscreen.gsc
2024-12-11 11:28:08 +01:00

97 lines
4.6 KiB
Plaintext

#include common_scripts\_destructible;
#using_animtree( "destructibles" );
toy_tvs_flatscreen( version, mounting, destroyFn )
{
//---------------------------------------------------------------------
// Flatscreen TVs
//---------------------------------------------------------------------
if(IsDefined( self.script_noteworthy ) && self.script_noteworthy == "blackice_tv")
{
destructible_create( "toy_tv_flatscreen_" + mounting + version, "tag_origin", 1, undefined, 32 );
destructible_splash_damage_scaler( 1 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion_quick" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_state( undefined, "ma_flatscreen_tv_" + mounting + "broken_" + version, 200, undefined, "no_melee" );
}
else
{
destructible_create( "toy_tv_flatscreen_" + mounting + version, "tag_origin", 1, undefined, 32 );
destructible_splash_damage_scaler( 1 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_state( undefined, "ma_flatscreen_tv_" + mounting + "broken_" + version, 200, undefined, "no_melee" );
}
}
toy_tvs_flatscreen_sturdy( version, mounting, destroyFn )
{
//---------------------------------------------------------------------
// Flatscreen TVs that can take more damage
//---------------------------------------------------------------------
if ( IsDefined( self.script_noteworthy ) && self.script_noteworthy == "blackice_tv" )
{
destructible_create( "toy_tv_flatscreen_" + mounting + version + "_sturdy", "tag_origin", 1, undefined, 1280 );
destructible_splash_damage_scaler( 0.5 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion_quick" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_state( undefined, "ma_flatscreen_tv_" + mounting + "broken_" + version, 200, undefined, "no_melee" );
}
else
{
destructible_create( "toy_tv_flatscreen_" + mounting + version + "_sturdy", "tag_origin", 1, undefined, 1280 );
destructible_splash_damage_scaler( 0.5 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion_cheap" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_state( undefined, "ma_flatscreen_tv_" + mounting + "broken_" + version, 200, undefined, "no_melee" );
}
}
toy_tvs_flatscreen_cinematic( modelName, destroyFn )
{
//---------------------------------------------------------------------
// Flatscreen TV that has a (optional) separate model that shows a cinematic on the screen
//---------------------------------------------------------------------
if ( IsDefined( self.script_noteworthy ) && self.script_noteworthy == "blackice_tv" )
{
destructible_create( "toy_" + modelName, "tag_origin", 1, undefined, 32 );
destructible_splash_damage_scaler( 1 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion_quick" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_function( destroyFn );
destructible_state( undefined, modelName + "_d", 200, undefined, "no_melee" );
}
else
{
destructible_create( "toy_" + modelName, "tag_origin", 1, undefined, 32 );
destructible_splash_damage_scaler( 1 );
destructible_fx( "tag_fx", "fx/explosions/tv_flatscreen_explosion" );
destructible_sound( "tv_shot_burst" );
destructible_explode( 20, 2000, 10, 10, 3, 3, undefined, 15 ); // force_min, force_max, rangeSP, rangeMP, mindamage, maxdamage
destructible_function( destroyFn );
destructible_state( undefined, modelName + "_d", 200, undefined, "no_melee" );
}
}
// Finds and removes a targetted model. Commonly used to remove the cinematic-playing screen and/or a light when a TV is destroyed.
RemoveTargetted()
{
if ( IsDefined( self.target ) ) {
tgtModels = GetEntArray( self.target, "targetname" );
if ( isDefined( tgtModels ) )
{
foreach ( tgtModel in tgtModels )
{
if ( tgtModel.classname == "light_omni" || tgtModel.classname == "light_spot" )
tgtModel SetLightIntensity( 0 );
else
tgtModel Delete();
}
}
}
}