#include "..\script_component.hpp" /* * Author: tcvm * Checks hitpoint damage and determines if a vehicle should cook off. * * Arguments: * 0: Vehicle * 1: Chance of fire * 2: Intensity of cookoff * 3: Source of damage * 4: Person who caused damage * 5: Part of vehicle which got hit (default: "") * 6: Whether or not the vehicle can spawn ring-fire effect (default: false) * 7: Whether or not the vehicle can spawn jet-fire effect (default: true) * * Return Value: * If vehicle started or already cooking off * * Example: * [cursorObject, 0.1, 5, player, player] call ace_vehicle_damage_fnc_handleCookoff * * Public: No */ params ["_vehicle", "_chanceOfFire", "_intensity", "_source", "_instigator", ["_hitPart", ""], ["_canRing", true], ["_canJet", true]]; TRACE_8("handleCookoff",_vehicle,_chanceOfFire,_intensity,_source,_instigator,_hitPart,_canRing,_canJet); // Ignore if the vehicle is already cooking off if (_vehicle getVariable [QEGVAR(cookoff,isCookingOff), false]) exitWith { TRACE_3("already cooking off",_vehicle,_chanceOfFire,_intensity); true // return }; _chanceOfFire = _chanceOfFire * EGVAR(cookoff,probabilityCoef); // Failure to cook off if (_chanceOfFire == 0 || {_chanceOfFire < random 1}) exitWith { TRACE_3("no cook-off",_vehicle,_chanceOfFire,_intensity); false // return }; // Vehicle will cook off private _configOf = configOf _vehicle; private _fireDetonateChance = getNumber (_configOf >> QGVAR(detonationDuringFireProb)); if (_canRing) then { _canRing = getNumber (_configOf >> QGVAR(canHaveFireRing)) == 1; }; if (_canJet) then { _canJet = getNumber (_configOf >> QEGVAR(cookoff,canHaveFireJet)) == 1; }; private _delaySmoke = _chanceOfFire < random 1; private _detonateAfterCookoff = (_fireDetonateChance / 4) > random 1; private _source = ""; if (_hitPart == "engine") then { _source = ["hit_engine_point", "HitPoints"]; }; [QEGVAR(cookOff,cookOffServer), [_vehicle, _intensity, _injurer, _injurer, _delayWithSmoke, _fireDetonateChance, _detonateAfterCookoff, _source, _canRing, _canJet]] call CBA_fnc_serverEvent; TRACE_4("cooking-off",_vehicle,_chanceOfFire,_delaySmoke,_detonateAfterCookoff); // Abandon vehicle _vehicle call FUNC(abandon); true // return