*zeewolf* 4 Posted April 30, 2012 (edited) I just put together a script for a Predator UAV simulation that I was thinking of using as a killstreak in MP missions. It's a fun MW2 style orbiting camera with TV guided missile that you can steer with the arrow keys. This is purely a virtual unit using camera calculations to perform the simulation. Supply a position to the script, the camera will switch to a UAV which will orbit the position, during this time the player can slew the camera around a bit using "move forward", "move backward", "move left" and "move right". To fire a TV guided missile press V. The camera will then switch to a seeker head view while you guide it using the same control scheme. If the player doesn't fire a missile within one minute the script exits. _pos = _this select 0 _removeGogs = false ?((Daytime < 17) and (Daytime > 7)) : goto "start" ?!(player hasweapon "NVGoggles"): _removeGogs = true; player removeweapon "NVGoggles" player addweapon "NVGoggles" player action["NVGoggles"] #start _theta = random 360 _r = 900 _phi = (random 30) + 45 _vel = 6 _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) _rz = _r * (sin _phi) _camera = "camera" camCreate [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV 0.1 _camera camCommit 0 @camCommitted _camera _campos = GetPos _camera _timeout = _time + 60 _direction = 1 ?(random 2 > 1) : _direction = -1 _tx = _pos select 0 _ty = _pos select 1 #orbit _theta = _theta + (_direction * 0.0688) _theta = _theta mod 360 _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) _camera camSetPos [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera camSetTarget [_tx,_ty,0] _camera camcommit 0 @camCommitted _camera _camera camCommand "Manual on" _campos = getpos _camera ~0.02 ?(_camera != _camera) : titletext["","BLACK OUT",0.04]; goto "fire" _camera camCommand "Manual off" _cx = 15*((getpos _camera select 0)-(_campos select 0)) _cy = 15*((getpos _camera select 1)-(_campos select 1)) _tx = _tx + _cx _ty = _ty + _cy ?(_timeout > _time) : goto "orbit" ?(_removeGogs) : player removeweapon "NVGoggles" _camera camCommand "Manual on" _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera exit #fire titletext["","BLACK IN",10]; ~0.1 _pos = [_tx,_ty,0] ?(alive _camera): camDestroy _camera _camera = "camera" camcreate _campos _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV 0.7 _camera camCommit 0 titletext["","BLACK IN",0.1]; @camcommitted _camera _vx = _vel * (cos _phi) * -(sin _theta) _vy = _vel * (cos _phi) * -(cos _theta) _vz = _vel * (sin _phi) #approach _rz = _rz - _vz _camera camsetpos [(_campos select 0) + _vx,(_campos select 1) + _vy,_rz] _camera camSetTarget _pos _camera camCommit 0 @camCommitted _camera _rx = (_campos select 0)-(_pos select 0) _ry = (_campos select 1)-(_pos select 1) _phi = ((_campos select 2) atan2 (sqrt((_rx^2)+(_ry^2)))) _theta = _rx atan2 _ry _campos = GetPos _camera _camera camCommand "Manual on" ~0.02 _cx = 15*((getpos _camera select 0)-(_campos select 0)) _cy = 15*((getpos _camera select 1)-(_campos select 1)) _pos set[0,(_pos select 0) + _cx] _pos set[1,(_pos select 1) + _cy] _camera camCommand "Manual off" _vx = _vel * (cos _phi) * - (sin _theta) _vy = _vel * (cos _phi) * - (cos _theta) _vz = _vel * (sin _phi) ?((getpos _camera select 2) > 1) : goto "approach" ?(_removeGogs) : player removeweapon "NVGoggles" _camera camCommand "Manual on" _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera _bang = "maverick" createvehicle [_pos select 0, _pos select 1,0] I may add some on screen titletext info like heading, AGL and time to impact etc I'd like to add a missile smoke trail which follows the camera. Anyone got a particle array that might be suitable? Also is it possible to create a laptop opening/closing animation in the style of the game main menu that would be run before the camera switches to the UAV and when the camera switches back to the player? I believe it may be possible to make an AC-130 script in a similar fashion (providing keys to switch weapons is a bit convoluted a dialog may be necessary). Oh and yes, I do know that this is all completely unrealistic... "ENEMY PREDATOR MISSILE INCOMING!!!!!" Edited April 30, 2012 by *Zeewolf* Share this post Link to post Share on other sites
*zeewolf* 4 Posted May 2, 2012 Ok, I got a working cutrsc for an opening laptop by using this description.ext: class RscTitles { class RscLaptopOpen { idd=-1; type=80; movingEnable=1; objects[]={"Laptop"}; duration=4; class Laptop { duration=4; model="notebook.p3d"; idc=-1; type=83; autoOpen=1; autoZoom=1; animSpeed=2; animation="notebook.rtm"; position[]={0,-0.15,0.3}; direction[]={"sin 5","sin 20 * cos 5","cos 20 * cos 5"}; up[]={0,"cos 20","-sin 20"}; positionBack[]={0,-0.04,0.6}; inBack=0; enableZoom=0; zoomDuration=1; scale=1; }; }; }; But I can't get an equivalent closing animation. I'm guessing I need to change the phase, does anyone know how? Share this post Link to post Share on other sites
faguss 64 Posted May 3, 2012 I'm afraid game engine does that automatically for it's own purposes. Create a standard 3D dialog from the bin\Resource and you'll notice there's no closing animation. The workaround would be to define a second object with separate reversed animation. Share this post Link to post Share on other sites
*zeewolf* 4 Posted May 11, 2012 (edited) Thanks, I managed to get it working by creating a reversed version in RtmToolbox. Finally got round to play testing this today. Had it running as part of an oddball MP mission as an action available to the flag carrier. It worked very well, as did a basic killcam script I tested at the same time. The main feedback I got from players was that they preferred to have the initial camera feed focus on them rather than a selected map grid as it was much less disorienting in high speed game play. Some other refinements to the script are; A boost function that doubles the speed of the "missile" when you press V while it's already in-flight. Orbit view now cancelled if the player dies. Some on screen text gubbins (AGL, bearing, bingo/time to target). _pos = getpos player cutrsc["RscLaptopOpen","PLAIN"] _removeGogs = false ?((Daytime < 17) and (Daytime > 7)) : goto "start" ?!(player hasweapon "NVGoggles"): _removeGogs = true; player removeweapon "NVGoggles" player addweapon "NVGoggles" player action["NVGoggles"] #start ~0.5 _theta = random 360 _vel = 6 _r = 500 _phi = (random 30) + 45 _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) _rz = _r * (sin _phi) _camera = "camera" camCreate [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV 0.1 _camera camCommit 0 @camCommitted _camera cutrsc["Default","PLAIN"] _campos = GetPos _camera _timeout = _time + 60 _direction = 1 ?(random 2 > 1) : _direction = -1 _tx = _pos select 0 _ty = _pos select 1 _i = 0 #orbit _theta = _theta + (_direction * 0.0688) _theta = _theta mod 360 _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) _camera camSetPos [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera camSetTarget [_tx,_ty,0] _camera camcommit 0 @camCommitted _camera _camera camCommand "Manual on" _campos = getpos _camera ~0.02 _i = _i + 1 ?(_i == 10): _i = 0; titletext[Format["\nHeading: %1 %2\nAGL: %3 ", (direction _camera) - (direction _camera mod 1),(_timeout - _time),_campos select 2],"PLAIN DOWN",0.05] ?(_camera != _camera): _pos = [_tx,_ty,0]; goto "fire" _camera camCommand "Manual off" _cx = 15*((getpos _camera select 0)-(_campos select 0)) _cy = 15*((getpos _camera select 1)-(_campos select 1)) _tx = _tx + _cx _ty = _ty + _cy ?((_timeout > _time) and (alive player)) : goto "orbit" ?(_removeGogs) : player removeweapon "NVGoggles" _camera camCommand "Manual on" _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera ; Laptop Close animation requires reversed .rtm ;cutrsc["RscLaptopClose","PLAIN"] ~0.5 ;cutrsc["Default","PLAIN"] exit #fire titletext["","BLACK IN",10]; ; broadcast launch to other clients (triggers "enemy predator missile incoming" announcement) fxcode = 1 publicvariable "fxcode" ~0.1 #boost ?(alive _camera): camDestroy _camera _camera = "camera" camcreate _campos _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV 0.7 _camera camCommit 0 titletext["","BLACK IN",0.1]; @camcommitted _camera _vx = _vel * (cos _phi) * -(sin _theta) _vy = _vel * (cos _phi) * -(cos _theta) _vz = _vel * (sin _phi) _i = 0 #approach _rz = _rz - _vz _camera camsetpos [(_campos select 0) + _vx,(_campos select 1) + _vy,_rz] _camera camSetTarget _pos _camera camCommit 0 @camCommitted _camera _rx = (_campos select 0)-(_pos select 0) _ry = (_campos select 1)-(_pos select 1) _distance = (sqrt((_rx^2)+(_ry^2))) _phi = (_campos select 2) atan2 _distance _theta = _rx atan2 _ry _campos = GetPos _camera _camera camCommand "Manual on" ~0.02 ?(_camera != _camera):titletext["","BLACK IN",10]; _vel = 12; goto "boost" _i = _i + 1 ?(_i == 10): _i = 0; titletext[Format["\nHeading: %1 %2\nAGL: %3 ", (direction _camera) - (direction _camera mod 1),(_distance*0.02)/_vel,_campos select 2],"PLAIN DOWN",0.05] _cx = 25*((getpos _camera select 0)-(_campos select 0)) _cy = 25*((getpos _camera select 1)-(_campos select 1)) _pos set[0,(_pos select 0) + _cx] _pos set[1,(_pos select 1) + _cy] _camera camCommand "Manual off" _vx = _vel * (cos _phi) * - (sin _theta) _vy = _vel * (cos _phi) * - (cos _theta) _vz = _vel * (sin _phi) ?((getpos _camera select 2) > 1) : goto "approach" ?(_removeGogs) : player removeweapon "NVGoggles" _camera camCommand "Manual on" _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera ; Laptop Close animation requires reversed .rtm ;cutrsc["RscLaptopClose","PLAIN"] _bang = "maverick" createvehicle [_pos select 0, _pos select 1,0] ~0.5 ;cutrsc["Default","PLAIN"] exit EDIT: New killcam script (I forgot switchcamera worked in MP lol). Call it as a killed eventhandler or from a killed eventhandler e.g. player addeventhandler [{killed} , {_this exec {killcam.sqs}}] _killer = _this select 1 _killer switchCamera "Internal" _killer cameraEffect ["terminate","back"] _timeout = _time + 5 #lp ~0.1 ?(_timeout - _time > 0): titletext[format["KillCam %1",_timeout - _time],"PLAIN",0.05]; ?(_timeout > _time): goto "lp" player switchCamera "Internal" player cameraEffect ["terminate","back"] exit I won't be releasing a demo mission for this. This stuff will be in the MWC/Create-A-Class/Killstreak system I'm working on but I'm not committed to publicly releasing that, hence why I thought I'd post these handy scripts. Edited June 2, 2012 by *Zeewolf* Share this post Link to post Share on other sites
nikiller 18 Posted May 11, 2012 (edited) hi, I'd like to add a missile smoke trail which follows the camera. Anyone got a particle array that might be suitable? I wrote a missile smoke script if you are still interested. You may have to tweak the values but it works fine as it is and there's nearly no fps impact. You can also use the function missile_smoke.sqf for vapor trail on plane wings. missile_smoke.sqs ;************************************** ;Missile Smoke Script by Nikiller v0.9b ;Create a smoke trail effect ;contact: nikillerofp@hotmail.fr ;************************************** if (local player) then {} else {goto "ende"} _u = _this _i=0 _max=100 _f=loadFile "missile_smoke.sqf" _l="l" _d=0.025 #l [_u,(_max-_i)] call _f _i=_i+1 ~_d if (_i<_max && alive _u) then {goto _l} #ende exit missile_smoke.sqf //missile_smoke private [{_rd1},{_rd2},{_rd3},{_rdPos},{_u},{_str},{_i},{_max}]; _u = _this select 0; _str = _this select 1; _i=0; _max=_str; while {_i<_max} do { _rd1=random(3)-1.5; _rd2=random(3)-1.5; _rd3=random(3)-1.5; _rdPos=random(1)-2; drop ["cl_basic","","Billboard",10,random(3)+3,[0,_randPos,0],[_rd1,_rd2,_rd3],0,1.22,1,0.2,[1,5],[[0.95,0.95,0.95, 0.15],[0.95,0.95, 0.95,0]],[0],0.75,0.5,"","",_u]; _i=_i+1 } Nice UAV script BTW :) cya. Nikiller. Edited May 11, 2012 by Nikiller correted code error Share this post Link to post Share on other sites
*zeewolf* 4 Posted May 12, 2012 Thanks for that, the smoke really needs to be shown on all clients, which is really tricky considering that the player can move the target point. I may end up just generating the smoke after the missile has hit (so the final impact point is known) then generate a trail from the impact point to the position it was fired from (i.e. broadcast two positions as publicvariables), or just make a random smoke trail from the impact point to a valid orbit position (i.e. broadcast only one position). Share this post Link to post Share on other sites
*zeewolf* 4 Posted May 20, 2012 So I've put your particle array to good use (there's a bug in your .sqf listing by the way, in the particle array _randpos should be _rdpos and _rdpos should be calculated as (random 2) - 1). Here's a script for MW3's "Reaper" strike chain reward. As usual, move forward, backward, left, right pans the camera; but now move up or V cycles the FOV/zoom level, move down fires a "missile" which can be guided to the target by moving the crosshairs around after launch. You get fourteen missiles and one minute to launch them. _pos = getpos player ; Cutrsc for opening laptop ;cutrsc["RscLaptopOpen","PLAIN"] ; Setup ammo _missiles = 14 _missileStatus = "| | | | | | | | | | | | | |" ; Set velocity (300m/s) _vel = 6 ; Setup zoom levels _currentFOV = 2 _zooms = [0.7,0.4,0.1,0.05] _panGain = [60,30,10,5] ; setup Night vision _removeGogs = false ?((Daytime < 17) and (Daytime > 7)) : goto "start" ?!(player hasweapon "NVGoggles"): _removeGogs = true; player removeweapon "NVGoggles" player addweapon "NVGoggles" player action["NVGoggles"] #start ~0.5 ; calculate random azimuth _theta = random 360 ; set radius (500m for MP purposes) _r = 500 ; set polar angle _phi = (random 30) + 45 ; calculate initial cartesian position _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) _rz = _r * (sin _phi) ; clear laptop cutrsc cutrsc["Default","PLAIN"] ; create the camera _camera = "camera" camCreate [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV 0.1 _camera camCommit 0 @camCommitted _camera _campos = getPos _camera ; set one minute timer _timeout = _time + 60 ; set random orbit direction _direction = 1 ?(random 2 > 1) : _direction = -1 ; set initial camera target _tx = _pos select 0 _ty = _pos select 1 ; initialise frame counter _i = 0 #orbit ; update azimuth _theta = _theta + (_direction * 0.0688) _theta = _theta mod 360 ; update cartesian position _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) ; update camera _camera camSetPos [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera camSetTarget [_tx,_ty,0] _camera camSetFOV (_zooms select _currentFOV) _camera camcommit 0 @camCommitted _camera ; set camera to manual until next frame _camera camCommand "Manual on" ; save current position _campos = getpos _camera ; wait for next frame ~0.02 ; increment frame counter _i = _i + 1 ; display status every ten frames ?(_i == 10): _i = 0; titletext[Format["\nHeading: %1 %2 %3\nAGL: %4 ", (direction _camera) - (direction _camera mod 1),_missileStatus, (_timeout - _time),_campos select 2],"PLAIN DOWN",0.05] ; detect user pressing V ?(_camera != _camera):camdestroy _camera;_ret = "orbit"; goto "zoom" ; turn manual mode off _camera camCommand "Manual off" ; calculate change in camera position due to user input _cx = (_panGain select _currentFOV)*((getpos _camera select 0)-(_campos select 0)) _cy = (_panGain select _currentFOV)*((getpos _camera select 1)-(_campos select 1)) _cz = (getpos _camera select 2)-(_campos select 2) ; update target position _tx = _tx + _cx _ty = _ty + _cy ; calculate change in height due to user input ?((_cz < -0.05) and (_cx == 0) and (_cy == 0)): goto "fire" ?((_cz > 0.05) and (_cx == 0) and (_cy == 0)): _ret = "orbit"; goto "zoom" ; check for timeout and player death ?((_timeout > _time) and (alive player)) : goto "orbit" ; reset nightvision ?(_removeGogs) : player removeweapon "NVGoggles" ; terminate and destroy camera _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera ; Laptop close animation requires custom reversed .rtm ;cutrsc["RscLaptopClose","PLAIN"] ~0.5 ; clear laptop cutrsc cutrsc["Default","PLAIN"] exit #fire ; update ammo status display _i = 0 _missileStatus = "" _missiles = _missiles - 1 ?(_missiles == 0): _missileStatus = " "; goto "calculateShot" #updateStatus1 _missileStatus = format["%1| ",_missileStatus] _i = _i + 1 ?(_i < _missiles): goto "updateStatus1" #updateStatus2 _missileStatus = format["%1 ",_missileStatus] _i = _i + 1 ?(_i < 14): goto "updateStatus2" #calculateShot ; calculate azimuth and polar angle for missile _mphi = (_campos select 2) atan2 _distance _mtheta = _rx atan2 _ry ; calculate velocity vector for missile _vx = _vel * (cos _mphi) * -(sin _mtheta) _vy = _vel * (cos _mphi) * -(cos _mtheta) _vz = _vel * (sin _mphi) ; calculate distance to target _dx = (_campos select 0)-_tx _dy = (_campos select 1)-_ty ; set initial missile position _mx = _campos select 0 _my = _campos select 1 _mz = _campos select 2 ; reset frame counter _i = 0 #home ; update camera _camera camSetPos [(_pos select 0) + _rx, (_pos select 1) + _ry, _rz] _camera camSetTarget [_tx,_ty,0] _camera camCommit 0 @camCommitted _camera ; update camera azimuth _theta = _theta + (_direction * 0.0688) _theta = _theta mod 360 ; update camera position _rx = _r * (sin _theta) * (cos _phi) _ry = _r * (cos _theta) * (cos _phi) ; save camera position _campos = GetPos _camera ; set manual mode to detect user input _camera camCommand "Manual on" ; update distance to target _dx = _mx-_tx _dy = _my-_ty _distance = (sqrt((_dx^2)+(_dy^2))) ; update missile azimuth and polar angle _mphi = _mz atan2 _distance _mtheta = _dx atan2 _dy ; update missile velocity vector _vx = _vel * (cos _mphi) * - (sin _mtheta) _vy = _vel * (cos _mphi) * - (cos _mtheta) _vz = _vel * (sin _mphi) ; update missile position _mx = _mx + _vx _my = _my + _vy _mz = _mz - _vz ; create Nikiller missile smoke drop ["cl_basic","","Billboard",10,random(3)+3,[_mx,_my+(random 2)-1,_mz],[(random 3)-1.5,(random 3)-1.5,(random 3)-1.5],0,1.22,1,0.2,[1,5],[[0.95,0.95,0.95, 0.15],[0.95,0.95, 0.95,0]],[0],0.75,0.5,"","",""]; ~0.02 ; increment frame counter _i = _i + 1 ; update status display every ten frames ?(_i == 10): _i = 0; titletext[Format["\nHeading: %1 %2 %3\nAGL: %4 %5 ", (direction _camera) - (direction _camera mod 1),_missileStatus, (_timeout - _time),_campos select 2,_mz],"PLAIN DOWN",0.05] ; detect change in camera position due to user input _cx = (_panGain select _currentFOV)*((getpos _camera select 0)-(_campos select 0)) _cy = (_panGain select _currentFOV)*((getpos _camera select 1)-(_campos select 1)) _cz = (getpos _camera select 2)-(_campos select 2) ; update camera target _tx = _tx + _cx _ty = _ty + _cy ; detect change in camera height due to user input ?((_cz > 0.05) and (_cx == 0) and (_cy == 0)): _ret = "home"; goto "zoom" ?(_camera != _camera):camdestroy _camera;_ret = "home"; goto "zoom" ; switch manual mode off _camera camCommand "Manual off" ; loop until missile hits ground ?(_mz > 1) : goto "home" ; spawn warhead _bang = "maverick" createvehicle [_tx, _ty,0] ; if ammo remaining continue orbit ?(_missiles > 0): goto "orbit" ; reset nightvision ?(_removeGogs) : player removeweapon "NVGoggles" ; terminate and destroy camera _camera cameraEffect ["Terminate","back"] _camera camcommit 0 @camcommitted _camera camDestroy _camera ; laptop close animation requires custom .rtm ;cutrsc["RscLaptopClose","PLAIN"] ~0.5 ; clear laptop cutrsc cutrsc["Default","PLAIN"] exit #zoom ; update FOV selection _currentFOV = _currentFOV + 1 ; clip FOV selection ?(_currentFOV == count _zooms): _currentFOV = 0 ; black out camera titletext["","BLACK IN",10]; ; destroy old camera camdestroy _camera ; create a new camera _camera = "camera" camcreate _campos _camera cameraEffect ["internal","back"] _camera camSetTarget _pos _camera camSetFOV (_zooms select _currentFOV) _camera camCommit 0 @camcommitted _camera ~0.1 ; black back in titletext["","BLACK IN",0.1] ; return to caller goto _ret I'm sure you'll agree the missile smoke looks very nice, trouble is there is no solid object in front of it. I don't want to spawn a real missile or shell on the front of it and move it around or apply relative acceleration, because the whole purpose of this style of scripting is to cut down on bandwidth intensive commands like setpos and setvelocity. Any ideas on a way to put a solid looking object on the front of the smoke trail without broadcasting its position to other clients? If I create an object with camcreate do updates applied by setpos commands applied to it get broadcast to other clients even though it's a local object? Share this post Link to post Share on other sites
Aldo15 11 Posted May 21, 2012 Is there any demo-mission for that one Share this post Link to post Share on other sites
*zeewolf* 4 Posted May 22, 2012 (edited) Demo mission (multiupload) Just a single player mission that I made in about 5 minutes, but it's got the predator, reaper and two versions of the AC-130 script in it and some people to fire them at. There are two versions of the mission, one calls the laptop closing animation which is held in the included mwc_anims.pbo. If you don't care about having the laptop animation then use the mission in the no addons folder. Call the scripts using the radio, click on the map when prompted to set the position the camera will orbit. I've also included sounds for the AC-130 weapons. The glued AC130 is linked to the cessna that's droning around the village so if you want to control that just edit its waypoints. I'm not doing a demo for the multiplayer killstreak versions of these right now, it'll take me too long to disentangle it from MWC's other scripts and addons and I'd rather spend the time working on the main framework and templates. EDIT: Updated demo mission with fix for glued AC130 script (camera stuck at 100m AGL, not passed flyInHeight), fixed predator missile boost mode resetting target Edited June 17, 2012 by *Zeewolf* Share this post Link to post Share on other sites