diff --git a/SQF/dayz_code/system/BIS_Effects/airdestruction.sqf b/SQF/dayz_code/system/BIS_Effects/airdestruction.sqf index eba2ebd58..e49018e1e 100644 --- a/SQF/dayz_code/system/BIS_Effects/airdestruction.sqf +++ b/SQF/dayz_code/system/BIS_Effects/airdestruction.sqf @@ -1,144 +1,71 @@ - -private ["_fl","_sm","_expl","_dr","_tv","_i","_wave","_splash","_velz","_v","_int","_t","_pos"]; +private["_fl","_sm","_expl","_dr","_tv","_i","_wave","_splash","_velz","_v","_int","_t","_pos"]; _v=_this select 0; -_int = (fuel _v)*(8+random 2); +_int=(fuel _v)*(8+random 2); _t=time; - -if !(isDedicated) then { //dw, particle stuff don't need run on dedicated - -_fl = "#particlesource" createVehicleLocal getpos _v; -_fl attachto [_v,[0,0,0],"destructionEffect2"]; -_fl setParticleRandom [0.3, [1, 1, 0], [0, 0, 0], 0, 0.3, [0, 0, 0, 0], 0, 0]; -_fl setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 10, 32], "", "Billboard", 1, 2, "destructionEffect2", - [0, 0, 5], 0, 10, 7.9, 0.075, [4,7,9,10], [[1, 1, 1, -1], [1, 1, 1, -1], - [1, 1, 1, -1], [1, 1, 1, -0.5], [1, 1, 1, -0]], [1,0.5], 1, 0, "", "", _v]; -_fl setDropInterval 1; - -_sm = "#particlesource" createVehicleLocal getpos _v; -_sm attachto [_v,[0,0,0],"destructionEffect1"]; -_sm setParticleRandom [2, [2, 2, 0], [0, 0, 0], 0, 0.3, [0, 0, 0, 0.1], 0, 0]; -_sm setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 7, 48], "", "Billboard", 1, 5, "destructionEffect1", - [0, 0, 5], 0, 10, 7.9, 0.075, [4,8,12,14], [[0.3, 0.3, 0.3, 1], - [0.45, 0.45, 0.45, 1],[0.6, 0.6, 0.6, 0.6], [0.7, 0.7, 0.7, 0.25], [1, 1, 1, 0]], [0.8,0.3,0.25], 1, 0, "", "", _v]; -_sm setDropInterval 1; - -}; // end of dedicated check - +if(!isDedicated)then{ + _fl="#particlesource"createVehicleLocal getPosATL _v; + _fl attachto[_v,[0,0,0],"destructionEffect2"]; + _fl setParticleRandom[0.3,[1,1,0],[0,0,0],0,0.3,[0,0,0,0],0,0]; + _fl setParticleParams[["\Ca\Data\ParticleEffects\Universal\Universal",16,10,32],"","Billboard",1,2,"destructionEffect2",[0,0,5],0,10,7.9,0.075,[4,7,9,10],[[1,1,1,-1],[1,1,1,-1],[1,1,1,-1],[1,1,1,-0.5],[1,1,1,-0]],[1,0.5],1,0,"","",_v]; + _fl setDropInterval 1; + _sm="#particlesource"createVehicleLocal getPosATL _v; + _sm attachto[_v,[0,0,0],"destructionEffect1"]; + _sm setParticleRandom[2,[2,2,0],[0,0,0],0,0.3,[0,0,0,0.1],0,0]; + _sm setParticleParams[["\Ca\Data\ParticleEffects\Universal\Universal",16,7,48],"","Billboard",1,5,"destructionEffect1",[0,0,5],0,10,7.9,0.075,[4,8,12,14],[[0.3,0.3,0.3,1],[0.45,0.45,0.45,1],[0.6,0.6,0.6,0.6],[0.7,0.7,0.7,0.25],[1,1,1,0]],[0.8,0.3,0.25],1,0,"","",_v]; + _sm setDropInterval 1; +}; _i=0; _dr=0.2; _tv=11; - - -//Remove weapons/ammo to prevent explosion. Script will create its own explosions (doesnt work?) removeallweapons _v; - -if (local _v) then {_expl="HelicopterExploSmall" createvehicle (getpos _v);}; - -if !(isDedicated) then { //dw, particle stuff don't need run on dedicated -while {_i <1200 && ((velocity _v select 2)<-20 || (getpos _v select 2)>8) && !(alive _v) && !(isnull _v) && (getpos _v select 2)>1} do -{ -_tv=abs(velocity _v select 0)+abs(velocity _v select 1)+abs(velocity _v select 2); -if (_tv>2) then {_dr=1/_tv} else {_dr=1}; -_fl setDropInterval _dr; -_sm setDropInterval _dr; -_i=_i+1; -sleep 0.2; +if(local _v AND{(_v isKindOf"Air")})then{ + _expl=createVehicle["HelicopterExploSmall",(getPosATL _v),[],0,"CAN_COLLIDE"]; }; -}; // end of dedicated check - -_pos=getpos _v; -clearVehicleInit _v; - -if !(isDedicated) then { //dw, particle stuff don't need run on dedicated -deletevehicle _fl;deletevehicle _sm; -}; // end of dedicated check -if (surfaceiswater(_pos) && (_pos select 2)<9 ) then -{ -if !(isDedicated) then { //dw, particle stuff don't need run on dedicated - _wave = "#particlesource" createVehicleLocal getpos _v; - _wave attachto [_v,[0,0,0],"destructionEffect1"]; - _wave setParticleRandom [0.3, [1, 1, 0], [0.5, 0.5, 0], 0, 0.3, [0, 0, 0, 0], 0, 0]; - _wave setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 12, 13,0], "", "Billboard", 1, 1.6, "destructionEffect1", - [0, 0, 0], 0, 10, 7.9, 0.075, [3,8], - [[0.7,0.8,1,0.6],[0.85,0.9,1,0.0]], [1000], 1, 0, "", "", _v]; - _wave setparticlecircle [2,[0,16,0]]; - _wave setDropInterval 0.0015; - - _splash = "#particlesource" createVehicleLocal getpos _v; - _splash attachto [_v,[0,0,0],"destructionEffect1"]; - _splash setParticleRandom [2, [2, 2, 0], [2, 2, 7], 0, 0.5, [0, 0, 0, 0], 0, 0]; - _splash setParticleParams [["\Ca\Data\ParticleEffects\Universal\Universal", 16, 13, 6, 0], "", "Billboard", 1, 4, "destructionEffect1", - [0, 0, 0], 0, 30, 7.9, 0.075, [8,15], - [[0.7,0.7,0.7,1],[1,1,1,0]], [1000], 1, 0, "", "", _v]; - _splash setparticlecircle [2,[0,3,15]]; - _splash setDropInterval 0.002; - - sleep 0.2; - deletevehicle _wave;deletevehicle _splash; -}; // end of dedicated check - /* - if (local _v) then - { - _wreck=GetText (configFile >> "CfgVehicles" >> (typeof _v) >> "wreck"); - if (_wreck!="") then - { - _pos = getpos _v; - _dir = vectordir _v; - _vecUp = vectorup _v; - _vel = velocity _v; - - clearvehicleinit _v; - _crw= crew _v; - clearvehicleinit _v; - deleteVehicle _v; - _v =(_wreck) createvehicle _pos; - {_x moveincargo _v} foreach _crw; - _v setVectorDirAndUp [_dir,_vecUp]; - _v setFuel 0; - _v setdamage 0; - _v setvelocity _vel; - //Send to garbage collecter so wreck can be deleted later - [_v] call BIS_GC_trashItFunc; - - }; - }; */ -} -else -{ - if (local _v) then - { - //_velx = velocity _v select 0; _velx = _velx / 4; - //_vely = velocity _v select 1; _vely = _vely / 4; - _velz=velocity _v select 2; - if (_velz>1) then {_v setvelocity [velocity _v select 0,velocity _v select 1,0]}; - _expl="HelicopterExploBig" createvehicle [_pos select 0,_pos select 1,(_pos select 2) + 1]; - sleep 0.05; - /* - _wreck=GetText (configFile >> "CfgVehicles" >> (typeof _v) >> "wreck"); - if (_wreck!="") then - { - _pos = getpos _v; - _dir = vectordir _v; - _vecUp = vectorup _v; - _vel = velocity _v; - - _crw= crew _v; - clearvehicleinit _v; - deleteVehicle _v; - _v =(_wreck) createvehicle _pos; - {_x moveincargo _v} foreach _crw; - //sleep 0.05; - _v setvelocity _vel; - //_v setPos _pos; - _v setvectordir (_dir); - _v setvectorup _vecUp; - _v setFuel 0; - _v setdamage 0; - - - }; */ - //_v setVehicleInit format ["[this, %1, %2]spawn BIS_Effects_AirDestructionStage2",_int, _t]; - //processInitCommands; //ClearvehicleInit done at end of burn script - ["AirDestructionStage2", _v, _int, _t] call BIS_Effects_globalEvent; +if(!isDedicated)then{ + while{_i<1200&&((velocity _v select 2)<-20||(getPosATL _v select 2)>8)&&!(alive _v)&&!(isnull _v)&&(getPosATL _v select 2)>1}do{ + _tv=abs(velocity _v select 0)+abs(velocity _v select 1)+abs(velocity _v select 2); + if(_tv>2)then{ + _dr=1/_tv}else{ + _dr=1}; + _fl setDropInterval _dr; + _sm setDropInterval _dr; + _i=_i+1; + sleep 0.2; + }; +}; +_pos=getPosATL _v; +clearVehicleInit _v; +if(!isDedicated)then{ + deletevehicle _fl; + deletevehicle _sm; +}; +if(surfaceiswater(_pos)&&(_pos select 2)<9)then{ + if(!isDedicated)then{ + _wave="#particlesource"createVehicleLocal getPosATL _v; + _wave attachto[_v,[0,0,0],"destructionEffect1"]; + _wave setParticleRandom[0.3,[1,1,0],[0.5,0.5,0],0,0.3,[0,0,0,0],0,0]; + _wave setParticleParams[["\Ca\Data\ParticleEffects\Universal\Universal",16,12,13,0],"","Billboard",1,1.6,"destructionEffect1",[0,0,0],0,10,7.9,0.075,[3,8],[[0.7,0.8,1,0.6],[0.85,0.9,1,0.0]],[1000],1,0,"","",_v]; + _wave setparticlecircle[2,[0,16,0]]; + _wave setDropInterval 0.0015; + _splash="#particlesource"createVehicleLocal getPosATL _v; + _splash attachto[_v,[0,0,0],"destructionEffect1"]; + _splash setParticleRandom[2,[2,2,0],[2,2,7],0,0.5,[0,0,0,0],0,0]; + _splash setParticleParams[["\Ca\Data\ParticleEffects\Universal\Universal",16,13,6,0],"","Billboard",1,4,"destructionEffect1",[0,0,0],0,30,7.9,0.075,[8,15],[[0.7,0.7,0.7,1],[1,1,1,0]],[1000],1,0,"","",_v]; + _splash setparticlecircle[2,[0,3,15]]; + _splash setDropInterval 0.002; + sleep 0.2; + deletevehicle _wave; + deletevehicle _splash; + }; +} +else{ + if(local _v)then{ + _velz=velocity _v select 2; + if(_velz>1)then{ + _v setvelocity[velocity _v select 0,velocity _v select 1,0] + }; + _expl=createVehicle["HelicopterExploBig",[_pos select 0,_pos select 1,(_pos select 2)+1],[],0,"CAN_COLLIDE"]; + sleep 0.05; + ["AirDestructionStage2",_v,_int,_t]call BIS_Effects_globalEvent; }; }; diff --git a/SQF/dayz_code/system/BIS_Effects/airdestructionstage2.sqf b/SQF/dayz_code/system/BIS_Effects/airdestructionstage2.sqf index 0ffcb3948..321a73e1e 100644 --- a/SQF/dayz_code/system/BIS_Effects/airdestructionstage2.sqf +++ b/SQF/dayz_code/system/BIS_Effects/airdestructionstage2.sqf @@ -1,87 +1,59 @@ - -private ["_dr","_pos","_xv","_yv","_dir","_Crater","_speed","_velz","_tv","_zv","_shards","_i","_smoke","_fire","_dirt","_int","_t","_v"]; -_int = _this select 1; +private ["_v","_pos", "_int","_t","_smoke","_fire","_dirt","_i","_xv","_yv","_zv","_dir","_Crater","_speed","_velz","_tv","_dr"]; +_v=_this select 0; +_int=_this select 1; _t=_this select 2; -_pos=getpos _v; -// Particle effects -if !(isDedicated) then { //dw, particle stuff don't need run on dedicated -_smoke = "#particlesource" createVehicleLocal _pos; -_smoke attachto [_v,[0,0,0],"destructionEffect1"]; -_smoke setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal",16,7,48], - "", "Billboard", 1, 15, [0, 0, 0], [0, 0, 0], 1, 1.275, 1, 0, [8,14], - [[0.1,0.1,0.1,1],[0.1,0.1,0.1,0]], [0.5], 0.1, 0.1, "", "", _v]; -//_smoke setParticleCircle [2,[0,0,0]]; -_smoke setParticleRandom [4, [2, 2, 2], [0, 0, 0], 0, 0, [0, 0, 0, 0], 0, 0]; -_smoke setDropInterval 0.02; - -_fire = "#particlesource" createVehicleLocal _pos; -_fire attachto [_v,[0,0,0],"destructionEffect2"]; -/*_fire setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal",16,2,32], "", "Billboard", 1, 1, [0, 1, 0], [0, 0, 0], 1, 1.275, 1, 0, [10,15], - [[1,1,1,-1],[1,1,1,0]], [0.5], 0.01, 0.01, "", "", _v,360]; */ -_fire setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal",16,2,80], - "", "Billboard", 1, 2, [0, 1, 0], [0, 0, 0], 1, 1.275, 1, 0, [7,13], - [[1,1,1,-1],[1,1,1,0]], [0.5], 0.01, 0.01, "", "", _v,360]; -_fire setParticleRandom [0.5, [0.5, 0.5, 0.5], [0, 0, 0], 0, 0, [0, 0, 0, 0], 0, 0]; -_fire setDropInterval 0.01; -/* -_shards = "#particlesource" createVehicleLocal _pos; -//_shards attachto [_v,[0,0,0],"destructionEffect1"]; -_shards setParticleParams [["\CA\Data\ParticleEffects\Shard\shard",1,0,1], "", "SpaceObject", 1, 60, [0, 0, 0], [0, 0, 0], 0, 1.275, 1, 0, [1,1], - [[1,1,1,1]], [0.5], 0, 0, "", "", _v]; - _shards setParticleRandom [30, [1, 1, 0], [0, 0, 0], 0, 0, [0, 0, 0, 0], 0, 0]; -_shards setParticleCircle [2,[0.001,0.001,-0.001]]; -_shards setDropInterval 0.05; -*/ -_dirt = "#particlesource" createVehicleLocal _pos; -_dirt attachto [_v,[0,0,0],"destructionEffect1"]; -_dirt setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal",16,12,9,0], "", "Billboard", 1, 5, [0, 0, 0], [0, 0, 5], 0, 5, 1, 0, [10,20], - [[0.1,0.1,0.1,1],[0.1,0.1,0.1,0.7],[0.1,0.1,0.1,0]], [1000], 0, 0, "", "", _v,360]; - _dirt setParticleRandom [0, [1, 1, 1], [1, 1, 2.5], 0, 0, [0, 0, 0, 0.5], 0, 0]; -_dirt setDropInterval 0.05; - - //creating ground craters +_pos=getPosATL _v; +if(!isDedicated)then{ + _smoke="#particlesource"createVehicleLocal _pos; + _smoke attachto[_v,[0,0,0],"destructionEffect1"]; + _smoke setParticleParams[["\ca\Data\ParticleEffects\Universal\Universal",16,7,48],"","Billboard",1,15,[0,0,0],[0,0,0],1,1.275,1,0,[8,14],[[0.1,0.1,0.1,1],[0.1,0.1,0.1,0]],[0.5],0.1,0.1,"","",_v]; + _smoke setParticleRandom[4,[2,2,2],[0,0,0],0,0,[0,0,0,0],0,0]; + _smoke setDropInterval 0.02; + _fire="#particlesource"createVehicleLocal _pos; + _fire attachto[_v,[0,0,0],"destructionEffect2"]; + _fire setParticleParams[["\ca\Data\ParticleEffects\Universal\Universal",16,2,80],"","Billboard",1,2,[0,1,0],[0,0,0],1,1.275,1,0,[7,13],[[1,1,1,-1],[1,1,1,0]],[0.5],0.01,0.01,"","",_v,360]; + _fire setParticleRandom[0.5,[0.5,0.5,0.5],[0,0,0],0,0,[0,0,0,0],0,0]; + _fire setDropInterval 0.01; + _dirt="#particlesource"createVehicleLocal _pos; + _dirt attachto[_v,[0,0,0],"destructionEffect1"]; + _dirt setParticleParams[["\ca\Data\ParticleEffects\Universal\Universal",16,12,9,0],"","Billboard",1,5,[0,0,0],[0,0,5],0,5,1,0,[10,20],[[0.1,0.1,0.1,1],[0.1,0.1,0.1,0.7],[0.1,0.1,0.1,0]],[1000],0,0,"","",_v,360]; + _dirt setParticleRandom[0,[1,1,1],[1,1,2.5],0,0,[0,0,0,0.5],0,0]; + _dirt setDropInterval 0.05; _i=0; - while {(speed _v) > 0.1} do - { - _pos=getpos _v; + while{(speed _v)>0.1}do{ + _pos=getPosATL _v; _xv=velocity _v select 0; _yv=velocity _v select 1; - _dir = abs(_xv atan2 _yv); - - _Crater= "CraterLong" createvehiclelocal [_pos select 0, _pos select 1, 0]; - _Crater setdir (_dir + (180 * _i)); - _Crater setpos [_pos select 0, _pos select 1, 0]; - _Crater setPos [_pos select 0, _pos select 1, ((0 - _i)/13)]; //all setpos commands so it is placed correctly on sloped terrain - _speed = (speed _v); + _zv=velocity _v select 2; + _dir=abs(_xv atan2 _yv); + _Crater="CraterLong"createvehiclelocal[_pos select 0,_pos select 1,0]; + _Crater setdir(_dir+(180*_i)); + _Crater setpos[_pos select 0,_pos select 1,0]; + _Crater setPos[_pos select 0,_pos select 1,((0-_i)/13)]; + _speed=(speed _v); _velz=velocity _v select 2; - - if (_velz>1) then {_v setvelocity [_xv/1.3,_yv/1.3,0]} - else {_v setvelocity [_xv/1.2,_yv/1.2,velocity _v select 2]}; - + if(_velz>1)then{ + _v setvelocity[_xv/1.3,_yv/1.3,0] + } + else{ + _v setvelocity[_xv/1.2,_yv/1.2,velocity _v select 2] + }; _tv=abs(_xv)+abs(_yv)+abs(_zv); - if (_tv>2) then {_dr=1/_tv} else {_dr=1}; + _dr=if(_tv>2)then{1/_tv}else{1}; _smoke setDropInterval _dr*1.5; _fire setDropInterval _dr*1.5; _dirt setDropInterval _dr; - _shards setDropInterval _dr; - - sleep (0.25 - (_speed / 1000)); - _i = _i + 1; + sleep(0.25-(_speed/1000)); + _i=_i+1; }; -deleteVehicle _smoke; -deleteVehicle _fire; -deleteVehicle _shards; -deleteVehicle _dirt; - -}; // end of dedicated check - -_v setvelocity [0,0,-0.1]; -if (local _v) then -{ - //_v setVehicleInit format ["[this, %1, %2,false,true]spawn BIS_Effects_Burn",_int, _t]; - //processInitCommands; //ClearvehicleInit done at end of burn script - ["Burn", _v, _int, _t] call BIS_Effects_globalEvent; - [_v,_int,false] spawn BIS_Effects_Secondaries; + deleteVehicle _smoke; + deleteVehicle _fire; + deleteVehicle _dirt; +}; +_v setvelocity[0,0,-0.1]; +if(local _v)then{ + ["Burn",_v,_int,_t]call BIS_Effects_globalEvent; + [_v,_int,false]spawn BIS_Effects_Secondaries; }; sleep 0.5; -_v setvelocity [0,0,-0.01]; +_v setvelocity[0,0,-0.01]; diff --git a/SQF/dayz_code/system/BIS_Effects/killed.sqf b/SQF/dayz_code/system/BIS_Effects/killed.sqf index d17452d11..d481efcae 100644 --- a/SQF/dayz_code/system/BIS_Effects/killed.sqf +++ b/SQF/dayz_code/system/BIS_Effects/killed.sqf @@ -1,34 +1,19 @@ private ["_v","_int","_t","_b"]; + _v=_this select 0; -if (_v iskindof "helicopter" || _v iskindof "plane") - then - { - //_v setVehicleInit "[this] spawn BIS_Effects_AirDestruction"; - //processInitCommands; //ClearvehicleInit done at end of burn script - ["AirDestruction", _v] call BIS_Effects_globalEvent; - }; -if (_v iskindof "tank") - then - { - _int = (fuel _v)*(2+random 2); - _t=time; - //_v setVehicleInit format ["[this, %1, %2]spawn BIS_Effects_Burn",_int, _t]; - disabled to prepaire for move into engine - //processInitCommands; //ClearvehicleInit done at end of burn script - [_v,_int] spawn BIS_Effects_Secondaries; - }; -if (_v iskindof "car" || _v iskindof "ship") - then - { - _int = (fuel _v)*(2 + random 1); - _t=time; - - //_v setVehicleInit format ["[this, %1, %2]spawn BIS_Effects_Burn; ",_int, _t]; - disabled to prepaire for move into engine - //processInitCommands; //ClearvehicleInit done at end of burn script - [_v,_int] spawn BIS_Effects_Secondaries; - - //Possible initial explosion - if ((random _int)>2.2) then - { - _b="SmallSecondary" createvehicle (getpos _v); - }; +if(_v iskindof"helicopter"||_v iskindof"plane")then{ + ["AirDestruction",_v]call BIS_Effects_globalEvent; +}; +if(_v iskindof"tank")then{ + _int=(fuel _v)*(2+random 2); + _t=time; + [_v,_int]spawn BIS_Effects_Secondaries; +}; +if(_v iskindof"car"||_v iskindof"ship")then{ + _int=(fuel _v)*(2+random 1); + _t=time; + [_v,_int]spawn BIS_Effects_Secondaries; + if((random _int)>2.2)then{ + _b=createVehicle["SmallSecondary",(getPosATL _v),[],0,"CAN_COLLIDE"]; }; +};