From e670b4ed55c459a21090bd0178ceaaaf12d87989 Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 11 Jun 2026 19:58:31 +0300 Subject: init --- Client/Module/Nuke/damage.sqf | 30 ++++++++ Client/Module/Nuke/nuke.sqf | 146 ++++++++++++++++++++++++++++++++++++ Client/Module/Nuke/nukeincoming.sqf | 59 +++++++++++++++ Client/Module/Nuke/radzone.sqf | 20 +++++ 4 files changed, 255 insertions(+) create mode 100644 Client/Module/Nuke/damage.sqf create mode 100644 Client/Module/Nuke/nuke.sqf create mode 100644 Client/Module/Nuke/nukeincoming.sqf create mode 100644 Client/Module/Nuke/radzone.sqf (limited to 'Client/Module/Nuke') diff --git a/Client/Module/Nuke/damage.sqf b/Client/Module/Nuke/damage.sqf new file mode 100644 index 0000000..0b72bce --- /dev/null +++ b/Client/Module/Nuke/damage.sqf @@ -0,0 +1,30 @@ +//--- Nuke destruction. +Private ["_array","_blackListed","_bo","_destroy","_target","_z"]; + +private ["_destroy","_bo","_target","_array","_blackListed"]; +_target = _this select 0; +_array = _target nearObjects ["All", 700]; +_blackListed = WFDEPOT + WFCAMP + ["land_nav_pier_c","land_nav_pier_c2","land_nav_pier_c2_end","land_nav_pier_c_270","land_nav_pier_c_90","land_nav_pier_c_big","land_nav_pier_C_L","land_nav_pier_C_L10","land_nav_pier_C_L30","land_nav_pier_C_R","land_nav_pier_C_R10","land_nav_pier_C_R30","land_nav_pier_c_t15","land_nav_pier_c_t20","land_nav_pier_F_17","land_nav_pier_F_23","land_nav_pier_m","land_nav_pier_m_1","land_nav_pier_m_end","land_nav_pier_M_fuel","land_nav_pier_pneu","land_nav_pier_uvaz"]; +_destroy = _array; +{if ((typeOf _x) in _blackListed) then {_destroy = _destroy - [_x]}} forEach _array; +{_bo = "BO_GBU12_LGB" createVehicle [random 1000,random 1000,500];_bo setPos [getPos _x select 0, getPos _x select 1, getPos _x select 2]} forEach _destroy; + +[_target] Spawn { + Private ["_array","_dammageable","_dammages","_range","_target"]; + _target = _this select 0; + _dammageable = ["Man","Car","Motorcycle","Tank","Ship","Air","StaticWeapon"]; + _range = 800; + _dammages = 1; + for [{_z = 0},{_z < 4},{_z = _z + 1}] do { + _array = _target nearEntities [_dammageable, _range]; + { + _x setDammage (getDammage _x + _dammages); + {_x setDammage (getDammage _x + _dammages)} forEach crew _x; + } forEach _array; + _range = _range + 300; + _dammages = _dammages - 0.2; + sleep 3; + }; + //--- Radiations. + [_target] Spawn NukeRadiation; +}; \ No newline at end of file diff --git a/Client/Module/Nuke/nuke.sqf b/Client/Module/Nuke/nuke.sqf new file mode 100644 index 0000000..425272c --- /dev/null +++ b/Client/Module/Nuke/nuke.sqf @@ -0,0 +1,146 @@ +//--- Nuke blast. +Private ['_Cone','_light','_smoke','_smoke2','_target','_top','_top2','_top3','_top4','_top5','_Wave','_xHandle']; + +_target = _this select 0; +if (player distance _target < 4000) then { + "dynamicBlur" ppEffectEnable true; + "dynamicBlur" ppEffectAdjust [1]; + "dynamicBlur" ppEffectCommit 1; +}; + +_Cone = "#particlesource" createVehicleLocal getPos _target; +_Cone setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48], "", "Billboard", 1, 10, [0, 0, 0], + [0, 0, 0], 0, 1.275, 1, 0, [40,80], [[0.25, 0.25, 0.25, 0], [0.25, 0.25, 0.25, 0.5], + [0.25, 0.25, 0.25, 0.5], [0.25, 0.25, 0.25, 0.05], [0.25, 0.25, 0.25, 0]], [0.25], 0.1, 1, "", "", _target]; +_Cone setParticleRandom [2, [1, 1, 30], [1, 1, 30], 0, 0, [0, 0, 0, 0.1], 0, 0]; +_Cone setParticleCircle [10, [-10, -10, 20]]; +_Cone setDropInterval 0.005; + +_top = "#particlesource" createVehicleLocal getPos _target; +_top setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 3, 48, 0], "", "Billboard", 1, 20, [0, 0, 0], + [0, 0, 80], 0, 1.7, 1, 0, [180,150,180], [[1, 1, 1, -10],[1, 1, 1, -7],[1, 1, 1, -4],[1, 1, 1, -0.5],[1, 1, 1, 0]], [0.05], 1, 1, "", "", _target]; +_top setParticleRandom [0, [75, 75, 15], [17, 17, 10], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_top setDropInterval 0.001; + +_top2 = "#particlesource" createVehicleLocal getPos _target; +_top2 setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 3, 112, 0], "", "Billboard", 1, 20, [0, 0, 0], + [0, 0, 20], 0, 1.7, 1, 0, [80,80,100], [[1, 1, 1, 0.5],[1, 1, 1, 0]], [0.07], 1, 1, "", "", _target]; +_top2 setParticleRandom [0, [75, 75, 15], [17, 17, 10], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_top2 setDropInterval 0.002; + +_smoke = "#particlesource" createVehicleLocal getPos _target; +_smoke setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48, 1], "", "Billboard", 1, 25, [0, 0, 0], + [0, 0, 80], 0, 1.7, 1, 0, [40,50,60], + [[1, 1, 1, 0.2],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0]] + , [0.5, 0.1], 1, 1, "", "", _target]; +_smoke setParticleRandom [0, [10, 10, 15], [15, 15, 7], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_smoke setDropInterval 0.002; + +_Wave = "#particlesource" createVehicleLocal getPos _target; +_Wave setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48], "", "Billboard", 1, 20, [0, 0, 0], + [0, 0, 0], 0, 1.5, 1, 0, [50, 100], [[0.1, 0.1, 0.1, 0.5], + [0.5, 0.5, 0.5, 0.5], [1, 1, 1, 0.3], [1, 1, 1, 0]], [1,0.5], 0.1, 1, "", "", _target]; +_Wave setParticleRandom [2, [20, 20, 20], [5, 5, 0], 0, 0, [0, 0, 0, 0.1], 0, 0]; +_Wave setParticleCircle [50, [-80, -80, 2.5]]; +_Wave setDropInterval 0.0002; + +_light = "#lightpoint" createVehicleLocal [((getPos _target select 0)),(getPos _target select 1),((getPos _target select 2)+500)]; +_light setLightAmbient[1500, 1200, 1000]; +_light setLightColor[1500, 1200, 1000]; +_light setLightBrightness 100000.0; + +if (player distance _target < 4000) then { + "colorCorrections" ppEffectEnable true; + "colorCorrections" ppEffectAdjust [0.8, 15, 0, [0.5, 0.5, 0.5, 0], [0.0, 0.0, 0.6, 2],[0.3, 0.3, 0.3, 0.1]];"colorCorrections" ppEffectCommit 0.4; + + "dynamicBlur" ppEffectAdjust [0.5]; + "dynamicBlur" ppEffectCommit 3; + + sleep 0.1; + + _null = [] Spawn + { + Sleep 4; + "colorCorrections" ppEffectAdjust [1.0, 0.5, 0, [0.5, 0.5, 0.5, 0], [1.0, 1.0, 0.8, 0.4],[0.3, 0.3, 0.3, 0.1]]; + "colorCorrections" ppEffectCommit 7; + }; + + "dynamicBlur" ppEffectAdjust [2]; + "dynamicBlur" ppEffectCommit 1; + + "dynamicBlur" ppEffectAdjust [0.5]; + "dynamicBlur" ppEffectCommit 4; +}; +_light setLightBrightness 100000.0; + +sleep 3.5; + +_Wave setDropInterval 0.001; +deleteVehicle _top; +deleteVehicle _top2; +sleep 7; +_top3 = "#particlesource" createVehicleLocal getPos _target; +_top3 setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 3, 48, 0], "", "Billboard", 1, 20, [0, 0, 500], + [0, 0, 65], 0, 1.7, 1, 0, [200,200,200], [[1, 1, 1, -10],[1, 1, 1, -7],[1, 1, 1, -4],[1, 1, 1, -0.5],[1, 1, 1, 0]], [0.05], 1, 1, "", "", _target]; +_top3 setParticleRandom [0, [75, 75, 15], [17, 17, 10], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_top3 setDropInterval 0.001; + +sleep 0.6; +deleteVehicle _top3; + +sleep 3; + +if (player distance _target < 4000) then { + "colorCorrections" ppEffectAdjust [1, 1, 0, [0.5, 0.5, 0.5, 0], [1.0, 1.0, 0.8, 0.4],[0.3, 0.3, 0.3, 0.1]];"colorCorrections" ppEffectCommit 1; "colorCorrections" ppEffectEnable TRUE; + "dynamicBlur" ppEffectAdjust [0]; + "dynamicBlur" ppEffectCommit 1; +}; + +_top4 = "#particlesource" createVehicleLocal getPos _target; +_top4 setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 3, 48, 0], "", "Billboard", 1, 20, [0, 0, 800], + [0, 0, 55], 0, 1.7, 1, 0, [200,200,200], [[1, 1, 1, -10],[1, 1, 1, -7],[1, 1, 1, -4],[1, 1, 1, -0.5],[1, 1, 1, 0]], [0.05], 1, 1, "", "", _target]; +_top4 setParticleRandom [0, [75, 75, 15], [17, 17, 10], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_top4 setDropInterval 0.001; + +sleep 0.6; +deleteVehicle _light; +deleteVehicle _top4; +sleep 4; + +_top5 = "#particlesource" createVehicleLocal getPos _target; +_top5 setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 3, 48, 0], "", "Billboard", 1, 20, [0, 0, 1000], + [0, 0, 20], 0, 1.7, 1, 0, [250,280,250], [[1, 1, 1, -10],[1, 1, 1, -7],[1, 1, 1, -4],[1, 1, 1, -0.5],[1, 1, 1, 0]], [0.05], 1, 1, "", "", _target]; +_top5 setParticleRandom [0, [75, 75, 15], [17, 17, 10], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_top5 setDropInterval 0.001; + +_Cone setDropInterval 0.01; +_Wave setDropInterval 0.001; + +_smoke setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48, 1], "", "Billboard", 1, 25, [0, 0, 0], + [0, 0, 80], 0, 1.7, 1, 0, [150,150,150], + [[1, 1, 1, 0.2],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0]] + , [0.5, 0.1], 1, 1, "", "", _target]; +_smoke setDropInterval 0.01; + +_smoke2 = "#particlesource" createVehicleLocal getPos _target; +_smoke2 setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48, 1], "", "Billboard", 1, 25, [0, 0, 900], + [0, 0, 25], 0, 1.7, 1, 0, [160,180,170], + [[1, 1, 1, 0.2],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0.3],[1, 1, 1, 0]] + , [0.5, 0.1], 1, 1, "", "", _target]; +_smoke2 setParticleRandom [0, [10, 10, 15], [15, 15, 7], 0, 0, [0, 0, 0, 0], 0, 0, 360]; +_smoke2 setDropInterval 0.01; + +sleep 5; +deleteVehicle _top5; +_Cone setDropInterval 0.02; +_Wave setDropInterval 0.01; + +sleep 5; +deleteVehicle _smoke2; +sleep 10; +deleteVehicle _Wave; +deleteVehicle _cone; +deleteVehicle _smoke; +sleep 20; +if (player distance _target < 4000) then {"colorCorrections" ppEffectEnable false}; +[currentFX] Spawn FX; \ No newline at end of file diff --git a/Client/Module/Nuke/nukeincoming.sqf b/Client/Module/Nuke/nukeincoming.sqf new file mode 100644 index 0000000..e2a92f9 --- /dev/null +++ b/Client/Module/Nuke/nukeincoming.sqf @@ -0,0 +1,59 @@ +//--- Nuke launching. +Private ['_cruise','_dropPosition','_dropPosX','_dropPosY','_dropPosZ','_misFlare','_nukeMarker','_path','_pathS','_planespawnpos','_target','_type']; +_target = _this select 0; +_nukeMarker = _this select 1; + +WFBE_LocalizeMessage = [nil,'CLTFNCLOCALIZEMESSAGE',['TacticalLaunch']]; +publicVariable 'WFBE_LocalizeMessage'; +if (isHostedServer || local player) then {[nil,'CLTFNCLOCALIZEMESSAGE',['TacticalLaunch']] Spawn HandlePVF}; + +sleep 300; + +_path = "\ca\air2\cruisemissile\"; //"; +_pathS = _path + "data\scripts\"; //"; + +_dropPosition = getpos _target; +_type = if (WF_A2_Vanilla || WF_A2_CombinedOps) then {'Chukar'} else {'Chukar_EP1'}; +_cruise = createVehicle [_type,_dropPosition,[], 0, "FLY"]; +_cruise setVectorDir [ 0.1,- 1,+ 0.5]; +_cruise setPos [(getPos _cruise select 0),(getPos _cruise select 1),570]; +_cruise setVelocity [0,2,0]; +_cruise flyInHeight 570; +_cruise setSpeedMode "FULL"; + +WFBE_RequestSpecial = ['SRVFNCREQUESTSPECIAL',["ICBM",sideJoined,_target,_cruise,clientTeam]]; +publicVariable 'WFBE_RequestSpecial'; +if (isHostedServer) then {['SRVFNCREQUESTSPECIAL',["ICBM",sideJoined,_target,_cruise,clientTeam]] Spawn HandleSPVF}; + +sleep 1.5; + +WFBE_DisplayICBM = [sideJoined,'CLTFNCDISPLAYICBM',[_target,_cruise]]; +publicVariable 'WFBE_DisplayICBM'; +if (isHostedServer || local player) then {[sideJoined,'CLTFNCDISPLAYICBM',[_target,_cruise]] Spawn HandlePVF}; + +_misFlare = objNull; +if (WF_A2_Vanilla || WF_A2_CombinedOps) then { + _dropPosX = _dropPosition select 0; + _dropPosY = _dropPosition select 1; + _dropPosZ = _dropPosition select 2; + + _planespawnpos = [_dropPosX , _dropPosY , _dropPosZ + 600]; + + _misFlare = createVehicle ["cruiseMissileFlare1",_planespawnpos,[], 0, "NONE"]; + _misFlare inflame true; + _cruise setVariable ["cruisemissile_level", false]; + [_cruise, _misFlare] execVM (_pathS + "cruisemissileflare.sqf"); + _cruise setObjectTexture [0, _path + "data\exhaust_flame_ca"]; + [_cruise] execVM (_pathS + "exhaust1.sqf"); +}; + +sleep 7; + +waitUntil {!alive _cruise}; + +sleep 5; +if (WF_A2_Vanilla || WF_A2_CombinedOps) then {deleteVehicle _misFlare}; +deleteVehicle _cruise; + +sleep 50; +deleteMarkerLocal _nukeMarker; diff --git a/Client/Module/Nuke/radzone.sqf b/Client/Module/Nuke/radzone.sqf new file mode 100644 index 0000000..084b66f --- /dev/null +++ b/Client/Module/Nuke/radzone.sqf @@ -0,0 +1,20 @@ +//--- Radiation +Private ['_target','_z']; + + +private ["_target"]; +_target = _this select 0; +[_target] Spawn { + Private ["_array","_dammageable","_target"]; + _target = _this select 0; + _dammageable = ["Man","Car","Motorcycle","Tank","Ship","Air","StaticWeapon"]; + for [{_z = 0},{_z < 300},{_z = _z + 1}] do { + _array = _target nearEntities [_dammageable, 1000]; + { + _x setDammage (getDammage _x + 0.03); + {_x setDammage (getDammage _x + 0.05)} forEach crew _x; + } forEach _array; + sleep (3 + random 3); + }; + deleteVehicle _target; +}; \ No newline at end of file -- cgit v1.3.1