@@ -58,20 +58,49 @@ GVAR(clientParticles) = createHashMap;
5858 if (_netId in GVAR(clientParticles)) exitWith {}; // idempotency guard
5959
6060 private _sourcePos = getPosATL _gasLogic ;
61- private _particleObjectAmount = (_radius / 10 ) max 1 ;
6261 private _particleObjects = [];
6362
64- for " _i" from 0 to _particleObjectAmount do {
65- private _particleSource = " #particlesource" createVehicleLocal _sourcePos ;
66- _particleSource setParticleClass QGVAR(Toxic_Gas_Particles);
67- if (_i == 0 ) then {
68- _particleSource setParticleCircle [1 , [0 ,0 ,0 ]];
69- } else {
70- _particleSource setParticleCircle [_i * 10 , [0 ,0 ,0 ]];
71- };
72- _particleSource attachTo [_gasLogic , [0 ,0 ,0 ]];
73- _particleObjects pushBack _particleSource ;
74- };
63+ // Layer 1: Ground carpet — bulk mass, area-fill via setParticleRandom
64+ private _carpet = " #particlesource" createVehicleLocal _sourcePos ;
65+ _carpet setParticleClass QGVAR(Toxic_Gas_Particles);
66+ _carpet setParticleCircle [0 , [0 , 0 , 0 ]];
67+ _carpet setParticleRandom [
68+ 2 ,
69+ [_radius , _radius , 0.3 ],
70+ [0.3 , 0.3 , 0.05 ],
71+ 1 , 0.3 , [0.03 , 0.03 , 0.03 , 0.1 ], 0 , 0 , 360
72+ ];
73+ _carpet setDropInterval 0.0035 ;
74+ _carpet attachTo [_gasLogic , [0 , 0 , 0 ]];
75+ _particleObjects pushBack _carpet ;
76+
77+ // Layer 2: Drifting wisps — volumetric body with vertical lift
78+ private _wisps = " #particlesource" createVehicleLocal _sourcePos ;
79+ _wisps setParticleClass QGVAR(Toxic_Gas_Wisps);
80+ _wisps setParticleCircle [0 , [0 , 0 , 0 ]];
81+ _wisps setParticleRandom [
82+ 1 ,
83+ [_radius * 0.7 , _radius * 0.7 , 0.5 ],
84+ [0.2 , 0.2 , 0.3 ],
85+ 1 , 0.3 , [0 , 0 , 0 , 0.05 ], 0 , 0 , 360
86+ ];
87+ _wisps setDropInterval 0.02 ;
88+ _wisps attachTo [_gasLogic , [0 , 0 , 0 ]];
89+ _particleObjects pushBack _wisps ;
90+
91+ // Layer 3: Perimeter creep — circle emission with slight inward velocity
92+ private _creep = " #particlesource" createVehicleLocal _sourcePos ;
93+ _creep setParticleClass QGVAR(Toxic_Gas_Particles);
94+ _creep setParticleCircle [_radius * 0.95 , [- 0.4 , - 0.4 , 0 ]];
95+ _creep setParticleRandom [
96+ 2 ,
97+ [1 , 1 , 0.2 ],
98+ [0.2 , 0.2 , 0.05 ],
99+ 1 , 0.2 , [0 , 0 , 0 , 0.1 ], 0 , 0 , 360
100+ ];
101+ _creep setDropInterval 0.025 ;
102+ _creep attachTo [_gasLogic , [0 , 0 , 0 ]];
103+ _particleObjects pushBack _creep ;
75104
76105 GVAR(clientParticles) set [_netId , _particleObjects ];
77106}] call CBA_fnc_addEventHandler ;
0 commit comments