100 lines
2.6 KiB
Plaintext
100 lines
2.6 KiB
Plaintext
|
/*
|
||
|
===================================================================================================
|
||
|
|
||
|
HELI
|
||
|
|
||
|
===================================================================================================
|
||
|
*/
|
||
|
object vehicle_heli : vehicle_base {
|
||
|
void init();
|
||
|
void syncFields();
|
||
|
|
||
|
void OnUpdateHud( entity p, float guiHandle );
|
||
|
|
||
|
float collectiveMin;
|
||
|
float collectiveMax;
|
||
|
|
||
|
float spiralHealth;
|
||
|
void OnSpiralHealthSynced();
|
||
|
}
|
||
|
|
||
|
void vehicle_heli::syncFields() {
|
||
|
syncBroadcast( "spiralHealth" );
|
||
|
syncCallback( "spiralHealth", "OnSpiralHealthSynced" );
|
||
|
}
|
||
|
|
||
|
void vehicle_heli::init() {
|
||
|
collectiveMin = getFloatKey( "collective_min" );
|
||
|
collectiveMax = getFloatKey( "collective_max" );
|
||
|
|
||
|
if ( sys.random( 1.0f ) < 0.9f ) {
|
||
|
spiralHealth = getFloatKey( "spiral_health" );
|
||
|
OnSpiralHealthSynced();
|
||
|
} else {
|
||
|
spiralHealth = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void vehicle_heli::OnSpiralHealthSynced() {
|
||
|
setDeathThroeHealth( spiralHealth );
|
||
|
float maxHealth = getMaxHealth();
|
||
|
spiralHealthFrac = spiralHealth / maxHealth;
|
||
|
|
||
|
float remainingRange = maxHealth - spiralHealth;
|
||
|
float klaxonHealth = remainingRange * klaxonThreshold + spiralHealth;
|
||
|
klaxonThreshold = klaxonHealth / maxHealth;
|
||
|
}
|
||
|
|
||
|
void vehicle_heli::OnUpdateHud( entity p, float guiHandle ) {
|
||
|
entity driver = getDriver();
|
||
|
if ( driver != p ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
inputSetPlayer( driver );
|
||
|
float collective = inputGetCollective();
|
||
|
sys.setGUIFloat( GUI_GLOBALS_HANDLE, "vehicles.collectiveValue", ( collective - collectiveMin ) / ( collectiveMax - collectiveMin ));
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
===================================================================================================
|
||
|
|
||
|
EARTH HELI
|
||
|
|
||
|
===================================================================================================
|
||
|
*/
|
||
|
object vehicle_heli_earth : vehicle_heli {
|
||
|
void preinit();
|
||
|
void destroy();
|
||
|
};
|
||
|
|
||
|
void vehicle_heli_earth::preinit() {
|
||
|
}
|
||
|
|
||
|
void vehicle_heli_earth::destroy() {
|
||
|
stopEffect( "fx_downdraft" );
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
===================================================================================================
|
||
|
|
||
|
ANANSI
|
||
|
|
||
|
===================================================================================================
|
||
|
*/
|
||
|
object vehicle_anansi : vehicle_heli_earth {
|
||
|
void OnWeaponSelected( entity p, float index );
|
||
|
};
|
||
|
|
||
|
void vehicle_anansi::OnWeaponSelected( entity p, float index ) {
|
||
|
if ( !sys.isClient() ) {
|
||
|
if ( index == 0 ) {
|
||
|
FireDecoy( p );
|
||
|
} else if ( index == 1 ) {
|
||
|
selectVehicleWeapon( p, "fafff" );
|
||
|
} else if ( index == 2 ) {
|
||
|
selectVehicleWeapon( p, "law" );
|
||
|
}
|
||
|
}
|
||
|
}
|