178 lines
15 KiB
Plaintext
178 lines
15 KiB
Plaintext
#using scripts\shared\ai_shared;
|
|
#using scripts\shared\clientfield_shared;
|
|
#using scripts\shared\system_shared;
|
|
|
|
|
|
|
|
/# #/
|
|
|
|
|
|
#precache( "client_fx", "electric/fx_elec_warlord_damage_1" );
|
|
#precache( "client_fx", "electric/fx_elec_warlord_damage_2" );
|
|
#precache( "client_fx", "electric/fx_elec_warlord_lower_damage_1" );
|
|
#precache( "client_fx", "electric/fx_elec_warlord_lower_damage_2" );
|
|
#precache( "client_fx", "explosions/fx_exp_warlord_death" );
|
|
#precache( "client_fx", "vehicle/fx_exhaust_jetpack_warlord_juke" );
|
|
#precache( "client_fx", "light/fx_light_eye_glow_warlord" );
|
|
#precache( "client_fx", "light/fx_light_body_glow_warlord" );
|
|
|
|
function autoexec __init__sytem__() { system::register("warlord",&__init__,undefined,undefined); }
|
|
|
|
function autoexec precache()
|
|
{
|
|
level._effect[ "fx_elec_warlord_damage_1" ] = "electric/fx_elec_warlord_damage_1";
|
|
level._effect[ "fx_elec_warlord_damage_2" ] = "electric/fx_elec_warlord_damage_2";
|
|
level._effect[ "fx_elec_warlord_lower_damage_1" ] = "electric/fx_elec_warlord_lower_damage_1";
|
|
level._effect[ "fx_elec_warlord_lower_damage_2" ] = "electric/fx_elec_warlord_lower_damage_2";
|
|
level._effect[ "fx_exp_warlord_death" ] = "explosions/fx_exp_warlord_death";
|
|
level._effect[ "fx_exhaust_jetpack_warlord_juke" ] = "vehicle/fx_exhaust_jetpack_warlord_juke";
|
|
level._effect[ "fx_light_eye_glow_warlord" ] = "light/fx_light_eye_glow_warlord";
|
|
level._effect[ "fx_light_body_glow_warlord" ] = "light/fx_light_body_glow_warlord";
|
|
}
|
|
|
|
function __init__()
|
|
{
|
|
if( ai::shouldRegisterClientFieldForArchetype( "warlord" ) )
|
|
{
|
|
|
|
clientfield::register(
|
|
"actor",
|
|
"warlord_type",
|
|
1,
|
|
2,
|
|
"int",
|
|
&WarlordClientUtils::warlordTypeHandler,
|
|
!true,
|
|
!true);
|
|
|
|
clientfield::register(
|
|
"actor",
|
|
"warlord_damage_state",
|
|
1,
|
|
2,
|
|
"int",
|
|
&WarlordClientUtils::warlordDamageStateHandler,
|
|
!true,
|
|
!true);
|
|
|
|
clientfield::register(
|
|
"actor",
|
|
"warlord_thruster_direction",
|
|
1,
|
|
3,
|
|
"int",
|
|
&WarlordClientUtils::warlordThrusterHandler,
|
|
!true,
|
|
!true);
|
|
|
|
clientfield::register(
|
|
"actor",
|
|
"warlord_lights_state",
|
|
1,
|
|
1,
|
|
"int",
|
|
&WarlordClientUtils::warlordLightsHandler,
|
|
!true,
|
|
!true);
|
|
}
|
|
}
|
|
|
|
#namespace WarlordClientUtils;
|
|
|
|
function warlordDamageStateHandler( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
|
|
{
|
|
entity = self;
|
|
|
|
if ( IsDefined( entity.damageStateFx ) )
|
|
{
|
|
StopFx( localClientNum, entity.damageStateFx );
|
|
entity.damageStateFx = undefined;
|
|
}
|
|
|
|
if ( IsDefined( entity.damageHeavyStateFx ) )
|
|
{
|
|
StopFx( localClientNum, entity.damageHeavyStateFx );
|
|
entity.damageHeavyStateFx = undefined;
|
|
}
|
|
|
|
switch ( newValue )
|
|
{
|
|
case 0:
|
|
break;
|
|
case 2:
|
|
entity.damageHeavyStateFx =
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_elec_warlord_damage_2" ], entity, "j_spine4");
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_elec_warlord_lower_damage_2" ], entity, "j_mainroot");
|
|
// break; // This is on purpose to enable multiple FX for HEAVY_DAMAGE
|
|
case 1:
|
|
entity.damageStateFx =
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_elec_warlord_damage_1" ], entity, "j_spine4");
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_elec_warlord_lower_damage_1" ], entity, "j_mainroot");
|
|
break;
|
|
case 3:
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_exp_warlord_death" ], entity, "j_spine4");
|
|
break;
|
|
}
|
|
}
|
|
|
|
function warlordTypeHandler( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
|
|
{
|
|
entity = self;
|
|
entity.warlordType = newValue;
|
|
}
|
|
|
|
function warlordThrusterHandler( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
|
|
{
|
|
entity = self;
|
|
|
|
if ( IsDefined( entity.thrusterFx ) )
|
|
{
|
|
assert( IsArray( entity.thrusterFx ) );
|
|
|
|
for ( index = 0; index < entity.thrusterFx.size; index++ )
|
|
{
|
|
StopFx( localClientNum, entity.thrusterFx[index] );
|
|
}
|
|
}
|
|
|
|
entity.thrusterFx = [];
|
|
tags = [];
|
|
|
|
switch ( newValue )
|
|
{
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
tags = array( "tag_jets_left_front", "tag_jets_right_front" );
|
|
break;
|
|
case 2:
|
|
tags = array( "tag_jets_left_back", "tag_jets_right_back" );
|
|
break;
|
|
case 3:
|
|
tags = array( "tag_jets_left_side" );
|
|
break;
|
|
case 4:
|
|
tags = array( "tag_jets_right_side" );
|
|
break;
|
|
}
|
|
|
|
for ( index = 0; index < tags.size; index++ )
|
|
{
|
|
entity.thrusterFx[ entity.thrusterFx.size] =
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_exhaust_jetpack_warlord_juke" ], entity, tags[index] );
|
|
}
|
|
}
|
|
|
|
function warlordLightsHandler( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
|
|
{
|
|
entity = self;
|
|
|
|
if( newvalue == 1 )
|
|
{
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_light_eye_glow_warlord" ], entity, "tag_eye");
|
|
PlayFxOnTag( localClientNum, level._effect[ "fx_light_body_glow_warlord" ], entity, "j_spine4");
|
|
}
|
|
}
|
|
|
|
// end of #namespace WarlordClientUtils
|