108 lines
3.1 KiB
Plaintext
108 lines
3.1 KiB
Plaintext
|
////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Server Occupation script by second_coming
|
||
|
//
|
||
|
// Version 2.0
|
||
|
//
|
||
|
// http://www.exilemod.com/profile/60-second_coming/
|
||
|
//
|
||
|
// This script uses the fantastic DMS by Defent and eraser1
|
||
|
//
|
||
|
// http://www.exilemod.com/topic/61-dms-defents-mission-system/
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
_heli = _this select 0;
|
||
|
_heliDamage = getDammage _heli;
|
||
|
_heliPosition = getPosATL _heli;
|
||
|
_heliHeight = getPosATL _heli select 2;
|
||
|
_crewEjected = _heli getVariable "SC_crewEjected";
|
||
|
if(SC_infiSTAR_log) then
|
||
|
{
|
||
|
_logDetail = format ["[OCCUPATION:Sky]:: Air unit %2 hit by %3 at %1 (damage: %4)",time,_this select 0,_this select 1,_heliDamage];
|
||
|
['A3_EXILE_OCCUPATION',_logDetail] call FNC_A3_CUSTOMLOG;
|
||
|
};
|
||
|
_ejectChance = round (random 100) + (_heliDamage * 100);
|
||
|
|
||
|
if(_heliDamage > 0 && _ejectChance > 70 && !_crewEjected) then
|
||
|
{
|
||
|
_heli removeAllMPEventHandlers "mphit";
|
||
|
[_heli ] spawn
|
||
|
{
|
||
|
_veh = _this select 0;
|
||
|
{
|
||
|
if(SC_infiSTAR_log) then
|
||
|
{
|
||
|
_heliPosition = getPosATL _veh;
|
||
|
_logDetail = format ["[OCCUPATION:Sky]:: Air unit %2 ejecting passengers at %3 (time: %1)",time,_this select 0,_this select 1,_heliPosition];
|
||
|
['A3_EXILE_OCCUPATION',_logDetail] call FNC_A3_CUSTOMLOG;
|
||
|
};
|
||
|
_unit = _x select 0;
|
||
|
if (isNull driver _veh) then
|
||
|
{
|
||
|
moveOut _unit;
|
||
|
_parachute = "Steerable_Parachute_F" createVehicle getPos _unit;
|
||
|
_parachute setDir (getDir _unit);
|
||
|
_unit moveInDriver _parachute;
|
||
|
_heliPosition = getPosATL _heli;
|
||
|
_parachutePosition = [_heliPosition select 0, _heliPosition select 1, (_heliPosition select 2)-5];
|
||
|
_parachute setPos _parachutePosition;
|
||
|
sleep 0.1;
|
||
|
_parachute enableSimulationGlobal true;
|
||
|
};
|
||
|
} forEach (fullCrew _veh);
|
||
|
|
||
|
};
|
||
|
_heli setVariable ["SC_crewEjected", true,true];
|
||
|
_target = _this select 1;
|
||
|
_pilot = driver _heli;
|
||
|
_group = group _pilot;
|
||
|
_group reveal [_target,1.5];
|
||
|
|
||
|
_destination = getPos _target;
|
||
|
[_group, _destination, 250] call bis_fnc_taskPatrol;
|
||
|
_group setBehaviour "COMBAT";
|
||
|
_group setCombatMode "RED";
|
||
|
|
||
|
|
||
|
_group allowFleeing 0;
|
||
|
_group setBehaviour "AWARE";
|
||
|
_group setSpeedMode "FULL";
|
||
|
_group setCombatMode "RED";
|
||
|
_heli addMPEventHandler ["mphit", "_this call SC_fnc_airHit;"];
|
||
|
};
|
||
|
|
||
|
if(_heliDamage >= 0.5) then
|
||
|
{
|
||
|
if(SC_infiSTAR_log) then
|
||
|
{
|
||
|
_logDetail = format ["[OCCUPATION:Sky]:: Air unit %2 damaged and force landing at %3 (time: %1)",time,_this select 0,_this select 1,_heliPosition];
|
||
|
['A3_EXILE_OCCUPATION',_logDetail] call FNC_A3_CUSTOMLOG;
|
||
|
};
|
||
|
_heli removeAllMPEventHandlers "mphit";
|
||
|
_heli removeAllMPEventHandlers "mpkilled";
|
||
|
SC_liveHelis = SC_liveHelis - 1;
|
||
|
_heli land "LAND";
|
||
|
_heli setVehicleLock "UNLOCKED";
|
||
|
_target = _this select 1;
|
||
|
_pilot = driver _heli;
|
||
|
_group = group _pilot;
|
||
|
_group reveal [_target,1.5];
|
||
|
|
||
|
_destination = getPos _target;
|
||
|
[_group, _destination, 250] call bis_fnc_taskPatrol;
|
||
|
_group setBehaviour "COMBAT";
|
||
|
_group setCombatMode "RED";
|
||
|
|
||
|
|
||
|
_group allowFleeing 0;
|
||
|
_group setBehaviour "AWARE";
|
||
|
_group setSpeedMode "FULL";
|
||
|
_group setCombatMode "RED";
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|