airstrike.sqso}LclearCorpses.sqfLcoop_essential\cep_cache_units.sqfK|coop_essential\cep_init.sqfZwKcrateFiller.sqfڱELBcrB_scripts\crB_Teleport.sqf<#Kdescription.extПLinit.sqf Lmission.sqmALamissiondone.sqfLrespawnSpecial\respawnSpecial.sqf491LyrespawnSpecial\Spawn_chopperInit.sqf491Lrevive_init.sqf^L Arevive_sqf\cam_dead.sqf691Lrevive_sqf\cam_follow.sqf´L^revive_sqf\CAM_KEY_pressed.sqf691L revive_sqf\carry.sqf4 hLrevive_sqf\COD\body_damage.sqfdtLorevive_sqf\damageEH\handleDamage.sqf1Ldrevive_sqf\dialogs\config.cpp691Lyrevive_sqf\dialogs\dead_cam_dialog.hppwLL revive_sqf\dialogs\define.hpp691LP9revive_sqf\dialogs\OK_map.hpp691Lrevive_sqf\dialogs\respawn_button_1.hpplsLrevive_sqf\dialogs\respawn_button_1b.hpplsLurevive_sqf\dialogs\respawn_button_1c.hpplsLfrevive_sqf\dialogs\respawn_button_1map.hpp691Lrevive_sqf\dialogs\respawn_button_2.hppuLrevive_sqf\dialogs\respawn_button_2b.hpp uLirevive_sqf\dialogs\respawn_button_2map.hpp691Lrevive_sqf\dialogs\respawn_button_3.hppuLrevive_sqf\dialogs\respawn_button_3b.hpp uLQrevive_sqf\dialogs\respawn_button_3map.hpp691Lrevive_sqf\dialogs\respawn_button_4.hppduLrevive_sqf\dialogs\respawn_button_4b.hpptLJrevive_sqf\dialogs\respawn_button_4map.hpp691Lrevive_sqf\dialogs\rev_cam_dialog.hppvLrevive_sqf\dialogs\rev_cam_dialog_blank.hpp~i?Lrevive_sqf\drag.sqf hLq revive_sqf\drop_body.sqf2 hL3revive_sqf\functions\AI_throwSmoke.sqf691Lrevive_sqf\functions\AIBehaviour.sqf691L*revive_sqf\functions\CallOut.sqf691Lrevive_sqf\functions\createBody.sqfNjLrevive_sqf\functions\DeleteUncBody.sqf691LMrevive_sqf\functions\dropWeapons.sqf691Lrevive_sqf\functions\GetTerrainSlope.sqfXL&revive_sqf\functions\I_need_help.sqf691Lrevive_sqf\functions\LeaderFix.sqf691Lrevive_sqf\functions\LivesRemain.sqf691Lrevive_sqf\functions\respawn_chance.sqf691Lrevive_sqf\functions\respawn_time.sqf691L[revive_sqf\functions\RespawnPos1.sqfhLrevive_sqf\functions\RespawnPos2.sqfFiLlrevive_sqf\functions\RespawnPos2AI.sqf691Lrevive_sqf\functions\reviveDrag_C_keyDown.sqf691Lrevive_sqf\functions\SlopeFix.sqf691LOrevive_sqf\functions\toggle_dialog_fade.sqf691Lrevive_sqf\functions\UncAnimFix.sqf691Lhrevive_sqf\functions\uncTimer.sqfhL{revive_sqf\functions\wait_check.sqf691Lyrevive_sqf\functions\WaterFix.sqf691Lrevive_sqf\functions\whileDragging_KEY_pressed.sqf691Lrevive_sqf\go_back.sqf691LXrevive_sqf\heal.sqf"L6revive_sqf\heal_sqf\heal.sqfhhLrevive_sqf\heal_sqf\player_heal.sqfL revive_sqf\init_related_scripts.sqfLrevive_sqf\isplayer.sqf691Lrevive_sqf\Load_wounded\Load_act.sqf8hLrevive_sqf\Load_wounded\load_wounded.sqfŵLrevive_sqf\Load_wounded\unLoad_act.sqf7hLrevive_sqf\marker_color.sqf691Lrevive_sqf\medic\bandage.sqfhL`revive_sqf\medic\bandage_teammate.sqfHhLrevive_sqf\medic\supplies.sqf891L2revive_sqf\mission_end.sqf691Lrevive_sqf\mobile\deploy_camo.sqfz LSrevive_sqf\mobile\deploy_camo_man.sqf Lrevive_sqf\mobile\mobile_Marker.sqf891L+revive_sqf\mobile\mobile_remove_spawn.sqf891Lrevive_sqf\mobile\mobile_spawn.sqfL revive_sqf\mobile\move_spawn.sqf891LGrevive_sqf\mobile\stow_camo.sqfL$revive_sqf\mobile\stow_camo_man.sqf891L%revive_sqf\mobile\vcl_respawn.sqf891Lrevive_sqf\onConnect.sqftL revive_sqf\putDown_body.sqf691Lrevive_sqf\pvEH\allowDamage.sqfx=1Lrevive_sqf\pvEH\animDrag.sqf+8Lbrevive_sqf\pvEH\animHealed.sqf6Lcrevive_sqf\pvEH\carriedUp.sqf.K1Lirevive_sqf\pvEH\deadState.sqfiLOrevive_sqf\pvEH\lieStill.sqfnX1Larevive_sqf\pvEH\load_wounded.sqf 9LZrevive_sqf\pvEH\noAnim.sqfG1L?revive_sqf\pvEH\noDamage.sqf:eLrevive_sqf\pvEH\pickUp.sqfK1Lqrevive_sqf\pvEH\promptRName.sqfzB1Lmrevive_sqf\pvEH\rolltoback.sqf9Lkrevive_sqf\pvEH\rolltofront.sqf9Lmrevive_sqf\pvEH\set180.sqff(8LBrevive_sqf\respawn\init_respawn.sqf891Lrevive_sqf\respawn\respawn.sqf891L,revive_sqf\respawn_at_base.sqf691L)revive_sqf\respawn_at_base_jip.sqf691LIrevive_sqf\respawn_at_base_water.sqf691L revive_sqf\respawn_counter.sqf691LGrevive_sqf\revive_init.sqf691L revive_sqf\Revive_player.sqfLjrevive_sqf\rPrn.sqf691L revive_sqf\show_map_loc.sqf691LCrevive_sqf\Sound\UNIV_v05.lip891Lrevive_sqf\Sound\UNIV_v05.ogg891LK revive_sqf\Sound\UNIV_v06.lip891Lrevive_sqf\Sound\UNIV_v06.ogg891L#revive_sqf\Sound\UNIV_v07.lip891Lrevive_sqf\Sound\UNIV_v07.ogg891L#revive_sqf\Sound\UNIV_v10.lip891Lrevive_sqf\Sound\UNIV_v10.ogg891Lrevive_sqf\Sound\UNIV_v11.lip891Lrevive_sqf\Sound\UNIV_v11.ogg891L8,revive_sqf\Sound\UNIV_v18.lip891Lrevive_sqf\Sound\UNIV_v18.ogg891L"revive_sqf\Sound\UNIV_v24.lip891LVrevive_sqf\Sound\UNIV_v24.ogg891Lvrevive_sqf\Sound\UNIV_v25.lip891L~revive_sqf\Sound\UNIV_v25.ogg891Lwrevive_sqf\Sound\UNIV_v31.lip891Ltrevive_sqf\Sound\UNIV_v31.ogg891Lsrevive_sqf\Sound\UNIV_v50.lip891Lrevive_sqf\Sound\UNIV_v50.ogg891Lt#revive_sqf\Sound\UNIV_v51.lip891Lrevive_sqf\Sound\UNIV_v51.ogg891L(revive_sqf\team_killer.sqf691LNrevive_sqf\trigger_mkr.sqf691L-'SHK_moveobjects.sqfhELstringtable.xmlo}LUSPS.sqfo}Lvehicle.sqfo}Lweapons_respawn.sqso}L setfire=true; titleText ["Click on the map to set your firedirection","plain down"]; onMapSingleClick "ASTarget setPos _pos; setfire=false"; @!setfire; "Firedirection" setmarkerpos getPos ASTarget; onMapSingleClick ""; titleText ["", "plain down"]; ~7 _dropPosition = getpos ASTarget; ~0.5 _dropPosX = _dropPosition select 0; _dropPosY = _dropPosition select 1; _dropPosZ = _dropPosition select 2; ~0.1 _planespawnpos1 = [_dropPosX - 4000, _dropPosY - 1000, _dropPosZ + 400]; _pilotspawnpos1 = [_dropPosX - 4000, _dropPosY - 1000, _dropPosZ + 400]; _planespawnpos2 = [_dropPosX - 4100, _dropPosY - 1200, _dropPosZ + 450]; _pilotspawnpos2 = [_dropPosX - 4100, _dropPosY - 1200, _dropPosZ + 450]; _planespawnpos3 = [_dropPosX - 4400, _dropPosY + 100, _dropPosZ + 400]; _pilotspawnpos3 = [_dropPosX - 4400, _dropPosY + 100, _dropPosZ + 400]; _planespawnpos4 = [_dropPosX - 4500, _dropPosY + 500, _dropPosZ + 400]; _pilotspawnpos4 = [_dropPosX - 4500, _dropPosY + 500, _dropPosZ + 400]; _PlaneA = creategroup WEST; _plane1 = createVehicle ["AV8B",_planespawnpos1,[], 0, "FLY"]; _plane1 setPos [(getPos _plane1 select 0),(getPos _plane1 select 1),400] ; _plane2 = createVehicle ["AV8B",_planespawnpos2,[], 0, "FLY"]; _plane2 setPos [(getPos _plane2 select 0),(getPos _plane2 select 1),450] ; _plane3 = createVehicle ["AV8B",_planespawnpos3,[], 0, "FLY"]; _plane3 setPos [(getPos _plane3 select 0),(getPos _plane3 select 1),400] ; plane4 = createVehicle ["AV8B",_planespawnpos4,[], 0, "FLY"]; plane4 setPos [(getPos plane4 select 0),(getPos plane4 select 1),400] ; _leader = "USMC_Soldier_Pilot" createUnit [getMarkerPos "Firedirection", _PlaneA, "leader1=this"]; _p2 = "USMC_Soldier_Pilot" createUnit [getMarkerPos "Firedirection", _PlaneA, "P2=this"]; _p3 = "USMC_Soldier_Pilot" createUnit [getMarkerPos "Firedirection", _PlaneA, "P3=this"]; _p4 = "USMC_Soldier_Pilot" createUnit [getMarkerPos "Firedirection", _PlaneA, "P4=this"]; _Plane1 setVelocity [100,0,0] ; _Plane2 setVelocity [100,0,0] ; _Plane3 setVelocity [100,0,0] ; Plane4 setVelocity [100,0,0] ; ~0.4 leader1 moveinDriver _plane1; leader1 setDamage 0; leader1 action ["gear_up", vehicle leader1] ; P2 moveinDriver _plane2; P2 setDamage 0; P2 action ["gear_up", vehicle P2] ; P3 moveinDriver _plane3; P3 setDamage 0; P3 action ["gear_up", vehicle P3] ; P4 moveinDriver plane4; P4 setDamage 0; P4 action ["gear_up", vehicle P4] ; _plane1 flyinHeight 400; _plane1 setSpeedMode "LIMITED"; _plane2 flyinHeight 400; _plane2 setSpeedMode "LIMITED"; _plane3 flyinHeight 400; _plane3 setSpeedMode "LIMITED"; plane4 flyinHeight 400; plane4 setSpeedMode "LIMITED"; #CHECK leader1 doMove getPos ASTarget; leader1 doTarget ASTarget; leader1 doWatch ASTarget; ? (_plane1 distance ASTarget) < 1300 : goto "DROP" P2 doMove getPos ASTarget; P2 doTarget ASTarget; P2 doWatch ASTarget; ? (_plane2 distance ASTarget) < 1200 : goto "DROP" P3 doMove getPos ASTarget; P3 doTarget ASTarget; P3 doWatch ASTarget; ? (_plane3 distance ASTarget) < 1100 : goto "DROP" P4 doMove getPos ASTarget; P4 doTarget ASTarget; P4 doWatch ASTarget; ? (plane4 distance ASTarget) < 1100 : goto "DROP" goto "CHECK" #DROP _i = 0 _plane1 flyInHeight 300; _plane1 setPos [(getPos _plane1 select 0),(getPos _plane1 select 1),100] ; _plane2 flyInHeight 350; _plane2 setPos [(getPos _plane2 select 0),(getPos _plane2 select 1),100] ; _plane3 flyInHeight 300; _plane3 setPos [(getPos _plane3 select 0),(getPos _plane3 select 1),100] ; plane4 flyInHeight 300; plane4 setPos [(getPos plane4 select 0),(getPos plane4 select 1),100] ; ~13 #FIRE _i=_i+1 _plane1 fire "BombLauncher"; _plane2 fire "BombLauncher"; _plane3 fire "BombLauncher"; plane4 fire "BombLauncher"; ~0.2 ? _i <= 6 : goto "FIRE" ASTarget setPos [0,0,0]; "Firedirection" setMarkerPos [0,0]; _plane1 setSpeedMode "FULL" _plane2 setSpeedMode "FULL" _plane3 setSpeedMode "FULL" plane4 setSpeedMode "FULL" ~4 _plane1 flyInHeight 150; P1 doMove getPos ASTarget; _plane2 flyInHeight 150; P2 doMove getPos ASTarget; _plane3 flyInHeight 150; P3 doMove getPos ASTarget; plane4 flyInHeight 150; P4 doMove getPos ASTarget; ~200 deleteVehicle _plane1; deleteVehicle _plane2; deleteVehicle _plane3; deleteVehicle plane4; deleteGroup _PlaneA deleteVehicle P1; deleteVehicle P2; deleteVehicle P3; deleteVehicle P4; exitprivate ["_aU", "_dU"]; _aU = allUnits; while {true} do { sleep 60; if (count _aU != count allUnits) then { _dU = _aU - allUnits; {hidebody _x} foreach _dU; }; _aU = allUnits; };////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: -eutf-Myke // Vehicle driver caching and SL cache check added by Wolffy.au // Activation method inspired by RMM_Reducer ////////////////////////////////////////////////////////////////// if (!isServer) exitwith {}; private ["_cep_leader", "_cep_unitarray", "_cep_typearray", "_cep_cache_dist"]; _cep_leader = _this select 0; _cep_cache_dist = _this select 1; _cep_leader = leader _cep_leader; _cep_grp = group _cep_leader; _cep_unitarray = units _cep_leader - [_cep_leader]; _cep_typearray = []; fClosestUnit = { private["_units", "_unit", "_dist", "_udist"]; _units = _this select 0; _unit = _this select 1; _dist = 10^5; { _udist = _x distance _unit; if (_udist < _dist) then {_dist = _udist;}; } forEach _units; _dist; }; waitUntil{typeName allUnits == "ARRAY"}; waitUntil{typeName playableUnits == "ARRAY"}; // player is not in playableUnits under Single Player mode // This method ensures the player is always included _playUnits = playableUnits - [player] + [player]; _exit = false; while {!_exit} do { _disable = _cep_grp getVariable "crB_disableCache"; _disable = if(isNil "_disable") then { false; } else {_disable;}; _trigUnits = []; { if (side _x != side _cep_leader) then { _trigUnits = _trigUnits + [_x]; }; } forEach allUnits; _trigUnits = _trigUnits + _playUnits; sleep 3; if ([_trigUnits, leader _cep_leader] call fClosestUnit > _cep_cache_dist + 15) then { //hint "Out range"; _cep_leader = leader _cep_grp; _cep_unitarray = (units _cep_leader) - [_cep_leader]; { _cep_type = typeof _x; _cep_weap = weapons _x; _cep_mags = magazines _x; _cep_pos = _cep_leader worldtomodel position _x; _cep_veh = assignedVehicle _x; _cep_vehpos = assignedVehicleRole _x; if (!("Driver" in _cep_vehpos)) then { //player sideChat format["%1,%2", _x, _cep_vehpos]; unassignVehicle _x; doGetOut _x; waitUntil{unitReady _x}; //player sideChat format["%1", [_cep_type, _cep_weap, _cep_mags, _cep_pos, _cep_veh, _cep_vehpos]]; _cep_typearray = _cep_typearray + [[_cep_type, _cep_weap, _cep_mags, _cep_pos, _cep_veh, _cep_vehpos]]; deletevehicle _x; _x = objNull; }; } foreach _cep_unitarray; }; sleep 3; //hint format["X: %1", [_trigUnits, leader _cep_leader] call fClosestUnit]; if (_disable || ([_trigUnits, leader _cep_leader] call fClosestUnit < _cep_cache_dist)) then { //hint "In range"; { //player sideChat format["%1", _x]; _cep_unit_init = _x select 0; _cep_unit_weap = _x select 1; _cep_unit_mags = _x select 2; _cep_unit_offset = _x select 3; _cep_unit_veh = _x select 4; _cep_unit_vehpos = _x select 5; _cep_unit_pos = _cep_leader modeltoworld _cep_unit_offset; _cep_myunit = (group _cep_leader) createUnit [_cep_unit_init, _cep_unit_pos, [], 0, "NONE"]; //player sideChat format["%1,%2", _cep_myunit, _cep_unit_vehpos]; removeallweapons _cep_myunit; removeAllItems _cep_myunit; { _cep_myunit addmagazine _x; } foreach _cep_unit_mags; { _cep_myunit addweapon _x; } foreach _cep_unit_weap; if (count _cep_unit_vehpos != 0) then { switch(_cep_unit_vehpos select 0) do { case "Driver": { _cep_myunit moveInDriver _cep_unit_veh; _cep_myunit assignAsDriver _cep_unit_veh; }; case "Cargo": { _cep_myunit moveInCargo _cep_unit_veh; _cep_myunit assignAsCargo _cep_unit_veh; }; case "Turret": { _tp = _cep_unit_vehpos select 1; _cep_myunit moveInTurret [_cep_unit_veh, _tp]; _cep_myunit assignAsGunner _cep_unit_veh; }; }; }; } foreach _cep_typearray; _cep_typearray = []; if(_disable) then { cep_cached_grps = cep_cached_grps - [_cep_grp]; _exit = true; }; }; }; true; // _________________________________________________________________________________________________________________ // | Coop Essential Pack by -eutf-Myke | // |_______________________________________________________________________________________________________________| // | Do not change this scrip! | // |_______________________________________________________________________________________________________________| // | cep initialization script | // |_______________________________________________________________________________________________________________| // Heavily modified by Wolffy.au // Usage: _cep_init = [TriggerDistance] execVM "coop_essential\cep_init.sqf"; if (!isServer) exitwith {}; _trigDist = 1000; if(count _this > 0) then { _trigDist = _this select 0; }; _delay = 120; if(count _this > 1) then { _delay = _this select 1; }; cep_cached_grps = []; cep_fcache = compile preprocessFileLineNumbers "coop_essential\cep_cache_units.sqf"; waitUntil{typeName allGroups == "ARRAY"}; { (group _x) setVariable ["crB_disableCache", true]; } forEach (playableUnits + switchableUnits); while{count allGroups > 0} do { sleep _delay; { _disable = _x getVariable "crB_disableCache"; _disable = if(isNil "_disable") then { false; } else {_disable;}; if (!_disable && !(_x in cep_cached_grps)) then { cep_cached_grps = cep_cached_grps + [_x]; [leader _x, _trigDist] spawn cep_fcache; sleep 0.2; }; } forEach allGroups; }; // Universal Crate Filler 1.0 // by Tophe of stgta Ops // Usage: // nul = [this] execVM "crateFiller.sqf" // // Optional settings: // nul = [this,side(west,east,all),game(arma,ao,all),refill(true/false),weapons(amount),magazines(amount),equipment(amount)] execVM "crateFiller.sqf" // // Default values: // nul = [this,"west","all",false,30,75,30] execVM "crateFiller.sqf" // Set variables _box = _this select 0; _side = if (count _this > 1) then {_this select 1} else {"west"}; _game = if (count _this > 2) then {_this select 2} else {"all"}; _refill = if (count _this > 3) then {_this select 3} else {false}; _amountw = if (count _this > 4) then {_this select 4} else {30}; _amountm = if (count _this > 5) then {_this select 5} else {75}; _amounte = if (count _this > 6) then {_this select 6} else {30}; _run = true; // Check variables //hint format ["%1", typename _side]; if !(typename _side == "STRING") then {hint "Universal Box Filler:\n Side setting must be West/East/All \n \n It is now changed to West \n Set it in the map editor"; _side = "west"}; if !(typename _game == "STRING") then {hint "Universal Box Filler:\n Game setting must be Arma/AO/All \n \n It is now changed to All \n Set it in the map editor"; _side = "west"}; if !(_side == "west" or _side == "east" or _side == "all") then {hint "Universal Box Filler:\n Side setting must be West/East/All \n \n It is now changed to West \n Set it in the map editor"; _side = "west"}; if !(_game == "arma" or _game == "AO" or _game == "all") then {hint "Universal Box Filler:\n Game setting must be Arma/AO/All \n \n It is now changed to All \n Set it in the map editor";_game = "all"}; if !(typename _refill == "BOOL") then {hint "Universal Box Filler:\n Refill must be set to True/False \n \n It is now changed to False\n Set it in the map editor";_refill = false}; if !(typename _amountw == "SCALAR") then {hint "Universal Box Filler:\n Weapon amount must be a number \n \n It is now changed to 30\n Set it in the map editor"; _amountw = 30}; if !(typename _amountm == "SCALAR") then {hint "Universal Box Filler:\n Magazine amount must be a number \n \n It is now changed to 75\n Set it in the map editor"; _amountw = 75}; if !(typename _amounte == "SCALAR") then {hint "Universal Box Filler:\n Equipment amount must be a number \n \n It is now changed to 30\n Set it in the map editor"; _amountw = 30}; // Debug //hint format["Side: %1, Game: %2, Refill: %3, w: %4, m: %5, e: %6",_side, _game, _refill, _amountw, _amountm, _amounte]; while {_run} do { clearWeaponCargo _box; clearMagazineCargo _box; // Add Common equipment _box addMagazineCargo ["PipeBomb", _amountm]; _box addMagazineCargo ["Mine", _amountm]; _box addMagazineCargo ["HandGrenade",_amountm]; _box addWeaponCargo ["Binocular", _amounte]; _box addWeaponCargo ["ItemCompass", _amounte]; _box addWeaponCargo ["ItemGPS", _amounte]; _box addWeaponCargo ["ItemMap", _amounte]; _box addWeaponCargo ["ItemRadio", _amounte]; _box addWeaponCargo ["ItemWatch", _amounte]; _box addWeaponCargo ["Laserdesignator", _amounte]; _box addWeaponCargo ["NVGoggles", _amounte]; _box addMagazineCargo ["Laserbatteries", _amounte]; // Add Arrowhead Equipment if ((_game == "AO") or (_game == "all" )) then { _box addWeaponCargo ["Binocular_Vector", _amounte]; _box addMagazineCargo ["IR_Strobe_Target", _amounte]; _box addMagazineCargo ["IR_Strobe_Marker", _amounte]; }; // Fill with West Equipment if (_side == "west" or _side == "all") then { // Add Arma2 Weapons if (_game == "arma" or _game == "all") then { // Rifles _box addWeaponCargo ["M16A2", _amountw]; _box addWeaponCargo ["M16A4", _amountw]; _box addWeaponCargo ["M16A4_GL", _amountw]; _box addWeaponCargo ["M16A4_ACG", _amountw]; _box addWeaponCargo ["M16A4_ACG_GL", _amountw]; _box addWeaponCargo ["M4A1_AIM", _amountw]; _box addWeaponCargo ["M4A1_AIM_CAMO", _amountw]; _box addWeaponCargo ["M4A1_RCO_GL", _amountw]; _box addWeaponCargo ["M4A1_AIM_SD_CAMO", _amountw]; _box addWeaponCargo ["M4A1_HWS_GL", _amountw]; _box addWeaponCargo ["M4A1_HWS_GL_CAMO", _amountw]; _box addWeaponCargo ["M4A1_HWS_GL_SD_CAMO", _amountw]; _box addWeaponCargo ["M4SPR", _amountw]; _box addWeaponCargo ["m8_Carbine", _amountw]; _box addWeaponCargo ["m8_CarbineGL", _amountw]; _box addWeaponCargo ["m8_Compact", _amountw]; _box addWeaponCargo ["m8_Sharpshooter", _amountw]; _box addWeaponCargo ["m8_SAW", _amountw]; _box addWeaponCargo ["G36A", _amountw]; _box addWeaponCargo ["G36K", _amountw]; _box addWeaponCargo ["G36C", _amountw]; _box addWeaponCargo ["G36_C_SD_Eotech", _amountw]; _box addWeaponCargo ["MG36", _amountw]; _box addWeaponCargo ["DMR", _amountw]; _box addWeaponCargo ["MP5A5", _amountw]; _box addWeaponCargo ["MP5SD", _amountw]; // Machineguns _box addWeaponCargo ["M249", _amountw]; _box addWeaponCargo ["M240", _amountw]; _box addWeaponCargo ["MK_48", _amountw]; // Sniper _box addWeaponCargo ["M24", _amountw]; _box addWeaponCargo ["M40A3", _amountw]; _box addWeaponCargo ["m107", _amountw]; _box addWeaponCargo ["M1014", _amountw]; // Sidearms _box addWeaponCargo ["Colt1911", _amountw]; _box addWeaponCargo ["M9", _amountw]; _box addWeaponCargo ["M9SD", _amountw]; // Launchers _box addWeaponCargo ["M136", _amountw]; _box addWeaponCargo ["SMAW", _amountw]; _box addWeaponCargo ["Javelin", _amountw]; _box addWeaponCargo ["Stinger", _amountw]; }; // Add Arrowhead Weapons if (_game == "AO" or _game == "all") then { // Making sure some equipment is not added twice if !((_side == "all" and _game == "all") or (_side == "all" and _game == "AO")) then { _box addWeaponCargo ["G36A_camo", _amountw]; _box addWeaponCargo ["G36C_camo", _amountw]; _box addWeaponCargo ["G36_C_SD_camo", _amountw]; _box addWeaponCargo ["G36K_camo", _amountw]; _box addWeaponCargo ["LeeEnfield", _amountw]; _box addWeaponCargo ["FN_FAL", _amountw]; _box addWeaponCargo ["FN_FAL_ANPVS4", _amountw]; }; // Rifles _box addWeaponCargo ["M14_EP1", _amountw]; _box addWeaponCargo ["M4A3_RCO_GL_EP1", _amountw]; _box addWeaponCargo ["M4A3_CCO_EP1", _amountw]; _box addWeaponCargo ["SCAR_L_CQC_CCO_SD", _amountw]; _box addWeaponCargo ["SCAR_L_CQC", _amountw]; _box addWeaponCargo ["SCAR_L_CQC_Holo", _amountw]; _box addWeaponCargo ["SCAR_L_CQC_EGLM_Holo", _amountw]; _box addWeaponCargo ["SCAR_L_STD_EGLM_RCO", _amountw]; _box addWeaponCargo ["SCAR_L_STD_EGLM_TWS", _amountw]; _box addWeaponCargo ["SCAR_L_STD_HOLO", _amountw]; _box addWeaponCargo ["SCAR_L_STD_Mk4CQT", _amountw]; _box addWeaponCargo ["SCAR_H_CQC_CCO", _amountw]; _box addWeaponCargo ["SCAR_H_CQC_CCO_SD", _amountw]; _box addWeaponCargo ["SCAR_H_STD_EGLM_Spect", _amountw]; _box addWeaponCargo ["SCAR_H_LNG_Sniper", _amountw]; _box addWeaponCargo ["SCAR_H_LNG_Sniper_SD", _amountw]; _box addWeaponCargo ["SCAR_H_STD_TWS_SD", _amountw]; // Machineguns _box addWeaponCargo ["MG36_camo", _amountw]; _box addWeaponCargo ["m240_scoped_EP1", _amountw]; _box addWeaponCargo ["M249_EP1", _amountw]; _box addWeaponCargo ["M249_m145_EP1", _amountw]; _box addWeaponCargo ["M249_TWS_EP1", _amountw]; _box addWeaponCargo ["M60A4_EP1", _amountw]; _box addWeaponCargo ["Mk_48_DES_EP1", _amountw]; // Sniper _box addWeaponCargo ["m107_TWS_EP1", _amountw]; _box addWeaponCargo ["M110_NVG_EP1", _amountw]; _box addWeaponCargo ["M110_TWS_EP1", _amountw]; _box addWeaponCargo ["M24_des_EP1", _amountw]; // Handguns _box addWeaponCargo ["glock17_EP1", _amountw]; // Launchers _box addWeaponCargo ["M47Launcher_EP1", _amountw]; _box addWeaponCargo ["MAAWS", _amountw]; // Grenade Launchers _box addWeaponCargo ["Mk13_EP1", _amountw]; _box addWeaponCargo ["M32_EP1", _amountw]; _box addWeaponCargo ["M79_EP1", _amountw]; }; // Add Arma 2 magazines if ((_game == "arma") or (_game == "all")) then { _box addMagazineCargo ["8Rnd_B_Beneli_74Slug", _amountm]; _box addMagazineCargo ["SMAW_HEAA", _amountm]; _box addMagazineCargo ["SMAW_HEDP", _amountm]; _box addMagazineCargo ["30rnd_9x19_MP5", _amountm]; _box addMagazineCargo ["30rnd_9x19_MP5SD", _amountm]; }; // Add Arrowhead Magazines if ((_game == "AO") or (_game == "all")) then { if !((_game == "all" and _side == "all") or (_game == "AO" and _side == "all")) then { _box addMagazineCargo ["20Rnd_762x51_FNFAL", _amountm]; }; _box addMagazineCargo ["10x_303", _amountm]; _box addMagazineCargo ["20Rnd_762x51_B_SCAR", _amountm]; _box addMagazineCargo ["20Rnd_762x51_SB_SCAR", _amountm]; _box addMagazineCargo ["17Rnd_9x19_glock17", _amountm]; _box addMagazineCargo ["Dragon_EP1", _amountm]; _box addMagazineCargo ["MAAWS_HEAT", _amountm]; _box addMagazineCargo ["MAAWS_HEDP", _amountm]; _box addMagazineCargo ["6Rnd_HE_M203", _amountm]; }; // Add Common Magazines if !((_game == "all" and _side == "all") or (_game == "AO" and _side == "all")) then { _box addMagazineCargo ["30Rnd_556x45_G36", _amountm]; _box addMagazineCargo ["30Rnd_556x45_G36SD", _amountm]; _box addMagazineCargo ["7Rnd_45ACP_1911", _amountm]; _box addMagazineCargo ["100Rnd_556x45_BetaCMag", _amountm]; }; _box addMagazineCargo ["20Rnd_556x45_Stanag", _amountm]; _box addMagazineCargo ["30Rnd_556x45_Stanag", _amountm]; _box addMagazineCargo ["30Rnd_556x45_StanagSD", _amountm]; _box addMagazineCargo ["200Rnd_556x45_M249", _amountm]; _box addMagazineCargo ["100Rnd_762x51_M240", _amountm]; _box addMagazineCargo ["5Rnd_762x51_M24", _amountm]; _box addMagazineCargo ["10Rnd_127x99_M107", _amountm]; _box addMagazineCargo ["15Rnd_9x19_M9", _amountm]; _box addMagazineCargo ["15Rnd_9x19_M9SD", _amountm]; _box addMagazineCargo ["M136", _amountm]; _box addMagazineCargo ["Javelin", _amountm]; _box addMagazineCargo ["Stinger", _amountm]; _box addMagazineCargo ["20Rnd_762x51_DMR", _amountm]; _box addMagazineCargo ["FlareWhite_M203", _amountm]; _box addMagazineCargo ["FlareGreen_M203", _amountm]; _box addMagazineCargo ["FlareRed_M203", _amountm]; _box addMagazineCargo ["FlareYellow_M203", _amountm]; _box addMagazineCargo ["1Rnd_HE_M203", _amountm]; _box addMagazineCargo ["1Rnd_Smoke_M203", _amountm]; _box addMagazineCargo ["1Rnd_SmokeRed_M203", _amountm]; _box addMagazineCargo ["1Rnd_SmokeGreen_M203", _amountm]; _box addMagazineCargo ["1Rnd_SmokeYellow_M203", _amountm]; _box addMagazineCargo ["HandGrenade_West", _amountm]; _box addMagazineCargo ["SmokeShell", _amountm]; _box addMagazineCargo ["SmokeShellYellow", _amountm]; _box addMagazineCargo ["SmokeShellRed", _amountm]; _box addMagazineCargo ["SmokeShellGreen", _amountm]; _box addMagazineCargo ["SmokeShellPurple", _amountm]; _box addMagazineCargo ["SmokeShellBlue", _amountm]; _box addMagazineCargo ["SmokeShellOrange", _amountm]; // Add Common Weapons _box addWeaponCargo ["M16A2GL", _amountw]; _box addWeaponCargo ["M4A1", _amountw]; }; // Fill with East Equipment if (_side == "east" or _side == "all") then { // Add Arma2 Weapons if (_game == "arma" or _game == "all") then { //Rifles _box addWeaponCargo ["AK_107_kobra", _amountw]; _box addWeaponCargo ["AK_107_GL_kobra", _amountw]; _box addWeaponCargo ["AK_107_GL_pso", _amountw]; _box addWeaponCargo ["AK_107_pso",_amountw]; _box addWeaponCargo ["AKS_74_UN_kobra",_amountw]; _box addWeaponCargo ["Bizon",_amountw]; _box addWeaponCargo ["bizon_silenced",_amountw]; _box addWeaponCargo ["Saiga12K",_amountw]; _box addWeaponCargo ["VSS_vintorez",_amountw]; _box addWeaponCargo ["Pecheneg",_amountw]; // Machineguns _box addWeaponCargo ["Huntingrifle",_amountw]; // Sniper Rifles _box addWeaponCargo ["SVD_CAMO",_amountw]; // Arma2 Ammo _box addMagazineCargo ["8Rnd_B_Saiga12_74Slug", _amountm]; _box addMagazineCargo ["30Rnd_545x39_AKSD", _amountm]; _box addMagazineCargo ["64Rnd_9x19_Bizon", _amountm]; _box addMagazineCargo ["64Rnd_9x19_SD_Bizon", _amountm]; _box addMagazineCargo ["10Rnd_9x39_SP5_VSS", _amountm]; _box addMagazineCargo ["20Rnd_9x39_SP5_VSS", _amountm]; }; if (_game == "AO" or _game == "all") then { // Rifles _box addWeaponCargo ["AK_74_GL_kobra", _amountw]; _box addWeaponCargo ["AKS_74", _amountw]; _box addWeaponCargo ["AKS_74_GOSHAWK", _amountw]; _box addWeaponCargo ["AKS_74_NSPU", _amountw]; _box addWeaponCargo ["FN_FAL", _amountw]; _box addWeaponCargo ["FN_FAL_ANPVS4", _amountw]; _box addWeaponCargo ["G36A_camo", _amountw]; _box addWeaponCargo ["G36C_camo", _amountw]; _box addWeaponCargo ["G36_C_SD_camo", _amountw]; _box addWeaponCargo ["G36K_camo", _amountw]; _box addWeaponCargo ["LeeEnfield", _amountw]; _box addWeaponCargo ["Sa58P_EP1", _amountw]; _box addWeaponCargo ["Sa58V_EP1", _amountw]; _box addWeaponCargo ["Sa58V_RCO_EP1", _amountw]; _box addWeaponCargo ["Sa58V_CCO_EP1", _amountw]; // Sniper rifles _box addWeaponCargo ["SVD_des_EP1", _amountw]; _box addWeaponCargo ["SVD_NSPU_EP1", _amountw]; // Sidearm _box addWeaponCargo ["revolver_EP1", _amountw]; _box addWeaponCargo ["revolver_gold_EP1", _amountw]; _box addWeaponCargo ["Sa61_EP1", _amountw]; _box addWeaponCargo ["UZI_EP1", _amountw]; _box addWeaponCargo ["UZI_SD_EP1", _amountw]; // AT _box addWeaponCargo ["MetisLauncher", _amountw]; // Arrowhead Ammo _box addMagazineCargo ["30Rnd_762x39_SA58", _amountm]; _box addMagazineCargo ["20Rnd_762x51_FNFAL", _amountm]; _box addMagazineCargo ["6Rnd_45ACP", _amountm]; _box addMagazineCargo ["20Rnd_B_765x17_Ball", _amountm]; _box addMagazineCargo ["30Rnd_9x19_UZI", _amountm]; _box addMagazineCargo ["30Rnd_9x19_UZI_SD", _amountm]; }; // Common East Weapons // Rifles _box addWeaponCargo ["AK_74_GL",_amountw]; _box addWeaponCargo ["AKS_74_kobra", _amountw]; _box addWeaponCargo ["AKS_74_pso", _amountw]; _box addWeaponCargo ["AK_74", _amountw]; _box addWeaponCargo ["AKS_74_U",_amountw]; _box addWeaponCargo ["AK_47_M",_amountw]; _box addWeaponCargo ["AK_47_S",_amountw]; // Sniper Rifles _box addWeaponCargo ["KSVK",_amountw]; _box addWeaponCargo ["SVD",_amountw]; // Machineguns _box addWeaponCargo ["PK", _amountw]; _box addWeaponCargo ["RPK_74", _amountw]; // Sidearms _box addWeaponCargo ["Makarov",_amountw]; _box addWeaponCargo ["MakarovSD",_amountw]; // Launchers _box addWeaponCargo ["RPG18", _amountw]; _box addWeaponCargo ["RPG7V", _amountw]; _box addWeaponCargo ["Strela", _amountw]; _box addWeaponCargo ["Igla", _amountw]; // Common East Ammo _box addMagazineCargo ["30Rnd_545x39_AK", _amountm]; _box addMagazineCargo ["30Rnd_762x39_AK47", _amountm]; _box addMagazineCargo ["100Rnd_556x45_BetaCMag", _amountm]; _box addMagazineCargo ["30Rnd_556x45_G36", _amountm]; _box addMagazineCargo ["30Rnd_556x45_G36SD", _amountm]; _box addMagazineCargo ["5Rnd_127x108_KSVK", _amountm]; _box addMagazineCargo ["10Rnd_762x54_SVD", _amountm]; _box addMagazineCargo ["75Rnd_545x39_RPK", _amountm]; _box addMagazineCargo ["100Rnd_762x54_PK", _amountm]; _box addMagazineCargo ["7Rnd_45ACP_1911", _amountm]; _box addMagazineCargo ["8Rnd_9x18_Makarov", _amountm]; _box addMagazineCargo ["8Rnd_9x18_MakarovSD", _amountm]; _box addMagazineCargo ["HandGrenade_East", _amountm]; _box addMagazineCargo ["Igla", _amountm]; _box addMagazineCargo ["RPG18", _amountm]; _box addMagazineCargo ["Strela", _amountm]; _box addMagazineCargo ["AT13", _amountm]; _box addMagazineCargo ["PG7V", _amountm]; _box addMagazineCargo ["PG7VL", _amountm]; _box addMagazineCargo ["PG7VR", _amountm]; _box addMagazineCargo ["OG7", _amountm]; _box addMagazineCargo ["1Rnd_HE_GP25", _amountm]; _box addMagazineCargo ["1Rnd_Smoke_GP25", _amountm]; _box addMagazineCargo ["1Rnd_SmokeGreen_GP25", _amountm]; _box addMagazineCargo ["1Rnd_SmokeRed_GP25", _amountm]; _box addMagazineCargo ["1Rnd_SmokeYellow_GP25", _amountm]; _box addMagazineCargo ["FlareGreen_GP25", _amountm]; _box addMagazineCargo ["FlareRed_GP25", _amountm]; _box addMagazineCargo ["FlareWhite_GP25", _amountm]; _box addMagazineCargo ["FlareYellow_GP25", _amountm]; }; if (!alive _box) then {_run = false}; if (!_refill) then {_run = false}; sleep 300; }; ////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: (AEF)Wolffy.au [2CAV] // Created: 20090719 // Contact: http://creobellum.org // Purpose: Teleport group to map click loc /////////////////////////////////////////////////////////////////// if(isServer && !(local player)) exitWith{}; if (typeName _this == "ARRAY") then { _unit = _this select 1; _obj = (_this select 3) select 0; _pos = getPosASL _obj; _RandX = (random 20) - 10; _RandY = (random 20) - 10; _unit setPosASL [(_pos select 0) + _RandX, (_pos select 1) + _RandY, (_pos select 2)]; } else { titleText ["Click on map to teleport your group", "PLAIN"]; player onMapSingleClick "{_x setPos _pos;} forEach units _this;"; };// Mission Header class Header { gameType = Coop; minPlayers = 1; maxPlayers = 10; }; onLoadMission = "REVIVE TEST MISSION"; OnLoadMissionTime = FALSE; // description.ext settings for revive /////////////////////////////////////////////////////////////////////////////////////////// respawn = "BASE"; respawndelay = 4; disabledAI = 0; #include "revive_sqf\dialogs\config.cpp" #include "revive_sqf\dialogs\define.hpp" #include "revive_sqf\dialogs\rev_cam_dialog.hpp" #include "revive_sqf\dialogs\respawn_button_1.hpp" #include "revive_sqf\dialogs\respawn_button_2.hpp" #include "revive_sqf\dialogs\respawn_button_3.hpp" #include "revive_sqf\dialogs\respawn_button_4.hpp" #include "revive_sqf\dialogs\respawn_button_1b.hpp" #include "revive_sqf\dialogs\respawn_button_1c.hpp" #include "revive_sqf\dialogs\respawn_button_2b.hpp" #include "revive_sqf\dialogs\respawn_button_3b.hpp" #include "revive_sqf\dialogs\respawn_button_4b.hpp" #include "revive_sqf\dialogs\respawn_button_1map.hpp" #include "revive_sqf\dialogs\respawn_button_2map.hpp" #include "revive_sqf\dialogs\respawn_button_3map.hpp" #include "revive_sqf\dialogs\respawn_button_4map.hpp" #include "revive_sqf\dialogs\OK_map.hpp" #include "revive_sqf\dialogs\dead_cam_dialog.hpp" #include "revive_sqf\dialogs\rev_cam_dialog_blank.hpp" /////////////////////////////////////////////////////////////////////////////////////////// class Params { class DayTime { //paramsArray[0] title = "Time Of Day"; values[] = {-6, 0, 8, 13}; texts[] = {"Morning", "Clear day", "Sundown", "Night"}; default = 0; }; }; server execVM "revive_init.sqf"; _xhandle = execvm "clearCorpses.sqf"; "patrol1" setMarkerAlpha 0; "patrol2" setMarkerAlpha 0; "patrol3" setMarkerAlpha 0; "patrol4" setMarkerAlpha 0; "patrol5" setMarkerAlpha 0; "patrol6" setMarkerAlpha 0; "patrol7" setMarkerAlpha 0; "patrol8" setMarkerAlpha 0; //Initialise revive script (this next line is needed for revive script) version=11; class Mission { addOns[]= { "cacharacters_e", "CATracked_E", "cacharacters2", "CAWheeled_E", "caweapons_e_ammoboxes", "caweapons_baf", "plr_mana" }; addOnsAuto[]= { "cacharacters_e", "CATracked_E", "cacharacters2", "CAWheeled_E", "caweapons_e_ammoboxes", "caweapons_baf", "plr_mana" }; randomSeed=7158239; class Intel { briefingName="clean up "; startWeather=0; forecastWeather=0; year=2006; month=6; day=6; hour=12; minute=0; }; class Groups { items=59; class Item0 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={4717.4233,0.57517475,2025.7115}; id=3; side="LOGIC"; vehicle="Logic"; leader=1; skill=0.60000002; text="server"; }; }; }; class Item1 { side="WEST"; class Vehicles { items=10; class Item0 { position[]={4594.5586,2.3404741,2035.0112}; id=4; side="WEST"; vehicle="US_Soldier_EP1"; player="PLAYER COMMANDER"; leader=1; rank="SERGEANT"; skill=0.46666664; text="s1"; init="[""s1"",1] exec ""weapons_respawn.sqs"" "; synchronizations[]={4}; }; class Item1 { position[]={4591.98,2.3922987,2030.584}; id=5; side="WEST"; vehicle="US_Soldier_Medic_EP1"; player="PLAY CDG"; skill=0.46666664; text="s2"; init="[""s2"",1] exec ""weapons_respawn.sqs"" "; }; class Item2 { position[]={4591.8013,2.4023652,2030.9253}; id=6; side="WEST"; vehicle="US_Soldier_Medic_EP1"; player="PLAY CDG"; skill=0.46666664; text="s3"; init="[""s3"",1] exec ""weapons_respawn.sqs"" "; }; class Item3 { position[]={4592.2329,2.3797765,2030.2744}; id=7; side="WEST"; vehicle="US_Soldier_Engineer_EP1"; player="PLAY CDG"; skill=0.46666664; text="s4"; init="[""s4"",1] exec ""weapons_respawn.sqs"" "; }; class Item4 { position[]={4592.6548,2.363585,2030.2271}; id=8; side="WEST"; vehicle="US_Soldier_Engineer_EP1"; player="PLAY CDG"; skill=0.46666664; text="s5"; init="[""s5"",1] exec ""weapons_respawn.sqs"" "; }; class Item5 { position[]={4593.1157,2.3467429,2030.2612}; id=9; side="WEST"; vehicle="US_Soldier_AR_EP1"; player="PLAY CDG"; skill=0.46666664; text="s6"; init="[""s6"",1] exec ""weapons_respawn.sqs"" "; }; class Item6 { position[]={4593.7036,2.3232327,2030.1006}; id=10; side="WEST"; vehicle="US_Soldier_Marksman_EP1"; player="PLAY CDG"; skill=0.46666664; text="s7"; init="[""s7"",1] exec ""weapons_respawn.sqs"" "; }; class Item7 { position[]={4594.2593,2.3041499,2030.2632}; id=11; side="WEST"; vehicle="US_Soldier_Sniper_EP1"; player="PLAY CDG"; skill=0.46666664; text="s8"; init="[""s8"",1] exec ""weapons_respawn.sqs"" "; }; class Item8 { position[]={4595.0005,2.2863204,2031.2427}; id=12; side="WEST"; vehicle="US_Soldier_AT_EP1"; player="PLAY CDG"; skill=0.46666664; text="s9"; init="[""s9"",1] exec ""weapons_respawn.sqs"" "; }; class Item9 { position[]={4594.6411,2.2947278,2030.7437}; id=13; side="WEST"; vehicle="US_Soldier_HAT_EP1"; player="PLAY CDG"; skill=0.46666664; text="s10"; init="[""s10"",1] exec ""weapons_respawn.sqs"" "; }; }; }; class Item2 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2762.2524,15.674425,2828.9268}; azimut=180; id=14; side="EAST"; vehicle="TK_Soldier_Officer_EP1"; leader=1; rank="COLONEL"; skill=0.60000002; text="rad1"; }; }; }; class Item3 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2872.0444,3.9610968,3151.6135}; azimut=180; id=15; side="EAST"; vehicle="TK_Soldier_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; text="rad3"; }; }; }; class Item4 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3796.5623,2.5721483,2769.7261}; azimut=185; id=16; side="EAST"; vehicle="TK_Soldier_Officer_EP1"; leader=1; rank="CAPTAIN"; skill=0.59999996; text="rad2"; }; }; }; class Item5 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3189.6289,14.928089,3101.0708}; azimut=-270.43201; id=17; side="EAST"; vehicle="TK_Soldier_Officer_EP1"; leader=1; rank="COLONEL"; skill=0.60000002; text="bridge1"; }; }; }; class Item6 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2602.0747,8.4665518,2731.6357}; id=18; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2605.0747,9.2623215,2726.6357}; id=19; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2607.0747,9.327981,2726.6357}; id=20; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2609.0747,9.39363,2726.6357}; id=21; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2611.0747,9.0042286,2726.6357}; id=22; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2613.0747,8.2231941,2726.6357}; id=23; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2615.0747,7.8807964,2726.6357}; id=24; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2617.0747,7.6126862,2726.6357}; id=25; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2619.0747,7.3446169,2726.6357}; id=26; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=3; class Item0 { position[]={2218.843,2.6840668,3278.5195}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={2378.8828,4.1250839,2910.8606}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={2335.0142,2.7349854,3018.6792}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item7 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2349.9775,10.797334,2957.8433}; id=27; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2352.9775,13.588424,2952.8433}; id=28; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2354.9775,13.552691,2952.8433}; id=29; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2356.9775,10.787428,2952.8433}; id=30; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2358.9775,10.78465,2952.8433}; id=31; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2360.9778,10.781871,2952.8433}; id=32; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2362.9778,10.780265,2952.8433}; id=33; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2364.9778,3.6031976,2952.8433}; id=34; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2366.9778,3.6032014,2952.8433}; id=35; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; }; class Item8 { side="EAST"; class Vehicles { items=8; class Item0 { position[]={2756.5393,6.0929389,3043.782}; id=36; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2755.8684,7.0780897,3025.8489}; id=37; side="EAST"; vehicle="BMP2_TK_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2765.8684,8.7066011,3025.8489}; id=38; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2767.8684,8.6348858,3025.8489}; id=39; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2769.8684,8.563159,3025.8489}; id=40; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2771.8684,8.7884722,3025.8489}; id=41; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2773.8684,9.0346565,3025.8489}; id=42; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; skill=0.2; }; class Item7 { position[]={2775.8684,9.3090715,3025.8489}; id=43; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; }; class Waypoints { items=25; class Item0 { position[]={2473.9851,2.4369569,3227.5991}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={2590.3831,2.6809387,3091.8018}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={2698.5901,2.6809387,2967.6438}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={2778.3447,2.6809387,2879.2673}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={2868.4451,4.8671103,2852.1074}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={2926.6443,3.0322416,2830.1216}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={2988.7522,2.6809387,2832.7942}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={2975.1582,2.6809387,2876.666}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={2991.842,2.6809387,2931.6602}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={3062.9019,2.6535797,2940.311}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={3090.708,2.6262207,2950.8154}; visible=1; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={3151.8813,2.6438904,2931.6602}; visible=1; class Effects { }; showWP="NEVER"; }; class Item12 { position[]={3216.1609,4.0969391,2888.7092}; idStatic=21447; idObject=-1996323897; visible=1; class Effects { }; showWP="NEVER"; }; class Item13 { position[]={3265.5776,2.6809387,2864.9255}; visible=1; class Effects { }; showWP="NEVER"; }; class Item14 { position[]={3240.2429,2.7589903,2842.6807}; visible=1; class Effects { }; showWP="NEVER"; }; class Item15 { position[]={3193.2815,2.6809387,2845.7703}; visible=1; class Effects { }; showWP="NEVER"; }; class Item16 { position[]={3116.0425,2.6809387,2850.0957}; visible=1; class Effects { }; showWP="NEVER"; }; class Item17 { position[]={3042.5107,2.6809387,2850.0957}; visible=1; class Effects { }; showWP="NEVER"; }; class Item18 { position[]={2962.8,2.6809387,2827.8506}; visible=1; class Effects { }; showWP="NEVER"; }; class Item19 { position[]={2893.5938,4.358192,2840.2087}; visible=1; class Effects { }; showWP="NEVER"; }; class Item20 { position[]={2837.9812,3.1056218,2849.4775}; visible=1; class Effects { }; showWP="NEVER"; }; class Item21 { position[]={2747.1482,2.6809387,2910.6514}; visible=1; class Effects { }; showWP="NEVER"; }; class Item22 { position[]={2647.6638,2.6809387,3026.8188}; visible=1; class Effects { }; showWP="NEVER"; }; class Item23 { position[]={2559.9202,2.6809103,3130.0103}; visible=1; class Effects { }; showWP="NEVER"; }; class Item24 { position[]={2700.8044,2.6809387,2895.2031}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item9 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2707.2322,7.4309397,2820.5205}; id=44; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item10 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2647.5022,2.6331053,2725.7651}; id=45; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2650.5022,8.8605766,2720.7651}; id=46; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item11 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3069.9304,7.2349672,3116.5972}; id=47; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={3072.9304,7.239974,3111.5972}; id=48; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item12 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2742.2522,2.6809387,2783.3711}; id=49; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2745.2522,2.6809387,2778.3711}; id=50; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2747.2522,2.6809387,2778.3711}; id=51; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2749.2522,2.6809387,2778.3711}; id=52; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2751.2522,2.6809387,2778.3711}; id=53; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2753.2522,2.6809387,2778.3711}; id=54; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2755.2522,2.6809387,2778.3711}; id=55; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2757.2522,2.6809387,2778.3711}; id=56; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2759.2527,2.6809387,2778.3711}; id=57; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={2716.5554,2.6809387,2910.4358}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item13 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2658.3289,5.1259155,2869.1707}; id=58; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2661.3289,4.5346484,2864.1707}; id=59; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2663.3289,4.1133981,2864.1707}; id=60; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2665.3289,3.6920831,2864.1707}; id=61; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2667.3289,3.3282657,2864.1707}; id=62; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2669.3289,2.9835517,2864.1707}; id=63; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2671.3289,2.8460784,2864.1707}; id=64; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2673.3289,2.8132536,2864.1707}; id=65; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2675.3289,2.7804239,2864.1707}; id=66; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={2714.5,2.6809387,2857.8796}; type="GUARD"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item14 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2658.9963,2.6781926,2731.407}; azimut=35; id=155; side="EAST"; vehicle="RU_Soldier_MG"; leader=1; skill=0.60000002; }; }; }; class Item15 { side="EAST"; class Vehicles { items=10; class Item0 { position[]={2760.2888,7.4093375,2820.2527}; id=67; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; init=" "; }; class Item1 { position[]={2763.2888,2.7613006,2815.2527}; id=68; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2765.2888,2.7758849,2815.2527}; id=69; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2767.2888,2.7758849,2815.2527}; id=70; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2769.2888,2.7758849,2815.2527}; id=71; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2771.2888,2.7758849,2815.2527}; id=72; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2773.2888,2.7758849,2815.2527}; id=73; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2775.2888,2.7758849,2815.2527}; id=74; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2777.2888,2.7758849,2815.2527}; id=75; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; class Item9 { position[]={2791.9685,2.6809387,2803.3796}; azimut=35; id=156; side="EAST"; vehicle="RU_Soldier_MG"; skill=0.60000002; }; }; class Waypoints { items=9; class Item0 { position[]={2708.49,2.7236907,2795.7249}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={2678.679,4.2387519,2809.2109}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={2650.051,9.6821499,2820.5669}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={2362.1152,2.440279,3287.9268}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={2631.7358,9.8006229,2912.4551}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={2386.0813,2.4429362,3274.9451}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={2669.6824,3.0065877,2902.4688}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={2780.1902,2.6809387,2855.605}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={2715.9009,2.6809387,2847.3352}; type="GUARD"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item16 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={4124.833,57.638657,2660.4111}; id=76; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={4127.833,57.510483,2659.5645}; id=77; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item17 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3768.4453,12.191496,2691.5212}; id=78; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; }; class Waypoints { items=1; class Item0 { position[]={3768.937,12.216257,2692.8308}; type="GUARD"; combatMode="RED"; combat="AWARE"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item18 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3751.165,16.145256,2872.6748}; id=79; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={3754.165,15.74602,2867.6748}; id=80; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item19 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3219.9353,16.681419,2872.1614}; id=81; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item20 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2764.0066,15.646284,2830.8765}; id=82; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2767.0066,15.599493,2825.8765}; id=83; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item21 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3175.406,16.681427,2889.0867}; id=84; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item22 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3119.6069,16.681438,2896.2705}; id=85; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item23 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3926.2942,26.607454,2805.9902}; id=86; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={3931.5493,25.906006,2798.2837}; id=87; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3933.5493,26.144043,2798.2837}; id=88; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3935.5493,26.368343,2798.2837}; id=89; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3937.5493,26.59268,2798.2837}; id=90; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3939.5493,26.816982,2798.2837}; id=91; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3941.5493,27.193909,2798.2837}; id=92; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3943.5493,27.555044,2798.2837}; id=93; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3945.5493,27.910645,2798.2837}; id=94; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=13; class Item0 { position[]={3830.7703,16.633804,2882.5273}; combatMode="RED"; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={3709.8962,14.306758,2905.0786}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={3607.9651,3.9133644,2891.999}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={3595.7874,2.6866286,2829.3066}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={3627.8101,2.7471373,2773.3801}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={3679.2263,2.7323241,2739.1021}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={3731.0942,2.6809387,2744.5144}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={3780.7068,2.6809387,2728.2776}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={3819.0439,2.6809387,2703.4712}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={3862.3418,6.445147,2755.3389}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={3907.8955,20.724403,2790.5188}; visible=1; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={3842.4971,18.142246,2806.7554}; visible=1; class Effects { }; showWP="NEVER"; }; class Item12 { position[]={3764.9209,8.1877728,2814.874}; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item24 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3644.0232,2.6809387,2818.0425}; id=95; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=1; }; class Item1 { position[]={3647.0232,2.6809387,2813.0425}; id=96; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3649.0232,2.6809387,2813.0425}; id=97; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3651.0232,2.6809387,2813.0425}; id=98; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3653.0232,2.6809387,2813.0425}; id=99; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3655.0232,2.6809387,2813.0425}; id=100; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3657.0232,2.6809387,2813.0425}; id=101; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3659.0232,2.6809387,2813.0425}; id=102; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3661.0232,2.6809387,2813.0425}; id=103; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=26; class Item0 { position[]={3666.833,2.6740956,2832.5012}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={3702.5559,6.342804,2846.1763}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={3747.4888,2.6809387,2775.5676}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={3787.1189,2.6809387,2711.0986}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={3788.2351,1.1192942,2640.4897}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={3839.3081,2.2011964,2606.4417}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={3908.5215,3.6255677,2597.2314}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={3959.3149,11.610038,2631.5591}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={3956.5237,10.919147,2679.2827}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={3940.895,11.356377,2726.4482}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={3904.0557,9.5359278,2748.4961}; visible=1; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={3854.0996,10.950895,2775.5674}; visible=1; class Effects { }; showWP="NEVER"; }; class Item12 { position[]={3799.6777,12.090535,2818.2671}; visible=1; class Effects { }; showWP="NEVER"; }; class Item13 { position[]={3751.1172,12.664627,2841.4312}; visible=1; class Effects { }; showWP="NEVER"; }; class Item14 { position[]={3707.3008,12.290317,2864.3164}; visible=1; class Effects { }; showWP="NEVER"; }; class Item15 { position[]={3677.9968,11.45047,2916.7847}; visible=1; class Effects { }; showWP="NEVER"; }; class Item16 { position[]={3620.5051,14.108657,2920.4126}; visible=1; class Effects { }; showWP="NEVER"; }; class Item17 { position[]={3559.9434,2.6809387,2861.5256}; visible=1; class Effects { }; showWP="NEVER"; }; class Item18 { position[]={3588.1311,2.6809387,2782.5444}; visible=1; class Effects { }; showWP="NEVER"; }; class Item19 { position[]={3618.8306,2.6809387,2734.5415}; visible=1; class Effects { }; showWP="NEVER"; }; class Item20 { position[]={3664.6011,1.4643623,2696.0278}; visible=1; class Effects { }; showWP="NEVER"; }; class Item21 { position[]={3731.0239,0.59286439,2663.3745}; visible=1; class Effects { }; showWP="NEVER"; }; class Item22 { position[]={3733.8147,2.6809387,2701.6094}; visible=1; class Effects { }; showWP="NEVER"; }; class Item23 { position[]={3747.2109,2.6809387,2727.5645}; visible=1; class Effects { }; showWP="NEVER"; }; class Item24 { position[]={3733.5356,2.6809387,2766.9155}; visible=1; class Effects { }; showWP="NEVER"; }; class Item25 { position[]={3687.2073,2.6809387,2797.6152}; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item25 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2281.0725,2.6809387,3041.0139}; id=104; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2284.0725,2.6809387,3036.0139}; id=105; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2286.0725,2.6809387,3036.0139}; id=106; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2288.0725,2.6809387,3036.0139}; id=107; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2290.0725,2.6809387,3036.0139}; id=108; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2292.0725,2.6809387,3036.0139}; id=109; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2294.0725,2.6852722,3036.0139}; id=110; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2296.0725,2.7852707,3036.0139}; id=111; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2298.0725,2.8852692,3036.0139}; id=112; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=2; class Item0 { position[]={2311.9502,2.6809387,3023.2019}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={2405.9812,12.365649,3115.6812}; id=113; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item26 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2405.9812,12.365649,3115.6812}; id=113; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2408.9812,12.178816,3110.6812}; id=114; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2410.9812,12.033916,3110.6812}; id=115; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2412.9812,11.935433,3110.6812}; id=116; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2414.9812,11.836952,3110.6812}; id=117; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2416.9812,11.73847,3110.6812}; id=118; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2418.9812,11.639988,3110.6812}; id=119; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2420.9812,11.586535,3110.6812}; id=120; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2422.9812,11.564651,3110.6812}; id=121; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; }; class Item27 { side="EAST"; class Vehicles { items=8; class Item0 { position[]={2310.8694,7.7193856,3002.9827}; id=122; side="EAST"; vehicle="TK_Special_Forces_TL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2312.8694,13.452295,2997.9827}; id=123; side="EAST"; vehicle="TK_Special_Forces_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2314.8694,13.452295,2997.9827}; id=124; side="EAST"; vehicle="TK_Special_Forces_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item3 { position[]={2316.8694,13.452295,2997.9827}; id=125; side="EAST"; vehicle="TK_Special_Forces_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item4 { position[]={2318.8694,14.12952,2997.9827}; id=126; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2320.8694,13.452295,2997.9827}; id=127; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2322.8694,13.452295,2997.9827}; id=128; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item7 { position[]={2324.8694,13.452295,2997.9827}; id=129; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; }; }; class Item28 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3069.3135,16.681435,2886.3132}; id=130; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item29 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2451.6909,7.2339568,2991.8701}; id=131; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item30 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2283.429,3.4159546,3016.0786}; id=132; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2286.429,4.2159576,3011.0786}; id=133; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item31 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2313.7632,7.7193861,3003.8049}; id=134; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2312.3484,7.7193856,3004.3882}; id=135; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item32 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2340.4905,2.8074994,3229.4714}; id=136; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2335.8665,14.628292,3229.1633}; id=137; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item33 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={2705.2854,7.4309397,2824.1509}; id=138; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item34 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3745.2729,4.9161367,3089.9563}; special="NONE"; id=139; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; class Item1 { position[]={3748.2729,5.2350225,3084.9561}; special="NONE"; id=140; side="EAST"; vehicle="TK_Soldier_Sniper_EP1"; rank="SERGEANT"; skill=1; }; }; }; class Item35 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3371.5022,2.6535797,2900.1973}; id=141; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; init="nul = [this, 100, ""patrol5"", ""patrol5"", 100, ""aware"", 100, ""LIMITED"", ""FILE"", 0, 0] execVM ""USPS.sqf""; "; }; class Item1 { position[]={3374.5022,2.6535797,2895.1973}; id=142; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3376.5022,2.6535797,2895.1973}; id=143; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3378.5022,2.6535797,2895.1973}; id=144; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3380.5022,2.6535797,2895.1973}; id=145; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3382.5022,2.6535797,2895.1973}; id=146; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3384.5022,2.6535797,2895.1973}; id=147; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3386.5022,2.6535797,2895.1973}; id=148; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3388.5022,2.6535797,2895.1973}; id=149; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; }; class Item36 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3687.2544,5.6509399,2773.8086}; id=150; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item37 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3633.7017,11.078659,2843.1094}; id=151; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={3636.7017,11.714022,2838.1094}; id=152; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item38 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2780.6091,10.487278,3185.5508}; id=157; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2783.6091,3.9447598,3180.5508}; id=158; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2785.6091,3.9392884,3180.5508}; id=159; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2787.6091,3.9338164,3180.5508}; id=160; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2789.6091,3.9274704,3180.5508}; id=161; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2791.6091,3.9198596,3180.5508}; id=162; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2793.6091,3.9143875,3180.5508}; id=163; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2795.6091,3.9089162,3180.5508}; id=164; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2797.6091,3.9034441,3180.5508}; id=165; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={2869.8987,3.9666901,3158.939}; type="GUARD"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item39 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2908.3774,2.602829,3122.3452}; id=166; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2911.3774,3.9159071,3117.3452}; id=167; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2913.3774,4.0200791,3117.3452}; id=168; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2915.3774,4.1943898,3117.3452}; id=169; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2917.3774,4.3687005,3117.3452}; id=170; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2919.3774,4.5429845,3117.3452}; id=171; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2921.3774,4.6944304,3117.3452}; id=172; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2923.3774,5.178443,3117.3452}; id=173; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2925.3774,6.268671,3117.3452}; id=174; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=16; class Item0 { position[]={2896.0549,9.0373087,3095.002}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={2888.2473,11.050137,3069.4495}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={2879.02,14.38627,3026.8628}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={2879.73,7.9481082,2970.553}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={2909.3042,2.7869339,2955.1746}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={2960.6455,2.9450188,2971.2627}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={2967.0334,9.6262903,3002.0203}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={2981.7021,11.148593,3035.1436}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={3003.7058,10.717367,3112.51}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={2966.0867,4.9706302,3171.1853}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={2865.5337,3.1028423,3182.542}; visible=1; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={2793.8455,3.1150346,3197.9209}; visible=1; class Effects { }; showWP="NEVER"; }; class Item12 { position[]={2746.5269,4.0183797,3171.1853}; visible=1; class Effects { }; showWP="NEVER"; }; class Item13 { position[]={2742.0315,2.5387833,3090.98}; visible=1; class Effects { }; showWP="NEVER"; }; class Item14 { position[]={2795.0288,10.370913,3053.3613}; visible=1; class Effects { }; showWP="NEVER"; }; class Item15 { position[]={2865.364,3.9724336,3152.5366}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item40 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={2843.6208,11.396282,3040.7212}; id=175; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={2846.6208,11.498911,3035.7212}; id=176; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={2848.6208,11.767018,3035.7212}; id=177; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={2850.6208,12.096287,3035.7212}; id=178; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={2852.6208,12.561301,3035.7212}; id=179; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={2854.6208,13.02542,3035.7212}; id=180; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={2856.6208,13.484783,3035.7212}; id=181; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={2858.6208,13.944217,3035.7212}; id=182; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={2860.6208,14.300072,3035.7212}; id=183; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={2879.2568,3.8601463,3147.5259}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item41 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2763.78,3.6813536,3091.8171}; id=184; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2766.5857,3.681354,3095.7356}; id=185; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item42 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2905.7854,11.488469,3142.0361}; id=186; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2908.7854,12.988773,3137.0361}; id=187; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item43 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2855.5015,10.10322,3172.1279}; id=188; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2858.5015,3.8773904,3167.1279}; id=189; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item44 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={2684.8245,3.8838511,3208.2256}; id=190; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={2687.8245,3.9686542,3203.2256}; id=191; side="EAST"; vehicle="TK_Soldier_Spotter_EP1"; rank="SERGEANT"; skill=0.46666664; }; }; }; class Item45 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3213.6006,2.455126,3018.9417}; id=192; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={3212.3108,2.4620819,3012.7158}; id=193; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3214.3108,2.4620819,3012.7158}; id=194; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3216.3108,2.4620819,3012.7158}; id=195; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3218.3108,2.4592731,3012.7158}; id=196; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3220.3108,2.4546518,3012.7158}; id=197; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3222.3108,2.4546518,3012.7158}; id=198; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3224.3108,2.4546518,3012.7158}; id=199; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3226.3108,2.4546518,3012.7158}; id=200; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={3193.5811,4.090394,3079.3306}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item46 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3189.0249,12.126518,3091.5342}; id=201; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={3192.1606,12.133732,3087.7573}; id=202; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3194.1606,4.9382167,3087.7573}; id=203; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3196.1606,4.6432662,3087.7573}; id=204; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3198.1606,4.8254151,3087.7573}; id=205; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3200.1606,12.133724,3087.7573}; id=206; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3202.1606,12.133724,3087.7573}; id=207; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3204.1606,12.133724,3087.7573}; id=208; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3206.1606,12.133724,3087.7573}; id=209; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=2; class Item0 { position[]={3189.6289,14.928089,3101.0708}; id=17; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={3191.5596,12.129025,3097.229}; type="GUARD"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item47 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3324.6938,2.558275,2974.835}; id=210; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={3327.6938,5.8067369,2969.835}; id=211; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3329.6938,2.5715027,2969.835}; id=212; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3331.6938,2.5715027,2969.835}; id=213; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3333.6938,2.5715027,2969.835}; id=214; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3335.6938,2.5715027,2969.835}; id=215; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3337.6938,2.5715027,2969.835}; id=216; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3339.6938,2.5715027,2969.835}; id=217; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3341.6943,2.6173799,2969.835}; id=218; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=24; class Item0 { position[]={3335.719,2.6219764,2993.3638}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={3335.9136,2.4210017,3017.5076}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={3323.8418,3.348747,3055.4763}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={3292.5525,3.9552217,3095.6035}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={3243.75,3.2589364,3112.8047}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={3178.9465,2.6228638,3128.8057}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={3122.9434,3.188818,3118.0049}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={3079.7412,2.7903323,3128.8057}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={3036.1387,7.5313625,3109.6045}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={3041.7388,10.972301,3074.4023}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={3049.3396,12.970778,3044.001}; visible=1; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={3067.3403,7.2725611,3008.3989}; visible=1; class Effects { }; showWP="NEVER"; }; class Item12 { position[]={3096.1421,2.6141918,2964.3965}; visible=1; class Effects { }; showWP="NEVER"; }; class Item13 { position[]={3134.9441,2.6262207,2944.7954}; visible=1; class Effects { }; showWP="NEVER"; }; class Item14 { position[]={3177.7466,2.6349909,2926.7944}; visible=1; class Effects { }; showWP="NEVER"; }; class Item15 { position[]={3227.7493,2.627332,2919.5938}; visible=1; class Effects { }; showWP="NEVER"; }; class Item16 { position[]={3274.1516,2.6448421,2913.1936}; visible=1; class Effects { }; showWP="NEVER"; }; class Item17 { position[]={3309.7534,3.8594289,2935.1948}; visible=1; class Effects { }; showWP="NEVER"; }; class Item18 { position[]={3288.4236,3.0755048,2970.3391}; idStatic=21209; idObject=-1992125735; visible=1; class Effects { }; showWP="NEVER"; }; class Item19 { position[]={3278.1516,2.4894409,2991.998}; visible=1; class Effects { }; showWP="NEVER"; }; class Item20 { position[]={3271.3513,2.4183099,3015.999}; visible=1; class Effects { }; showWP="NEVER"; }; class Item21 { position[]={3250.9502,3.5509727,3056.0015}; visible=1; class Effects { }; showWP="NEVER"; }; class Item22 { position[]={3224.949,2.9442954,3044.801}; visible=1; class Effects { }; showWP="NEVER"; }; class Item23 { position[]={3182.1465,2.6645248,3038.0005}; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item48 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={3150.3425,2.6262207,2949.3555}; id=219; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; init="nul = [this, 100, ""patrol7"", ""patrol7"", 100, ""aware"", 100, ""LIMITED"", ""FILE"", 0, 0] execVM ""USPS.sqf""; "; }; class Item1 { position[]={3153.3425,2.6262207,2944.3555}; id=220; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3155.3425,2.6262207,2944.3555}; id=221; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={3157.3425,2.6262207,2944.3555}; id=222; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3159.3425,2.6262207,2944.3555}; id=223; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3161.3425,2.6262207,2944.3555}; id=224; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={3163.3425,2.6262207,2944.3555}; id=225; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={3165.3425,2.6262207,2944.3555}; id=226; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={3167.3425,2.6215751,2944.3555}; id=227; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=1; class Item0 { position[]={3175.7595,4.1220131,3076.1401}; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item49 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3012.239,2.6809387,2831.8125}; id=228; side="EAST"; vehicle="UAZ_MG_TK_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; init="nul = [this, 100, ""patrol8"", ""patrol8"", 100, ""aware"", 100, ""LIMITED"", ""FILE"", 0, 0] execVM ""USPS.sqf""; "; }; class Item1 { position[]={3065.3655,2.6809387,2846.7822}; id=229; side="EAST"; vehicle="UAZ_MG_TK_EP1"; rank="LIEUTENANT"; skill=0.59999996; init="nul = [this, 100, ""patrol8"", ""patrol8"", 100, ""aware"", 100, ""LIMITED"", ""FILE"", 0, 0] execVM ""USPS.sqf""; "; }; }; }; class Item50 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3143.4209,2.6710787,2839.7063}; id=236; side="EAST"; vehicle="UAZ_MG_TK_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; init="nul = [this, 100, ""patrol8"", ""patrol8"", 100, ""aware"", 100, ""LIMITED"", ""FILE"", 0, 0] execVM ""USPS.sqf""; "; }; }; }; class Item51 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3286.6265,10.798703,2839.7874}; special="NONE"; id=237; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; class Item1 { position[]={3289.6274,10.788833,2834.7874}; special="NONE"; id=238; side="EAST"; vehicle="TK_Soldier_Sniper_EP1"; rank="SERGEANT"; skill=1; }; }; }; class Item52 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3180.8325,12.114154,3095.8181}; special="NONE"; id=239; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; class Item1 { position[]={3183.426,12.124363,3099.7839}; special="NONE"; id=240; side="EAST"; vehicle="TK_Soldier_Sniper_EP1"; rank="SERGEANT"; skill=1; }; }; }; class Item53 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3721.3857,12.133635,2706.3582}; special="NONE"; id=241; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; }; class Waypoints { items=1; class Item0 { position[]={3721.4438,12.133635,2710.2529}; type="GUARD"; combatMode="RED"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item54 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={3525.1099,8.5366306,2889.3201}; special="NONE"; id=242; side="EAST"; vehicle="TK_Soldier_SniperH_EP1"; leader=1; rank="SERGEANT"; skill=1; }; class Item1 { position[]={3525.1494,8.4383497,2888.9851}; special="NONE"; id=243; side="EAST"; vehicle="TK_Soldier_Sniper_EP1"; rank="SERGEANT"; skill=1; }; }; }; class Item55 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={3798.3096,6.9685216,2770.0828}; id=245; side="EAST"; vehicle="TK_Special_Forces_MG_EP1"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={3800.3096,7.3475704,2770.0828}; id=246; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={3802.3096,7.6032748,2770.0828}; id=247; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item3 { position[]={3804.3096,8.0823059,2770.0828}; id=248; side="EAST"; vehicle="TK_Special_Forces_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={3806.3096,7.8854837,2770.0828}; id=249; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={3808.3096,7.9365597,2770.0828}; id=250; side="EAST"; vehicle="TK_Special_Forces_EP1"; rank="CORPORAL"; skill=0.33333331; }; }; }; class Item56 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3794.9453,3.2529073,2768.8931}; id=244; side="EAST"; vehicle="TK_Special_Forces_TL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; }; class Waypoints { items=1; class Item0 { position[]={3796.5623,2.5721483,2769.7261}; id=16; type="SENTRY"; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item57 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={4414.1182,6.0607648,2627.0273}; id=251; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={4419.3735,6.1829085,2619.3208}; id=252; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={4421.3735,6.1154232,2619.3208}; id=253; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={4423.3735,6.0169334,2619.3208}; id=254; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={4425.3735,5.9184589,2619.3208}; id=255; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={4427.3735,5.8199701,2619.3208}; id=256; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={4429.3735,5.7214956,2619.3208}; id=257; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={4431.3735,5.6150656,2619.3208}; id=258; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={4433.3735,5.4509168,2619.3208}; id=259; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=11; class Item0 { position[]={4186.4536,3.0280356,2360.4336}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={4458.8618,4.0125341,2619.6045}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={4215.0181,7.1978636,2356.9502}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={4477.6719,3.8077312,2604.9736}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={4240.7959,6.186069,2337.4426}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={4492.3032,4.9201102,2586.8599}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={4185.0601,6.2581687,2381.3345}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={4444.9277,2.6421375,2637.7185}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={4230.3457,8.3803244,2350.6799}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={4459.5581,5.4597616,2600.7935}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={4216.4116,8.6226463,2375.7607}; visible=1; class Effects { }; showWP="NEVER"; }; }; }; class Item58 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={4139.3018,3.2094967,2382.4109}; id=260; side="EAST"; vehicle="TK_Soldier_SL_EP1"; leader=1; rank="LIEUTENANT"; skill=0.59999996; }; class Item1 { position[]={4144.5571,2.6302609,2374.7043}; id=261; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="SERGEANT"; skill=0.46666664; }; class Item2 { position[]={4146.5571,2.8741617,2374.7043}; id=262; side="EAST"; vehicle="TK_Soldier_AT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={4148.5571,3.2671371,2374.7043}; id=263; side="EAST"; vehicle="TK_Soldier_GL_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={4150.5571,3.657546,2374.7043}; id=264; side="EAST"; vehicle="TK_Soldier_MG_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={4152.5571,4.0410957,2374.7043}; id=265; side="EAST"; vehicle="TK_Soldier_LAT_EP1"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={4154.5571,4.4247036,2374.7043}; id=266; side="EAST"; vehicle="TK_Soldier_GL_EP1"; skill=0.2; }; class Item7 { position[]={4156.5571,4.5678563,2374.7043}; id=267; side="EAST"; vehicle="TK_Soldier_AAT_EP1"; skill=0.2; }; class Item8 { position[]={4158.5571,4.5702944,2374.7043}; id=268; side="EAST"; vehicle="TK_Soldier_AMG_EP1"; skill=0.2; }; }; class Waypoints { items=11; class Item0 { position[]={4394.7656,2.8472381,2676.0366}; visible=1; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={4117.481,4.7626486,2391.0884}; visible=1; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={4412.8799,2.9659622,2660.0127}; visible=1; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={4102.8501,7.2131925,2411.9893}; visible=1; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={4375.9546,3.5228162,2680.9136}; visible=1; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={4091.0061,10.583707,2429.4065}; visible=1; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={4349.4805,4.4830122,2690.667}; visible=1; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={4076.3757,13.429249,2446.1274}; visible=1; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={4328.5796,4.8674164,2701.8145}; visible=1; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={4061.0483,15.576691,2461.4546}; visible=1; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={4307.6787,4.649734,2718.5352}; visible=1; class Effects { }; showWP="NEVER"; }; }; }; }; class Vehicles { items=11; class Item0 { position[]={2408.3584,3.1129208,2924.9678}; azimut=-88.5746; id=0; side="EMPTY"; vehicle="UralReammo_TK_EP1"; skill=0.60000002; text="ft1"; }; class Item1 { position[]={2409.2979,2.8893476,2919.3672}; azimut=-88.5746; id=1; side="EMPTY"; vehicle="UralRepair_TK_EP1"; skill=0.60000002; text="ft2"; }; class Item2 { position[]={2716.416,2.6809387,2852.9026}; azimut=-270.43201; id=2; side="EMPTY"; vehicle="UralRepair_TK_EP1"; skill=0.60000002; text="sp1"; }; class Item3 { position[]={4586.1646,2.5620236,2041.2273}; azimut=35; id=153; side="EMPTY"; vehicle="USVehicleBox_EP1"; leader=1; skill=0.60000002; init="nul = [this] execVM ""crateFiller.sqf"""; }; class Item4 { position[]={4584.811,2.5388579,2039.281}; azimut=35; id=154; side="EMPTY"; vehicle="BAF_BasicWeapons"; leader=1; skill=0.60000002; }; class Item5 { position[]={4584.2642,2.5083778,2036.3826}; id=230; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; class Item6 { position[]={4585.4868,2.4966836,2034.8787}; id=231; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; class Item7 { position[]={4589.2183,2.5670552,2041.196}; id=232; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; class Item8 { position[]={4590.4399,2.5519712,2040.1931}; id=233; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; class Item9 { position[]={4586.2065,2.5230916,2037.3225}; id=234; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; class Item10 { position[]={4587.3979,2.5106773,2035.7551}; id=235; side="EMPTY"; vehicle="USBasicBag"; skill=0.60000002; }; }; class Markers { items=14; class Item0 { position[]={2411.208,2.9906046,2922.6104}; name="Obj1"; text=" Destroy support trucks"; type="mil_destroy"; }; class Item1 { position[]={2716.209,2.6809387,2852.2864}; name="Obj3"; text=" Destroy vehicle "; type="mil_destroy"; }; class Item2 { position[]={3196.9072,12.132318,3098.4263}; name="Obj4"; text="Kill Officer"; type="mil_destroy"; colorName="ColorRed"; }; class Item3 { position[]={2428.8486,2.1026754,3288.4202}; name="Ext"; text=" Extraction zone"; type="mil_pickup"; colorName="ColorBlack"; }; class Item4 { position[]={2430.374,2.1145048,3286.5764}; name="ExtractionZone"; markerType="ELLIPSE"; type="Empty"; colorName="ColorOrange"; a=40; b=40; }; class Item5 { position[]={2766.2983,15.712783,2828.3774}; name="Obj5"; text="Kill officer"; type="mil_destroy"; colorName="ColorRed"; }; class Item6 { position[]={3793.1467,2.5581601,2767.1604}; name="obj6"; text="Kill officer"; type="mil_destroy"; colorName="ColorRed"; }; class Item7 { position[]={2873.4507,3.9572494,3153.4211}; name="obj7"; text="Kill officer"; type="mil_destroy"; colorName="ColorRed"; }; class Item8 { position[]={4572.3066,0.66197824,1977.295}; name="respawn_west"; type="Empty"; }; class Item9 { position[]={3811.6829,0.7583859,3338.981}; name="boot_hill"; type="Empty"; }; class Item10 { position[]={3481.5847,5.4506669,2956.854}; name="center"; type="Empty"; }; class Item11 { position[]={4587.8628,1.9621786,2015.3766}; name="base"; text="base"; type="Empty"; }; class Item12 { position[]={1319.5403,0.58365726,6219.3477}; name="Obj2_1"; text="Kill Colonel"; type="hd_unknown"; }; class Item13 { position[]={3011.4451,8.4391556,3000.8765}; name="patrol8"; text="patrol8"; markerType="ELLIPSE"; type="Empty"; a=350; b=350; }; }; class Sensors { items=7; class Item0 { position[]={2398.8003,3.2216914,2926.4746}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive ft1 and !alive ft2"; expActiv="hint ""Support destroyed""; ""Obj1"" setMarkerColor ""colorGreen"";"; class Effects { }; }; class Item1 { position[]={3193.793,12.131593,3102.4478}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive bridge1"; expActiv="hint ""Officer Dead""; ""Obj4"" setMarkerColor ""colorGreen""; "; class Effects { }; }; class Item2 { position[]={2430.3516,2.1134419,3286.6848}; a=40; b=40; activationBy="ANY"; repeating=1; interruptable=1; age="UNKNOWN"; name="extractTrigger"; expCond="!alive ft1 and !alive ft2 and !alive lf1 and !alive sp1 and !alive bridge1 and !alive rad1 and !alive rad2 and !alive rad3 and ({lifeState _x == 'ALIVE'} count playableUnits == {_x in thisList} count playableUnits) && ({lifeState _x == 'ALIVE'} count playableUnits > 0)"; expActiv="nul = execVM ""missiondone.sqf"";"; class Effects { track="Ambient06_Khe_Sanh_Riff"; titleType="TEXT"; titleEffect="BLACK OUT"; title="Mission complete."; }; }; class Item3 { position[]={2765.1372,15.67786,2830.6309}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive rad1"; expActiv="hint ""officer dead""; ""Obj5"" setMarkerColor ""colorGreen""; "; class Effects { }; }; class Item4 { position[]={2725.6602,2.6809387,2853.7913}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive sp1"; expActiv="hint ""Vehicle destroyed""; ""Obj3"" setMarkerColor ""colorGreen"";"; class Effects { }; }; class Item5 { position[]={3797.3899,7.147274,2770.55}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive rad2"; expActiv="hint ""officer dead""; ""Obj6"" setMarkerColor ""colorGreen""; "; class Effects { }; }; class Item6 { position[]={2876.5786,3.9486914,3158.5823}; a=5; b=5; interruptable=1; age="UNKNOWN"; expCond="!alive rad3"; expActiv="hint ""officer dead""; ""Obj7"" setMarkerColor ""colorGreen""; "; class Effects { }; }; }; }; class Intro { addOns[]= { "plr_mana" }; addOnsAuto[]= { "plr_mana" }; randomSeed=14939964; class Intel { startWeather=0; forecastWeather=0; year=2006; month=6; day=6; hour=12; minute=0; }; }; class OutroWin { addOns[]= { "plr_mana" }; addOnsAuto[]= { "plr_mana" }; randomSeed=10762499; class Intel { startWeather=0; forecastWeather=0; year=2006; month=6; day=6; hour=12; minute=0; }; }; class OutroLoose { addOns[]= { "plr_mana" }; addOnsAuto[]= { "plr_mana" }; randomSeed=3254027; class Intel { startWeather=0; forecastWeather=0; year=2006; month=6; day=6; hour=12; minute=0; }; }; playMusic "Ambient06_Khe_Sanh_Riff"; titleText ["Mission complete, brilliant work", "BLACK OUT", 8]; sleep 25; endMission "END6";//respawnSpecial.sqf _name = _this select 0; _spawn1 = _this select 1; _spawn2 = _this select 2; if ((_name distance (getMarkerPos _spawn1)) < 600) then { _name moveINCargo Respawn_carrier; if (_name != player) then {unassignVehicle (vehicle _name); _name action ["EJECT", vehicle _name];}; }; if ((_name distance (getMarkerPos _spawn2)) < 20) then { if (isplayer _name) then {[_name] exec "ca\air2\halo\data\Scripts\HALO_getout.sqs"}; _name moveINCargo Respawn_chopper; if (!isplayer _name) then {unassignVehicle (vehicle _name); _name action ["EJECT", vehicle _name];}; }; if (true) exitWith {};// Spawn_chopperInit.sqf // July - norrin if (!isServer) exitWith {}; _chopper = _this select 0; _pos = getPos _chopper; _c = 0; _chopper setPos [_pos select 0, _pos select 1, 1000]; _chopper flyInHeight 1000; _chopper stop true; _chopper addEventHandler ["HandleDamage", {false}]; _pilot = driver _chopper; _pilot disAbleAI "MOVE"; while {true} do { _chopper setVelocity [0,0,0]; _chopper setVectorUp [0.001, 0.001, 1]; sleep 0.02; }; if (true) exitWith {}; /* CO & OA REVIVE SCRIPT SEPTEMBER 2010 - norrin (simonnsl@iprimus.com.au) Version: 0.49 ArmA2 ******************************************************************************************************* See release notes for details on contributors and instructions for incorporating revive scripts into your own missions ************************************************************************************ Start revive_init.sqf */ // ===================================================================================================================== // DO NOT MODIFY THIS CODE // ===================================================================================================================== // sickboy's code modified by _xeno T_INIT = false; T_Server = false; T_Client = false; T_JIP = false; T_MP = (if (playersNumber east + playersNumber west + playersNumber resistance + playersNumber civilian > 0) then {true} else {false}); if (isServer) then { T_Server = true; if (!isNull player) then {T_Client = true}; T_INIT = true; } else { T_Client = true; if (isNull player) then { T_JIP = true; [] spawn {waitUntil {!isNull player};T_INIT = true}; } else { T_INIT = true; }; }; waitUntil {T_INIT}; // ===================================================================================================================== // THE FOLLOWING CODE CAN BE MODIFIED // ===================================================================================================================== // GENERAL REVIVE OPTIONS (Off = 0, On = 1) _mission_end_function = 0; //array no.0 - mission ends when all players are unconscious _call_out_function = 1; //array no.6 - whether a unit calls out while unconscious _water_dialog = 1; //array no.45 - whether a dialog appears when a unit dies in water so that it can auto wash ashore _unconscious_drag = 1; //array no.39 - whether a unit can drag the bodies of unconscious players _load_wounded = 1; //array no.61 - allows you to load unconscious units on vehicles _altUnc_animation = 1; //array no.54 - use alternate revive animation _JIP_spawn_dialog = 0; //array no.2 - whether a dialog appears when a player JIP so that he can be transported to a spawn point near the action _time_b4_JIP_spawn_dialog = 10000; //array no.17 - time before the respawn dialog appears for JIP players _perpetual_server = 0; //array no.62 - NOT IMPLEMENTED _ACE_mod = 0; //array no.102 - NOT IMPLEMENTED - Currently a place holder for possible future functionality // ================================================================== // LIST OF PLAYABLE UNITS //NORRN_player_units = playableUNits; NORRN_player_units = [s1,s2,s3,s4,s5,s6,s7,s8,s9,s10]; // ================================================================== // WELCOME SCREEN //titleText ["Joining the Revive Test Mission\n\n(Make sure you check the mission notes for details on how the scripts work\nand the revive_readMe in the attached pdf file for the full notes on implementing \nthe scripts in your own missions and the options available)", "BLACK FADED", 0.6]; // This next line can be commented out or removed if it interferes with intro movies // ================================================================== // REVIVE OPTIONS _max_respawns = 3; //array no.38 - Number of lives per unit _JIP_respawns = [2,30]; //array no.63 - 0 - off or the number of lives players receive when they join in progress , JIP time after the mission starts _revive_timer = 1; //array no.7 - Whether you want to limit the amount of timer a player has while unconscious _revive_time_limit = 300; //array no.27 - Amount of time a player remains unconscious before respawning or dying _revive_damage = 0; //array no.37 - Unit's level of damage following revive _unconscious_markers = 1; //array no. 4 - Whether a marker appears on the game map at the location of the unconscious unit _caseVAC = [1, ["MASH","HMMWV_Base"]]; //array no.64 - Allows units to be taken to a hospital etc to be revived _mediVAC = []; //array no.65 - NOT IMPLEMENTED _chance_ofDeath = [0,0]; //array no.66 - Two parameters in the array the first switches off/on (0/1) chance of death when shot, increases dues to hit location and number of times revived and the second parameter switches on/off the decreasing respawn timer based on how many times you have been revived, if using set respawn-time to at least 300 seconds. _dualTimer = 0; //array no.67 - NOT IMPLEMENTED - normal units can only revive for eg 30 seconds whereas medics can heal players up to 120 secs - array - [0/1 - off/on, revive timer for normal unit, timer for medic] _deadSpectator_cam = 1; //array no.92 - leave as 0 - whether a unit can spectate other friendly units when it has run out of lives // ================================================================== // RESPAWN OPTIONS _no_respawn_points = 1; //array no.12 - no of respawn points (Max number 4) _Base_1 = "base"; //array no.13 - spawn position names _Base_2 = ""; //array no.14 _Base_3 = ""; //array no.15 _Base_4 = ""; //array no.16 _Base_free_respawn = [1,1,0,0]; //array no.36 - select whether to allow respawning at spawn points even if enemy troops are present (options OFF = 0, ON = 1) _respawn_at_base_addWeapons = 0; //array no.11 - unit respawns with weapons it commenced the mission with _respawn_at_base_magazines = []; //array no.34 - If using the respawn_at_base_addWeapons option then place the magazine and weapon _respawn_at_base_weapons = []; //array no.35 types in the following arrays, if left blank respawns with weapons from mission start _respawn_position = 2; //array no.28 - 0 - respawn at base_1; 1 - the closest enemy free respawn point; 2 - players choice; and 3 - dies _respawnAtBaseWait = [0,0]; //array no.68 - Two parameters: 1st if = 1 makes players that respawn at base wait for (parameter 2) seconds before being able to see surroundings _objectiveBasedRP = []; //array no.69 - NOT IMPLEMENTED // Mobile Spawn Settings _mobile_spawn = 0; //array no.51 - set to 1 if you want to use mobile spawn //_mobile_base_start = "Insertion"; //array no.52 - NO LONGER NEEDED, REDUNDANT VARIABLE _mobile_base2_start = ""; //array no.70 - NOT IMPLEMENTED _mobile_type = 0; //array no.60 - set as 0 - for vehicle and 1 for man _mobile_man = objnull; //array no.53 - place name of unit here or if not used make sure set as objNull _mobile_man2 = objNull; //array no.71 - NOT IMPLEMENTED // ================================================================== // UNITS THAT CAN REVIVE/UNITS THAT CAN BE REVIVED _can_revive = "soldierWB"; //array no.18 _can_revive_2 = ""; //array no.19 _can_revive_3 = ""; //array no.72 - NOT IMPLEMENTED _can_revive_4 = ""; //array no.73 - NOT IMPLEMENTED _can_be_revived = "soldierWB"; //array no.20 _can_be_revived_2 = ""; //array no.21 _can_be_revived_3 = ""; //array no.74 - NOT IMPLEMENTED _can_be_revived_4 = ""; //array no.75 - NOT IMPLEMENTED _medic_1 = "USMC_Soldier_Medic"; //array no.76 - Used in conjunction with medpacks and bleeding _medic_2 = ""; //array no.77 - Used in conjunction with medpacks and bleeding _medic_3 = ""; //array no.78 - NOT IMPLEMENTED _medic_4 = ""; //array no.79 - NOT IMPLEMENTED //======================================================== // MEDPACK AND BLEEDING OPTIONS _medpacks = 0; //array no.80 - Whether you want to give the units a limited number of revive kits 0/1 - no/yes _stabilisation = 0; //array no.81 - NOT IMPLEMENTED _bleeding = 1; //array no.82 - Make units bleed and require bandages _medic_medpacks = 5; //array no.83 - No of medpacks for units specified in the _medic variables - they are required for reviving units _unit_medpacks = 3; //array no.84 - No of medpacks for units specified in the _can_revive variables - they are required for reviving units _medic_bandages = 5; //array no.85 - Bandages stop bleeding _unit_bandages = 3; //array no.86 - _medic_stable = 0; //array no.100 - NOT IMPLEMENTED _unit_stable = 0; //array no.101 - NOT IMPLEMENTED _stabTime_tillDeath = 0; //array no.87 - NOT IMPLEMENTED //Time until death following revive without stabilisation // ================================================================== // ENEMY SIDE TO PLAYABLE UNITS _no_enemy_sides = 1; //array no.22 - No of Enemy sides (0, 1 or 2). _enemy_side_1 = "EAST"; //array no.23 - Enemy sides can be "EAST", "WEST", "GUER" etc _enemy_side_2 = ""; //array no.24 _enemy_side_3 = ""; //array no.88 - NOT IMPLEMENTED _enemy_side_4 = ""; //array no.89 - NOT IMPLEMENTED // ================================================================== // FRIENDLY SIDE TO PLAYABLE UNITS _allied_side_1 = "WEST"; //array no.42 - Friendly sides can be "EAST", "WEST","RESISTANCE" etc. _allied_side_2 = "WEST"; //array no.43 - If all players are from the same side make sure you set the same side for both variables eg "WEST", "WEST" _allied_side_3 = ""; //array no.90 - NOT IMPLEMENTED _allied_side_4 = ""; //array no.91 - NOT IMPLEMENTED // ================================================================== // UNCONSCIOUS CAMERA OPTIONS _follow_cam = 1; //array no.5 - option to allow viewing of friendly units while unconscious _follow_cam_distance = 250; //array no.32 - the range that unconscious players can spectate friendly units _follow_cam_team = 0; //array no.44 - set to 1 if you wish unconscious players only to spectate players within NORRN_player_units array _top_view_height = 70; //array no.55 - allows you to set the top down camera height _visible_timer = 1; //array no.41 - view a cound-down timer while unconscious _unconscious_music = 0; //array no.46 - music must appear as unc_theme in music.hpp // ================================================================== // RESPAWN DIALOG OPTIONS _nearest_teammate_dialog = 0; //array no.3 - whether a respawn dialog appears when there are no players within this distance _all_dead_dialog = 0; //array no.1 - whether a respawn dialog appears when all players are unconscious (_all_dead_player = 1) _respawn_button_timer = 0; //array no.25 - Time until respawn button appears (0 = approx. 12 seconds), NB: Set to a high number like 100000 seconds if you do not want _distance_to_friend = 250; //array no.26 - If the closest friendly unit is further than this distance away trigger respawn dialog _all_dead_player = 0; //array no.56 _all_dead_distance = 10000; //array no.57 - whether a respawn dialog appears when all players within a specified distance are unconscious (_all_dead_player = 1) // ================================================================== // Bonus life for aiding team mates function _reward_function = 1; //array no.96 - specify whether a unit receives bonus lives for reviving other players _revives_required = 1; //array no.97 - Number of revives required before recieving a bonus life // ================================================================== // Team kill function _team_kill_function = 1; //array no.98 - specify whether a unit loses a life for killing team mates _no_team_kills = 1; //array no.99 - Number of teamkills before punishment // ================================================================== // CONFIGURABLE OPTIONS FOR HEAL YOURSELF FUNCTION _heal_yourself = 1; //array no.8 - whether a unit can heal damage to itself _no_of_heals = 1; //array no.29 - Number of heals that each player gets during a mission _lower_bound_heal = 0.1; //array no.30 - The damage level range between which the heal action becomes available _upper_bound_heal = 0.8; //array no.31 // ================================================================== // AI REVIVE BEHAVIOUR OPTIONS _goto_revive = 0; //array no. 9 - closest AI automatically moves to revive a downed team mate _AI_smoke = 0; //array no. 40 - if available reviving AI throws smoke on downed AI position _AI_aware = 1; //array no. 49 - AI will clear an enemy units it is aware of before auto reviving _AI_cover = 1; //array no. 50 - second AI unit moves with AI reviver to give cover _AI_dismount = 0; //array no. 58 - toggles ability of reviving AI units to dismount vehicles (1 = dismount) _call_for_AI_help = 1; //array no. 59 - allows AI units to call for help _goto_revive_distance = 500; //array no. 33 - distance AI units will move to revive a downed team mate // ================================================================== // OPTIONS FOR PLAYER'S DEAD BODIES AND EQUIPMENT - Additional revive functions with many thanks to alef (0 - off, 1 - on except for _bury_timeout) _drop_weapons = 0; //array no.93 - should the respawned player drop his weapons where he died? _cadaver = 0; //array no.94 - should the respawned player's body remain there? _bury_timeout = 12; //array no.95 - if drop weapons OR player body, how long before the body is buried? // 0=maximum (1200s) , n=seconds up to 1200s (hard coded) // ================================================================== // USER CODE - eg. NORRNCustonexec1="execvm ""myscript.sqf"";hint ""myoutput"";" NORRNCustomExec1 =""; // Exec1 occurs following being revived NORRNCustomExec2 =""; // Exec2 occurs when you team kill NORRNCustomExec3 =""; // Exec3 occurs when you spawn at base NORRNCustomExec4 =""; // Exec4 occurs when you try and spawn at base but it is still occupied NORRNCustomExec5 =""; // Must use variables: MAP_r_rejoin (false - first time, // true - rejoining the server, and // MAP_r_no_lives - number of lives if you rejoin server) // ===================================================================================================================== // DO NOT MODIFY THE FOLLOWING CODE // ===================================================================================================================== NORRN_revive_array = []; NORRN_revive_array = [_mission_end_function,_all_dead_dialog,_JIP_spawn_dialog,_nearest_teammate_dialog,_unconscious_markers,_follow_cam,_call_out_function,_revive_timer, _heal_yourself,_goto_revive,_unconscious_invincibility,_respawn_at_base_addWeapons,_no_respawn_points,_Base_1,_Base_2,_Base_3,_Base_4,_time_b4_JIP_spawn_dialog, _can_revive,_can_revive_2,_can_be_revived,_can_be_revived_2,_no_enemy_sides,_enemy_side_1,_enemy_side_2,_respawn_button_timer,_distance_to_friend, _revive_time_limit,_respawn_position,_no_of_heals,_lower_bound_heal,_upper_bound_heal,_follow_cam_distance,_goto_revive_distance,_respawn_at_base_magazines, _respawn_at_base_weapons, _Base_free_respawn, _revive_damage, _max_respawns, _unconscious_drag,_AI_smoke,_visible_timer,_allied_side_1,_allied_side_2,_follow_cam_team, _water_dialog, _unconscious_music, _enemy_units_1, _enemy_units_2, _AI_aware,_AI_cover,_mobile_spawn,_mobile_base_start,_mobile_man,_altUnc_animation,_top_view_height, _all_dead_player,_all_dead_distance,_AI_dismount,_call_for_AI_help,_mobile_type,_load_wounded,_perpetual_server,_JIP_respawns,_caseVAC,_mediVAC,_chance_ofDeath,_dualTimer, _respawnAtBaseWait,_objectiveBasedRP,_mobile_base2_start,_mobile_man2,_can_revive_3,_can_revive_4,_can_be_revived_3,_can_be_revived_4,_medic_1,_medic_2,_medic_3,_medic_4, _medpacks,_stabilisation,_bleeding,_medic_medpacks,_unit_medpacks,_medic_bandages,_unit_bandages,_stabTime_tillDeath,_enemy_side_3,_enemy_side_4, _allied_side_3,_allied_side_4,_deadSpectator_cam,_drop_weapons,_cadaver,_bury_timeout,_reward_function,_revives_required,_team_kill_function,_no_team_kills,_medic_stable, _unit_stable, _ACE_mod]; // start related revive functions [] execVM "revive_sqf\init_related_scripts.sqf"; if (true) exitWith {}; //Last edited 17/08/09 //if (_name == player) then {[_name] execVM 'revive_sqf\rPrn.sqf'} /* DEAD SPECTATE SCRIPT Upon the player falling dead creates a camera that follows the nearest alive friendly unit JULY 2009 - norrin ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target","_me"]; //define variables _Object = _this select 0; _pos = _this select 1; _foo = []; _allUnits = []; _alive_friends = []; _destroy = false; _switch = false; _c = 0; NORRN_FOCUS_CAM_ON = 0; NORRN_REVIVE_CAM_TYPE = 0; NORRN_CAM_NVG = false; NORRNAllUnits = []; _boot_hill = getMarkerPos "Boot_hill"; _respawn_mrkr = NORRN_respawn_mrkr; _top_view_height = NORRN_revive_array select 55; _r_dialog_0 = ""; _r_display = ""; showcinemaborder false; //set camera to target body _camx = _pos select 0; _camy = _pos select 1; _camz = _pos select 2; NORRN_REVIVE_cam = "camera" CamCreate [_camx,_camy+5,_camz+1]; NORRN_REVIVE_cam CamSetTarget object; NORRN_REVIVE_cam CameraEffect ["INTERNAL","Back"]; NORRN_REVIVE_cam CamCommit 2; hint ""; //setVars for free camera _angh = 0; _angv = 45; _allUnits = allUnits; {if (side _x != sideLogic && (_x distance _boot_hill) > 100 && (_x distance _respawn_mrkr) > 100 && alive _x) then {_alive_friends = _alive_friends + [_x]}} forEach _allUnits; COUNT_CAM_friends = count _alive_friends; //create dialog and initialise keyboard; _r_dialog_0 = createDialog "dead_cam_dialog"; _r_display = findDisplay 99128; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; titletext [" ","BLACK IN",1]; CAM_KEY_pressed = compile preprocessfile "revive_sqf\CAM_KEY_pressed.sqf"; //change camera via dialog lbClear 10004; _index = lbAdd[10004, "3rd Person"]; _index = lbAdd[10004, "Top Down"]; _index = lbAdd[10004, "Front Side"]; _index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; lbSetCurSel [10004, 0]; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _alive_friends; lbSetCurSel [10005, 0]; while {!_destroy} do { scopeName "FollowCam_01"; if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (_c == 400) then {_c = 0}; if (_c == 0) then { _allUnits = allUnits; _new_friends = []; {if (side _x != sideLogic && (_x distance _boot_hill) > 100 && (_x distance _respawn_mrkr) > 100 && alive _x) then {_new_friends = _new_friends + [_x]}} forEach _allUnits; if (count _new_friends != COUNT_CAM_friends) then {_alive_friends = _new_friends; COUNT_CAM_friends = count _new_friends}; _camera_friends = _alive_friends; _c = 0; }; //change target via dialog lbClear 10005; {if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends; lbSetCurSel [10005, lbCurSel 10005]; if (dialog) then { NORRN_REVIVE_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = (lbCurSel 10005); _unit = _camera_friends select NORRN_FOCUS_CAM_ON; _target = vehicle _unit; }; if (!dialog) then {if (!isNull _me) then {_target = _me; NORRN_REVIVE_cam camsettarget _target;NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_REVIVE_cam camcommit 1};}; switch (NORRN_REVIVE_CAM_TYPE) do { case 0: {_target switchCamera "EXTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"];}; case 1: {NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [0, -2, _top_view_height];NORRN_REVIVE_cam camcommit 0.01}; case 2: {NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_REVIVE_cam camSetFov 1.1; NORRN_REVIVE_cam camcommit 0.01}; case 3: {_target switchCamera "INTERNAL";NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]}; }; //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 if (NORRN_REVIVE_CAM_TYPE == 4) then { NORRN_REVIVE_cam camsettarget _target; NORRN_REVIVE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_REVIVE_cam camSetPos _free_pos; NORRN_REVIVE_cam camCommit 0.01; }; //======================================================================================== _c = _c + 1; sleep 0.02; }; //destroy camera if (_destroy || _destroy2) exitWith { if (_destroy) then { sleep 0; }; camUseNVG false; closeDialog 4; closeDialog 3; closeDialog 2; closeDialog 1; closeDialog 0; if (_unc_music == 1) then {playMusic ""}; if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; deleteVehicle _Object; }; //Last edited 19/07/09/* CAMERA_FOLLOW SCRIPT Upon the player falling unconcious creates a camera that follows the nearest alive friendly unit OCTOBER 2010 - norrin Originally converted by xeno to SQF ************************************************************************************************************************** Start camera_follow.sqf */ disableserialization; private ["_alive_friends","_all_dead_dialog","_allUnits","_c","_camera_friends","_Camera_target","_camx","_camy","_camz","_can_be_revived","_can_be_revived_2","_d","_destroy","_destroy2","_dialog_1","_dialog_2","_display","_distance_to_friend","_e","_f","_follow_cam","_follow_cam_distance","_foo","_friends","_index","_index_friends","_max_box","_name_player","_nearest_friend","_nearest_teammate_dialog","_no_respawn_points","_Object","_pos","_respawn_button_timer","_show_respawn_time","_target"]; //define variables _Object = _this select 0; _pos = _this select 1; _name_player = name player; _c = 0; _d = 0; _alive_friends = []; _destroy = false; _destroy2 = false; _switch = false; NORRN_FOCUS_CAM_ON = 0; NORRN_REVIVE_CAM_TYPE = 0; NORRN_CAM_NVG = false; Norrn_helper_list = []; all_dead_check = false; _dialog_fade = Norrn_DialogBlink; _oldtarget = objNull; _oldCam = -1; _blackOut = 0; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; _all_dead_dialog = NORRN_revive_array select 1; _nearest_teammate_dialog = NORRN_revive_array select 3; _follow_cam = NORRN_revive_array select 5; _goto_revive = NORRN_revive_array select 9; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _respawn_button_timer = NORRN_revive_array select 25; _distance_to_friend = NORRN_revive_array select 26; _respawn_position = NORRN_revive_array select 28; _follow_cam_distance = NORRN_revive_array select 32; _max_respawns = NORRN_revive_array select 38; _ally_side_1 = NORRN_revive_array select 42; _ally_side_2 = NORRN_revive_array select 43; _follow_cam_team = NORRN_revive_array select 44; _unc_music = NORRN_revive_array select 46; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _QG_animation = NORRN_revive_array select 54; _top_view_height = NORRN_revive_array select 55; _all_dead_player = NORRN_revive_array select 56; _all_dead_distance = NORRN_revive_array select 57; _r_dialog_0 = ""; _r_dialog_1 = ""; _r_dialog_2 = ""; _r_dialog_3 = ""; _r_dialog_4 = ""; _r_display = ""; _ally_side_1 = call compile format ["%1", _ally_side_1]; _ally_side_2 = call compile format ["%1", _ally_side_2]; if (_mobile_spawn == 1) then { if(!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; }; _show_respawn_time = time + _respawn_button_timer; showcinemaborder false; //Play song if (_unc_music == 1) then {playMusic "unc_theme"}; NORRN_REVIVE_cam = "camera" CamCreate (getPos _object); NORRN_REVIVE_cam CamSetTarget _object; NORRN_REVIVE_cam CameraEffect ["INTERNAL","Back"]; NORRN_REVIVE_cam CamCommit 0.1; //Added for Gonk if (_follow_cam == 0) then {_d = 1000}; //Check for all dead if (_all_dead_dialog == 1) then { _f = 0; _e = 0; if(_all_dead_player == 0)then { {call compile format ["if(!isNull %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(!isNull %1 && (%1 getVariable 'NORRN_unconscious') ||!isNull %1 && (_Object distance %1) > _all_dead_distance)then {_e = _e + 1}", _x]}forEach NORRN_player_units; }else{ {call compile format ["if(isplayer %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(isplayer %1 && (%1 getVariable 'NORRN_unconscious'))then {_e = _e + 1}", _x]}forEach NORRN_player_units; }; if (_e == _f && _d == 0) then {all_dead_check = true}; }; titleText ["", "BLACK FADED", 1]; hint ""; titleText ["You are unconscious and waiting to be revived", "BLACK FADED", 0.5]; sleep 4; waitUntil{!isNull unconscious_body || !(player getVariable "NORRN_unconscious")}; if (!(player getVariable "NORRN_unconscious")) then {_destroy = true}; //setVars for free camera _angh = 0; _angv = 0; if (!_destroy) then { //set view on unconscious body NORRN_REVIVE_cam CamSetTarget unconscious_body; if (_follow_cam == 0) then {NORRN_REVIVE_cam switchCamera "INTERNAL"} else {NORRN_REVIVE_cam switchCamera "EXTERNAL"}; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; _NORRN_west = []; {call compile format ["if (!isNull %1) then {_NORRN_west = _NORRN_west + [%1]}", _x]} forEach NORRN_player_units; _foo = []; _foo = _foo + [unconscious_body]; _friends = nearestObjects [unconscious_body, ["CAManBase","AIR","SHIP","LandVehicle"],_follow_cam_distance]; _friends = allUnits; {if ((vehicle _x) isKindOf "AIR" || (vehicle _x) isKindOf "SHIP" || (vehicle _x) isKindOf "LandVehicle") then {if (count (crew _x) == 0) then {_friends = _friends - [_x]}}} forEach _friends; {if (side _x == playerSide && (_x distance unconscious_body) < _follow_cam_distance && alive _x && _x in _NORRN_west && !(_x getVariable "NORRN_unconscious") && !(_x getVariable "NORRN_dead")) then {_foo = _foo + [_x]}}forEach _friends; _alive_friends = _foo; COUNT_CAM_friends = count _alive_friends; _camera_friends = _alive_friends; if (_follow_cam == 1) then { //create dialog and initialise keyboard; _r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; CAM_KEY_pressed = compile preprocessfile "revive_sqf\CAM_KEY_pressed.sqf"; } else { //create dialog and initialise keyboard; _r_dialog_0 = createDialog "rev_cam_dialog_blank"; _r_display = findDisplay 99993; _r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; CAM_KEY_pressed = compile preprocessfile "revive_sqf\CAM_KEY_pressed.sqf"; }; //setVars for free camera _angh = getDir unconscious_body; _angv = 45; sleep 0.5; titlecut ["","BLACK IN",1]; }; while {!_destroy} do { scopeName "FollowCam_01"; //create respawn button _e = 0; _f = 0; if (isNull unconscious_body || !alive unconscious_body) then {_destroy = true;breakOut "FollowCam_01";}; if (!(player getVariable "NORRN_unconscious")) then {_destroy = true; breakOut "FollowCam_01"}; if (mission_Over) then {sleep 5; _destroy = true;breakOut "FollowCam_01";}; if (!alive player) then {titleText ["","BLACK FADED",10];_destroy2 = true;breakOut "FollowCam_01";}; //fix for changing dialogs _cam_angle = lbCurSel 10004; _cam_focus = lbCurSel 10005; if (_all_dead_dialog == 1) then { if(_all_dead_player == 0)then { {call compile format ["if(!isNull %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(!isNull %1 && (%1 getVariable 'NORRN_unconscious') ||!isNull %1 && (_Object distance %1) > _all_dead_distance)then {_e = _e + 1}", _x]}forEach NORRN_player_units; }else{ {call compile format ["if(isplayer %1) then {_f = _f + 1}", _x]} forEach NORRN_player_units; {call compile format ["if(isplayer %1 && (%1 getVariable 'NORRN_unconscious'))then {_e = _e + 1}", _x]}forEach NORRN_player_units; }; if (_e == _f && !NORRN_r_time_expire) then {all_dead_check = true}; }; //modified for nearest friend dialog bug - now triggers if no players within specified distance can revive downed unit _NORRN_west = []; {call compile format ["if (!isNull %1 && player != %1) then {_NORRN_west = _NORRN_west + [%1]}", _x]} forEach NORRN_player_units; _nearest_friend = 1; {if ((unconscious_body distance _x) <= _distance_to_friend) then {_nearest_friend = _nearest_friend + 1}}forEach _NORRN_west; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; if (_d == 0 && _dialog_fade != Norrn_DialogBlink && !NORRN_r_time_expire) then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; _r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]; _dialog_fade = Norrn_DialogBlink; }; if (time >= _show_respawn_time && _d == 0 && !NORRN_r_time_expire || _nearest_teammate_dialog == 1 && _nearest_friend == 1 && _d == 0 && !NORRN_r_time_expire || time >= _show_respawn_time && !NORRN_r_time_expire && _dialog_fade != Norrn_DialogBlink || _nearest_teammate_dialog == 1 && _nearest_friend == 1 && !NORRN_r_time_expire && _dialog_fade != Norrn_DialogBlink) then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; _d = 1; switch (_no_respawn_points) do { case 0: {_r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; _dialog_fade = Norrn_DialogBlink; }; if (NORRN_r_time_expire && _d < 2 || _all_dead_dialog == 1 && all_dead_check && _d < 2 && !NORRN_r_time_expire || NORRN_r_time_expire && _d == 1000 && _respawn_position == 2) then { unconscious_body setVariable ["NORRN_AIunconscious", false, true]; if (_all_dead_dialog == 1 && all_dead_check && _d < 2 || _d == 1000) then { unconscious_body switchMove "Deadstate"; norrnRDead = unconscious_body; publicVariable "norrnRDead"; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", player]}; if (_d == 1000) then { titleText ["\n\n\n\n\n\n\n\n\n\nRevive timer has been exceeded. Choose a marker for respawn", "BLACK FADED", 10]; } else { titleText ["\n\n\n\n\n\n\n\n\n\nAll players are unconscious. Choose a marker for respawn", "BLACK FADED", 10]; }; NORRN_r_time_expire = true; }; if (!isNull unconscious_body) then {NORRN_FOCUS_CAM_ON = 0; unconscious_body switchCamera "EXTERNAL"}; sleep 2; closedialog 0; switch (_no_respawn_points) do { case 1: {_dialog_5 = createDialog "respawn_button_1map"}; case 2: {_dialog_5 = createDialog "respawn_button_2map"}; case 3: {_dialog_5 = createDialog "respawn_button_3map"}; case 4: {_dialog_5 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; _d = 2; }; if (_mobile_spawn == 1 && NORRN_r_time_expire && NORRN_camo_net && !norrn_button_update || _mobile_spawn == 1 && NORRN_r_time_expire && !NORRN_camo_net && norrn_button_update) then { closedialog 0; waitUntil {!dialog}; switch (_no_respawn_points) do { case 1: {_dialog_5 = createDialog "respawn_button_1map"}; case 2: {_dialog_5 = createDialog "respawn_button_2map"}; case 3: {_dialog_5 = createDialog "respawn_button_3map"}; case 4: {_dialog_5 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; NORRN_OK_diag_off = true; }; if (_mobile_spawn == 1 && NORRN_camo_net && _d == 1 && !norrn_button_update && !NORRN_r_time_expire|| _mobile_spawn == 1 && !NORRN_camo_net && _d == 1 && norrn_button_update && !NORRN_r_time_expire)then { _switch = true; closedialog 0; _r_display closedisplay 10004; _r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 0: {_r_dialog_0 = createDialog "rev_cam_dialog"; _r_display = findDisplay 99123;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (!NORRN_camo_net) then {norrn_button_update = false} else {norrn_button_update = true}; }; {if (alive _x) then {if (name _x == "Error: No unit") then {COUNT_CAM_friends = COUNT_CAM_friends - 50}}}forEach _camera_friends; if (_c == 0 ) then { _foo = []; _allUnits = []; _friends = allUnits; {if ((vehicle _x) isKindOf "AIR" || (vehicle _x) isKindOf "SHIP" || (vehicle _x) isKindOf "LandVehicle") then {if (count (crew _x) == 0) then {_friends = _friends - [_x]}}} forEach _friends; _foo = _foo + [unconscious_body]; if (_follow_cam_team == 0) then { {if ((_x distance unconscious_body) < _follow_cam_distance && (side _x) == _ally_side_1 && alive _x && !(_x getVariable "NORRN_unconscious") && !(_x getVariable "NORRN_dead") || (_x distance unconscious_body) < _follow_cam_distance && (side _x) == _ally_side_2 && alive _x && !(_x getVariable "NORRN_unconscious") && !(_x getVariable "NORRN_dead")) then {_foo = _foo + [_x]}}forEach _friends; }else { {if (alive _x && (unconscious_body distance _x) <= _follow_cam_distance && !(_x getVariable "NORRN_unconscious") && !(_x getVariable "NORRN_dead")) then {_foo = _foo + [_x]}}forEach _NORRN_west; }; if (count _foo != COUNT_CAM_friends) then {_alive_friends = _foo; COUNT_CAM_friends = count _alive_friends}; _camera_friends = _alive_friends; }; while {!alive _target} do { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON - 1; _target = vehicle (_alive_friends select NORRN_FOCUS_CAM_ON); lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; sleep 0.01; }; //change camera via dialog lbClear 10004; if (_follow_cam == 1) then { _index = lbAdd[10004, "3rd Person"]; _index = lbAdd[10004, "Top Down"]; _index = lbAdd[10004, "Front Side"]; _index = lbAdd[10004, "1st Person"]; _index = lbAdd[10004, "Follow/Free"]; }else{ _index = lbAdd[10004, "Follow"]; }; //change target via dialog lbClear 10005; //_index_friends = lbAdd[10005, _name_player]; if (_follow_cam == 1) then {{if (alive _x) then {_index_friends = lbAdd[10005, name _x]}} forEach _camera_friends;}; //fix for changing dialogs 130209 if (!_switch) then { lbSetCurSel [10004, lbCurSel 10004]; lbSetCurSel [10005, lbCurSel 10005]; }else { lbSetCurSel [10004, _cam_angle]; lbSetCurSel [10005, _cam_focus]; _switch = false; }; NORRN_REVIVE_CAM_TYPE = lbCurSel 10004; NORRN_FOCUS_CAM_ON = lbCurSel 10005; if (_follow_cam == 0) then { //if (!dialog) then {_r_dialog_0 = createDialog "rev_cam_dialog_blank"}; vehicle unconscious_body switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; if (_blackOut == 500) then { titleText ["", "BLACK", 1]; sleep (0.2 + (random 0.6)); titleText ["", "BLACK IN", 1]; _blackOut = -1; }; _blackOut = _blackOut + 1; }; if (_follow_cam == 1) then { if (!dialog) then {if (!isNull unconscious_body) then {_target = unconscious_body; NORRN_REVIVE_cam camsettarget _target;NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-3, +1, (_max_box select 2) +1];NORRN_REVIVE_cam camcommit 1};}; if (dialog && !all_dead_check && !NORRN_r_time_expire) then {_target = vehicle(_alive_friends select NORRN_FOCUS_CAM_ON)}; switch (NORRN_REVIVE_CAM_TYPE) do { case 0: {if (_target != _oldTarget || NORRN_REVIVE_CAM_TYPE != _oldCam) then {_oldTarget = _target; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {unconscious_body switchCamera "EXTERNAL";} else {_target switchCamera "EXTERNAL"};NORRN_REVIVE_cam CameraEffect ["Terminate","Back"];}}; case 1: {if (_target == player) then {NORRN_REVIVE_cam camsettarget unconscious_body;} else {NORRN_REVIVE_cam camsettarget _target}; _oldCam = NORRN_REVIVE_CAM_TYPE; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [0, -2, OFPEC_range_to_unit];NORRN_REVIVE_cam camcommit 0.005}; case 2: {if (_target == player) then {NORRN_REVIVE_cam camsettarget unconscious_body;} else {NORRN_REVIVE_cam camsettarget _target}; _oldCam = NORRN_REVIVE_CAM_TYPE; NORRN_REVIVE_cam cameraeffect ["internal", "back"];NORRN_REVIVE_cam camsetrelpos [-1.5, 3, 0.2];NORRN_REVIVE_cam camSetFov 1.1; NORRN_REVIVE_cam camcommit 0.005}; case 3: {if (_target != _oldTarget || NORRN_REVIVE_CAM_TYPE != _oldCam) then {_oldTarget = _target; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {unconscious_body switchCamera "INTERNAL";} else {_target switchCamera "INTERNAL"};NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]}}; }; }; _c = _c + 1; if (_c == 400) then {_c = 0}; //======================================================================================== //Add new dialog information if (dialog && !NORRN_r_time_expire || dialog && _all_dead_dialog == 1 && !all_dead_check && !NORRN_r_time_expire) then { if (_follow_cam == 1) then { _cam_hint0 = ""; _lives = _max_respawns - (player getVariable "NORRN_lives_used"); _cam_hint0 = format ["Lives remaining: %1", _lives]; ctrlSetText [10, _cam_hint0]; _target = _alive_friends select (lbCurSel 10005); _follow_unit = ""; if (NORRN_FOCUS_CAM_ON == 0) then { _follow_unit = name player; }else { if (alive _target) then {_follow_unit = name _target}; }; _cam_hint1 = format ["Camera following: %1", _follow_unit]; ctrlSetText [11, _cam_hint1]; _unit_distance = round (unconscious_body distance _target); _cam_hint2 = format ["Distance to camera: %1 m", _unit_distance]; ctrlSetText [12, _cam_hint2]; ctrlSetText [13, "The following units have been"]; ctrlSetText [14, "notified that you need help:"]; _cam_hint5 = ""; _list_helper = []; {if (!isNull _x && alive _x) then {_list_helper = _list_helper + [(name _x)]}}forEach Norrn_helper_list; if ((count _list_helper) == 0) then {_cam_hint5 = "None"} else {_cam_hint5 = format ["%1", _list_helper]}; ctrlSetText [15, _cam_hint5]; _cam_hint6 = ""; _rev = objNull; _rev = player getVariable "NORRN_AIReviver"; if (_goto_revive == 0 && (count Norrn_helper_list) > 0) then {_rev = Norrn_helper_list select 0}; if (_goto_revive == 1 && (count Norrn_helper_list) > 0) then { if (((Norrn_helper_list select 0) distance unconscious_body) < (_rev distance unconscious_body)) then {_rev = (Norrn_helper_list select 0)}; }; if (isNull _rev || !alive _rev) then {_cam_hint6 = "Current reviver: None"} else {_cam_hint6 = format ["Current reviver: %1", name _rev]}; ctrlSetText [16, _cam_hint6]; _cam_hint7 = ""; if (isNull _rev) then {_cam_hint7 = "Distance to reviver: N/A"} else {_cam_hint7 = format ["Distance to reviver: %1 m", round(unconscious_body distance _rev)]}; ctrlSetText [17, _cam_hint7]; _cam_hint8 = ""; if (Norrn_DialogBlink == 20) then {_cam_hint8 = "Dialog Fade: On"} else {_cam_hint8 = "Dialog Fade: Off"}; ctrlSetText [18, _cam_hint8]; _cam_hint9 = ""; if (!NORRN_CAM_NVG) then {_cam_hint9 = "Free camera NVG: Off"} else {_cam_hint9 = "Free camera NVG: On"}; ctrlSetText [19, _cam_hint9]; }; }; //======================================================================================== // Free cam courtesy of hoz and mandoble see: OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 if (_follow_cam == 1 && NORRN_REVIVE_CAM_TYPE == 4) then { _target = _alive_friends select NORRN_FOCUS_CAM_ON; _oldCam = NORRN_REVIVE_CAM_TYPE; if (_target == player) then {_target = unconscious_body; NORRN_REVIVE_cam camsettarget _target;} else {NORRN_REVIVE_cam camsettarget _target}; NORRN_REVIVE_cam cameraeffect ["internal", "back"]; if (OFPEC_MouseButtons select 1) then { if (((OFPEC_MouseCoord select 0) >= 0) && ((OFPEC_MouseCoord select 0) <= 1) && ((OFPEC_MouseCoord select 1) >= 0) && ((OFPEC_MouseCoord select 1) <= 1)) then { _deltah = (0.5 - (OFPEC_MouseCoord select 0))*10/0.2; _deltav = (0.5 - (OFPEC_MouseCoord select 1))*10/0.2; _angv = (_angv + _deltav); _angh = (_angh + _deltah); _angv = _angv max 0; _angv = _angv min 89; }; }; _free_pos = [(getpos _target select 0) + sin(_angh)*OFPEC_range_to_unit, (getpos _target select 1) + cos(_angh)*OFPEC_range_to_unit, (getpos _target select 2) + OFPEC_range_to_unit*sin(_angv)]; NORRN_REVIVE_cam camSetPos _free_pos; NORRN_REVIVE_cam camCommit 0.5; }; //======================================================================================== sleep 0.01; }; //destroy camera if (_destroy || _destroy2) exitWith { if (_destroy) then { sleep 0; }; camUseNVG false; closeDialog 4; closeDialog 3; closeDialog 2; closeDialog 1; closeDialog 0; //sleep _cam_black_in; //added for playing music if (_unc_music == 1) then {playMusic ""}; if (mission_Over) then {titletext ["Mission Failed - all players are unconscious","BLACK", 4]; sleep 1}; player switchCamera "INTERNAL"; NORRN_REVIVE_cam CameraEffect ["Terminate","Back"]; CamDestroy NORRN_REVIVE_cam; deleteVehicle _Object; }; //Last edited 16/08/09//CAM_KEY_pressed.sqf start switch ((_this select 1)) do { //N key case 49: { if (!NORRN_CAM_NVG) then { camUseNVG true; NORRN_CAM_NVG = true; }else { camUseNVG false; NORRN_CAM_NVG = false; }; }; //A key case 30: { comment "A = Previous target"; if (NORRN_FOCUS_CAM_ON > 0) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON - 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; //D key case 32: { comment "D = Next target"; if (NORRN_FOCUS_CAM_ON < COUNT_CAM_friends - 1) then { NORRN_FOCUS_CAM_ON = NORRN_FOCUS_CAM_ON + 1; lbSetCurSel [10005, NORRN_FOCUS_CAM_ON]; }; }; //S key case 31: { "S = Next camera"; if (NORRN_REVIVE_CAM_TYPE < 4) then { NORRN_REVIVE_CAM_TYPE = NORRN_REVIVE_CAM_TYPE + 1; lbSetCurSel [10004, NORRN_REVIVE_CAM_TYPE]; }; }; //W key case 17: { comment "W = Previous camera"; if (NORRN_REVIVE_CAM_TYPE > 0) then { NORRN_REVIVE_CAM_TYPE = NORRN_REVIVE_CAM_TYPE - 1; lbSetCurSel [10004, NORRN_REVIVE_CAM_TYPE]; }; }; //H key case 35: { comment "H = Call for help"; [] call Norrn_Call4Help; }; /* //B key case 48: { comment "B = Disable camera dialog blinking"; if (Norrn_DialogBlink == 20) then { Norrn_DialogBlink = 0; }else{ Norrn_DialogBlink = 20; }; }; */ }; MouseEvents = { _x =0; _y =0; _param = _this select 1; _type = _this select 0; switch (_type) do { case "MouseMoving": { _x = _param select 1; _y = _param select 2; OFPEC_MouseCoord = [_x, _y]; }; case "MouseButtonDown": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, true]; }; case "MouseButtonUp": { _x = _param select 2; _y = _param select 3; _button = _param select 1; OFPEC_MouseButtons set[_button, false]; }; case "MouseZChanged": { if (((_this select 1) select 1) > 0) then { if (OFPEC_range_to_unit > 2) then { OFPEC_range_to_unit = OFPEC_range_to_unit - OFPEC_camzoomspeed; }; } else { if (OFPEC_range_to_unit < OFPEC_maxzoomout) then { OFPEC_range_to_unit = OFPEC_range_to_unit + OFPEC_camzoomspeed; }; }; }; }; }; /* CARRY BODY SCRIPT Allows players to carry unconscious bodies JULY 2010 - norrin ***************************************************************************************************************************** Start carry.sqf */ private ["_unit","_dragee","_pos","_dir"]; _dragee = _this select 3; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _unit = player; r_carry_sqf = true; r_drag_sqf = false; _unit removeAction Norrn_carryAction; if (isNull _dragee) exitWith {}; _dragee setVariable ["NORRN_unit_dragged", true, true]; detach _dragee; sleep 1.5; // public EH norrnRACarUp = _dragee; publicVariable "norrnRACarUp"; _dragee switchMove "ainjpfalmstpsnonwrfldnon_carried_up"; norrnRAPicUp = _unit; publicVariable "norrnRAPicUp"; _unit switchMove "acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon"; sleep 10; _dragee attachto [_unit,[-0.2, 0.2, 0]]; while {r_carry_sqf} do { _anim_name = animationstate _unit; if (!(_dragee getVariable "NORRN_AIunconscious")) exitWith { detach _dragee; _unit switchMove ""; player removeAction Norrn_dropAction; r_carry_sqf = false; }; //check that dragged unit still exists if (!alive _unit || _anim_name != "acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon" && _anim_name != "acinpercmstpsraswrfldnon" && _anim_name != "acinpercmrunsraswrfldf") exitWith { player removeAction NORRN_dropAction; detach _dragee; _unit switchMove ""; r_carry_sqf = false; }; sleep 0.1; }; if (alive _dragee && (_dragee getVariable "NORRN_AIunconscious")) then { norrinRAlie = _dragee; publicVariable "norrinRAlie"; _dragee switchMove "ainjppnemstpsnonwrfldnon"; }; if (true) exitWith {}; _unit = _this select 0; _unit setVariable ["NORRN_body_part", _this select 1, false]; if (true)exitWith {};// handleDamage.sqf _unit = _this select 0; _hitLocation = _this select 1; _damage = _this select 2; if(!local _unit || _damage <= 0.1) exitWith {}; if (_hitLocation == "legs") then { _totalDamage = (_unit getVariable "NORRN_legDamage") + _damage/20; _unit setHit ["legs", _totalDamage]; _unit setVariable ["NORRN_legDamage", _totalDamage, false]; //hint format ["Legs: %1", _totalDamage]; }; if (_hitLocation == "hands") then { _totalDamage = (_unit getVariable "NORRN_handDamage") + _damage/40; _unit setHit ["hands", _totalDamage]; _unit setVariable ["NORRN_handDamage", _totalDamage, false]; //hint format ["Hands: %1", _totalDamage]; }; if (_hitLocation == "head_hit") then { _totalDamage = (_unit getVariable "NORRN_headDamage") + _damage; if (_totalDamage > 0.9) then {_totalDamage = 0.9; _unit setVariable ["NORRN_unconscious", true, true]}; _unit setHit ["head_hit", _totalDamage]; _unit setVariable ["NORRN_headDamage", _totalDamage, false]; //hint format ["Head: %1", _totalDamage]; }; if (_hitLocation == "body") then { _totalDamage = (_unit getVariable "NORRN_bodyDamage") + _damage; if (_totalDamage > 0.9) then {_totalDamage = 0.9; _unit setVariable ["NORRN_unconscious", true, true]}; _unit setHit ["body", _totalDamage]; _unit setVariable ["NORRN_bodyDamage", _totalDamage, false]; //hint format ["Body: %1", _totalDamage]; }; sleep 0.1; _overallDamage = ((_unit getVariable "NORRN_legDamage") + (_unit getVariable "NORRN_handDamage") + (_unit getVariable "NORRN_headDamage") + (_unit getVariable "NORRN_bodyDamage")); _unit setVariable ["NORRN_totalDamage", _overallDamage, false]; if (_overallDamage > 0.9) then { _unit setVariable ["NORRN_unconscious", true, true]; }; //hint format ["%1", _unit getVariable "NORRN_unconscious"]; //hint format ["Body: %1", _overallDamage]; /* CONFIG.CPP Taken and adapted from ArmA Group Link II Plus! script by SNKMAN. ******************************************************************************************************************************** Start config.cpp */ class CfgSounds { sounds[] = { Brian_Im_hit, Brian_Im_bleeding,Brian_Medic,Brian_Bastards,Brian_Shit_Man_down,Brian_Oh_no, Brian_Fuck,Brian_Fuck_it,Brian_Shit,Brian_Need_help,Brian_A_little_help_here }; class Brian_Im_hit { name="Brian_Im_hit"; sound[]={"revive_sqf\sound\UNIV_v05.ogg",0.05,1.0}; titles[]={}; }; class Brian_Im_bleeding { name="Brian_Im_bleeding"; sound[]={"revive_sqf\sound\UNIV_v06.ogg",0.05,1.0}; titles[]={}; }; class Brian_Medic { name="Brian_Medic"; sound[]={"revive_sqf\sound\UNIV_v07.ogg",0.05,1.0}; titles[]={}; }; class Brian_Bastards { name="Brian_Bastards"; sound[]={"revive_sqf\sound\UNIV_v10.ogg",0.05,1.0}; titles[]={}; }; class Brian_Shit_Man_down { name="Brian_Shit_Man_down"; sound[]={"revive_sqf\sound\UNIV_v11.ogg",0.05,1.0}; titles[]={}; }; class Brian_Oh_no { name="Brian_Oh_no"; sound[]={"revive_sqf\sound\UNIV_v18.ogg",0.05,1.0}; titles[]={}; }; class Brian_Fuck { name="Brian_Fuck"; sound[]={"sound\UNIV_v24.ogg",0.05,1.0}; titles[]={}; }; class Brian_Fuck_it { name="Brian_Fuck_it"; sound[]={"revive_sqf\sound\UNIV_v25.ogg",0.05,1.0}; titles[]={}; }; class Brian_Shit { name="Brian_Shit"; sound[]={"revive_sqf\sound\UNIV_v31.ogg",0.05,1.0}; titles[]={}; }; class Brian_Need_help { name="Brian_Need_help"; sound[]={"revive_sqf\sound\UNIV_v50.ogg",0.05,1.0}; titles[]={}; }; class Brian_A_little_help_here { name="Brian_A_little_help_here"; sound[]={"revive_sqf\sound\UNIV_v51.ogg",0.05,1.0}; titles[]={}; }; };/* Dead CAMERA DIALOG JULY 2009 - norrin ********************************************************************************************************************************** dead_cam_dialog.hpp */ class dead_cam_dialog { idd = 99128; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = safeZoneY; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.25; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = (safeZoneX + safeZoneW/2)-0.1; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Spectate Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; }; #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_SLIDER 3 #define CT_COMBO 4 #define CT_LISTBOX 5 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_ACTIVETEXT 11 #define CT_TREE 12 #define CT_STRUCTURED_TEXT 13 #define CT_3DSTATIC 20 #define CT_3DACTIVETEXT 21 #define CT_3DLISTBOX 22 #define CT_3DHTML 23 #define CT_3DSLIDER 24 #define CT_3DEDIT 25 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_USER 99 // Static styles #define ST_HPOS 0x0F #define ST_LEFT 0 #define ST_RIGHT 1 #define ST_CENTER 2 #define ST_UP 3 #define ST_DOWN 4 #define ST_VCENTER 5 #define ST_TYPE 0xF0 #define ST_SINGLE 0 #define ST_MULTI 16 #define ST_TITLE_BAR 32 #define ST_PICTURE 48 #define ST_FRAME 64 #define ST_BACKGROUND 80 #define ST_GROUP_BOX 96 #define ST_GROUP_BOX2 112 #define ST_HUD_BACKGROUND 128 #define ST_TILE_PICTURE 144 #define ST_WITH_RECT 160 #define ST_LINE 176 #define ST_SHADOW 256 #define ST_NO_RECT 512 #define ST_TITLE ST_TITLE_BAR + ST_CENTER #define FontHTML "Zeppelin32" #define FontM "Zeppelin32" #define Dlg_ROWS 36 #define Dlg_COLS 90 #define Dlg_CONTROLHGT ((100/Dlg_ROWS)/100) #define Dlg_COLWIDTH ((100/Dlg_COLS)/100) #define Dlg_TEXTHGT_MOD 0.9 #define Dlg_ROWSPACING_MOD 1.3 #define Dlg_ROWHGT (Dlg_CONTROLHGT*Dlg_ROWSPACING_MOD) #define Dlg_TEXTHGT (Dlg_CONTROLHGT*Dlg_TEXTHGT_MOD) class NORRNRscText { access = ReadAndWrite; type = CT_STATIC; idc = -1; style = ST_LEFT; x = 0; y = 0; w = 0; h = 0; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = FontM; sizeEx = 0.02; text = ""; }; class NORRNRscListBox { type = CT_LISTBOX; style = ST_LEFT; idc = -1; colorSelect[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.2, 0.4, 1, 1}; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0.02, 0.11, 0.27, 0.4}; font = FontM; sizeEx = 0.02; rowHeight = 0.02; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorFocused[] = {0.02, 0.11, 0.27, 0.4}; colorShadow[] = {0.2, 0.2, 0.2, 0.8}; colorBorder[] = {0.4, 0.4, 0.4, 1}; borderSize = 0.03; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; }; class NORRNRscButton { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.7}; colorBackground[] = {0.04, 0.22, 054, 0.7}; colorBackgroundActive[] = {0.04, 0.22, 0.54, 0.9}; colorBackgroundDisabled[] = {0.04, 0.22, 0.54, 0.4}; colorFocused[] = {1, 1, 1, 0.4}; colorShadow[] = {0, 1, 0, 0}; colorBorder[] = {0, 1, 0, 0}; font = FontM; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; sizeEx = 0.02; offsetX=0; offsetY=0; offsetPressedX = 0.002; offsetPressedY = 0.002; borderSize=0; default = false; }; class NORRNRscNavButton:NORRNRscButton { w=0.1;h=0.04; x=0.90; sizeEx = 0.022; colorText[] = { 0, 0, 0, 1 }; colorDisabled[] = { 0, 0, 1, 0.7 }; colorBackground[] = { 1, 1, 1, 0.5 }; colorBackgroundDisabled[] = { 1, 1, 1, 0.5 }; colorBackgroundActive[] = { 0.5, 0.5, 0.5, 0.5 }; colorFocused[] = { 0.31, 0.31, 0.31, 0.31 }; colorShadow[] = { 0, 0, 0, 0.5 }; colorBorder[] = { 0.5, 0.5, 0.5, 0.5 }; }; class NORRNRscActiveText { access = ReadAndWrite; type = 11; idc = -1; style = 2; x = 0; y = 0; h = 0; w = 0; font = "TahomaB"; sizeEx = 0.04; color[] = {1, 1, 1, 1}; colorActive[] = {1, 0.5, 0, 1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; default = 0; }; class NORRNRscControlsGroup { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 0; h = 0; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; class NORRNRscCombo { idc = -1; type = CT_COMBO; style = ST_LEFT; colorSelect[] = {1, 1, 1, 1 }; colorSelectBackground[] = {0, 0, 0, 1}; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 1}; colorBorder[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 1}; soundSelect[] = { "", 0, 1 }; soundExpand[] = { "", 0, 1 }; soundCollapse[] = { "", 0, 1 }; borderSize = 0; font = "TahomaB"; sizeEx = 0.02; rowHeight = 0.025; wholeHeight = 0.3; text = ""; maxHistoryDelay = 0; default = true; x = 0; y = 0; w = 0; h = 0; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; }; class NORRNmouseHandler : NORRNRscControlsGroup { onMouseMoving = "[""MouseMoving"",_this] call MouseEvents"; onMouseButtonDown = "[""MouseButtonDown"",_this] call MouseEvents"; onMouseButtonUp = "[""MouseButtonUp"",_this] call MouseEvents"; onMouseZChanged = "[""MouseZChanged"",_this] call MouseEvents"; idc = 2501; type = 15; style = 0; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = false; }; class ScrollBar { color[] = {1, 1, 1, 0.6}; colorActive[] = {1, 1, 1, 1}; colorDisabled[] = {1, 1, 1, 0.3}; thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa"; arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa"; arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa"; border = "\ca\ui\data\ui_border_scroll_ca.paa"; }; class Controls {}; }; class NORRNRscPicture { type = CT_STATIC; idc = -1; style = ST_PICTURE; x = 0.1; y = 0.1; w = 0.4; h = 0.2; sizeEx = Dlg_TEXTHGT; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1,1,1, 1}; font = FontM; text = ""; }; class NORRNRscMapControl { access = ReadAndWrite; type = 101; idc = -1; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorRailWay[] = {0.8, 0.2, 0.3, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; colorOutside[] = {0, 0, 0, 1}; fontLabel = "TahomaB"; sizeExLabel = 0.04; fontGrid = "TahomaB"; sizeExGrid = 0.04; fontUnits = "TahomaB"; sizeExUnits = 0.04; fontNames = "TahomaB"; sizeExNames = 0.04; fontInfo = "TahomaB"; sizeExInfo = 0.04; fontLevel = "TahomaB"; sizeExLevel = 0.04; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; showCountourInterval = "true"; maxSatelliteAlpha = 0; alphAFadeStartScale = 0; alphAFadeEndScale = 0; class Task { icon = "\ca\ui\data\map_waypoint_ca.paa"; iconCreated = "#(argb,8,8,3)color(1,1,1,1)"; iconCanceled = "#(argb,8,8,3)color(0,0,1,1)"; iconDone = "#(argb,8,8,3)color(0,0,0,1)"; iconFailed = "#(argb,8,8,3)color(1,0,0,1)"; colorCreated[] = {1,1,1,1}; colorCanceled[] = {1,1,1,1}; colorDone[] = {1,1,1,1}; colorFailed[] = {1,1,1,1}; size = 20; color[] = {0, 0.900000, 0, 1}; importance = "1.2 * 16 * 0.05"; coefMin = 0.900000; coefMax = 4; }; class CustomMark { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Legend { x = 0; y = 0; w = 0; h = 0; font = "Zeppelin32"; sizeEx = 0.0151; colorBackground[] = {1, 1, 1, 0.3}; color[] = {0, 0, 0, 1}; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {1, 1, 1, 1}; size = 14; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0, 0.3, 0, 1}; size = 14; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {1, 1, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Command { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {1, 1, 1, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {1, 1, 1, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0, 0, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0, 0, 0, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0, 0, 0, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0, 0, 0, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; }; /* CHOOSE MAP SPAWN DIALOG JULY 2008 - norrin ********************************************************************************************************************************** OK_map.hpp */ class OK_map { idd = 202024; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,r_CHOICE,SPWN_RespawnMap,Respawn_1, Respawn_2}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class r_CHOICE { idc = -1; type = CT_STATIC; style = ST_LEFT; x = 0.84; y = 0.52; w = 0.3; h = 0.2; font = FontM; sizeEx = 0.025; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,0}; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Choose this respawn point?"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = 202001; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = " OK "; action = "NORRN_r_OK = 2"; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = " GO BACK"; action = "NORRN_r_OK = 3; [] execVM ""revive_sqf\Go_back.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_1.hpp */ class Respawn_button_1 { idd = 99124; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; //x = -1.5; y = -0.2; x = -1.5; y = safeZoneY; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; //x = -1.5; y = 0.89; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; //x = 0.38; y = 0.03; x = (safeZoneX + safeZoneW/2)-0.1; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; //x = 0.8; y = 0.92; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.4; h = 0.2; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; //x = 0.8; y = 0.9; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; //x = 0.09; y = 0.03; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; //x = 0.02; y = 0.03; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; //x = 0.82; y = 0.03; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; //x = 0.75; y = 0.03; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { //x = 0.02; y = 0.10; x = safeZoneX +0.02; y = safeZoneY +0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; //x = 0.02; y = 0.87; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; //x = 0.02; y = 0.89; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; //x = 0.02; y = 0.91; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; //x = 0.56; y = 0.87; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; //x = 0.56; y = 0.89; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; //x = 0.56; y = 0.91; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; //x = 0.30; y = 0.87; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; //x = 0.30; y = 0.89; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; //x = 0.30; y = 0.91; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; //x = 0.30; y = 0.93; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.14; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { //x = 0.85; y = 0.80; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_1.hpp */ class Respawn_button_1b { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1, player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2007 - norrin ********************************************************************************************************************************** respawn_button_1c.hpp */ class Respawn_button_1c { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "Wash Ashore"; action = "[player] execVM ""revive_sqf\respawn_at_base_water.sqf"""; }; };/* RESPAWN AT BASE DIALOG - Single button JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_1map.hpp */ class Respawn_button_1map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 2 Buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2.hpp */ class Respawn_button_2 { idd = 99125; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = safeZoneY; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = (safeZoneX + safeZoneW/2)-0.12; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.4; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = safeZoneX +0.02; y = safeZoneY +0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.14; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; }; /* RESPAWN AT BASE DIALOG - 2 Buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2.hpp */ class Respawn_button_2b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2, player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 2 Buttons This script adds a button when the follow_camera activates that allows the player to respawn at base JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_2map.hpp */ class Respawn_button_2map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 3 Buttons JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_3.hpp */ class Respawn_button_3 { idd = 99126; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2,Respawn_3}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = safeZoneY; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = (safeZoneX + safeZoneW/2)-0.12; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.4; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = safeZoneX +0.02; y = safeZoneY +0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.14; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_3 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)+0.01; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 3; text = "RESPAWN 3"; action = "titletext ['','BLACK FADED', 1]; [3,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; }; /* RESPAWN AT BASE DIALOG - 3 buttons JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_3.hpp */ class Respawn_button_3b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b, Respawn_3b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_3b : NORRNRscNavButton { idc = 3; x = (safeZoneX + safeZoneW/2)+0.01; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_3map.hpp */ class Respawn_button_3map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2, Respawn_3}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_3 : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 4 buttons JULY 2009 - norrin ***************************************************************************************************************************** respawn_button_4.hpp */ class Respawn_button_4 { idd = 99127; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9,Respawn_1,Respawn_2,Respawn_3,Respawn_4}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = safeZoneY; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = (safeZoneX + safeZoneW/2)-0.12; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = safeZoneX +0.02; y = safeZoneY +0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText{ idc = 12; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText{ idc = 14; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText{ idc = 16; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText{ idc = 18; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.14; w = 0.4; h = 0.1; }; class Respawn_1 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 1; text = "RESPAWN 1"; action = "titletext ['','BLACK FADED', 1]; [1,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_2 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 2; text = "RESPAWN 2"; action = "titletext ['','BLACK FADED', 1]; [2,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_3 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)+0.01; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 3; text = "RESPAWN 3"; action = "titletext ['','BLACK FADED', 1]; [3,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; class Respawn_4 : NORRNRscNavButton { x = (safeZoneX + safeZoneW/2)+0.14; y = safeZoneY +0.2; w = 0.11; h = 0.04; idc = 4; text = "RESPAWN 4"; action = "titletext ['','BLACK FADED', 1]; [4,player] execVM ""revive_sqf\respawn_at_base.sqf"""; }; };/* RESPAWN AT BASE DIALOG - 4 Buttons JULY 2007 - norrin ********************************************************************************************************************************** respawn_button_4.hpp */ class Respawn_button_4b { idd = -1; movingEnable = true; controlsBackground[] = {}; objects[] = { }; controls[] = {Respawn_1b, Respawn_2b, Respawn_3b, Respawn_4b}; class Respawn_1b : NORRNRscNavButton { idc = 1; x = (safeZoneX + safeZoneW/2)-0.25; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_2b : NORRNRscNavButton { idc = 2; x = (safeZoneX + safeZoneW/2)-0.12; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_3b : NORRNRscNavButton { idc = 3; x = (safeZoneX + safeZoneW/2)+0.01; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; class Respawn_4b : NORRNRscNavButton { idc = 4; x = (safeZoneX + safeZoneW/2)+0.14; y = safeZoneY +0.2; w = 0.11; h = 0.04; text = "RESPAWN 4"; action = "[4,player] execVM ""revive_sqf\respawn_at_base_jip.sqf"""; }; };/* RESPAWN AT BASE DIALOG JULY 2009 - norrin ********************************************************************************************************************************** respawn_button_4map.hpp */ class Respawn_button_4map { idd = -1; movingEnable = false; controlsBackground[] = {}; objects[] = { }; controls[] = {TOP_BORDER, TITLE_DIALOG,SPWN_RespawnMap,Respawn_1, Respawn_2, Respawn_3, Respawn_4}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = -0.2; w = 4.0; h = 0.28; font = FontM; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; x = 0.38; y = 0.03; w = 0.4; h = 0.04; font = FontM; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "You are dead!"; default = true; }; class SPWN_RespawnMap: NORRNRscMapControl { idc = -1; x = 0.01; y = 0.1; w = 0.7; h = 0.7; }; class Respawn_1 : NORRNRscNavButton { idc = 1; x = 0.85; y = 0.65; w = 0.11; h = 0.04; text = "RESPAWN 1"; action = "[1,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_2 : NORRNRscNavButton { idc = 2; x = 0.85; y = 0.7; w = 0.11; h = 0.04; text = "RESPAWN 2"; action = "[2,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_3 : NORRNRscNavButton { idc = 3; x = 0.85; y = 0.75; w = 0.11; h = 0.04; text = "RESPAWN 3"; action = "[3,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; class Respawn_4 : NORRNRscNavButton { idc = 4; x = 0.85; y = 0.8; w = 0.11; h = 0.04; text = "RESPAWN 4"; action = "[4,player] execVM ""revive_sqf\show_map_loc.sqf"""; }; };/* REVIVE CAMERA DIALOG JULY 2009 - norrin ********************************************************************************************************************************** rev_cam_dialog.hpp */ class rev_cam_dialog { idd = 99123; movingEnable = false; objects[] = {}; controls[] = {mouse,TOP_BORDER,BOTTOM_BORDER,TITLE_DIALOG,PRESS_HELP,HELP_DIALOG,CAM_LIST,CAM_select,FRIEND_LIST,FRIEND_select,Help_1, HINT_BOX0,HINT_BOX1,HINT_BOX2,HINT_BOX3,HINT_BOX4,HINT_BOX5,HINT_BOX6,HINT_BOX7,HINT_BOX8,HINT_BOX9}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; class TOP_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; //x = -1.5; y = -0.2; x = -1.5; y = safeZoneY; w = 4.0; h = 0.28; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class BOTTOM_BORDER { idc = -1; type = CT_STATIC; style = ST_CENTER; x = -1.5; y = (safeZoneY + safeZoneH) -0.25; w = 4.0; h = 0.26; font = "TahomaB"; sizeEx = 0.04; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; text = ""; }; class TITLE_DIALOG { idc = -1; type = CT_ACTIVETEXT; style = ST_LEFT; //x = 0.38; y = 0.03; x = (safeZoneX + safeZoneW/2)-0.1; y = 0.03 + safeZoneY; w = 0.4; h = 0.04; font = "TahomaB"; sizeEx = 0.04; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = {0,0,0,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = ""; text = "Unconscious Camera"; default = true; }; class PRESS_HELP : NORRNRscText { idc = 10000; style = ST_MULTI; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.18; w = 0.2; h = 0.1; text = ""; }; class HELP_DIALOG : NORRNRscActiveText { idc = -1; style = ST_LEFT; linespacing = 1; x = (safeZoneX + safeZoneW) -0.25; y = (safeZoneY + safeZoneH) -0.2; w = 0.4; h = 0.02; sizeEx = 0.02; action = "ctrlSetText [10000, ""Keyboard controls:\n A/D - Previous/Next target\n W/S - Previous/Next camera\n N - Toggle NV for Free Cam""]"; text = "Press for Help"; }; class CAM_LIST: NORRNRscCombo { idc = 10004; x = safeZoneX +0.09; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class CAM_select { idc = 10001; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = safeZoneX +0.02; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Camera:"; default = true; }; class FRIEND_LIST: NORRNRscCombo { idc = 10005; x = (safeZoneX + safeZoneW)-0.18; y = safeZoneY +0.03; w = 0.15; h = 0.04; //sizeEx = 0.02; }; class FRIEND_select { idc = 10002; type = CT_STATIC; style = ST_LEFT; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0,0,0,0}; x = (safeZoneX + safeZoneW)-0.25; y = safeZoneY +0.03; w = 0.08; h = 0.04; font = "TahomaB"; sizeEx = 0.02; text = "Target:"; default = true; }; class Help_1 : NORRNRscNavButton { x = safeZoneX +0.02; y = safeZoneY +0.10; w = 0.11; h = 0.04; idc = 5; colorBackground[] = { 1, 1, 1, 0.5 }; text = "Call for Help"; action = "[] call Norrn_Call4Help"; }; class HINT_BOX0 : NORRNRscText { idc = 10; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX1 : NORRNRscText { idc = 11; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX2 : NORRNRscText { idc = 12; x = safeZoneX +0.02; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX3 : NORRNRscText { idc = 13; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX4 : NORRNRscText { idc = 14; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX5 : NORRNRscText { idc = 15; x = safeZoneX +0.56; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX6 : NORRNRscText { idc = 16; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.2; w = 0.4; h = 0.1; }; class HINT_BOX7 : NORRNRscText { idc = 17; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.18; w = 0.4; h = 0.1; }; class HINT_BOX8 : NORRNRscText { idc = 18; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.16; w = 0.4; h = 0.1; }; class HINT_BOX9 : NORRNRscText { idc = 19; x = safeZoneX +0.30; y = (safeZoneY + safeZoneH)-0.14; w = 0.4; h = 0.1; }; }; /* REVIVE CAMERA BLANK DIALOG JULY 2010 - norrin ********************************************************************************************************************************** rev_cam_dialog.hpp */ class rev_cam_dialog_blank { idd = 99993; movingEnable = false; objects[] = {}; controls[] = {mouse}; controlsBackground[] = {}; class mouse : NORRNmouseHandler {}; }; /* DRAG BODY SCRIPT Allows players to drag unconscious bodies JULY 2010 - norrin ***************************************************************************************************************************** Start drag.sqf */ private ["_unit","_dragee","_pos","_dir"]; _dragee = _this select 3; _can_be_revived = NORRN_revive_array select 20; _can_be_revived_2 = NORRN_revive_array select 21; _unit = player; if (isNull _dragee) exitWith {}; // Add "C" key down eventhandler NORRN_noCkey = false; NORRN_reviveDrag_C_keyDownEHId = (findDisplay 46) displayAddEventHandler ["KeyDown", "_this call NORRN_reviveDrag_C_keyDown"]; //player assumes dragging posture _dragee setVariable ["NORRN_unit_dragged", true, true]; _unit playMove "acinpknlmstpsraswrfldnon"; sleep 2; //unconscious unit assumes dragging posture //public EH norrnRaDrag = _dragee; publicVariable "norrnRaDrag"; _dragee switchmove "ainjppnemstpsnonwrfldb_still"; _dragee attachto [_unit,[0.1, 1.01, 0]]; sleep 0.02; //rotate wounded units so that it is facing the correct direction norrnR180 = _dragee; publicVariable "norrnR180"; _dragee setDir 180; r_drag_sqf = true; //Uneccesary actions removed & drop body added player removeAction Norrn_dragAction; player removeAction Norrn_reviveAction; NORRN_dropAction = player addAction ["Drop body", "revive_sqf\drop_body.sqf",_dragee, 0, false, true]; sleep 1; while {r_drag_sqf} do { _anim_name = animationstate _unit; if (!alive _dragee || !((animationstate _unit) in ["acinpknlmstpsraswrfldnon","acinpknlmwlksraswrfldb"]) || !(_dragee getVariable "NORRN_AIunconscious" || NORRN_noCkey)) exitWith { player removeAction NORRN_dropAction; detach _dragee; sleep 0.5; _unit switchMove ""; sleep 1; r_drag_sqf = false; }; //if unconcious unit if (_unit getVariable "NORRN_unconscious") exitWith { player removeAction NORRN_dropAction; detach _unit; detach _dragee; sleep 1; r_drag_sqf = false; }; sleep 0.1; }; if (alive _dragee && (_dragee getVariable "NORRN_AIunconscious")) then { //public EH norrinRAlie = _dragee; publicVariable "norrinRAlie"; _dragee switchMove "ainjppnemstpsnonwrfldnon"; }; // Remove "C" key down eventhandler (findDisplay 46) displayRemoveEventHandler ["KeyDown", NORRN_reviveDrag_C_keyDownEHId]; if (true) exitWith {}; /* DROP BODY SCRIPT Allows players to drop unconscious bodies JULY 2010 - norrin ***************************************************************************************************************************** Start drop_body.sqf */ _dragee = _this select 3; player removeAction NORRN_dropAction; NORRN_remove_drag = true; r_drag_sqf = false; _unit = player; detach _unit; detach _dragee; _unit switchMove ""; NORRN_Dragged_body = objNull; _dragee setVariable ["NORRN_unit_dragged", false, true]; sleep 8; if (true) exitWith {};// AI_throwSmoke.sqf private ["_unc_player","_reviver","_smoke_rounds","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir"]; _unc_player = player; _reviver = _this select 0; _smoke_rounds = _this select 1; while {count _smoke_rounds > 0 && alive _reviver && (_unc_player getVariable "NORRN_unconscious")} do { //reviver throws smoke if (_reviver distance _unc_player < 60 && _reviver distance _unc_player > 15) then { if !((_unc_player getVariable "NORRN_AISmoke") select 0) then { _round = _smoke_rounds select 0; _bloggs_pos = getPos _unc_player; _bloggs_offset = (_unc_player distance _bloggs_pos); _sav_pos = getPos _reviver; _set_dir = ((_bloggs_pos select 0) - (_sav_pos select 0))atan2((_bloggs_pos select 1) - (_sav_pos select 1)); _reviver setDir _set_dir; sleep 0.1; if(_reviver distance _unc_player > 20) then {_reviver playMove "AmovPercMrunSlowWrflDf_AmovPercMstpSrasWrflDnon_gthEnd"}; _reviver removeMagazine _round; _round createVehicle _bloggs_pos; _unc_player setVariable ["NORRN_AISmoke", [true, _round], true]; if(_reviver distance _unc_player <= 20) then {sleep 2}; }; }; sleep 2; }; if (true) exitWith {}; //Last modified - 230809// Norrn_AIBehaviour // AUGUST 2009 - norrin private ["_name","_can_revive","_can_revive_2","_can_be_revived","_can_be_revived_2","_enemy_side_1","_enemy_side_2","_goto_revive_distance", "_AI_smoke","_AI_aware","_AI_cover","_AI_dismount","_smoke_shell_types","_close_array","_unc_array","_revive_array","_goto_reviver","_goto_protect", "_revive_units","_protect_units","_mags","_smoke_rounds","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir","_known_enemy","_count_enemies"]; _name = _this select 0; _units = _this select 1; _can_revive = Norrn_revive_array select 18; _can_revive_2 = Norrn_revive_array select 19; _can_be_revived = Norrn_revive_array select 20; _can_be_revived_2 = Norrn_revive_array select 21; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _enemy_side_1 = Norrn_revive_array select 23; _enemy_side_2 = Norrn_revive_array select 24; _goto_revive_distance = Norrn_revive_array select 33; _AI_smoke = Norrn_revive_array select 40; _AI_aware = Norrn_revive_array select 49; _AI_cover = Norrn_revive_array select 50; _AI_dismount = Norrn_revive_array select 58; _medpacks = Norrn_revive_array select 80; _smoke_shell_types = ["SmokeShell","SmokeShellRed","SmokeShellGreen"]; //all friendly units nearby _close_array = []; _unc_array = []; _revive_array = []; _goto_reviver = objNull; _goto_protect = objNull; _round = objNull; _close_array = nearestObjects [_name, [_can_be_revived, _can_be_revived_2], _goto_revive_distance]; _group = group _name; //added Version 0.4 _enemy_units_1 = switch (_enemy_side_1) do { case "": {""}; case "EAST": {"soldierEB"}; case "GUER": {"soldierGB"}; case "WEST": {"soldierWB"}; case "CIV": {""}; }; _enemy_units_2 = switch (_enemy_side_2) do { case "": {""}; case "EAST": {"soldierEB"}; case "GUER": {"soldierGB"}; case "WEST": {"soldierWB"}; case "CIV": {""}; }; //create array of all friendly units nearby that are unconscious {if (_x getVariable "NORRN_AIunconscious") then {_unc_array = _unc_array + [_x]}}forEach _close_array; //define revive and protector arrays _revive_units = []; _protect_units = []; {call compile format ["if (%1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 0 || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 0 || %1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _medic_1 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0 || %1 isKindOf _medic_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 && (%1 getVariable 'NORRN_medpacks') > 0) then {_revive_units = _revive_units + [%1]}", _x]} forEach _units; {call compile format ["if (%1 isKindOf _can_revive && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') || %1 isKindOf _can_revive_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') || %1 isKindOf _medic_1 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1 || %1 isKindOf _medic_2 && !(%1 getVariable 'NORRN_unconscious') && !(%1 getVariable 'NORRN_AI_help') && _medpacks == 1) then {_protect_units = _protect_units + [%1]}", _x]} forEach _units; //define the unconscious unit array {if !(_x in _protect_units) then {_revive_array = _revive_array + [_x]}}forEach _unc_array; if (count _revive_array > 0) then { _mags = []; if (_medpacks == 0) then { if(_name isKindOf _can_revive || _name isKindOf _can_revive_2) then {_goto_reviver = _name}; }; if (_medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 ) then { if(_name isKindOf _can_revive || _name isKindOf _can_revive_2 || _name isKindOf _medic_1 || _name isKindOf _medic_2) then {_goto_reviver = _name}; }; if (_AI_cover == 1) then {_goto_protect = _name}; _close_unc = objNull; _close_unc = _revive_array select 0; _revive_units = _revive_units - [_name]; sleep 1; if (count _revive_units > 0) then { {if ((_name distance _close_unc) > (_x distance _close_unc)) then {_goto_reviver = _x}}forEach _revive_units; _protect_units = _protect_units - [_goto_reviver]; if (_name == _goto_reviver) then {_goto_protect = objnull}; {if (_name != _goto_reviver && _AI_cover == 1 && (_name distance _close_unc) > (_x distance _close_unc)) then {_goto_protect = _x}}forEach _protect_units; }; //Overide settings if player calls for help if (_name == _goto_reviver && (_name getVariable "NORRN_AI_help")) then {_goto_reviver = objnull; _close_unc = objNull}; if (_name == _goto_protect && (_name getVariable "NORRN_AI_help")) then {_goto_protect = objnull; _close_unc = objNull}; if ((_name getVariable "NORRN_AI_help") && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 && _name isKindOf _can_revive || (_name getVariable "NORRN_AI_help") && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 && _name isKindOf _can_revive_2) then { if ((nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3] select 1) getVariable "NORRN_unconscious") then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; _name setVariable ["NORRN_AI_help", false, true]; }; }; //if unit is closest to unconscious unit and is not player moveTo and heal unit if (!isNull _goto_reviver && !isNull _close_unc && _goto_reviver == _name && !isplayer _name && (count _revive_array > 0) || !isNull _goto_protect && !isNull _close_unc && _goto_protect == _name && !isplayer _name && (count _revive_array > 0)) then { if (_goto_reviver == _name && (_close_unc getVariable "NORRN_AIReviver") != _name) then { _close_unc setVariable ["NORRN_AIReviver", _goto_reviver, true]; }; //check to see if the healer has smoke _mags = magazines _name; _smoke_rounds = []; {if (_x in _smoke_shell_types) then {_smoke_rounds = _smoke_rounds + [_x]}} forEach _mags; //healer throws smoke if (count _smoke_rounds > 0 && _AI_smoke == 1 && _name distance _close_unc < 50 && _name distance _close_unc > 4 && _name == _goto_reviver) then { if !((_close_unc getVariable "NORRN_AISmoke") select 0)then { _round = _smoke_rounds select 0; _bloggs_pos = getPos _close_unc; _bloggs_offset = (_close_unc distance _bloggs_pos); _sav_pos = getPos _name; _set_dir = ((_bloggs_pos select 0) - (_sav_pos select 0))atan2((_bloggs_pos select 1) - (_sav_pos select 1)); _name setDir _set_dir; sleep 0.1; if(_name distance _close_unc > 15) then {_name playMove "AmovPercMrunSlowWrflDf_AmovPercMstpSrasWrflDnon_gthEnd"}; _name removeMagazine _round; _round createVehicle [(_bloggs_pos select 0) + 1,(_bloggs_pos select 1) + 1, 0]; _close_unc setVariable ["NORRN_AISmoke", [true, _round], true]; }; }; //set behaviour healer _name setBehaviour "AWARE"; //clears any known enemies if (_AI_aware == 1) then { _known_enemy = []; _count_enemies = 0; _known_enemy = nearestObjects [_name, [_enemy_units_1,_enemy_units_2], 50]; {if (_name knowsAbout _x > 0.105) then {_count_enemies = _count_enemies + 1}} forEach _known_enemy; while {_count_enemies > 0 && alive _name} do { _count_enemies = 0; _known_enemy = nearestObjects [_name, [_enemy_units_1,_enemy_units_2], 50]; {if (_name knowsAbout _x > 0.105) then {_count_enemies = _count_enemies + 1}} forEach _known_enemy; sleep 0.01; }; }; /////////////////////////////////////// if (_AI_dismount == 1) then { //Reviver and protector dismount vehicle if (vehicle _goto_reviver != _goto_reviver && _name == _goto_reviver || vehicle _goto_protect != _goto_protect && _name == _goto_protect) then { if ((vehicle _goto_reviver) isKindOf "Land" || (vehicle _goto_protect) isKindOf "Land") then { [_name] join grpNull; unAssignVehicle _name; doGetOut _name; }; }; }; //Instruct stopped unit to move if (currentCommand _goto_reviver == "stop" && _name == _goto_reviver || currentCommand _goto_protect == "stop" && _name == _goto_protect)then { _group = group _name; [_name] join grpNull; }; /////////////////////////////////////// //healer and protector move to unconscious unit if((_name distance _close_unc) > 10 && time > _doMove_time && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_protect) then { if (_name == _goto_protect) then { _close_unc_pos = getPos _close_unc; _name doMove [(_close_unc_pos select 0) + 5, (_close_unc_pos select 1) + 5, (_close_unc_pos select 2)]; }; _doMove_time = time + 4; }; if((_name distance _close_unc) > 10 && time > _doMove_time && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_reviver) then { if (_name == _goto_reviver) then { sleep 0.1; _name doMove (getPos _close_unc); }; _doMove_time = time + 4; }; //healer revives unconscious unit if ((_name distance _close_unc) <= 3 && (_close_unc getVariable "NORRN_AIunconscious") && _name == _goto_reviver) then { if (!(_name getVariable "NORRN_AIunconscious") && alive _name) then { _near_revivers = []; _dont_revive = false; _near_revivers = nearestObjects [_name,[_can_revive, _can_revive_2, _medic_1, _medic_2], 6]; {if (animationState _x == "AinvPknlMstpSlayWrflDnon_medic") then {_dont_revive = true}} forEach _near_revivers; if (!_dont_revive) then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; if (_medpacks == 1) then { _var = _name getVariable "Norrn_medpacks"; _name setVariable ["Norrn_medpacks", (_var - 1), true]; }; }; _name setVariable ["NORRN_AI_help", false, true]; _name doMove (getPos _name); sleep 0.5; sleep 10; _name doMove (getPos _name); }; }; }; }; if(true) exitWith {}; //file last modified 170809// Norrn_CallOut // October 2009 - norrin private ["_unconscious_body"]; _call_out_function = NORRN_revive_array select 6; _unconscious_body = _this select 0; _ran = floor(random 11); if (_call_out_function == 1) then { _unconscious_body say (commentsBrian select _ran); r_say = [_unconscious_body, _ran]; publicVariable "r_say"; }; 20 + ceil(random 10); //file modified 191009// createBody.sqf // AUGUST 2010 - norrin _name = _this select 0; _magazines = _this select 1; _weapons = _this select 2; _dir = _this select 3; _bag = _this select 4; _bagMags = _this select 5; _bagWeps = _this select 6; _pos = _name getVariable "NORRN_uncPos"; _unit_type = typeOf _name; call compile format ["norrn_dead_%1 = nullObj", _name]; call compile format ["_unit_type createUnit [(getMarkerPos 'Boot_hill'), group server, 'this setcaptive true; this switchMove ''DeadState''; this disableAI ''ANIM''; this setVehicleVarName ''norrn_dead_%1''; norrn_dead_%1 = this; removeAllItems this; removeAllWeapons this; {this addMagazine _x;} forEach %2; {this addWeapon _x;} forEach %3;']", _name, _magazines,_weapons]; waitUntil {!isNull (call compile format ["norrn_dead_%1", _name])}; _deadUnit = call compile format ["norrn_dead_%1", _name]; _deadUnit setDir _dir; _deadUnit setPos _pos; if (!isNull (unitBackpack _deadUnit)) then { removeBackpack _deadUnit; }; if (!isNull _bag) then { _bagType = typeOf _bag; _deadUnit addBackpack _bagType; sleep 0.1; _bag = unitBackpack _deadUnit; clearMagazineCargo _bag; clearWeaponCargo _bag; if (count _bagMags > 0) then { _magTypes = _bagMags select 0; _noMags = _bagMags select 1; for [{ _loop = 0 },{ _loop < count _magTypes},{ _loop = _loop + 1}] do { _magType = _magTypes select _loop; _noMag = _noMags select _loop; _bag addMagazineCargo [_magType, _noMag]; sleep 0.01; }; }; if (count _bagWeps > 0) then { _wepTypes = _bagWeps select 0; _noWeps = _bagWeps select 1; for [{ _loop = 0 },{ _loop < count _wepTypes},{ _loop = _loop + 1}] do { _wepType = _wepTypes select _loop; _noWep = _noWeps select _loop; _bag addWeaponCargo [_wepType, _noWep]; sleep 0.01; }; }; }; sleep 1; _deadUnit setdamage 1.0; // Norrn_DeleteUncBody // JUNE 2009 - norrin _unconscious_body = _this select 0; detach _unconscious_body; _unconscious_body removeAllEventHandlers "dammaged"; _unconscious_body removeAllEventHandlers "hit"; _unconscious_body setVariable ["NORRN_AIunconscious", false, true]; sleep 1.5; clearVehicleInit _unconscious_body; _unconscious_body setPos NORRN_respawn_mrkr; deleteVehicle _unconscious_body; _unconscious_body = objNull; call compile format ["norrn_dead_%1 = objNull", _name]; if (_name == player) then {unconscious_body = objNull}; //file modified 120609 /* Drop - drops ammo when a player respawns - AI_enabled gets called on _drop_weapons || _cadaver Check root revive_init.sqf for additional parameters written by alef modified by norrin ************************************************************************************** start drop.sqf */ private ["_drop_weapons","_cadaver","_bury_timeout","_body","_safec","_max_timeout","_wep","_mag","_timeout"]; _drop_weapons = NORRN_revive_array select 93; _cadaver = NORRN_revive_array select 94; _bury_timeout = NORRN_revive_array select 95; _body = _this select 0; _timeout = 0; _max_timeout = 1200; // maximum allowed _wep = weapons _body; _mag = magazines _body; // Get body's current position _pos = getPos _body; _offset = _name distance _pos; _upos = [_pos select 0, _pos select 1, _Offset]; if (_bury_timeout > 0 && _bury_timeout < _max_timeout) then { _timeout = time + _bury_timeout; }else{ _timeout = time + _max_timeout; }; if (_cadaver == 0) then { waitUntil{time > _timeout}; if (_drop_weapons == 1) then { _holder = "WeaponHolder" createVehicle _upos; _holder setPos _upos; sleep 1; {_body action ["DropMagazine",_holder, _x];sleep 0.6;} forEach _mag; {_body action ["DropWeapon",_holder, _x];sleep 0.7;} forEach _wep; }; clearVehicleInit _body; deleteVehicle _body; _body = objNull; }else{ if (_drop_weapons == 1) then { _holder = "WeaponHolder" createVehicle _upos; _holder setPos _upos; sleep 1; {_body action ["DropMagazine",_holder, _x];sleep 0.6;} forEach _mag; {_body action ["DropWeapon",_holder, _x];sleep 0.7;} forEach _wep; }; clearVehicleInit _body; sleep 2; }; if (true) exitWith {}; //Last modified 11/8/7 //Returns an average slope value of terrain within passed radius. Private["_centerHeight","_direction","_height","_position","_radius"]; _position = _this Select 0; _radius = _this Select 1; GetSlopeObject SetPos _position; _centerHeight = GetPosASL GetSlopeObject Select 2; _height = 0; _direction = 0; for [{_count = 0},{_count < 8},{_count = _count + 1}] do { GetSlopeObject SetPos [(_position Select 0)+((sin _direction)*_radius),(_position Select 1)+((cos _direction)*_radius),0]; _direction = _direction + 45; _height = _height + abs (_centerHeight - (GetPosASL GetSlopeObject Select 2)); }; _height / 64; //1209010 changed height/x value in function original value was 8 now 64 //11/8/7 MM - Created file. //modified 24/08/09 by norrin for ArmA2 // I_need_help // AUGUST 2009 - norrin private ["_can_revive","_can_revive_2","_goto_revive_distance","_AI_smoke","_AI_cover","_call_for_AI_help","_smoke_shell_types","_helpComments","_revive_units","_potential_revivers","_possible_reviver","_reviver","_mags","_smoke_rounds"]; _unit = player; _can_revive = Norrn_revive_array select 18; _can_revive_2 = Norrn_revive_array select 19; _can_be_revived = Norrn_revive_array select 20; _can_be_revived_2 = Norrn_revive_array select 21; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _goto_revive_distance = Norrn_revive_array select 33; _AI_smoke = Norrn_revive_array select 40; _AI_cover = Norrn_revive_array select 50; _call_for_AI_help = Norrn_revive_array select 59; _medic_1 = Norrn_revive_array select 76; _medic_2 = Norrn_revive_array select 77; _medpacks = Norrn_revive_array select 80; _smoke_shell_types = ["SmokeShell","SmokeShellRed","SmokeShellGreen"]; _reviver = objNull; if (_call_for_AI_help == 0) exitWith {titleText ["This option is not enabled in this mission","PLAIN",1]}; _helpComments = ["Brian_Need_help","Brian_A_little_help_here"]; _unit say (_helpComments select floor(random 2)); //create revivable unit array _revive_units = []; {call compile format ["if (!isNull %1) then {_revive_units = _revive_units + [%1]}", _x]} forEach NORRN_player_units; //Find and designate reviver if (count (nearestObjects [_unit, [_can_be_revived, _can_be_revived_2], _goto_revive_distance]) > 1) then { _potential_revivers = []; _potential_revivers = nearestObjects [_unit, [_can_revive, _can_revive_2, _medic_1,_medic_2], _goto_revive_distance]; _possible_reviver = []; _possible_protectors =[]; {if (_x in _revive_units) then {if (!(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious") && _medpacks == 0 || !(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious") && _medpacks == 1 && (_x getVariable "NORRN_medpacks") > 0) then {_possible_reviver = _possible_reviver + [_x]}}}forEach _potential_revivers; {if (_x in _revive_units) then {if (!(_x getVariable "NORRN_AI_help") && !(_x getVariable "NORRN_unconscious")) then {_possible_protectors = _possible_protectors + [_x]}}}forEach _potential_revivers; if ((count _possible_reviver) > 0) then { _reviver = _possible_reviver select 0; titleCut [format ["\n\nCalling %1 for help", name _reviver], "PLAIN", 0.5]; _reviver setVariable ["NORRN_AI_help", true, true]; Norrn_helper_list = Norrn_helper_list + [(_reviver)]; if (!isplayer _reviver) then { //Instruct stopped AI unit to move if (currentCommand _reviver == "stop")then { if (!local _reviver) then { _reviver setVehicleInit "[this] join grpNull"; processInitCommands; }else{ [_reviver] join grpNull; }; }; //move AI reviver to unconscious body (_unit) call compile format ["_reviver setVehicleInit 'this doMove (getPos %1)'", _unit]; processInitCommands; //Added helper throw smmoke if (_AI_smoke == 1) then { //check to see if the reviver has smoke _mags = magazines _reviver; _smoke_rounds = []; {if (_x in _smoke_shell_types) then {_smoke_rounds = _smoke_rounds + [_x]}} forEach _mags; //healer throws smoke if (count _smoke_rounds > 0) then {[_reviver, _smoke_rounds] spawn Norrn_AI_throwSmoke;}; }; }else { //call compile format ["_reviver setVehicleInit 'if (this == %1) then {titleText [''%2 has called for help'',''PLAIN'', 1]}'", _reviver, (name player)]; call compile format ["_reviver setVehicleInit 'hint ''%1 has called for help \nCheck map if markers are enabled for wounded players position'''", name player]; processInitCommands; hint ""; }; }; _possible_protectors = _possible_protectors - [_reviver ]; if ((count _possible_protectors) > 1 && _AI_cover == 1) then { _goto_protector = _possible_protectors select 0; if (!isplayer _goto_protector) then { //Instruct stopped AI unit to move if (currentCommand _goto_protector == "stop")then { if (!local _goto_protector) then { _goto_protector setVehicleInit "[this] join grpNull"; processInitCommands; }else{ [_goto_protector] join grpNull; }; }; //move AI cover unit to unconscious body call compile format ["_goto_protector setVehicleInit 'this doMove [((getPos %1) select 0) + 5, ((getPos %1) select 1) + 5, ((getPos %1) select 2)]'", _unit]; processInitCommands; }; }; }; [_reviver,_unit] execVM "revive_sqf\functions\wait_check.sqf"; if (true) exitWith {}; // file last edited 240609// Norrn_LeaderFix // AUGUST 2009 - norrin _group_leader = _this select 0; _my_group = _this select 1; call compile format ["_leader = %1", _group_leader]; _group = group _leader; {call compile format ["if (group %1 != _group && !(%1 getVariable 'Norrn_dead')) then {[%1] joinsilent _group; %1 doMove (getPos %1)}", _x]} forEach _my_group; sleep 2; {call compile format ["if (group %1 != _group && !(%1 getVariable 'Norrn_dead')) then {[%1] joinsilent _group; %1 doMove (getPos %1)}", _x]} forEach _my_group; if (_leader != formleader _name) then { {_x doFollow _leader} forEach units _group; {_x doMove getPos _x} forEach units _group; }; //file modified 170809 // Norrn_LivesRemain // JUNE 2009 - norrin private["_name","_max_respawns","_no_respawns","_respawns_left","_no_left"]; _name = _this select 0; _max_respawns = _this select 1; _no_respawns = (_name getVariable "NORRN_lives_used") + 1; _respawns_left = _max_respawns - _no_respawns; _no_left = format ["Lives remaining: %1", _respawns_left]; if (_name == player) then {hint _no_left}; _name setVariable ["NORRN_lives_used", _no_respawns, true]; //file modified 030609// respawn_chance.sqf // JUNE 2009 - norrin _body = _this select 0; _respawns = _this select 1; switch (_body getVariable "NORRN_body_part") do { case "": {_respawn_chance = 500}; case "hands": {_respawn_chance = 200}; case "legs": {_respawn_chance = 70}; case "body": {_respawn_chance = 50}; case "head_hit": {_respawn_chance = 20}; }; if (_respawns == 2) then {_respawn_chance = (_respawn_chance/2)}; if (_respawns == 3) then {_respawn_chance = (_respawn_chance/3)}; if (_respawns == 4) then {_respawn_chance = (_respawn_chance/4)}; if (_respawns == 5) then {_respawn_chance = (_respawn_chance/5)}; _respawn_chance// respawn_time.sqf // JUNE 2009 - norrin _body = _this select 0; _respawns = _this select 1; _revive_time_limit = Norrn_revive_array select 27; switch (_body getVariable "NORRN_body_part") do { case "": {_revive_time_limit = _revive_time_limit}; case "hands": {_revive_time_limit = _revive_time_limit}; case "legs": {_revive_time_limit = (_revive_time_limit * 4)/5}; case "body": {_revive_time_limit = (_revive_time_limit * 3)/5}; case "head_hit": {_revive_time_limit = (_revive_time_limit * 2)/5}; }; if (_respawns == 2) then {_revive_time_limit = (_revive_time_limit/2)}; if (_respawns == 3) then {_revive_time_limit = (_revive_time_limit/3)}; if (_respawns == 4) then {_revive_time_limit = (_revive_time_limit/4)}; if (_respawns == 5) then {_revive_time_limit = (_revive_time_limit/5)}; _revive_time_limit// Norrn_RespawnPos1 // JANUARY 2008 - norrin _name = _this select 0; _pos = _this select 1; _mobile_spawn = Norrn_revive_array select 51; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _Base_4 = ""; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at marker", "PLAIN", 0.3]}; sleep 2; _base_1_distance = _pos distance getMarkerPos _Base_1; _base_2_distance = _pos distance getMarkerPos _Base_2; _base_3_distance = _pos distance getMarkerPos _Base_3; _base_4_distance = _pos distance getMarkerPos _Base_4; _base_distance = _base_1_distance; _respawn_base = 1; if (_base_distance > _base_2_distance && !_no_base_2 && !_no_base_2b) then {_base_distance = _base_2_distance; _respawn_base = 2;}; if (_base_distance > _base_3_distance && !_no_base_3 && !_no_base_3b) then {_base_distance = _base_3_distance; _respawn_base = 3;}; if (_base_distance > _base_4_distance && !_no_base_4 && !_no_base_4b) then {_base_distance = _base_4_distance; _respawn_base = 4;}; sleep 0.01; [_respawn_base, _name] execVM "revive_sqf\respawn_at_base.sqf"; true; //file created 080109// Norrn_RespawnPos2Player // AUGUST 2010 - norrin _unconscious_body = _this select 0; _unconscious_markers = Norrn_revive_array select 4; NORRN_spawn_chosen = false; titleText ["\n\n\n\n\n\n\n\n\n\nRevive timer has been exceeded. Choose a marker for respawn", "PLAIN", 10]; NORRN_r_time_expire = true; if (!isNull _unconscious_body) then { _unconscious_body switchMove "Deadstate"; norrnRDead = _unconscious_body; publicVariable "norrnRDead"; }; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", player]}; waitUntil {NORRN_spawn_chosen}; true; //file modified 230709// Norrn_RespawnPos2AI // JANUARY 2009 - norrin _name = _this select 0; _pos = _this select 1; _mobile_spawn = Norrn_revive_array select 51; call compile format ["if (%1_a) then {waitUntil {!%1_a}};", leader (group _name)]; _pos_leader = getPos (leader (group _name)); _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _Base_4 = ""; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at marker", "PLAIN", 0.3]}; sleep 2; _base_1_distance = _pos_leader distance getMarkerPos _Base_1; _base_2_distance = _pos_leader distance getMarkerPos _Base_2; _base_3_distance = _pos_leader distance getMarkerPos _Base_3; _base_4_distance = _pos_leader distance getMarkerPos _Base_4; _base_distance = _base_1_distance; _respawn_base = 1; if (_base_distance > _base_2_distance && !_no_base_2 && !_no_base_2b) then {_base_distance = _base_2_distance; _respawn_base = 2;}; if (_base_distance > _base_3_distance && !_no_base_3 && !_no_base_3b) then {_base_distance = _base_3_distance; _respawn_base = 3;}; if (_base_distance > _base_4_distance && !_no_base_4 && !_no_base_4b) then {_base_distance = _base_4_distance; _respawn_base = 4;}; sleep 0.01; [_respawn_base, _name] execVM "revive_sqf\respawn_at_base.sqf"; true; //file created 080109 // NORRN_reviveDrag_C_keyDown.sqf // ==================================================================================== private["_handled", "_ctrl", "_dikCode", "_shift", "_ctrl", "_alt"]; _ctrl = _this select 0; _dikCode = _this select 1; _shift = _this select 2; _ctrl = _this select 3; _alt = _this select 4; if (!_shift && !_ctrl && !_alt) then { if (_dikCode in ([DIK_C]+(actionKeys "NetworkStats"))) then { hint "blogs"; NORRN_noCkey = true; null = [] execVM "revive_sqf\functions\whileDragging_KEY_pressed.sqf"; }; }; // ====================================================================================// Norrn_SlopeFix // AUGUST 2009 - norrin _pos = _this select 0; _slope = _this select 1; _name = _this select 2; _radius = 0; _found_it = false; while {_slope >= NORRN_max_slope && !_found_it} do { _center_x = _pos select 0; _center_y = _pos select 1; _radius = _radius + 10; _angle = 0; while {_angle < 350 && !_found_it} do { _x1 = _center_x - (_radius * sin _angle); _y1 = _center_y - (_radius * cos _angle); _slope = [[_x1, _y1, 0], 1] call GetTerrainSlope; if (_slope < NORRN_max_slope) then { _pos = [_x1, _y1, 0]; _found_it = true; }else{ _angle = _angle + 15; sleep 0.005; }; }; }; if (_found_it) then { _offset = _name distance _pos; _name setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), _offset], true]; }; //file modified 240809//toggle_dialog_fade if (Norrn_DialogBlink == 20) then { Norrn_DialogBlink = 0; }else{ Norrn_DialogBlink = 20; }; if (true) exitWith {}// Norrn_UncAnimFix // JANUARY 2009 - norrin private["_name","_pos","_center_x","_center_y","_radius","_angle","_found_it","_set_pos","_x1","_y1","_slope"]; _name = _this select 0; _pos = _this select 1; _name setCaptive true; _center_x = _pos select 0; _center_y = _pos select 1; _radius = 500; _angle = 0; _found_it = false; _set_pos = [(_pos select 0) - 500, _pos select 1]; while {_angle <= 350 && !_found_it} do { _x1 = _center_x - (_radius * sin _angle); _y1 = _center_y - (_radius * cos _angle); _slope = [[_x1, _y1, 0], 1] call GetTerrainSlope; if (!(surfaceiswater [_x1, _y1])&& _slope < 0.78) then { _set_pos = [_x1, _y1]; _found_it = true; }; _angle = _angle + 10; }; if (_angle == 360) then {_set_pos = NORRN_respawn_mrkr}; _name setPos [_set_pos select 0, _set_pos select 1, 0]; //file created 080109 // uncTimer.sqf // NOVEMBER 2009 - norrin _revive_time_limit = NORRN_revive_array select 27; _revive_time = time + _revive_time_limit; _timer = time + 1; _timer_count = _revive_time_limit; while {(player getVariable "NORRN_AIunconscious") && !(player getVariable "Norrn_respawn_at_base")} do { // Revive count-down if (time > _timer) then { _timer = time + 1; _timer_count = _timer_count - 1; if (!mission_Over && !all_dead_check) then {call compile format ["titleText ['\n\n\n\n\n\n\n\n\n\nRevive Time Remaining: %1', 'PLAIN', 1]", _timer_count]}; }; sleep 0.01; }; if (true) exitWith {};// wait_check // MAY 2009 - norrin private ["_reviver","_d","_name"]; _reviver = _this select 0; _unit = _this select 1; _name = name _reviver; _d = 0; if (!isNull _reviver) then { waitUntil {!(_unit getVariable "NORRN_unconscious") || !alive _reviver || !(_reviver getVariable "NORRN_AI_help")}; _reviver setVehicleInit "this doMove (getPos this);"; processInitCommands; if (!alive _reviver && dialog) then { titleCut[format ["Oh no %1 is down, you will need to call for help again", _name], "PLAIN", 1]; Norrn_helper_list = Norrn_helper_list - [_reviver]; }; if (!isNull _unit && alive _reviver && dialog) then { if (!(_reviver getVariable "NORRN_AI_help") && (unconscious_body distance _reviver) > 4.5) then { titleCut [format ["%1 is helping another unit you will need to call for help again", (name _reviver)],"PLAIN", 1]; Norrn_helper_list = Norrn_helper_list - [_reviver]; }; }; _reviver setVariable ["NORRN_AI_help", false, true]; }else{titleCut ["No potential revivers are currently available", "PLAIN", 1]}; if (true) exitWith {}; //Last edited 06/05/09// Norrn_WaterFix - AI disabled // JUNE 2009 - norrin _body = _this select 0; _unit = _this select 1; _pos = _this select 2; _water_dialog = NORRN_revive_array select 45; _body allowDamage false; if (surfaceIsWater getPos _body) then { waitUntil{alive call compile format["%1",_unit]}; _name = call compile format["%1",_unit]; {_name removeMagazine _x} forEach magazines _name; _name setPosASL _pos; deleteVehicle _body; _name setCaptive true; if (_water_dialog == 1 && _name == player) then { titleText ["Choose wash ashore or press escape to close dialog and start at current position","PLAIN", 0.4]; _dialog_1 = createDialog "respawn_button_1c"; }; if (_name == player) then {titlecut [" ","BLACK IN", 0.4]}; }; while {surfaceIsWater getPos _name} do { disableUserInput false; if(!alive player) then { _body = player; _pos = getPos _body; waitUntil{alive call compile format["%1",player]}; _name = call compile format["%1",player]; _name setPos _pos; deleteVehicle _body; _name setCaptive true; }; _name setdammage 0; if (vehicle _name != _name && _name == driver (vehicle _name)) then {_name action ["GETOUT", vehicle _name]}; if (vehicle _name != _name && _name == gunner vehicle _name) then {_name action ["GETOUT", vehicle _name]}; _water = true; sleep 1; }; sleep 0.1; if (!surfaceIsWater getPos _name && _water) then { if (vehicle _name != _name) then {_name action ["GETOUT", vehicle _name]}; _name setCaptive false; if (_name == player) then {titlecut [" ","BLACK OUT",10]}; _pos = getPos _name; _dir = getDir _name; _Offset = 0; _name switchMove r_unc_animation; sleep 1; //player setVariable ["NORRN_pos_x", _pos select 0, true]; //player setVariable ["NORRN_pos_y", _pos select 1, true]; _name setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), 0], true]; _name setPos NORRN_respawn_mrkr; sleep 0.1; _water = false; if (_name == player) then {disableUserInput true}; }; _name; //file modified 230809// whileDragging_KEY_pressed.sqf waitUntil {animationState player != "acinpknlmstpsraswrfldnon" && animationState player != "acinpknlmwlksraswrfldb"}; sleep 2; if (vehicle player == player) then { player playMove "aidlpknlmstpslowwrfldnon"; };/* Go BACK SCRIPT JULY 2008 - norrin (norrins_nook@iprimus.com.au) **************************************************************************** go_back.sqf */ disableserialization; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; closedialog 0; switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1map"}; case 2: {_dialog_1 = createDialog "respawn_button_2map"}; case 3: {_dialog_1 = createDialog "respawn_button_3map"}; case 4: {_dialog_1 = createDialog "respawn_button_4map"}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; if (true) exitWith {};/* HEAL_ACTION SCRIPT Causes the unit to execute the medic animation when the revive action is chosen OCTOBER 2010 - norrin *********************************************************************************************************************** begin heal.sqf */ _array = _this select 3; _name = _array select 0; _wounded = _array select 1; _QG_animation = NORRN_revive_array select 54; _medpacks = NORRN_revive_array select 80; _reward_function = NORRN_revive_array select 96; _wounded setVariable ["NORRN_unit_dragged", true, true]; if (_QG_animation == 1) then {_wounded playMoveNow "ainjppnemstpsnonwrfldnon"}; sleep 1; if (!isplayer _name) then { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; } else { if (_QG_animation == 1) then { _wounded attachTo [_name,[0,1.1,0]]; sleep 0.02; _wounded setVehicleInit "this setDir 170;"; processInitCommands; _name playMoveNow "ainvpknlmstpsnonwnondr_medic3"; } else { _name playMove "AinvPknlMstpSlayWrflDnon_medic"; }; }; if (_medpacks == 1) then { _var = _name getVariable "Norrn_medpacks"; _name setVariable ["Norrn_medpacks", (_var - 1), true]; if (_name == player) then { _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", _name getVariable "Norrn_medpacks", _name getVariable "Norrn_bandages"]; hint _med_supplies; }; }; sleep 9; if (_reward_function == 1) then { _var = _name getVariable "NORRN_bonus_life"; _name setVariable ["NORRN_bonus_life", _var + 1, false]; }; if (_QG_animation == 1 && isplayer _name) then { sleep 2; _name playMoveNow "ainvpknlmstpsnonwnondr_medic0"; sleep 9; _name playMoveNow "ainvpknlmstpslaywrfldnon_1"; detach _wounded; }; _name SetVariable ["Norrn_heyImBusy", false, true]; if (true) exitWith {}; //020709/* HEAL_ACTION SCRIPT Causes the player to execute the medic animation when the heal action is chosen and resets dammage to 0. AUGUST 2010 - norrin *********************************************************************************************************************** begin heal.sqf */ player playMove "AinvPknlMstpSlayWrflDnon_medic"; player setdammage 0; if (NORRN_R_SP) then {player setVariable ["NORRN_totalDamage", 0, false]}; NORRN_healed = true; sleep 8; if (true) exitWith {}; //file last edited 130109/* PLAYER HEAL SCRIPT - Doc SNKMAN's Amazing Snake Oil Elixir All playable units can heal themselves a x number of times AUGUST 2010 - norrin ******************************************************************************************************* Based on an idea by SNKMAN ******************************************************************************************************* Start player_heal.sqf */ if (!local player) exitWith {}; _unit = _this select 0; _no_of_heals = NORRN_revive_array select 29; _lower_bound_heal = NORRN_revive_array select 30; _upper_bound_heal = NORRN_revive_array select 31; _c = 0; _no_heals_remaining = _no_of_heals; _remove_heal = false; NORRN_healed = false; //Probably best not to play with the following code unless you know what you are doing sleep 1; //Prompt joining player the number of heals remaining _no_heals = format ["Heals remaining: %1", _no_of_heals]; //hint format ["%1", _no_heals]; sleep 1; //Body of the script while {true} do { //While player alive if (alive player) then { //add heal action for players if(_c == 0 && !NORRN_R_SP && getDammage player >= _lower_bound_heal && getDammage player <= _upper_bound_heal && _no_heals_remaining > 0 || _c == 0 && NORRN_R_SP && (player getVariable "NORRN_totalDamage") >= _lower_bound_heal && (player getVariable "NORRN_totalDamage") <= _upper_bound_heal && _no_heals_remaining > 0) then { NORRN_HealAction = player addAction ["Heal", "revive_sqf\heal_sqf\heal.sqf","", 0, false, true]; _c = 1; }; if (NORRN_healed) then {_remove_heal = true}; if(_remove_heal) then { _no_heals_remaining = _no_heals_remaining - 1; hint format ["Heals remaining: %1", _no_heals_remaining]; player removeAction NORRN_HealAction; _c = 0; NORRN_healed = false; _remove_heal = false; sleep 4; hint""; sleep 6; }; if (!NORRN_R_SP && getDammage player > _upper_bound_heal || NORRN_R_SP && (player getVariable "NORRN_totalDamage")> _upper_bound_heal) then { player removeAction NORRN_HealAction; _c = 0; sleep 1; }; sleep 2; }; //if player is dead if (!alive player) then { _no_heals_remaining = _no_of_heals; _no_left = format ["Heals remaining: %1", _no_heals_remaining]; //hint _no_left; NORRN_healed = false; _c = 0; sleep 2; }; };// init_related_scripts.sqf ArmA2 revive // AUGUST 2010 - norrin _mission_end_function = NORRN_revive_array select 0; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; _no_enemy_sides = NORRN_revive_array select 22; _mobile_man = NORRN_revive_array select 53; _mobile_type = NORRN_revive_array select 60; _unitsArray = NORRN_player_units; NORRN_player_units = []; {call compile format ["NORRN_player_units = NORRN_player_units +['%1']", _x]} forEach _unitsArray; //hint format ["%1",NORRN_player_units]; if (isServer && _mobile_spawn == 1) then {NORRN_camo_net = false; publicVariable "NORRN_camo_net"}; if (_mobile_spawn == 1) then {r_ms_base_1 = _Base_1}; // Added pvEH - scripts modified to remove the need for sending long strings via setVehicleInit to reduce network traffic and JIP load - 04072010 "norrnRNoDam" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\noDamage.sqf"}; "norrnDam" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\allowDamage.sqf"}; "norrnRaDrag" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\animDrag.sqf"}; "norrnRnoAnim" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\noAnim.sqf"}; "norrnRaCarUp" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\carriedUp.sqf"}; "norrnRaPicUp" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\pickUp.sqf"}; "norrnRaHl" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\animHealed.sqf"}; "norrnRrTB" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\rolltoback.sqf"}; "norrnRrTF" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\rolltofront.sqf"}; "norrnRName" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\promptRName.sqf"}; "norrnRalie" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\lieStill.sqf"}; "norrnR180" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\set180.sqf"}; "norrnRaLW" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\load_wounded.sqf"}; "norrnRLact" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\load_wounded\load_wounded.sqf"}; "norrnRDead" addPublicVariableEventHandler {[_this select 1] execVM "revive_sqf\pvEH\deadState.sqf"}; // INCLUDE REQUIRED GAME CODES #include "\ca\editor\Data\Scripts\dikCodes.h" // Add Revive Functions Norrn_AIBehaviour = Compile PreprocessFile "revive_sqf\functions\AIBehaviour.sqf"; Norrn_WaterFix = Compile PreprocessFile "revive_sqf\functions\WaterFix.sqf"; GetTerrainSlope = Compile PreprocessFile "revive_sqf\functions\GetTerrainSlope.sqf"; //Add terrain slope function from Warfare thanks to BIS Norrn_SlopeFix = Compile PreprocessFile "revive_sqf\functions\SlopeFix.sqf"; Norrn_CallOut = Compile PreprocessFile "revive_sqf\functions\CallOut.sqf"; Norrn_UncAnimFix = Compile PreprocessFile "revive_sqf\functions\UncAnimFix.sqf"; Norrn_DeleteUncBody = Compile PreprocessFile "revive_sqf\functions\DeleteUncBody.sqf"; Norrn_LeaderFix = Compile PreprocessFile "revive_sqf\functions\LeaderFix.sqf"; Norrn_LivesRemain = Compile PreprocessFile "revive_sqf\functions\LivesRemain.sqf"; Norrn_RespawnPos1 = Compile PreprocessFile "revive_sqf\functions\RespawnPos1.sqf"; Norrn_RespawnPos2 = Compile PreprocessFile "revive_sqf\functions\RespawnPos2.sqf"; Norrn_RespawnPos2AI = Compile PreprocessFile "revive_sqf\functions\RespawnPos2AI.sqf"; Norrn_Call4Help = Compile PreprocessFile "revive_sqf\functions\I_need_help.sqf"; Norrn_AI_throwSmoke = Compile PreprocessFile "revive_sqf\functions\AI_throwSmoke.sqf"; NORRN_DropWeapons = Compile PreprocessFile "revive_sqf\functions\dropWeapons.sqf"; NORRN_load_wounded = Compile PreprocessFile "revive_sqf\load_wounded\load_wounded.sqf"; NORRN_respawn_chance = Compile PreprocessFile "revive_sqf\functions\respawn_chance.sqf"; NORRN_respawn_time = Compile PreprocessFile "revive_sqf\functions\respawn_time.sqf"; NORRN_createBody = Compile PreprocessFile "revive_sqf\functions\createBody.sqf"; NORRN_uncTimer = Compile preprocessfile "revive_sqf\functions\uncTimer.sqf"; NORRN_reviveDrag_C_keyDown = Compile preprocessfile "revive_sqf\functions\reviveDrag_C_keyDown.sqf"; NORRN_UNC_CAM = Compile preprocessfile "revive_sqf\cam_follow.sqf"; Norrn_DialogBlink = 0; //======================================================== // Initialise revive script [] execVM "revive_sqf\revive_init.sqf"; // Initialise isplayer script [NORRN_player_units] execVM "revive_sqf\isplayer.sqf"; if (isServer) then { mission_Over = false; publicVariable "mission_Over"; // Initialise mission end script if (_mission_end_function == 1) then {[NORRN_player_units] execVM "revive_sqf\mission_end.sqf"}; // Initialise marker color script if (_no_enemy_sides > 0) then {[] execVM "revive_sqf\marker_color.sqf"}; // Initialise mobile spawn function if (_mobile_spawn == 1) then { if (_mobile_type == 0) then { [r_mobile_spawn_vcl, 0] execVM "revive_sqf\mobile\move_spawn.sqf" } else { NORRN_mobile_man = ObjNull; [_mobile_man, 1] execVM "revive_sqf\mobile\move_spawn.sqf" }; }; }; //create mobile respawn marker if (_mobile_spawn == 1) then {[] execVM "revive_sqf\mobile\mobile_marker.sqf"}; //initialise mobile spawn script if player is mobile respawn unit if (player == _mobile_man) then { [_mobile_man, _mobile_man] execVM "revive_sqf\mobile\mobile_spawn.sqf"; NORRN_mobile_man = player; publicVariable "NORRN_mobile_man"; }; //Camera Options - hoz and mandoble's free cam settings, OFPEC - see: http://www.ofpec.com/forum/index.php?topic=32970.0 OFPEC_MouseCoord = [0.5,0.5]; OFPEC_MouseScroll = 0; OFPEC_MouseButtons =[false,false]; OFPEC_camzoomspeed = 1.0; OFPEC_maxzoomout = 400; OFPEC_range_to_unit = 5; //starting dist from target if (_max_respawns == 2000) then {[]execVm "revive_sqf\respawn\init_respawn.sqf"}; if (count playableUnits == 0) then {NORRN_R_SP = true} else {NORRN_R_SP = false}; if (true) exitWith {}; /* ISPLAYER SCRIPT Checks to determine whether the unit isplayer and resets unconcious variable and deletes marker if player no longer present JULY 2009 - norrin ************************************************************************************************************************************ isplayer.sqf */ if (!local player) exitWith {}; _names_units = _this select 0; _revive_array = NORRN_revive_array; _can_be_revived = _revive_array select 20; _can_be_revived_2 = _revive_array select 21; _units = []; sleep 5; {call compile format ["if(!isNull %1) then {_units = _units + [%1]}", _x]} forEach _names_units; while {true} do { //hint format ["%1", _units]; {call compile format ["if(!isNull %1 && %1 in _units) then {}else {_units = _units + [%1]}", _x]}forEach _names_units; {if (!alive _x) then { _mrkr = format ["%1 is down", _x]; _units = _units - [_x]; deleteMarker _mrkr; };}forEach _units; sleep 1; }; // Load_act.sqf // JULY 2010 - norrin private ["_args","_dragger","_vcl","_wounded"]; _args = _this select 3; _dragger = _args select 0; _vcl = _args select 1; _wounded = _args select 2; r_drag_sqf = false; _dragger removeAction NORRN_loadWoundedAction; if ((_vcl emptyPositions "cargo") > 0) then { detach _wounded; _dragger switchMove ""; _wounded setVariable ["NORRN_LoadVcl", _vcl, true]; sleep 1; [_wounded] execVM "revive_sqf\load_wounded\load_wounded.sqf"; norrnRLact = _wounded; publicVariable "norrnRLact"; player removeAction NORRN_dropAction; }else{ hint "No space left in vehicle"; }; NORRN_load_wounded_action = true; if (true) exitWith {};// Load_wounded.sqf // OCTOBER 2010 - norrin private ["_wounded","_vcl","_group"]; _wounded = _this select 0; if (!local _wounded) exitWith {}; sleep 1; _vcl = _wounded getVariable "NORRN_loadVcl"; _wounded setVariable ["NORRN_unit_dragged", true, true]; _wounded assignAsCargo _vcl; _wounded moveInCargo _vcl; sleep 1; norrnRALW = _wounded; publicVariable "norrnRALW"; _wounded switchMove "kia_hmmwv_driver"; if (local _wounded) then { waitUntil {!(_wounded getVariable "NORRN_unconscious")|| !alive _wounded || vehicle _wounded == _wounded || (assignedVehicleRole _wounded) select 0 != "Cargo"}; if (vehicle _wounded == _wounded || (assignedVehicleRole _wounded) select 0 != "Cargo") exitWith { if (_wounded getVariable "NORRN_AIunconscious") then { if (vehicle _wounded != _wounded) then { unassignVehicle _wounded; sleep 0.05; _wounded action ["EJECT", _vcl]; sleep 1; }; norrinRAlie = _wounded; publicVariable "norrinRAlie"; _wounded switchMove "ainjppnemstpsnonwrfldnon"; _wounded setVariable ["NORRN_unit_dragged", false, true]; sleep 1; }; }; if (vehicle _wounded != _wounded && alive _wounded) then { _wounded playMove "BasicDriver"; }; }; sleep 0.01; if (true) exitWith {}; // unLoad_act.sqf // AUGUST 2010 - norrin private ["_args","_dragger","_vcl","_wounded"]; _args = _this select 3; _name = _args select 0; _vcl = _args select 1; _crewVcl = _args select 2; _name removeAction NORRN_pullOutAction; for [{ _loop = 0 },{ _loop < count _crewVcl },{ _loop = _loop + 1}] do { _unit = _crewVcl select _loop; if (_unit getVariable "NORRN_AIunconscious") then { unassignVehicle _unit; sleep 0.05; _unit action ["EJECT", _vcl]; sleep 1; norrinRAlie = _unit; publicVariable "norrinRAlie"; _unit switchMove "ainjppnemstpsnonwrfldnon"; _unit setVariable ["NORRN_unit_dragged", false, true]; }; sleep 0.1; }; if (true) exitWith {};/* MARKER COLOR SCRIPT This script automatically sets the respawn marker color based on enemy occupation of zone OCTOBER 2008 - norrin (norrins_nook@iprimus.com.au) ************************************************************************************************************************************* marker_color.sqf */ _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _no_enemy_sides = NORRN_revive_array select 22; while {true} do { if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { if (no_base_1) then {_Base_1 setMarkerColor "ColorRed"}; if (!no_base_1) then {_Base_1 setMarkerColor "ColorGreen"}; if (no_base_2) then {_Base_2 setMarkerColor "ColorRed"}; if (!no_base_2) then {_Base_2 setMarkerColor "ColorGreen"}; if (no_base_3) then {_Base_3 setMarkerColor "ColorRed"}; if (!no_base_3) then {_Base_3 setMarkerColor "ColorGreen"}; if (no_base_4) then {_Base_4 setMarkerColor "ColorRed"}; if (!no_base_4) then {_Base_4 setMarkerColor "ColorGreen"}; }; if (_no_enemy_sides == 2) then { if (no_base_1b) then {_Base_1 setMarkerColor "ColorRed"}; if (!no_base_1b) then {_Base_1 setMarkerColor "ColorGreen"}; if (no_base_2b) then {_Base_2 setMarkerColor "ColorRed"}; if (!no_base_2b) then {_Base_2 setMarkerColor "ColorGreen"}; if (no_base_3b) then {_Base_3 setMarkerColor "ColorRed"}; if (!no_base_3b) then {_Base_3 setMarkerColor "ColorGreen"}; if (no_base_4b) then {_Base_4 setMarkerColor "ColorRed"}; if (!no_base_4b) then {_Base_4 setMarkerColor "ColorGreen"}; }; sleep 3; }; if (true) exitWith {};/* BANDAGE WOUND SCRIPT Causes the unit to execute the medic animation when the revive action is chosen AUGUST 2010 - norrin *********************************************************************************************************************** begin bandage.sqf */ _name = _this select 3; //Uneccesary actions removed & drop body added _name removeAction NORRN_bandageAction; _name playMove "AinvPknlMstpSlayWrflDnon_healed"; _var = _name getVariable "Norrn_bandages"; _name setVariable ["Norrn_bandages", (_var - 1), true]; _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (_name getVariable "Norrn_medpacks"), (_name getVariable "Norrn_bandages")]; if (_name == player) then {hint _med_supplies}; // Set variables if (NORRN_R_SP) then { _name setVariable ["NORRN_bleedDamage", (_name getVariable "NORRN_totalDamage"), false]; } else { _name setVariable ["NORRN_bleedDamage", (getDammage _name), false]; }; _name setVariable ["NORRN_Bleed", false, true]; _name setVariable ["NORRN_stopBleed", true, true]; sleep 8; if (true) exitWith {};/* BANDAGE TEAMATE SCRIPT Causes the unit to execute the medic animation when the revive action is chosen JULY 2010 - norrin *********************************************************************************************************************** begin bandage_teammate.sqf */ _array = _this select 3; _name = _array select 0; _wounded = _array select 1; //Uneccesary actions removed & drop body added _name removeAction NORRN_bandageBuddyAction; _wounded setVehicleInit "this playMove 'AmovPpneMstpSnonWnonDnon_healed'"; processInitCommands; _name playMove "AinvPknlMstpSlayWrflDnon_medic"; _var = _name getVariable "Norrn_bandages"; _name setVariable ["Norrn_bandages", (_var - 1), true]; _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (_name getVariable "Norrn_medpacks"), (_name getVariable "Norrn_bandages")]; hint _med_supplies; // Set variables if (NORRN_R_SP) then { _wounded setVariable ["NORRN_bleedDamage", (_wounded getVariable "NORRN_totalDamage"), true]; } else { _wounded setVariable ["NORRN_bleedDamage", (getDammage _wounded), true]; }; _wounded setVariable ["NORRN_Bleed", false, true]; _wounded setVariable ["NORRN_stopBleed", true, true]; sleep 8; if (true) exitWith {};// JUNE 2009 - norrin _medic_medpacks = NORRN_revive_array select 83; _unit_medpacks = NORRN_revive_array select 84; _medic_bandages = NORRN_revive_array select 85; _unit_bandages = NORRN_revive_array select 86; _medic_1 = NORRN_revive_array select 76; _medic_2 = NORRN_revive_array select 77; NORRN_medic_sup = true; player removeAction NORRN_medSuppliesAction; //Define the number of medpacks player setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (player isKindOf _medic_1 || player isKindOf _medic_2) then {player setVariable ["NORRN_medpacks", _medic_medpacks, true]}; player setVariable ["NORRN_bandages", _unit_bandages, true]; if (player isKindOf _medic_1 || player isKindOf _medic_2) then {player setVariable ["NORRN_bandages", _medic_bandages, true]}; //Prompt player the no medpack and bandages remaining _med_supplies = format ["Medpacks Remaining: %1\nBandages Remaining: %2", (player getVariable "NORRN_medpacks"), (player getVariable "Norrn_bandages")]; hint _med_supplies; if (true) exitWith {};/* MISSION END SCRIPT Ends mission when all units are unconscious JUNE 2009 - norrin ************************************************************************************************************************************ mission_end.sqf */ private ["_units", "_no_conscious"]; _names_units = _this select 0; _no_conscious = 0; sleep 20; while {true} do { _units = []; {call compile format ["_units = _units + [%1]", _x]}forEach _names_units; _no_conscious = 0; {if (isplayer _x && !(_x getVariable "NORRN_unconscious")) then {_no_conscious = 1}}forEach _units; //hint format ["%1", _no_conscious]; if (_no_conscious == 0) exitWith { mission_Over = true; publicVariable "mission_Over"; }; sleep 5; }; if (true) exitWith {}; /* DEPLOY CAMO SCRIPT norrin, SEPTEMBER 2010 *********************************************************************************************************************************** deploy_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; _camoNet = "Land_CamoNetB_NATO_EP1"; switch (playerSide) do { case west: {"USBasicAmmunitionBox_EP1" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; case east: {"TKBasicAmmunitionBox_EP1" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; case resistance: {"GuerillaCacheBox_EP1" createVehicle [_pos_vcl select 0, (_pos_vcl select 1) - 2, (_pos_vcl select 2) - 4];}; }; _vcl setFuel 0; _camo = _camoNet createVehicle _pos_vcl; _camo setDir (_dir_vcl + 90); _camo setPos [(_pos_vcl select 0) + (sqrt (4) * cos (155 - _dir_vcl)), (_pos_vcl select 1) + (sqrt (4) * sin (155 - _dir_vcl)) , 0]; NORRN_camo_net = true; publicVariable "NORRN_camo_net"; _vcl removeAction NORRN_l_spawn_act; if (true) exitWith {}; /* DEPLOY CAMO MAN SCRIPT norrin, SEPTEMBER 2010 *********************************************************************************************************************************** deploy_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; norrn_mob_mash = objNull; _tent = "MASH_EP1"; norrn_mob_mash = _tent createVehicle _pos_vcl; publicVariable "norrn_mob_mash"; norrn_mob_mash setDir (_dir_vcl + 90); norrn_mob_mash setPos [(_pos_vcl select 0) + (sqrt (4) * cos (155 - _dir_vcl)), (_pos_vcl select 1) + (sqrt (4) * sin (155 - _dir_vcl)) , 0]; NORRN_camo_net = true; publicVariable "NORRN_camo_net"; _vcl removeAction NORRN_l_spawn_act; sleep 2; norrn_mob_mash setVehicleInit "this setVehicleVarName 'norrn_mob_mash'"; processInitCommands; _pos_vcl = getPos player; _dir_vcl = getDir player; if (true) exitWith {}; // mobile_Marker.sqf // OCTOBER 2009 - norrin _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _mrker_pos = []; if (isServer) then { _mrker_pos = getMarkerPos _Base_2; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Empty"; _mrkr_ex setMarkerText ""; _mrkr_ex setMarkerSize [0.4, 0.4]; } else { if (!NORRN_camo_net) then { _mrker_pos = getMarkerPos _Base_2; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Empty"; _mrkr_ex setMarkerText ""; _mrkr_ex setMarkerSize [0.4, 0.4]; } else{ if (!isNull r_mobile_spawn_vcl) then { _mrker_pos = [(getPos r_mobile_spawn_vcl) select 0,(getPos r_mobile_spawn_vcl) select 1]; }; if (!isNull norrn_mob_mash) then { _mrker_pos = [(getPos norrn_mob_mash) select 0,(getPos norrn_mob_mash) select 1]; }; sleep 1; _mrkr_ex = _Base_1; createMarker [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColor "ColorBlue"; _mrkr_ex setMarkerType "Flag1"; _mrkr_ex setMarkerText "Mobile Respawn"; _mrkr_ex setMarkerSize [0.4, 0.4]; }; }; if (true) exitWith {}; //050409 /* LANDROVER REMOVE SPAWN ACTION SCRIPT Gives the driver the option to create a respawn base with ammo at position of vehicle norrin, March 2008 *********************************************************************************************************************************** landy_remove_spawn.sqf */ _unit = _this select 0; _unit removeAction NORRN_l_spawn_act; _unit removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* MOBILE SPAWN ACTION SCRIPT Gives the driver the option to create a respawn base with ammo at position of vehicle norrin, OCTOBER 2010 *********************************************************************************************************************************** mobile_spawn.sqf */ _vcl = _this select 0; _unit = _this select 1; NORRN_camo_reset = false; _c = 0; sleep 3; if (NORRN_camo_net) then {_c = 1}; if (player == _vcl) then { if (!local player) exitWith{}; while {true} do { if (!alive player) then { waitUntil {alive player}; }; _pos = getPos player; if (speed player == 0 && _c == 0 && !NORRN_camo_net && !(surfaceIsWater (getPos player)) && !(player getVariable "NORRN_unconscious")) then { NORRN_l_spawn_act = player addAction ["Deploy Mobile Respawn Point", "revive_sqf\mobile\deploy_camo_man.sqf", [_vcl], 10, false, true, ""]; _c = 1; }; if (speed player == 0 && _c == 1 && NORRN_camo_net && player distance norrn_mob_mash <= 7 && !(player getVariable "NORRN_unconscious")) then { NORRN_l_remove_spawn_act = player addAction ["Stow Mobile Respawn Point", "revive_sqf\mobile\stow_camo_man.sqf", [_vcl], 10, false, true, ""]; _c = 2; }; if (speed player != 0 && _c == 1 && !NORRN_camo_net || _c == 1 && surfaceIsWater (getPos player) || _c == 1 && (player getVariable "NORRN_unconscious")) then { player removeAction NORRN_l_spawn_act; if (!NORRN_camo_net) then {_c = 0} else {_c = 1}; }; if (speed player != 0 && _c == 2 && NORRN_camo_net || _c == 2 && NORRN_camo_net && player distance norrn_mob_mash > 7 || _c == 2 && (player getVariable "NORRN_unconscious")) then { player removeAction NORRN_l_remove_spawn_act; _c = 1; }; if (NORRN_camo_reset) then { NORRN_camo_reset = false; publicVariable "NORRN_camo_reset"; _c = 0; }; sleep 1; }; }else{ while {alive _vcl} do { if (!local _vcl || _unit != driver _vcl|| !isplayer (driver _vcl)) exitWith {}; if (_unit != driver _vcl) exitWith { _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; }; _pos = getPos _vcl; if (speed _vcl == 0 && _c == 0 && !NORRN_camo_net && !isEngineOn _vcl) then { NORRN_l_spawn_act = _vcl addAction ["Deploy Mobile Respawn Point", "revive_sqf\mobile\deploy_camo.sqf", [_vcl], 10, true, true, ""]; _c = _c + 1; }; if (speed _vcl == 0 && _c == 1 && NORRN_camo_net) then { NORRN_l_remove_spawn_act = _vcl addAction ["Stow Mobile Respawn Point", "revive_sqf\mobile\stow_camo.sqf", [_vcl], 10, true, true, ""]; _c = 2; }; if (speed _vcl != 0 || isEngineOn _vcl) then { _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; _c = 0; }; if (NORRN_camo_reset) then { NORRN_camo_reset = false; publicVariable "NORRN_camo_reset"; _c = 0; }; sleep 1; }; }; if (true) exitWith {}; /* MOVE SPAWN POINT SCRIPT norrin, JULY 2009 *********************************************************************************************************************************** move_spawn.sqf */ if (!isServer) exitWith {}; ScopeName "r_move_spawn"; _vcl = _this select 0; _mobile_type = _this select 1; _c = 0; _Base_1 = NORRN_revive_array select 13; _Base_respawn = NORRN_revive_array select 36; _no_enemy_sides = NORRN_revive_array select 22; _enemy_side_1 = NORRN_revive_array select 23; _enemy_side_2 = NORRN_revive_array select 24; _mobile_base_start = NORRN_revive_array select 52; _Base_1_respawn = _Base_respawn select 0; no_base_1 = false; no_base_1b = false; _unit = ""; _unit = format ["%1",_vcl]; sleep 5; if (_mobile_type == 1) then { if (isnull NORRN_mobile_man) then { waitUntil {!isnull NORRN_mobile_man}; _unit = format ["%1",NORRN_mobile_man]; _vcl = call compile format ["%1", _unit]; }; }; while {true} do { if (_mobile_type == 0) then { if (alive _vcl && NORRN_camo_net && _c == 0) then { _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; //move mobile respawn marker _Base_1 setMarkerPos [(_pos_vcl select 0) + 4, (_pos_vcl select 1) + 4, (_pos_vcl select 2) + 4]; _Base_1 setMarkerText _Base_1; _Base_1 setMarkerColor "ColorBlue"; _Base_1 setMarkerType "Flag1"; _Base_1 setMarkerSize [0.4, 0.4]; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; sleep 0.1; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; sleep 0.1; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; sleep 0.1; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; _c = 1; }; if (alive _vcl && !NORRN_camo_net && _c == 1 || !alive _vcl) then { _Base_1 setMarkerPos getMarkerPos _mobile_base_start; _Base_1 setMarkerText ""; _Base_1 setMarkerType "Empty"; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_1) then {deleteVehicle r_ms_trig_1}; sleep 0.2; if (!isnull r_ms_trig_2) then {deleteVehicle r_ms_trig_2}; sleep 0.2; }; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_3) then {deleteVehicle r_ms_trig_3}; sleep 0.2; if (!isnull r_ms_trig_4) then {deleteVehicle r_ms_trig_4}; sleep 0.2; }; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; sleep 1; _c = 0; if (!alive _vcl) then {breakout "r_move_spawn"}; }; sleep 2; }; if (_mobile_type == 1) then { //if (isnull NORRN_mobile_man) then {waitUntil {!isnull NORRN_mobile_man}; _vcl = NORRN_mobile_man}; if (NORRN_camo_net && _c == 0) then { _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; //move mobile respawn marker _Base_1 setMarkerPos [(_pos_vcl select 0) + 4, (_pos_vcl select 1) + 4, (_pos_vcl select 2) + 4]; _Base_1 setMarkerText _Base_1; _Base_1 setMarkerColor "ColorBlue"; _Base_1 setMarkerType "Flag1"; _Base_1 setMarkerSize [0.4, 0.4]; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; sleep 0.1; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; sleep 0.1; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; sleep 0.1; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; _c = 1; }; if (!NORRN_camo_net && _c == 1) then { _Base_1 setMarkerPos getMarkerPos _mobile_base_start; _Base_1 setMarkerText ""; _Base_1 setMarkerType "Empty"; sleep 1; if (_no_enemy_sides == 1 && _Base_1_respawn == 0 || _no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_1) then {deleteVehicle r_ms_trig_1}; sleep 0.2; if (!isnull r_ms_trig_2) then {deleteVehicle r_ms_trig_2}; sleep 0.2; }; if (_no_enemy_sides == 2 && _Base_1_respawn == 0) then { if (!isnull r_ms_trig_3) then {deleteVehicle r_ms_trig_3}; sleep 0.2; if (!isnull r_ms_trig_4) then {deleteVehicle r_ms_trig_4}; sleep 0.2; }; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; sleep 1; _c = 0; }; /* if (vehicle _vcl != _vcl) then { waitUntil {vehicle _vcl == _vcl}; }; */ if (!isplayer _vcl) then { waitUntil {!isnull NORRN_mobile_man}; _vcl = NORRN_mobile_man; }; if (!alive _vcl && isplayer _vcl)then { waitUntil{alive (call compile format ["%1", _unit])}; _vcl = call compile format ["%1", _unit]; }; sleep 2; }; }; //15/07/09 /* STOW CAMO SCRIPT norrin, SEPTEMBER 2010 *********************************************************************************************************************************** stow_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; _ammo_crates = nearestObjects [_vcl, ["ReammoBox"], 10]; {deleteVehicle _x} forEach _ammo_crates; _shed = nearestObject [_vcl, "House"]; //120910 deleteVehicle _shed; //reset enemy spawn variables no_base_1 = false; no_base_1b = false; publicVariable "no_base_1"; publicVariable "no_base_1b"; _vcl setFuel 1; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; NORRN_camo_reset = true; publicVariable "NORRN_camo_reset"; _vcl removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* STOW CAMO MAN SCRIPT norrin, AUGUST 2009 *********************************************************************************************************************************** stow_camo.sqf */ _vcl = _this select 0; _pos_vcl = getPos _vcl; _dir_vcl = getDir _vcl; clearVehicleInit norrn_mob_mash; deleteVehicle norrn_mob_mash; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; NORRN_camo_reset = true; publicVariable "NORRN_camo_reset"; _vcl removeAction NORRN_l_remove_spawn_act; if (true) exitWith {}; /* VECHICLE RESPAWN FOR MOBILE SPAWN ACTION SCRIPT Respawns Vehicle for mobile_spawn scripts norrin, July 2008 *********************************************************************************************************************************** Name the mobile respawn vehicle: r_mobile_spawn_vcl And put this in the init line: this addEventHandler ["GETIN",{if ((_this select 1) == "driver") then {NORRN_landy_script = [_this select 0, _this select 2] execVM "revive_sqf\mobile\mobile_spawn.sqf"}}]; this addEventHandler ["GETOUT",{[_this select 0] execVM "revive_sqf\mobile\mobile_remove_spawn.sqf"}]; call{[this, 10] execVM "revive_sqf\mobile\vcl_respawn.sqf"} Where 10 in the last line is the time before the mobile_respawn_vcl respawns after being destroyed *********************************************************************************************************************************** vcl_respawn.sqf */ if (!isServer) exitWith {}; _vcl = _this select 0; _respawn_delay = _this select 1; _vcl_dir = getDir _vcl; _vcl_pos = getPos _vcl; _type_vcl = typeOf _vcl; _Base_1 = NORRN_revive_array select 13; _mobile_base_start = NORRN_revive_array select 52; waitUntil {!alive _vcl}; NORRN_camo_net = false; publicVariable "NORRN_camo_net"; _wait = time + _respawn_delay; _vcl removeAction NORRN_l_spawn_act; _vcl removeAction NORRN_l_remove_spawn_act; _ammo_crates = nearestObjects [_vcl, ["ReammoBox"], 10]; {deleteVehicle _x} forEach _ammo_crates; _shed = nearestObject [_vcl, "shedBig"]; deleteVehicle _shed; waitUntil {time > _wait}; _vcl_new = _type_vcl createVehicle _vcl_pos; _vcl_new setDir _vcl_dir; _vcl_new setPos _vcl_pos; _init = "this setVehicleVarName 'r_mobile_spawn_vcl';this addEventHandler ['GETIN',{if ((_this select 1) == 'driver') then {NORRN_landy_script = [_this select 0, _this select 2] execVM 'revive_sqf\mobile\mobile_spawn.sqf'}}]; this addEventHandler ['GETOUT',{[_this select 0] execVM 'revive_sqf\mobile\mobile_remove_spawn.sqf'}];"; _vcl_new setVehicleInit _init; processInitCommands; [_vcl_new, _respawn_delay] execVM "revive_sqf\mobile\vcl_respawn.sqf"; [_vcl_new, 0]execVM "revive_sqf\mobile\move_spawn.sqf"; if (true) exitWith {}; /* ONCONNECT SCRIPT This script gets the current unit status when a player joins the mission OCTOBER 2010 - norrin ************************************************************************************************************************************* onConnect.sqf */ _heal_yourself = NORRN_revive_array select 8; _AI_disabled = getNumber(missionConfigFile >> "AIdisabled"); //missionConfigFile instead of className if (!isNull player && !alive player) exitWith {titleText ["Unit selected is dead please press escape, return to the unit selection menu and choose the same or another playable unit", "BLACK FADED", 5]}; //Need to keep "respawn" and "Boot_hill" markers at least 100 metres appart if (!isNull player && player distance getMarkerPos "Boot_Hill" < 50) exitWith {titleText ["Unit selected is dead please press escape, return to the unit selection menu and choose the same or another playable unit", "BLACK FADED", 10]}; if (!isNull player && player distance getMarkerPos "respawn_west" < 50 || !isNull player && player distance getMarkerPos "respawn_east" < 50 || !isNull player && player distance getMarkerPos "respawn_guerrila" < 50 || !isNull player && player distance getMarkerPos "respawn_civilian" < 50) exitWith { titleText ["Unit selected is unconscious please press escape, return to the unit selection menu and choose another playable unit", "BLACK FADED", 10] }; //Start revive on server for each unit in NORRN_player_units if AI is enabled if (isServer && !local player) then { if (_AI_disabled == 0) then { {if (!isNull (call compile format ["%1", _x])) then {[_x, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}}forEach NORRN_player_units; }; }; //Initialise revive script for all units in players group if AI is enabled {if (_AI_disabled == 0 && !isNull (call compile format ["%1", _x]) && (call compile format ["%1", _x]) in (units (group player))) then {[_x, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}}forEach NORRN_player_units; //Initialise revive script for players only if AI is disabled if (_AI_disabled == 1) then {[player, NORRN_player_units] execVM "revive_sqf\Revive_player.sqf"}; //Initialise heal script for each player if (_heal_yourself == 1 && !isNull player) then {[player] execVM "revive_sqf\heal_sqf\player_heal.sqf"}; "r_say" addPublicVariableEventHandler { ((_this select 1) select 0) say (commentsBrian select ((_this select 1) select 1)); }; if (true) exitWith {}; /* PUT DOWN BODY SCRIPT Allows players to drop unconscious bodies JUNE 2009 - norrin ***************************************************************************************************************************** Start putDown_body.sqf */ _dragee = _this select 3; _unit = player; player removeAction NORRN_putDownAction; //NORRN_remove_drag = true; r_carry_sqf = false; detach _unit; detach _dragee; _dragee setVehicleInit "this switchMove r_unc_animation"; _unit setVehicleInit "this switchMove ''"; processInitCommands; //NORRN_Dragged_body = objNull; sleep 8; if (true) exitWith {}; //010509// allowDamage.sqf _unit = _this select 0; _unit switchMove "AmovPpneMstpSnonWnonDnon_healed"; _unit allowDamage true; _unit setCaptive false;// animDrag.sqf _dragee = _this select 0; _dragee switchmove "ainjppnemstpsnonwrfldb_still";// animHealed.sqf _unit = _this select 0; _unit switchMove "AmovPpneMstpSnonWnonDnon_healed";//carriedUp.sqf _dragee = _this select 0; _dragee switchMove "ainjpfalmstpsnonwrfldnon_carried_up";//deadState.sqf _unit = _this select 0; _unit switchMove "deadState"; //lieStill.sqf _dragee = _this select 0; _dragee switchMove "ainjppnemstpsnonwrfldnon"; // load_wounded.sqf _unit = _this select 0; _unit switchMove "kia_hmmwv_driver"; //noAnim.sqf _unit = _this select 0; _unit switchMove "";// noDamage.sqf _unit = _this select 0; _unit setCaptive 3; _unit switchMove "AmovPpneMstpSnonWnonDnon_healed"; _unit allowDamage false; sleep 0.01; // pickUp.sqf _unit = _this select 0; _unit switchMove "acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon";// promptRName.sqf _unit = _this select 0; call compile format ["server globalChat reviver_%1", _unit];// rolltoback.sqf _unit = _this select 0; _unit switchMove "ainjppnemstpsnonwrfldnon_rolltoback"; // rolltofront.sqf _unit = _this select 0; _unit switchMove "ainjppnemstpsnonwrfldnon_rolltofront"; // set180.sqf _dragee = _this select 0; _dragee setDir 180;// init_respawn.sqf // JULY 2009 - norrin _heal_yourself = NORRN_revive_array select 8; //Initialise revive script {if (!isNull (call compile format ["%1", _x])) then {[_x, NORRN_player_units] execVM "revive_sqf\respawn\respawn.sqf"}}forEach NORRN_player_units; //Initialise heal script for each player if (_heal_yourself == 1 && !isNull player) then {[player] execVM "revive_sqf\heal_sqf\player_heal.sqf"}; if (true) exitWith {};// respawn.sqf // JULY 2009 - norrin _unit = _this select 0; _respawn_position = NORRN_revive_array select 28; _respawn_at_base_addWeapons = NORRN_revive_array select 11; _respawn_at_base_magazines = NORRN_revive_array select 34; _respawn_at_base_weapons = NORRN_revive_array select 35; _respawnAtBaseWait = NORRN_revive_array select 68; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; waitUntil{call compile format["!isNull %1",_unit]}; _name = call compile format["%1",_unit]; _unconscious_body = objNull; _pos = []; sleep 2; _base_weps = []; _base_mags = []; if (_respawn_at_base_addWeapons == 1 && count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { _base_weps = weapons _name; _base_mags = magazines _name; }; hint "No revive"; while {true} do { waitUntil {local (call compile format["%1",_unit])}; _name = call compile format["%1",_unit]; waitUntil {!alive _name || !local _name}; if (local _name) then { if (_name == player) then {titletext["","BLACK FADED", 5]}; _pos = getPos _name; _weps = weapons _name; _mags = magazines _name; waitUntil{alive call compile format["%1",_unit]}; _name = call compile format["%1",_unit]; // Give player weapon and mag loadout they had prior to dying removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _mags; {_name addWeapon _x} forEach _weps; _name selectWeapon (primaryWeapon _name); if (_respawn_position == 2 && isplayer _name || _respawn_position == 3 && isplayer _name) then { if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; closedialog 0; if (_no_respawn_points == 1) then {_dialog_5 = createDialog "respawn_button_1map"}; if (_no_respawn_points == 2) then {_dialog_5 = createDialog "respawn_button_2map"}; if (_no_respawn_points == 3) then {_dialog_5 = createDialog "respawn_button_3map"}; if (_no_respawn_points == 4) then {_dialog_5 = createDialog "respawn_button_4map"}; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; }; if (_respawn_position == 1) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos1}; // Unit respawns at chosen location if player if (_respawn_position == 2 && isplayer _name || _respawn_position == 3 && isplayer _name) then {_respawn_at_base = [_unconscious_body] call Norrn_RespawnPos2}; // Unit respawns closest to leader if not player if (_respawn_position == 2 && !isplayer _name || _respawn_position == 3 && !isplayer _name) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos2AI}; if ((_respawnAtBaseWait select 1) != 0) then { _timer = (_respawnAtBaseWait select 1); _name disableAI "anim"; _c = 1; _name setCaptive true; while {_timer >= 0} do { if (_c >= 1 ) then { if (_name == player) then { _timer_message = format ["You will respawn in %1 seconds", _timer]; titletext [_timer_message,"BLACK FADED", 0.3]; }; _timer = _timer - 1; _c = 0; }; sleep 0.05; _c = _c + 0.05; }; _name setCaptive false; _name enableAI "anim"; }; // Add respawn at base weapons if this option is being used if (_respawn_at_base_addWeapons == 1) then { // Added code for respawning at base with original mission load-out - 260409 if (count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _base_mags; {_name addWeapon _x} forEach _base_weps; _name selectweapon primaryweapon _name; } else { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _respawn_at_base_magazines; {_name addWeapon _x} forEach _respawn_at_base_weapons; _name selectweapon primaryweapon _name; }; }; }; sleep 1; }; /* RESPAWN AT BASE SCRIPT AUGUST 2009 - norrin **************************************************************************** respawn_at_base.sqf */ disableserialization; _spawn_pos = _this select 0; _name = _this select 1; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _respawnAtBaseWait = NORRN_revive_array select 68; _baseWait = false; _height = 0; _no_base_1 = no_base_1; _no_base_1b = no_base_1b; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; _r_dialog_1 = ""; _r_dialog_2 = ""; _r_dialog_3 = ""; _r_dialog_4 = ""; _r_display = ""; detach _name; _pos = getPos _name; _offset = _name distance _pos; _name setVariable ["NORRN_uncPos", [(_pos select 0),(_pos select 1), _offset], true]; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (!NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _no_respawn_points = _no_respawn_points - 1; if (_spawn_pos == 2 and _Base_2 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 3 and _Base_3 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 4 and _Base_4 == "") then {_Base_2 = NORRN_revive_array select 14}; _no_base_1 = no_base_2; _no_base_1b = no_base_2b; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (_spawn_pos == 1 && _Base_1 != "" && !_no_base_1 && !_no_base_1b) then { _pos_spawn = getMarkerPos _Base_1; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_1]; if (_name == player) then {titletext [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 1 && _Base_1 != "" && _no_base_1 || _spawn_pos == 1 && _Base_1 != "" && _no_base_1b) then { if (NORRN_r_time_expire) then { switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1map";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ closedialog 0; //_r_display closedisplay 10004; //_r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 1: {_r_dialog_1 = createDialog "respawn_button_1";_r_display = findDisplay 99124;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; sleep 0.2; titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 2 && _Base_2 != "" && !_no_base_2 && !_no_base_2b) then { _pos_spawn = getMarkerPos _Base_2; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_2]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 2 && _Base_2 != "" && _no_base_2 || _spawn_pos == 2 && _Base_2 != "" && _no_base_2b) then { if (NORRN_r_time_expire) then { switch (_no_respawn_points) do { case 2: {_dialog_1 = createDialog "respawn_button_2map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ closedialog 0; //_r_display closedisplay 10004; //_r_display closedisplay 10005; waitUntil {!dialog}; switch (_no_respawn_points) do { case 2: {_r_dialog_2 = createDialog "respawn_button_2";_r_display = findDisplay 99125;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 3: {_r_dialog_3 = createDialog "respawn_button_3";_r_display = findDisplay 99126;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; case 4: {_r_dialog_4 = createDialog "respawn_button_4";_r_display = findDisplay 99127;_r_display displaySetEventHandler ["Keydown", "_this call CAM_KEY_pressed"]}; }; if (_no_respawn_points > 0) then {ctrlSetText [1, _Base_1]}; if (_no_respawn_points > 1) then {ctrlSetText [2, _Base_2]}; if (_no_respawn_points > 2) then {ctrlSetText [3, _Base_3]}; if (_no_respawn_points > 3) then {ctrlSetText [4, _Base_4]}; sleep 0.1; titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 3 && _Base_3 != "" && !_no_base_3 && !_no_base_3b) then { _pos_spawn = getMarkerPos _Base_3; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_3]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 3 && _Base_3 != "" && _no_base_3 || _spawn_pos == 3 && _Base_3 != "" && _no_base_3b) then { if (NORRN_r_time_expire) then { closedialog 0; switch (_no_respawn_points) do { case 3: {_dialog_1 = createDialog "respawn_button_3map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.1; titleText ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; if (_spawn_pos == 4 && _Base_4 != "" && !_no_base_4 && !_no_base_4b) then { _pos_spawn = getMarkerPos _Base_4; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; _respawn_message = format ["You have respawned at %1", _Base_4]; if (_name == player) then {titleText [_respawn_message, "BLACK FADED", 1]}; _name setVariable ["NORRN_respawn_at_base", true, true]; NORRN_spawn_chosen = true; _baseWait = true; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 4 && _Base_4 != "" && _no_base_4 || _spawn_pos == 4 && _Base_4 != "" && _no_base_4b) then { if (NORRN_r_time_expire) then { closedialog 0; if (_no_respawn_points == 4) then {_dialog_1 = createDialog "respawn_button_4map";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; sleep 0.1; titletext ["\n\n\n\n\n\n\n\n\n\n\nThis spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10]; }else{ titleCut ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4}; }; sleep 2; if ((_respawnAtBaseWait select 0) == 1 && _baseWait && _max_respawns != 2000) then { _timer = (_respawnAtBaseWait select 1); _c = 1; _name setCaptive true; while {_timer >= 0} do { if (_c >= 1 ) then { _timer_message = format ["You will respawn in %1 seconds", _timer]; if (_name == player) then {titletext [_timer_message,"BLACK FADED", 0.3]}; _timer = _timer - 1; _c = 0; }; sleep 0.05; _c = _c + 0.05; }; }; _name setCaptive false; if(true) exitWith {};/* RESPAWN AT BASE SCRIPT (JIP) AUGUST 2009 - norrin **************************************************************************** respawn_at_base_jip.sqf */ _spawn_pos = _this select 0; _name = _this select 1; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; _height = 0; _no_base_1 = no_base_1; _no_base_1b = no_base_1b; _no_base_2 = no_base_2; _no_base_2b = no_base_2b; _no_base_3 = no_base_3; _no_base_3b = no_base_3b; _no_base_4 = no_base_4; _no_base_4b = no_base_4b; //Respawn point name for mobile spawn if (_mobile_spawn == 1) then { if (!NORRN_camo_net) then { _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; _no_respawn_points = _no_respawn_points - 1; if (_spawn_pos == 2 and _Base_2 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 3 and _Base_3 == "") then {_Base_2 = NORRN_revive_array select 14}; if (_spawn_pos == 4 and _Base_4 == "") then {_Base_2 = NORRN_revive_array select 14}; _no_base_1 = no_base_2; _no_base_1b = no_base_2b; _no_base_2 = no_base_3; _no_base_2b = no_base_3b; _no_base_3 = no_base_4; _no_base_3b = no_base_4b; }; }; if (_spawn_pos == 1 && _Base_1 != "" && !_no_base_1 && !_no_base_1b) then { _pos_spawn = getMarkerPos _Base_1; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 1", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 1 && _Base_1 != "" && _no_base_1 || _spawn_pos == 1 && _Base_1 != "" && _no_base_1b) then { switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1b";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.01; titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 2 && _Base_2 != "" && !_no_base_2 && !_no_base_2b) then { _pos_spawn = getMarkerPos _Base_2; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 2", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; }; if (_spawn_pos == 2 && _Base_2 != "" && _no_base_2 || _spawn_pos == 2 && _Base_2 != "" && _no_base_2b) then { switch (_no_respawn_points) do { case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; sleep 0.01; titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 3 && _Base_3 != "" && !_no_base_3 && !_no_base_3b) then { _pos_spawn = getMarkerPos _Base_3; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 3", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; closeDialog 0; }; if (_spawn_pos == 3 && _Base_3 != "" && _no_base_3 || _spawn_pos == 3 && _Base_3 != "" && _no_base_3b) then { titletext ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if (_spawn_pos == 4 && _Base_4 != "" && !_no_base_4 && !_no_base_4b) then { _pos_spawn = getMarkerPos _Base_4; if (!surfaceIsWater _pos_spawn) then {_height = 0} else {_height = 500}; _name setpos [((_pos_spawn select 0) + round(random 5)),((_pos_spawn select 1) + round(random 5)), _height]; //_name setpos _pos_spawn; if (local _name && isplayer _name) then {titleText ["You have respawned at position 4", "PLAIN", 0.5]}; sleep 1; If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3}; closeDialog 0; }; if (_spawn_pos == 4 && _Base_4 != "" && _no_base_4 || _spawn_pos == 4 && _Base_4 != "" && _no_base_4b) then { titleText ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3]; }; if(true) exitWith {};/* RESPAWN AT BASE SCRIPT (WATER) DECEMBER 2007 norrin (norrins_nook@iprimus.com.au) **************************************************************************** respawn_at_base_water.sqf */ _name = _this select 0; titlecut ["","PLAIN",5]; _water = false; _zzzz = 0; sleep 3; while{surfaceIsWater (getPos player)} do { _downed_x = getPos _name select 0; _downed_y = getPos _name select 1; _center_x = getMarkerPos "center" select 0; _center_y = getMarkerPos "center" select 1; while {surfaceIsWater [_downed_x, _downed_y]} do { if (_zzzz == 0) then {titlecut ["Your body is washing ashore please wait","BLACK FADED",5]}; sleep 0.01; if (_downed_x > _center_x) then { _downed_x = _downed_x - 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_y > _center_y) then { _downed_y = _downed_y - 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_x < _center_x) then { _downed_x = _downed_x + 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; if (_downed_y < _center_y) then { _downed_y = _downed_y + 25; sleep 0.01; _name setPos [_downed_x, _downed_y]; sleep 0.01; }; _zzzz = _zzzz + 1; sleep 0.1; }; }; _body = player; //player setdamage 1; waitUntil {alive player}; //deleteVehicle _body; if(true) exitWith {};/* RESPAWN COUNTER SCRIPT JANUARY 2008 - norrin (norrins_nook@iprimus.com.au) ***************************************************** respawn_counter.sqf */ if(!isServer) exitWith {}; //Initialise variables for respawn counter if (time < 2) then { {call compile format ["%1_revives = 0; publicvariable ""%1_revives""", _x]} forEach NORRN_player_units; {call compile format ["revive_%1 = 0; publicvariable 'revive_%1' ", _x]} forEach NORRN_player_units; {call compile format ["%1_killer = 0; publicVariable '%1_killer'", _x]} forEach NORRN_player_units; };/* REVIVE_INIT SCRIPT JULY 2009 - norrin ****************************************************************************************************************************** Start revive_init.sqf */ _JIP_spawn_dialog = NORRN_revive_array select 2; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _time_b4_JIP_spawn_dialog = NORRN_revive_array select 17; _max_respawns = NORRN_revive_array select 38; _mobile_spawn = NORRN_revive_array select 51; //run script that creates all triggers required for the revive script [] execVM "revive_sqf\trigger_mkr.sqf"; sleep 0.1; //Variables required for onConnect script and triggers no_base_1 = false; no_base_2 = false; no_base_3 = false; no_base_4 = false; no_base_1b = false; no_base_2b = false; no_base_3b = false; no_base_4b = false; if (_max_respawns == 2000) exitWith {}; onConnect = true; //PublicVariable "onConnect"; not needed, we are local here, trigger will fire anyway sleep 5; if (!isNull player && _JIP_spawn_dialog == 1 && time > _time_b4_JIP_spawn_dialog && animationState player != "AmovPpneMstpSnonWnonDnon_healed") then { // forceMap true; // if (local player) then {hint "Press escape to close respawn dialog"}; titleText ["Choose spawn point or press escape to close dialog and start at current position","PLAIN", 0.5]; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; switch (_no_respawn_points) do { case 1: {_dialog_1 = createDialog "respawn_button_1b";ctrlSetText [1, _Base_1];}; case 2: {_dialog_1 = createDialog "respawn_button_2b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];}; case 3: {_dialog_1 = createDialog "respawn_button_3b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];}; case 4: {_dialog_1 = createDialog "respawn_button_4b";ctrlSetText [1, _Base_1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];}; }; }; if (true) exitWith {};/* REVIVE SCRIPT Creates playable units that fall unconscious when killed which can then be revived OCTOBER 2010 - norrin ******************************************************************************************************** Start Revive_player.sqf */ private ["_unit","_units","_name","_respawn","_conscious","_group","_leader","_c","_cc","_d","_doMove_time","_respawn_at_base","_dead", "_busy","_unc_unit","_revive_array","_unit_type","_r_marker_side","_revive_units","_marker_pos", "_mrkr_ex","_revives","_revives_remain","_max_respawns","_no_revives","_close_array","_unc_array","_mags","_goto_reviver","_close_unc", "_smoke_rounds","_busy","_round","_bloggs_pos","_bloggs_offset","_sav_pos","_sav_dir","_doMove_time","_water","_body","_pos","_dir", "_offset","_weapons","_magazines","_AI_dismount"]; //Define variables _unit = _this select 0; _units = _this select 1; waitUntil{call compile format["!isNull %1",_unit]}; _name = call compile format["%1",_unit]; // Booleans _respawn = false; _conscious = false; _respawn_at_base = false; _dead = false; NORRN_load_wounded_action = false; r_drag_sqf = false; r_carry_sqf = false; all_dead_check = false; // Arrays _revive_array = NORRN_revive_array; _my_group = []; _revive_units = []; _base_weps = []; _base_mags = []; _near_Objects = []; _magazines = []; _weapons = []; _bagMags = []; _bagWeps = []; _potRevivers = []; // Numbers _c = 0; _cc = 0; _ccc = 0; _cccc = 0; _ccccc = 0; _cccccc = 0; _ccccccc = 0; _d = 0; _dd = 0; _ddd = 0; _dddd = 0; _ddddd = 0; _dir = 0; _doMove_time = 0; _NORRN_random = 0; _bleed_damage = 0; _total_medpacks = 0; _total_bandages = 0; _blackout = 0; _bonus = 0; _respawns = 0; _respawn_chance = 0; _var = 0; _reviveWait = 0; NORRN_max_slope = 0.78; _damage = 0; //Strings _bagType = ""; // Objects if (_name == player) then {unconscious_body = objNull}; _unc_unit = objNull; _goto_reviver = objNull; _goto_protect = objNull; _near_dragUnit = objNull; _near_loadUnit = objNull; _reviver = objNull; GetSlopeObject = objNull; _bag = objNull; _mySaviour = objNull; _group = group _name; _unit_type = typeOf _name; _unconscious_markers = _revive_array select 4; _call_out_function = _revive_array select 6; _revive_timer = _revive_array select 7; _goto_revive = _revive_array select 9; _respawn_at_base_addWeapons = _revive_array select 11; _no_respawn_points = _revive_array select 12; _Base_1 = _revive_array select 13; _Base_2 = _revive_array select 14; _Base_3 = _revive_array select 15; _Base_4 = _revive_array select 16; _can_revive = _revive_array select 18; _can_revive_2 = _revive_array select 19; _can_be_revived = _revive_array select 20; _can_be_revived_2 = _revive_array select 21; _medic_1 = _revive_array select 76; _medic_2 = _revive_array select 77; _enemy_side_1 = _revive_array select 23; _enemy_side_2 = _revive_array select 24; _revive_time_limit = _revive_array select 27; _respawn_position = _revive_array select 28; _goto_revive_distance = _revive_array select 33; _respawn_at_base_magazines = _revive_array select 34; _respawn_at_base_weapons = _revive_array select 35; _revive_damage = _revive_array select 37; _max_respawns = _revive_array select 38; _JIP_respawns = _revive_array select 63; _unc_drag = _revive_array select 39; _AI_smoke = _revive_array select 40; _visible_timer = _revive_array select 41; _water_dialog = _revive_array select 45; _enemy_units_1 = _revive_array select 47; _enemy_units_2 = _revive_array select 48; _mobile_spawn = _revive_array select 51; _QG_animation = _revive_array select 54; _load_wounded = _revive_array select 61; _caseVAC = _revive_array select 64; _chance_ofDeath = _revive_array select 66; _medpacks = _revive_array select 80; _bleeding = _revive_array select 82; _medic_medpacks = _revive_array select 83; _unit_medpacks = _revive_array select 84; _medic_bandages = _revive_array select 85; _unit_bandages = _revive_array select 86; _deadSpectator_cam = _revive_array select 92; _drop_weapons = _revive_array select 93; _cadaver = _revive_array select 94; _reward_function = _revive_array select 96; _revives_required = _revive_array select 97; _team_kill_function = _revive_array select 98; _no_team_kills = _revive_array select 99; //_ACE_mod = _revive_array select 102; _AI_disabled = getNumber(missionConfigFile >> "AIdisabled"); //missionConfigFile instead of className if (_QG_animation == 1) then { r_unc_animation = "ainjppnemstpsnonwrfldnon"; }else{ r_unc_animation = "AmovPpneMstpSnonWnonDnon_healed"; }; commentsBrian = ["Brian_Im_hit","Brian_Im_bleeding","Brian_Medic","Brian_Bastards","Brian_Shit_Man_down","Brian_Oh_no","Brian_Fuck","Brian_Fuck_it","Brian_Shit","Brian_Need_help","Brian_A_little_help_here"]; _medVclArray = ["M113Ambul_TK_EP1","M113Ambul_UN_EP1", "HMMWV_Ambulance","HMMWV_Ambulance_CZ_DES_EP1","HMMWV_Ambulance_DES_EP1", "BASE_WarfareBFieldhHospital", "MASH","MASH_EP1", "BMP2_Ambul_Base", "GAZ_Vodnik_MedEvac", "Mi17_medevac_base", "TK_WarfareBFieldhHospital_Base_EP1","TK_WarfareBFieldhHospital_EP1", "US_WarfareBFieldhHospital_Base_EP1","US_WarfareBFieldhHospital_EP1", "UH60M_MEV_EP1"]; // Respawn marker name of unit _r_marker_side = switch (side _name) do { case west: {"respawn_west"}; case east: {"respawn_east"}; case resistance: {"respawn_guerrila"}; case civilian: {"respawn_civilian"}; }; NORRN_respawn_mrkr = markerPos _r_marker_side; // Create revivable unit array {call compile format ["if (!isNull %1) then {_revive_units = _revive_units + [%1]}", _x]} forEach _units; // Create group array - moved and changed 060509 {if (!isNull _x && _x in _revive_units) then {call compile format ["_my_group = _my_group + ['%1']", _x]}}forEach (units _group); _group_leader = call compile format ["'%1'", (leader _group)]; //////////////////////////////////////////////////////////////////////////////////////////////////////////// // New variables for damageEH - added for SP if (NORRN_R_SP) then { _name setVariable ["NORRN_handDamage", 0, false]; _name setVariable ["NORRN_legDamage", 0, false]; _name setVariable ["NORRN_headDamage", 0, false]; _name setVariable ["NORRN_bodyDamage", 0, false]; // Add damageEH _name addEventHandler ["HandleDamage", {_this execVM "revive_sqf\damageEH\handleDamage.sqf"; 0}]; if ( format ["%1", (_name getVariable "NORRN_totalDamage")] == "") then {_name setVariable ["NORRN_totalDamage", 0, false]}; Hint "Single Player Mission"; }; _name setVariable ["NORRN_totalDamage", 0, false]; //Moved out of if statement as needed for both SP & MP otherwise heal will not work ///////////////////////////////////////////////////////////////////////////////////////////////////////////// sleep 2; // Added to respawn at base with original mission load-out - 260409 if (_respawn_at_base_addWeapons == 1 && count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { _base_weps = weapons _name; _base_mags = magazines _name; }; // JIP respawns if (_max_respawns != 1000 && (_JIP_respawns select 0) != 0) then { if (time > (_JIP_respawns select 1)) then { _max_respawns = (_JIP_respawns select 0); }; }; //Added for ACE mod rucks 131209 _hasruck = false; _ruckMags = []; _ruckWeps = []; // Set variables if unit local if (local _name) then { // Probably best not to play with the following code unless you know what you are doing // Define global variables for each unit if ( format ["%1", (_name getVariable "NORRN_lives_used")] == "") then {_name setVariable ["NORRN_lives_used", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_unconscious")] == "") then {_name setVariable ["NORRN_unconscious", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AIunconscious")] == "") then {_name setVariable ["NORRN_AIunconscious", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bonus_life")] == "") then {_name setVariable ["NORRN_bonus_life", 0, false]}; if ( format ["%1", (_name getVariable "NORRN_teamkill_punish")] == "") then {_name setVariable ["NORRN_teamkill_punish", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_stopBleed")] == "") then {_name setVariable ["NORRN_stopBleed", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bleeding")] == "") then {_name setVariable ["NORRN_bleeding", false, true]}; if ( format ["%1", (_name getVariable "NORRN_bleedDamage")] == "") then {_name setVariable ["NORRN_bleedDamage", 0, true]}; if ( format ["%1", (_name getVariable "NORRN_dead")] == "") then {_name setVariable ["NORRN_dead", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AI_help")] == "") then {_name setVariable ["NORRN_AI_help", false, true]}; if ( format ["%1", (_name getVariable "NORRN_AISmoke")] == "") then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; if ( format ["%1", (_name getVariable "NORRN_uncPos")] == "") then {_name setVariable ["NORRN_uncPos", [], true]}; if ( format ["%1", (_name getVariable "NORRN_AIReviver")] == "") then {_name setVariable ["NORRN_AIReviver", objNull, true]}; if ( format ["%1", (_name getVariable "NORRN_respawn_at_base")] == "") then {_name setVariable ["NORRN_respawn_at_base", false, false]}; if ( format ["%1", (_name getVariable "NORRN_heyImBusy")] == "") then {_name SetVariable ["NORRN_heyImBusy", false, true]}; //Define the number of medpacks if ( format ["%1", (_name getVariable "NORRN_medpacks")] == "") then {_name setVariable ["NORRN_medpacks", _unit_medpacks, true]}; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; _total_medpacks = _name getVariable "NORRN_medpacks"; if ( format ["%1", (_name getVariable "NORRN_bandages")] == "") then {_name setVariable ["NORRN_bandages", _unit_bandages, true]}; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; _total_bandages = _name getVariable "NORRN_bandages"; if (_name getVariable "NORRN_unconscious") then { _respawn = true; _conscious = false; if (_name == player) then {unconscious_body =_name}; _revived_position = true; _pos = getPos _name; _dir = getDir _name; _offset = _name distance _pos; _weapons = weapons _name; _magazines = magazines _name; }; // Get and set existing unconscious markers {if (!isNull _x && _unconscious_markers == 1 && isplayer _name) then { if (!isNull _x && (_x getVariable 'NORRN_unconscious')) then { _mrker_pos = getPos _x; _mrkr_ex = format ["%1 is down", _x]; createMarkerlocal [_mrkr_ex, _mrker_pos]; _mrkr_ex setMarkerColorlocal "ColorBlue"; _mrkr_ex setMarkerTypelocal "Flag1"; _mrkr_ex setMarkerTextlocal (format ["%1 is down", name _x]); _mrkr_ex setMarkerSizelocal [0.4, 0.4]; }; }}forEach _revive_units; // Prompt joining player the no revives remaining if (_max_respawns != 1000 && _name == player) then { _revives = _name getVariable "NORRN_lives_used"; _revives_remain = _max_respawns - _revives; _no_revives = format ["Lives remaining: %1 out of %2", _revives_remain, _max_respawns]; if (_name == player) then {hint _no_revives}; }; if (_max_respawns == 1000 && _name == player) then { hint "Unlimited lives"; }; // Initialise team kill function if (_team_kill_function == 1 && _max_respawns != 1000) then {_name addEventHandler ["killed", {_this execVM "revive_sqf\team_killer.sqf"}];}; // Chance of Death eventhandlers if ((_chance_ofDeath select 0) == 1 || (_chance_ofDeath select 1) == 1) then { _name addEventHandler ["hit", {(_this select 0) setVariable ["NORRN_killer", _this select 1, false]; (_this select 0) setVariable ["NORRN_K_damage",_this select 2, false]}]; //[unit, causedBy, damage] _name addEventHandler ["dammaged", {_this execVM "revive_sqf\COD\body_damage.sqf"}]; //[unit, selectionName, damage] _name addeventhandler ["killed", {(_this select 0) setVariable ["NORRN_kh_killer", _this select 1, false]}]; }; if (_name == player) then { GetSlopeObject = "HeliHEmpty" CreateVehicleLocal [0,0,0]; }; // Added for ACE rucks 10/01/10 [] spawn { _endtime = time + 100; waitUntil {!(isNil "ace_sys_ruck_fnc_killedEH") || (time >= _endtime)}; if (!isNil "ace_sys_ruck_fnc_killedEH") then { ace_sys_ruck_fnc_killedEH = {}; }; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Revive Loop while {true} do { scopeName "Revive_01"; if(!alive _name) then {_respawn = true; _conscious = false;_busy = 0}; _name = call compile format ["%1", _name]; while{!isNull _name && !local _name || isNull _name} do { if (!alive _name) then {waitUntil{alive call compile format["%1",_unit]}}; _name = call compile format ["%1", _unit]; if (isnull _name) exitWith {breakOut "Revive_01"}; if (_name getVariable "NORRN_unconscious") then { _respawn = true; _conscious = false; if (!surfaceIsWater getPos _name) then { _revived_position = true; }else{ _revived_position = false; }; }else{ _respawn = false; _conscious = false; _c = 0; _d = 0; _respawn_at_base = false; _revived_position = false; }; sleep 1.5; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Unit alive while {alive _name && !_respawn && !_conscious} do { _name = call compile format ["%1", _name]; _group = group _name; if (!isnull _name && !local _name || isnull _name) exitWith {}; ////////////////////////////////////////////////////////////////////////////////////////////////// //Added for SP if (NORRN_R_SP) then { if (_name getVariable "NORRN_unconscious") then {_respawn = true; _conscious = false;_busy = 0;_name playMoveNow "deadState"}; //set _name unconscious if riding in a destroyed vcl - 180710 if (vehicle _name != _name) then { if (!alive (vehicle _name)) then {_respawn = true; _conscious = false;_busy = 0;_name playMoveNow "deadState"}; }; }; ////////////////////////////////////////////////////////////////////////////////////////////////// //Added for ACE mod rucks 131209 _hasruck = _name call ACE_Sys_Ruck_fnc_hasRuck; if (_hasruck) then { _ruckMags = _name getVariable "ACE_RuckMagContents"; _ruckWeps = _name getVariable "ACE_RuckWepContents"; }; //add revive action for when player gets in range of unconcious unit if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) > 1 && _name == player) then { _nearest_unit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2] select 1); if (_c == 0 && !r_carry_sqf && (_nearest_unit getVariable "NORRN_AIunconscious")) then { if (_name isKindOf _can_revive && _medpacks == 0 || _name isKindOf _can_revive_2 && _medpacks == 0 || _name isKindOf _can_revive && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _can_revive_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_1 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0) then { Norrn_reviveAction = _name addAction ["Revive", "revive_sqf\heal.sqf",[_name, _nearest_unit], 0, false, true]; _c = 1; }; }; if (!(_nearest_unit getVariable "NORRN_AIunconscious") || r_drag_sqf || r_carry_sqf) then { _name removeAction Norrn_reviveAction; _c = 0; sleep 0.1; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) == 1 && _c == 1) then { _name removeAction Norrn_reviveAction; _c = 0; }; // Add drag action for when player gets in range of unconcious unit if (_unc_drag == 1 && _name == player) then { if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3]) > 1) then { _near_dragUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if (_cc == 0) then { if(_near_dragUnit getVariable "NORRN_AIunconscious" && !r_carry_sqf) then { Norrn_dragAction = _name addAction ["Drag body", "revive_sqf\drag.sqf",_near_dragUnit, 0, false, true]; _cc = 1; }; }; if (_cc == 1 && !(_near_dragUnit getVariable "NORRN_AIunconscious") || r_drag_sqf) then { _name removeAction Norrn_dragAction; _cc = 0; sleep 0.5; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 3]) == 1) then { _name removeAction Norrn_dragAction; _cc = 0; }; // Carry on shoulder if (r_drag_sqf && _ccc == 0) then { _near_carryUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); Norrn_carryAction = _name addAction ["Carry body", "revive_sqf\carry.sqf",_near_carryUnit, 0, false, true]; _ccc = 1; }; if (!r_drag_sqf && _ccc ==1) then { _name removeAction Norrn_carryAction; _ccc = 0; }; // Load unconscious unit onto vehicle if (_load_wounded == 1 && r_drag_sqf && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0) then { _vcl = (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) select 0; _near_loadUnit = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if (_dd == 0 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0 && alive _near_loadUnit) then { _action = format ["Load Wounded on %1", (typeOf _vcl)]; NORRN_loadWoundedAction = _name addAction [_action, "revive_sqf\load_wounded\Load_act.sqf",[_name, _vcl, _near_loadUnit], 0, true, true]; _dd = 1; }; }; if (_load_wounded == 1 && !r_drag_sqf || _load_wounded == 1 && _dd == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) == 0 || _load_wounded == 1 && _dd == 1 && NORRN_load_wounded_action || _load_wounded == 1 && _dd == 1 && !alive _near_loadUnit) then { _name removeAction NORRN_loadWoundedAction; NORRN_load_wounded_action = false; _dd = 0; }; // Remove unconscious unit from vehicle if (_load_wounded == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) > 0) then { _vcl = (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) select 0; _crewVcl = []; _crewVcl = crew _vcl; if (count _crewVcl > 0) then { _unconscious_crew = []; {if (_x getVariable "NORRN_AIunconscious") then {_unconscious_crew = _unconscious_crew + [_x]}} forEach _crewVcl; if (count _unconscious_crew > 0 && _ddd == 0) then { _action = format ["Unload Wounded from %1", (typeOf _vcl)]; NORRN_pullOutAction = _name addAction [_action, "revive_sqf\load_wounded\unLoad_act.sqf",[_name, _vcl, _crewVcl], 0, true, true]; _ddd = 1; }; if (count _unconscious_crew == 0 && _ddd == 1) then { _name removeAction NORRN_pullOutAction; _ddd = 0; }; }; if (_ddd == 1 && count (crew _vcl) == 0) then { _name removeAction NORRN_pullOutAction; _ddd = 0; } }; if (_load_wounded == 1 && _ddd == 1 && count (nearestObjects [_name, ["Car","Tank","Helicopter","Plane"], 5]) == 0) then { _name removeAction NORRN_pullOutAction; _ddd = 0; }; }; // Force AI to heal if they are with 4 metres of an unconscious unit if (_dddd == 1 && !(_name getVariable "NORRN_AI_help")) then {_dddd = 0}; if (_ddddd == 1 && _reviveWait < time) then {_ddddd = 0}; if (_goto_revive == 0 && !isplayer _name && (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4])) > 1 ) then { if (_name isKindOf _can_revive && _medpacks == 0 || _name isKindOf _can_revive_2 && _medpacks == 0 || _name isKindOf _can_revive && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _can_revive_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_1 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0 || _name isKindOf _medic_2 && _medpacks == 1 && (_name getVariable "NORRN_medpacks") > 0) then { _unc_friend = (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4] select 1); if ((_unc_friend getVariable "NORRN_AIunconscious") && !(_name getVariable "NORRN_unconscious") && animationState _name != "AinvPknlMstpSlayWrflDnon_medic") then { [0,0,0,[_name, _nearest_unit]] execVM "revive_sqf\heal.sqf"; }; }; }; // AI run AI behaviour function if (_goto_revive == 1 && !isplayer _name) then {[_name,_units] call Norrn_AIBehaviour}; //Medic resupply script if (_medpacks == 1 || _bleeding == 1) then { if (count (nearestObjects [_name, _medVclArray, 5]) > 0) then { if (_cccc == 0 && (_name getVariable "NORRN_medpacks") < _total_medpacks || _cccc == 0 && (_name getVariable "Norrn_bandages") < _total_bandages) then { if (_name == player) then { NORRN_medSuppliesAction = _name addAction ["Take medical supplies", "revive_sqf\medic\supplies.sqf","", 0, false, true]; _cccc = 1; } else { _name setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; _name setVariable ["NORRN_bandages", _unit_bandages, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; }; }; }; if (_cccc == 1 && count (nearestObjects [_name, _medVclArray, 5]) == 0 && _name == player) then { _name removeAction NORRN_medSuppliesAction; _cccc = 0; NORRN_medic_sup = false; }; }; // Start bleeding if (_bleeding == 1) then { if (NORRN_R_SP) then { _damage = _name getVariable "NORRN_totalDamage"; if (_damage > 0.4 && !(_name getVariable "NORRN_stopBleed") && !(_name getVariable "NORRN_Bleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", _damage, true]; _ccccccc = 0;}; if (_damage > ((_name getVariable "NORRN_bleedDamage") + 0.2) && (_name getVariable "NORRN_stopBleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", _damage, true]; _ccccccc = 0;}; if (_damage <= 0.4) then {_name setVariable ["NORRN_Bleed", false, true]; _name setVariable ["NORRN_stopBleed", false, true]}; } else { if ((getdammage _name) > 0.4 && !(_name getVariable "NORRN_stopBleed") && !(_name getVariable "NORRN_Bleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", (getDammage _name), true]; _ccccccc = 0;}; if ((getdammage _name) > ((_name getVariable "NORRN_bleedDamage") + 0.2) && (_name getVariable "NORRN_stopBleed")) then {_name setVariable ["NORRN_Bleed", true, true]; _name setVariable ["NORRN_bleedDamage", (getDammage _name), true]; _ccccccc = 0;}; if (getdammage _name <= 0.4) then {_name setVariable ["NORRN_Bleed", false, true]; _name setVariable ["NORRN_stopBleed", false, true]}; }; if (_name == player) then { // Add Bandage wound action if ((_name getVariable "NORRN_Bleed") && (_name getVariable "Norrn_bandages") > 0 && _ccccc == 0) then { NORRN_bandageAction = _name addAction ["Bandage wound", "revive_sqf\medic\bandage.sqf",_name, 0, false, true]; _ccccc = _ccccc + 1; }; if (!(_name getVariable "NORRN_Bleed") && _ccccc == 1 || (_name getVariable "Norrn_bandages") == 0 && _ccccc == 1) then { _name removeAction NORRN_bandageAction; _ccccc = 0; }; // Add Bandage teamate action if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) > 1 && (_name getVariable "Norrn_bandages") > 0) then { _bloggs = (nearestObjects [player, [_can_be_revived, _can_be_revived_2], 2] select 1); if (_cccccc == 0 && (_bloggs getVariable "NORRN_Bleed")) then { NORRN_bandageBuddyAction = _name addAction ["Bandage Teamate", "revive_sqf\medic\bandage_teammate.sqf",[_name, _bloggs], 0, false, true]; _cccccc = _cccccc + 1; }; if (!(_bloggs getVariable "NORRN_Bleed")) then { _name removeAction NORRN_bandageBuddyAction; _cccccc = 0; }; }; if (count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 2]) == 1 || (_name getVariable "Norrn_bandages") == 0) then { _name removeAction NORRN_bandageBuddyAction; _cccccc = 0; }; }; // Bleeding and blackout if (_name getVariable "NORRN_Bleed") then { if (_ccccccc == 0 && _name == player) then { titleCut ["You are bleeding","PLAIN DOWN", 0.2] } else { if (_ccccccc in [10,30,50,70,90]) then { if (!NORRN_R_SP) then { if ((getdammage _name) > 0.4 && (getdammage _name) <= 0.7) then {_blackout = random 0.2}; if ((getdammage _name) > 0.7) then {_blackout = random 0.4}; } else { if (_damage > 0.4 && _damage <= 0.7) then {_blackout = random 0.2}; if (_damage > 0.7) then {_blackout = random 0.4}; }; if (_name == player) then { titleText ["", "BLACK", 1]; sleep _blackout; titleText ["", "BLACK IN", 1]; }; } else { if (_ccccccc == 100) then { if (NORRN_R_SP) then {_damage_unit = _damage} else {_damage_unit = getdammage _name}; _damage_unit = _damage_unit + 0.05; if (NORRN_R_SP) then { _name setVariable ["NORRN_totalDamage", _damage_unit, false]; }else{ _name setdammage _damage_unit; }; _ccccccc = -1; }; }; }; _ccccccc = _ccccccc + 1; }; }; // Teamkill function if ((_name getVariable "NORRN_teamkill_punish") == _no_team_kills && _team_kill_function == 1 && _max_respawns != 1000) then { if (NORRNCustomExec2 != "") then {call compile NORRNCustomExec2}; _no_respawns = (_name getVariable "NORRN_lives_used") + 1; _respawns_left = _max_respawns - _no_respawns; _no_left = "You have lost a life for excessive team killing."; if (local _name) then {hint _no_left}; _name setVariable ["NORRN_lives_used", _no_respawns, false]; _name setVariable ["NORRN_teamkill_punish", 0, true]; }; // Revive/reward function if ((_name getVariable "Norrn_bonus_life") >= _revives_required && _reward_function == 1 && _max_respawns != 1000) then { _no_respawns = (_name getVariable "Norrn_lives_used") - 1; _respawns_left = _max_respawns - _no_respawns; if (_name == player) then {hint "You have received a bonus life for teamplay."}; _name setVariable ["Norrn_lives_used", _no_respawns, true]; _name setVariable ["Norrn_bonus_life", 0, true]; _bonus = 0; }; // Prompt the number of revives required for next bonus if (_reward_function == 1 && _max_respawns != 1000 && _bonus != (_name getVariable "Norrn_life_bonus") && _name == player) then { _bonus = _name getVariable "Norrn_life_bonus"; _revives_till_bonus = _revives_required - _bonus; _hint = format ["Revives required for next bonus: %1", _revives_till_bonus]; hint _hint; }; sleep 0.5; }; if (NORRN_R_SP && !alive _name) then {_dead = true; _pos = getPos _name}; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Unit falls unconscious if (_respawn && !_conscious && !_dead) then { scopeName "Revive_02"; _body = _name; _water = false; if (_body == player) then {titleText ["","BLACK FADED",10]}; _body setVariable ["NORRN_stopBleed", false, true]; _body setVariable ["NORRN_Bleed", false, true]; _ccccc = 0; //reset the bandage variable // Set _name rating as zero if less than zero - 180710 - SP if (NORRN_R_SP && rating _name < 0) then { _rating = rating _name; _name addRating -(_rating); }; // Get body's current position and load-out _dir = (getDir _body) + 0.1; _offset = _body distance (getPos _body); _weapons = weapons _body; _magazines = magazines _body; _pos = [((getPos _body) select 0),((getPos _body) select 1), _offset]; //Added for backpacks _bag = objNull; _bagMags = []; _bagWeps = []; _bagType = ""; _bag = unitBackpack _body; if (!isNull _bag) then { _bagMags = getMagazineCargo _bag; _bagWeps = getWeaponCargo _bag; _bagType = typeOf _bag; }; _body setVariable ["NORRN_uncPos", _pos, true]; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Chance of death if ((_chance_ofDeath select 0) == 1 || (_chance_ofDeath select 1) == 1) then { _respawns = _respawns + 1; if ((_body getVariable "NORRN_kh_killer") == _body) then { if ((_chance_ofDeath select 0) == 1) then { _respawn_chance = 500; }; }else{ //determine where player hit and chance of survival if ((_chance_ofDeath select 0) == 1) then {_respawn_chance = [_body, _respawns] call Norrn_respawn_Chance;}; if ((_chance_ofDeath select 1) == 1) then {_revive_time_limit = [_body, _respawns] call Norrn_respawn_Time;}; }; if (_respawns == 6) then {_dead = true}; _random_chance = ceil (random 100); if ((_chance_ofDeath select 0) == 1 && _random_chance > _respawn_chance) then {_dead = true}; }; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Code added to prevent group leader running code on player leaving server if AI disabled if (_AI_disabled == 0) then { if (format["%1", name _body] == "Error: No unit") exitWith { _respawn = false; _conscious = false; breakout "Revive_01"; }; }; //remove all actions - poosibly give unconscious units a different variable - will remove some checks if (_body == player) then { _body removeAction Norrn_reviveAction; _name removeAction Norrn_dragAction; _name removeAction NORRN_loadWoundedAction; }; // sickboy's code modified by _xeno if (!isNil "T_Server" && !isNil "T_Client") then { if (!T_Server && T_Client && _body == player) then {disableUserInput true;}; } else { if (_body == player) then {disableUserInput true;}; }; if (_revived_position) then { waitUntil{alive call compile format["%1",_unit]}; _body = call compile format["%1",_unit]; }; // added from ACE revive 290409 if (player == _name) then {NORRN_r_time_expire = false}; // If respawn limit has been reached, define unit as dead if (local _name || NORRN_R_SP && !alive _name) then {if (_max_respawns <= (_name getVariable "NORRN_lives_used") || NORRN_R_SP && !alive _name) then {_dead = true}}; // Vehicle eject fix if (vehicle _body != _body) then {_vcl_pos = getpos vehicle _body; _body setPos [((_vcl_pos select 0)- 5), (_vcl_pos select 1), 0]}; // Anti-water code if (surfaceIsWater getPos _body && !_dead && _offset < 10) then {_body = [_body, _unit,_pos] call Norrn_WaterFix}; _pos = (_body getVariable "NORRN_uncPos"); // Anti-slope code _slope = [_pos, 1] call GetTerrainSlope; //1209010 changed height/x value in function original value was 8 now 64 - need to test if (_slope >= NORRN_max_slope) then {[_pos, _slope, _body] call Norrn_SlopeFix}; if (_body == player) then {enableRadio false}; _respawn = true; _water = false; while {!alive (call compile format["%1",_unit])} do {sleep 0.1}; _name = call compile format["%1",_unit]; //publicEH norrnRNoDam = _name; publicVariable "norrnRNoDam"; _name switchMove "AmovPpneMstpSnonWnonDnon_healed"; _name allowDamage false; _name setCaptive true; _name setdir _dir; _name setPos _pos; // Global variables set for the _name _name setVariable ["NORRN_unconscious", true, true]; _name setVariable ["NORRN_AIunconscious", true, true]; _name setVariable ["NORRN_AI_help", false, true]; _name setVariable ["NORRN_unit_dragged", false, true]; _name setVariable ["NORRN_AI_help", false, true]; // If player is down start camera - moved code 260409 if (_name == player) then {titlecut [" ","BLACK FADED",1]}; if (_name == player && !_dead) then { _bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 1]; [_bee, _pos] spawn NORRN_UNC_CAM; }; // Create marker at scene of unconscious player - moved 060509 as a fix for ArmA report - WARNING: Function 'name' - So-and-so is dead if (_unconscious_markers == 1 && !surfaceIsWater _pos && !_dead && local _name) then { _mrkr = format["%1 is down", _name]; createMarker [_mrkr, _pos]; _mrkr setMarkerColor "ColorBlue"; _mrkr setMarkerType "Flag1"; _mrkr setMarkerText format["%1 is down", name _name]; _mrkr setMarkerSize [0.4, 0.4]; }; // Give player weapon and mag loadout they had prior to dying if (!NORRN_R_SP) then { removeAllWeapons _name; removeAllItems _name; {_name addMagazine _x} forEach _magazines; {_name addWeapon _x} forEach _weapons; _name selectWeapon (primaryWeapon _name); if (!isNull (unitBackpack _name)) then { removeBackpack _name; }; if (_bagType != "") then { _name addBackpack _bagType; sleep 0.1; _bag = unitBackpack _name; clearMagazineCargo _bag; clearWeaponCargo _bag; if (count _bagMags > 0) then { _magTypes = _bagMags select 0; _noMags = _bagMags select 1; for [{ _loop = 0 },{ _loop < count _magTypes},{ _loop = _loop + 1}] do { _magType = _magTypes select _loop; _noMag = _noMags select _loop; _bag addMagazineCargo [_magType, _noMag]; sleep 0.01; }; }; if (count _bagWeps > 0) then { _wepTypes = _bagWeps select 0; _noWeps = _bagWeps select 1; for [{ _loop = 0 },{ _loop < count _wepTypes},{ _loop = _loop + 1}] do { _wepType = _wepTypes select _loop; _noWep = _noWeps select _loop; _bag addWeaponCargo [_wepType, _noWep]; sleep 0.01; }; }; }; }; // Added for ACE2 10/01/10 rucks if (!NORRN_R_SP && _hasruck) then { if (!isNil "_ruckmags") then { _name setvariable ["ACE_RuckMagContents", _ruckmags]; }; if (!isNil "_ruckweps") then { _name setvariable ["ACE_RuckWepContents", _ruckweapons]; }; }; // Reset the wound variables - added for SP if (NORRN_R_SP) then { _name setVariable ["NORRN_handDamage", 0, false]; _name setVariable ["NORRN_legDamage", 0, false]; _name setVariable ["NORRN_headDamage", 0, false]; _name setVariable ["NORRN_bodyDamage", 0, false]; _name setVariable ["NORRN_totalDamage", 0, false]; _name setHit ["legs", 0]; _name setHit ["hands", 0]; _name setHit ["head_hit", 0]; _name setHit ["body", 0]; }; if (!NORRN_R_SP && !alive _body) then {deleteVehicle _body}; if (local _name) then {disableUserInput false}; if (_name == player) then {unconscious_body = _name}; _name playActionNow "agonyStart"; sleep 4; norrnRAlie = _name; publicVariable "norrnRAlie"; _name switchMove "ainjppnemstpsnonwrfldnon"; // Disable AI _name stop true; if (_name == leader (group _name)) then { {if (currentCommand _x == "") then {_x doMove getPos _x;} }forEach (units group _name); }; _conscious = true; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // While unconscious if (alive _name && _respawn && _conscious && !_respawn_at_base && !_dead) then { _name = call compile format["%1",_unit]; _revive_time = time + _revive_time_limit; //Start revive timer if(_revive_timer == 1 && _visible_timer == 1 && _name == player) then {[]spawn NORRN_uncTimer}; sleep 0.01; while {_revive_timer == 0 && alive _name && _respawn && _conscious && !_respawn_at_base && !_dead || _revive_timer == 1 && alive _name && _respawn && _conscious && !_respawn_at_base && !_dead && time < _revive_time} do { if(!local _name) exitWith {}; //270409 if (_name getVariable "Norrn_respawn_at_base") then {_respawn_at_base = true}; // Call-out while unconscious if (_d == 0 && !all_dead_check) then {_NORRN_random = [_name] call Norrn_CallOut}; _d = _d + 1; if (_d == _NORRN_random) then {_d = 0}; // Loll about timer if (!(_name getVariable "NORRN_unit_dragged")) then { if (_d == 0) then {_name playMoveNow "ainjppnemstpsnonwrfldnon_rolltoback"}; if (_d == 22 && count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5]) == 1) then { // public var EH norrnRrTF = _name; publicVariable "norrnRrTF"; _name playMove "ainjppnemstpsnonwrfldnon_rolltofront" }; }; sleep 0.3; // Reviver is within the revive radius and is reviving - unit revived or unconscious unit is taken to a CASEVAC facilty for treatement if (alive _name && _respawn && _conscious && !_respawn_at_base && count (nearestObjects [_name, [_can_be_revived, _can_be_revived_2], 4.5]) > 1 || count _caseVAC > 0) then { if (_name getVariable "Norrn_respawn_at_base") then {_respawn_at_base = true}; // Added for CASEvac - modified 090809 - body must be dragged to CASEVAC, if vehicle - vehicle must be stationary with engine off _caseVAC_check = false; {if (count (nearestObjects [_name, [_x], 5]) > 0 && (_caseVAC select 0) == 1 && (_name getVariable "NORRN_unit_dragged")) then { _MASHvcl = (nearestObjects [_name, [_x], 5]) select 0; if (_MASHvcl isKindOf "LandVehicle" || _MASHvcl isKindOf "Air") then { if (speed _MASHvcl == 0 && _name in (crew _MASHvcl)) then { _caseVAC_check = true; }; } else { _caseVAC_check = true }; };} forEach (_caseVAC select 1); _near_Objects = nearestObjects [_name, [_can_revive, _can_revive_2, _medic_1, _medic_2], 4.5]; //Added for multiple unit revive bug v0.50 _near_Objects = _near_Objects - [_name]; _potRevivers = []; _nearUncMates = []; _mySaviour = objNull; _e = 0; {if (alive _x) then { if (_QG_animation == 1 && isplayer _x && animationState _x == "ainvpknlmstpsnonwnondr_medic0" || _QG_animation == 1 && !isplayer _x && animationState _x == "AinvPknlMstpSlayWrflDnon_medic" || _QG_animation == 0 && animationState _x == "AinvPknlMstpSlayWrflDnon_medic") then {_potRevivers = _potRevivers + [_x]}; if (_x getVariable "Norrn_unconscious") then {_nearUncMates = _nearUncMates + [_x]}; };} forEach _near_Objects; if (count _potRevivers > 0) then { _mySaviour = (_potRevivers select 0); //hintSilent format ["uncMates: %1", _mySaviour getVariable "NORRN_heyImBusy"]; _tryAgain = false; if (count _nearUncMates > 0) then { {if ((_name distance _mySaviour) > (_x distance _mySaviour)) then {_tryAgain = true}} forEach _nearUncMates; }; if (!_tryAgain && !(_mySaviour getVariable "NORRN_heyImBusy")) then {_e = 1}; }; if (_e == 1 || _caseVAC_check) then { _reviver = objNull; if (_e == 1) then { _reviver = _mySaviour; _reviver setVariable ["NORRN_heyImBusy", true, true]; // Create var for reviver's name if (local _name) then { _revive_message = format ["%1 has been revived by %2", name _name, name _reviver]; call compile format ["reviver_%1 = '%2';publicVariable 'reviver_%1';", _name, _revive_message]; }; }; if (_caseVAC_check) then { if (vehicle _name != _name) then {_name action ["EJECT", (vehicle _name)]; sleep 1}; //publicEH norrnRaHl = _name; publicVariable "norrnRaHl"; _name switchMove "AmovPpneMstpSnonWnonDnon_healed"; }; // roll unit unconscious onto belly and start the heal animation - if altAnim unc enabled if (isplayer _reviver && _QG_animation == 1) then {sleep 8;}; _name playMoveNow "ainjppnemstpsnonwrfldnon_rolltofront"; sleep 2; _name playMoveNow "AmovPpneMstpSnonWnonDnon_healed"; // Return player to position where they were shot if (_name == player) then {titletext [" ","BLACK", 3]}; if (NORRN_R_SP) then { _name setVariable ["NORRN_totalDamage", _revive_damage, false] } else { _name setdamage _revive_damage; }; //publicEH norrnDam = _name; publicVariable "norrnDam"; _name switchMove "AmovPpneMstpSnonWnonDnon_healed"; _name allowDamage true; _name setCaptive false; // User's code if (NORRNCustomExec1 != "") then {call compile NORRNCustomExec1}; // Reset unconscious variable _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; // Re-enable AI and radio _name stop false; enableRadio true; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", _name]}; // Increment respawn counter if (local _name && _max_respawns != 1000) then {[_name, _max_respawns]call Norrn_LivesRemain}; sleep 1; // Prompt reviver's name if (local _name && !isNull _reviver) then { //publicEH norrnRName = _name; publicVariable "norrnRName"; }; // BLACK IN and revive message if (_name == player) then { if (!isNull _reviver) then { _revived_by = format ["\nYou have been revived by %1", name _reviver]; titletext [_revived_by,"BLACK IN",2]; titleCut ["","PLAIN", 0.1]; } else { titletext ["\nYou have been revived by CASEVAC","BLACK IN",2]; titleCut ["","PLAIN", 0.1]; }; }; // Fix for leader [_group_leader, _my_group] call Norrn_LeaderFix; _name doMove getPos _name; // Reset variables _name setVariable ["NORRN_AIReviver", objNull, true]; _respawn = false; _conscious = false; if (_AI_smoke == 1) then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; _c = 0; _d = 0; sleep 2; }; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Respawn timer elapses if (_revive_timer == 1 && alive _name && _respawn && _conscious && !_respawn_at_base && time >= _revive_time && !_dead) then { // Unit respawns at mission start if (_respawn_position == 0) then { if (local _name && isplayer _name) then {titleText ["Revive timer has been exceeded. Respawning at base", "PLAIN", 0.3]}; sleep 2; [1, _name] execVM "revive_sqf\respawn_at_base.sqf"; _respawn_at_base = true }; // Unit respawns at closest enemy free base if (_respawn_position == 1) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos1}; // Unit respawns at chosen location if player if (_respawn_position == 2 && isplayer _name) then {_respawn_at_base = [_name] call Norrn_RespawnPos2}; // Unit respawns closest to leader if not player if (_respawn_position == 2 && !isplayer _name) then {_respawn_at_base = [_name, _pos] call Norrn_RespawnPos2AI}; // Player is dead if timer elapses if (_respawn_position == 3) then {_dead = true}; }; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Respawn at base if (alive _name && _respawn && _conscious && _respawn_at_base && !_dead) then { titleCut["","plain down", 0.1]; if (count(_name getVariable "NORRN_uncPos") != 0) then {[_name,_magazines,_weapons,_dir,_bag,_bagMags,_bagWeps] spawn Norrn_createBody}; _name enableAI "ANIM"; _name playMoveNow "AmovPpneMstpSnonWnonDnon_healed"; //publicEH norrnDam = _name; publicVariable "norrnDam"; _name switchMove "AmovPpneMstpSnonWnonDnon_healed"; _name allowDamage true; _name setCaptive false; // Reset unconscious variable _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; if (_unconscious_markers == 1) then {deleteMarker format["%1 is down", _name]}; enableRadio true; _name selectweapon primaryweapon _name; // Add respawn at base weapons if this option is being used if (_respawn_at_base_addWeapons == 1) then { // Added code for respawning at base with original mission load-out - 260409 if (count _respawn_at_base_magazines == 0 && count _respawn_at_base_weapons == 0) then { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _base_mags; {_name addWeapon _x} forEach _base_weps; _name selectweapon primaryweapon _name; } else { removeAllWeapons _name; {_name removeMagazine _x} forEach magazines _name; removeAllItems _name; {_name addMagazine _x} forEach _respawn_at_base_magazines; {_name addWeapon _x} forEach _respawn_at_base_weapons; _name selectweapon primaryweapon _name; }; }; // Re-enable AI _name stop false; // Kill unconscious body if (!isNull _name) then { if (_drop_weapons == 1|| _cadaver == 0) then { sleep 2; call compile format ["_body = norrn_dead_%1", _name]; [_body] spawn NORRN_DropWeapons }; }; // Increment respawn counter if (local _name && _max_respawns != 1000) then {[_name, _max_respawns]call Norrn_LivesRemain}; // Fix for leader [_group_leader, _my_group] call Norrn_LeaderFix; _name doMove getPos _name; // Reset medical supplies if (_medpacks == 1) then { _name setVariable ["NORRN_medpacks", _unit_medpacks, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_medpacks", _medic_medpacks, true]}; }; if (_bleeding == 1) then { _name setVariable ["NORRN_bandages", _unit_bandages, true]; if (_name isKindOf _medic_1 || _name isKindOf _medic_2) then {_name setVariable ["NORRN_bandages", _medic_bandages, true]}; }; // Reset variables if (_name == player) then { all_dead_check = false }; _name setVariable ["NORRN_AIReviver", objNull, true]; if (_AI_smoke == 1) then {_name setVariable ["NORRN_AISmoke", [false,""], true]}; _name setVariable ["NORRN_respawn_at_base", false, true]; if (NORRN_R_SP) then { _name setVariable ["NORRN_stopBleed", false, true]; _name setVariable ["NORRN_Bleed", false, true]; }; _respawn_at_base = false; _respawn = false; _conscious = false; _c = 0; _d = 0; if (player == _name) then {NORRN_r_time_expire = false}; sleep 2; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dead - all lives expended if (_dead) exitWith { if (local _name) then { if (count(_name getVariable "NORRN_uncPos") != 0) then {[_name,_magazines,_weapons,_dir,_bag,_bagMags,_bagWeps] spawn Norrn_createBody}; [_name] join grpNull; _name setVariable ["NORRN_unconscious", false, true]; _name setVariable ["NORRN_AIunconscious", false, true]; _name setVariable ["NORRN_life_bonus", 0, true]; _name setDammage 1; _name setVariable ["NORRN_dead", true, true]; if (_name == player) then { closedialog 0; titleText ["You are dead", "BLACK FADED", 3]; sleep 2; if(_deadSpectator_cam == 1) then { _bee = "butterfly" createVehicle [_pos select 0, _pos select 1, (_pos select 2) + 1]; [_bee, _pos] execVM "revive_sqf\cam_dead.sqf"; sleep 0.1; } else { titleText ["Player is dead. Please press escape, return to the unit selection menu and choose another playable unit", "BLACK FADED", 10]; }; }; _name setPos getMarkerPos "Boot_hill"; _name setCaptive true; }; sleep 5; _dead = false; _respawn = false; _conscious = false; }; sleep 0.1; }; // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if (true) exitWith {}; //Last edited 150810 /* rPRN - Prevents players from standing once they have been revived revised AUGUST 2009 written by HulkingUnicorn modified by norrin and alef ************************************************************************************** start rPrn.sqf */ _name = _this select 0; HULK_UprightAnims = ["amovpercmstpsraswrfldnon","amovpercmstpsnonwnondnon","amovpercmstpsraswpstdnon","amovpknlmstpsraswrfldnon","amovpknlmstpsraswpstdnon", "AmovPknlMstpSrasWlnrDnon","amovpercmevaslowwrfldf","amovpercmevasnonwnondf","amovpercmevaslowwpstdf","amovpknlmstpsraswlnrdnon","amovpknlmstpsraswrfldnon_amovpercmstpsraswrfldnon", "aidlpknlmstpslowwrfldnon_idlesteady02","aidlpknlmstpslowwrfldnon_idlesteady03","aidlpknlmstpslowwrfldnon_idlesteady04","aidlpknlmstpsraswrfldnon_player_idlesteady01", "aidlpknlmstpsraswrfldnon_player_idlesteady02","aidlpknlmstpsraswrfldnon_player_idlesteady03","aidlpknlmstpsraswrfldnon_player_idlesteady04","aidlpknlmstpsraswlnrdnon_player_0s", "aidlpercmstpsraswrfldnon_idlesteady01","aidlpercmstpsraswrfldnon_idlesteady02","aidlpercmstpsraswrfldnon_idlesteady03","aidlpercmstpsraswrfldnon_idlesteady04", "aidlpercmstpsraswrfldnon_aiming01","aidlpercmstpsraswrfldnon_aiming02","aidlpercmstpsraswrfldnon_aiming03","aidlpercmstpsraswrfldnon_aiming04"]; HULK_TrbleAn =["amovpercmevaslowwrfldf","amovpercmevasnonwnondf","amovpercmevaslowwpstdf","amovpknlmstpsraswlnrdnon"]; //hint "hack running"; while {damage _name >= 0.7 && alive _name} do { _an = animationState _name; if (_an == "AmovPknlMstpSrasWlnrDnon" || _an == "aidlpknlmstpsraswlnrdnon_player_0s") then {_name selectWeapon (primaryWeapon _name)}; //hint format ["%1", _an]; if (_an in HULK_UprightAnims) then { if (_an in HULK_TrbleAn) then { disableUserInput true; waitUntil {speed player == 0}; _name playMove "amovppnemstpsraswrfldnon"; if (_name == player) then {titleText ["You are seriously wounded and can't stand!", "black out"]}; sleep 8; titleText ["Go see a medic!", "black in"]; disableUserInput false; } else { _name playMove "amovppnemstpsraswrfldnon"; if (_name == player) then {titleText ["You are seriously wounded and can't stand!", "black out"]}; sleep 5; if (_name == player) then {titleText ["Go see a medic!", "black in"]}; }; }; sleep 1; }; if (true) exitWith {}; //AmovPpneMstpSnonWnonDnon_AmovPknlMstpSrasWlnrDnon/* SHOW MAP LOCATION SCRIPT JUNE 2009 - norrin **************************************************************************** show_map_loc.sqf */ private ["_dialog","_display", "_ctrl"]; _base = _this select 0; _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _mobile_spawn = NORRN_revive_array select 51; _spawnPos = []; NORRN_OK_diag_off = false; if (_mobile_spawn == 1) then { if (NORRN_camo_net) then { _no_respawn_points = NORRN_revive_array select 12; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; }else{ _no_respawn_points = NORRN_revive_array select 12; _no_respawn_points = _no_respawn_points - 1; _Base_1 = NORRN_revive_array select 14; _Base_2 = NORRN_revive_array select 15; _Base_3 = NORRN_revive_array select 16; }; }; disableserialization; closeDialog 0; waitUntil {!dialog}; _dialog_1 = createDialog "OK_map"; switch (_base) do { case 1: {_spawnPos = getMarkerPos _Base_1}; case 2: {_spawnPos = getMarkerPos _Base_2}; case 3: {_spawnPos = getMarkerPos _Base_3}; case 4: {_spawnPos = getMarkerPos _Base_4}; }; _display = findDisplay 202024; _ctrlmap = _display displayctrl 202001; ctrlMapAnimClear _ctrlmap; _start_pos = position unconscious_body; _ctrlmap ctrlmapanimadd [0.0, 1.00, _start_pos]; // show map location _ctrlmap ctrlmapanimadd [0.8, 0.90, _spawnPos]; // show map location _ctrlmap ctrlmapanimadd [0.1, 0.20, _spawnPos]; // zoom map location ctrlmapanimcommit _ctrlmap; NORRN_r_OK = 1; sleep 0.1; waitUntil {NORRN_r_OK == 2||NORRN_r_OK == 3||NORRN_OK_diag_off}; sleep 0.1; if (NORRN_r_OK == 2) exitWith {[_base,player] execVM "revive_sqf\respawn_at_base.sqf";_base = nil;}; if (NORRN_r_OK == 3 || NORRN_OK_diag_off) exitWith {_base = nil;}; frame = 0.040 0.000, 0 0.040, 2 0.080, 3 0.120, 1 0.240, 3 0.280, 7 0.320, 6 0.360, 5 0.400, 7 0.440, 5 0.480, 3 0.520, 2 0.560, 0 0.680, -1 OggSvorbis>OggSg- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS(eWmy{ƺjnejyv˯ywzrwf0} |W'[*ΟߜU.m/ClųY~깇7ט%B+ry%ԵE݈FrUG s'x0_\z(^dvvaǭζ m { pp+z4ihhˈ'>NZgRT9 tl{l$[y ڟoXGFs;$;f6=>zw orަJ763Ҏ/_Ibw0@=Ewn\?izAV{_CG͵0%Vu $dT8p6 p'Vs,ƞΆ ׆ wͦV9j;[}o}Fdw 漞iZTio9@S];w"$?GV =wxoO95!;`9٦iWmr߅]hS/:ixjʖ$]2uF^d2 %4*Юg|eR'fЍ>z5m;lک^im'Vkv:(<|, gYݖ}aˤogә~c3hW&Y?sɍl_ˢ+^5u`{]w-铆U fSmkr! ZBK:O>yka;M\=Ro~3V26iG$-6Op+ H!ީ)rj/ڷρb lB·4w^윾׳3~ګnLRM9}OK&~Aj%0?Ff?xeƝc nb&2p_ES̘!b'[U--i(ZP`>IpS"跟 >`E4꟝P:C .! 9W囄2Rw^_'nME\9ӿHgvMS\'!e5k ~.; _a\Kx@SAk eQa!b`HӶݠ/BEdP(Z,Nr={P1U4Eʎ|ˊs?ϙ%" R-FQqcn3a' >}h٬(A3"h ӯy7"Nyzy_Qi6<|MgܘیQUX\BJ4MnDN'qE缍YPs˲{byHbKv}yfa٭?yD4)2խYϸl{x[j:-٘WfσdW$( IpT~/OvN!mQ`1?k!h@i:b߽U`d/[q@ZP}oɺaOv,i pÇi%kJsⶊ 8>zrЮ [q>PFyՆD_-(Sb2tb7;2.[[+/Z,5{J$9&ۏ}}^`i3IȠ[A k{kA=-58Fs{=K">"I^jVw:(T;~l/ K:ןsq 1u|v)Cbb!J_o?Cy_Lntj4 o;=Y:hU?I x~ġ_یO~>?:Nzt{>La7YhLZu>{we_M^vVk}«|I5-jMeS}{s[m=@]>yyjmźՅ|be0d$,ZT˽g3<7 F[3gv+ r܌Ytn*9&V&:ה ,~*޷m?54e:CHC-z̫xycϯdzÙ 6)ޜz{^0NᬹH׶Yӕθ`s$eJC:ڧk76}T(>=y:3[FuSS]xu푣Գuk񕿯M1D󉋩۞knz|?jgվ--b}XҐgں_ljYw&_#I`Kz"rXqi}?tp WeOMyo\.Hzq{zq$RRשQk>&h3T1}3zOggS ^- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. "^x|uW[l~uxldcss۽v [u_-[ wg3Pive=*&0p^urtսOժ$z̝^~ |׉ fo:5Q/m>#O4eYLߗszfI5l%G?mՍ=)?,ܣmnk|gpQuZY=t<5qW +xxgV(o}M-sh8}܌ =van{%[hvn~{}[ۚ?˕\Eq#m|}=s>N}Od3n 8OʵGJVO.̮;68ڗxԒ!g>;o>aMWJC/;PVcѣ߽ŀLH85B[6ּO)7 k0y&t\b 00/vPj20f$0󝌰0j&x$X ˹+)5'KU:Lb-Ɣ@c@9T>Qj=a kqq02&[9颫8 T+>sreƝ{tt~$PTUNb2߃~}ĭ?{oas(rPFgm{tɎ|૏ P!t;sW:(/jɽs?Iu7[Iݕ^SFTk&><4W> W7 ӱUv\zJoKJgpH@;Ol8A`Ckaެ@}pRa,<ԞKNN-SCx![ <9Lgck~VB܆}"S|Pv(ELeMxb?V7fPZ5 gfxroGnO{VBC\v !G}9SF%$nZٻoݽ[{ט|O򑵿<q>">\rY mt=ȸ"xV[Ona:K B=~WZIp=jgKu*sq ~ $ۼ'>=^sԦ[?tY u9'tV_d._=z_H[lvѯͼσi#5W0 _ٱ/|xaswr5 3pk>!`; NJ1bKTi+(C*X&0zQ2g%kllܓSk6n%ڌlv4ײ? i05w` B,Y['T$?>lgĄ6KdMN?ua_љu<듘ZY-sQqֵ7:cЇIӖWRooӄuoi+'^(4N5x:_'l Kx<w:S"?*@YECdZ'kj uց B.0VN?j7LY pZf(/𙧺ުMvoq=9+j[}mn>7A?f4]kƞ _-[3+Q'`L[iyNc נի2bQD(+{سR/K8aFp={3o8:Gmen?o#\(a$HOЅȇnQh>_>6b5KvB)ב@ SdY@D}2R|wa^rė=lH;X6Zsݞ:} D}i+kZ {ĺ=/6Y5`e [ _}2b{h!H 9mӝ}vr:q <*Tt޻}.N'UHu@3LS]=5l9\;ci7#[S0&Wӎ>:K( U-[' wgj:KDi)BTڗ=i2nMj3~JIg~):YmMowk)%f qCVJ61)1f*4eaķ02Fo >/'>o5jz >L> 6F&h No =:29'czw7E>iZM 1<2;D7)b9"ܮOPx NCD:O(Zy}d5*Jw\5菍}fB:W!,@PX@ nQqo(3ax*.?i=5u =Oܺ΢Z*1ARp,Γ߅>Lv)#Z8oۮ4&XA_#R4kSpeF;q"ԥBZmvoQLL >ړ7}@s00 s(FۃmwLxg~is/e%W-3(ZaClr@mpmn@N@¤B'CSyR}^RܿꜦJQ|}s+,W8_7xSt+>ӽ=-^\Y?a!1[Kh>w*r^ `JOc-ͻأ`9v.UhЙ=hY@6#)oɫ+#ESy1s ?@8v|=:$ bM{ž&uɅ,aR\W^V?i? Ȝhy$zZGnՖ[wKIΊsoڲlNP~+eN䶮{[MƤ `%g9WҜ#Iw~ *KgH~hà͓,ֶTcr픠M{eg%M+naTU+fda֡}Z/&?80ZE)]KHʐ{zl]Br 2~?*Έ!3*37')^ǶUQU!h4&z(@p/Ep\%O$1vLmYlZx$yAg7ߞf/]ګ[{nerLVmvt.-^D`75x{I!ܼn f"LݴrsS܍~_73XCdn!t3!֧*&=7ml'>R5 P3_OdkxW)ks43){|gʎrnVSݘgc6喨O4&Xm5{X#6;'5$kuQ%n M`t {X*lBjVb./$wBvn$Z}0Pvb,{h0K.0+E=r_o%x"w?kfY N nu$ m;míBvrftMF3?aM7^e f8k1pzcdʳݹECCΕ?OggS =h- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS- HYdi]vfkswU}qf{unN70ʟK<*x O,SuF?kW~Qށ)@,r)U%C{er8{DPW%MrdyZ@!{{RZrڲp=h^+#*RfVy la_P9_,@ȎU7\|^,׭FHѼޙ bjT&is *I<٩pef_0"(0 t³&H~"f̀ȧZ0 ~oX>8+5 PF/3]o3_D,e.D._|GTwl!UpbkyɮFo>G?E%^di+[?>/wXLm)D|+DK =?q@h8Or)zv[_i#٠HnDbXx2|-' `{'{V]YW#Q;hΐ(k!Z7H8#Ռfr\T25%7y潛ˬ)Q_hQ\ 6%+ܾOjE!6pWʾjNDX@q`_ۥu$c()TFSiW~ @?.,`|eٕ9IHJDD㝫nq~TVjsX%e} Yt>/:ȽS=`S7OWFH)OB*z0xpQ8 A.W w)NaL@ u vmQ-?d h1 n[DU(j|r% tb @gK.nu, yC-XGq# ( 0GavS^kk@{ 1v+J:@έ +1&C٩ɻ݄;q۲-mʕ܀?gE@ٵ÷u wNgo}FK~*0]'A!TK ) Olٹgcj_ *> s6[{WvF>\PuVW `dF6o P6i}e#)g㏎jy~JZ+;R[)%}>w1b&o6ꍰ T~ @[jNN|V&(ɒXdPҧl>nY5P銱6m_^"l 0 td)ȓbY}ۛ$vɴr@X9RP3S)yaj-hO"q?<iʬ?k3<+QJ) e:V#}kJ1ZhN@( zpzjq^?G'ρ|d =HP cebi/E7d^Gٞ1~*ش~)Hψ^K(ϑ/T]S.:$О(Po.!(ͧ@ٺ)Q\C$-oZ2T-2B%T>޲u=ڮjAy`R8h!Hv:;j,(&\aBiՌT2qӣs.@fNTqO.?kbrtlDHr]՛RMɏ؂tϴy6NͤDim|Fq}+foH HBAy( g"36kq叶XoɆ2HwD2U0u!I+.b;(u7GqM M5J rʕ A3zI$X"Q 5Kӝ >^:Zvѿ[X`iH$rZ{oVzqg]PHۛzۊ>#I nRe4v/0$bqiW#@IH8IQn8o 7clh\;*q]oגUW}wrrDI֭]uVѶVh6$99=}?j&-dw+=a)55̈́ww$ |k5ФJ7b . gDn(0J![}RZ!'̔?:1Uũ8Գ2ȜsJ@9Ydho~K uJysMs<6 ~T ]+ *&:`+&(;$KE+ҍ!^+t |]k!,L](% 0bO!GAiBu"@ՄX>Md|N YlF(zK=z6q0" źL଒[ < 6HfW y8-ج@(!• X*D$ZGMaNsz[)^&T 7C X)x@*&8Z7j`TqYU4~J\1gqZ[r@s:p {X×;cй<<As0kb;AT4@?~!t2X9[YO6EhMXIکK{AO ܽZ˝_7 \V sElT5h|X6{윘 Wa9f/lRᜭ'v%7fo|Y?8%]OgܬnyIR9ntkJ53(Oͮu]F<DOͮ<ӊЁ8i}sJjuށ@nt{Nlj2S;W_E{+,M1zLixuݰmnm3}v1,/:(ʤK475\e܇;y9Ɓb+q`ޤr*/UꝪU{ fSg;NXW|2#?ϻ泂4 玢K-ͲͿc20\gW鍇iC]=o?kibyf= 1 -W7 Ľ[dNJ8ht{ UR3|m,__z~\=t3g3}k4t{x9y@&{w߾qeąrtN,mZ8%&6"ˍv'xxI]s2eЧVòPs6틖I]T5t_?6Ʊ] KJɲ5OuODGLڳnS;"A=2E5^EƗvt0n*Yoj~o50yuunF`넴0(b6uS?$ZVeUn,-oOއL0춊]0δ< o[/~u";77yy8n9E zܤ4]7𗧇 6KgZo.?Tn٬uZ-1~F]jT^"Ͻ=ݤ])2}De4nUZZC,Loֺb,iR\/%F/,~hDF*9OM_yL5Ғl$p߱rJ^4ͭZZ"hN.NGR\PpAkԳ FE'[9B}Ls駟!rt $Q yZ|cԞ>\&Vframe = 0.040 0.000, 2 0.040, 5 0.080, 6 0.120, 7 0.160, 5 0.200, 1 0.240, 2 0.280, 0 0.320, 1 0.360, 3 0.400, 1 0.440, 0 0.680, -1 OggS{ ~vorbis>OggS{ 5[- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS){ lCF|wx|{ĪX{{u~zoƤqnqU$U2 咘[Oś;I~gK.^C>n񝓝|Ša~HJ~qm|2)uw/dJΏKbyTgQkhutĀ=b;t)NTW}^ouG7nH;$/TS_ ;PJf7FG]c:#=OVj?CņEƶ\ p"ťМ9~zCf֙Itu= &kI[}-htͫ:"2~'øJ1=^{l֠7e߂Wܫ;CjSX)S]ylU(mGbb8ٍvFVobw{B*ƞ"^sV2OR$l8$pjX4y5 [t)p>q::R31zU(QŰcZj(~n_HBi&MS=9-@|Op{H̓ZFܣ+پ NH'_z㉾վRD%Y_瑇R4a4h͵t#7ߛGwel{S3y jݮ8nF^[uu6EOkvn5OnYb8;h:?+MN he|"ygnM~మX=ML^]m‹5lݡw[ܬ=6әm]7KrUzƵ~ѬZ9_~_6GSzEjwNu|3}~vȯ%ǍoFb?3e6kxml{ڶS\i,BK 2zɸ[:fiof00<^ytY}6Ț_a%}Zb|0ev,!@?ʵhX.ru77ujZ\!F$+{^E=sz)%5쒆|{R^W>.(U1۱l6fƸL6E?VeznHV X.g]4]H]ٙ05߬}9R5mUnJ5(X14V8Xߤ?OڃeL'Ir&! ַLX\U_Di{gۚڝ<a^l9+5?[{÷>vUhQ_9%%uW΋ԿDs۸@bQ"۞MXr5 3"hO=EOJu6?90D'R:fY ]x0Y+OȝŸM/o]bSZ-1kd [xy'/wX3LVW}O٤d}g7>6r' 7 J^1;eP䓠>!QӚms<IĒގRbfƸ;r{ekz[ܾxL2x F55ӕK/ν?>>Y'h7Xv,mS3fl['UOs#1bpuO7 t+/Ӵăorڻ$ʤ۾iZյn.6qc˹~l orf2lydik8 PfNtx{yz!7* pmK6/_[2sIy]~;v^9sWg?qoupg`zoFN ڗ86|uwf k4DMD>^Gjz?5'K{=tN\STP¬flzںpp\5K.m_lLafTvm,- o%I%lJ"JT%NiI K AE‹=7*P?NR*T"}ut`Q{|s?% eε촮T1`*'@&/3u_DaMl9>bqh_lC=>[-KݟR?qF<>}v=d!Fo`7{՚ZX *.?aHׄ]NT˕'S ofPR^"H~7kQ?'ΐoEX 3~m22|=-qPmcPNkvD3-ꏏݳҧKOrh @Ijr^-jg8DEkw=a޵nL vgaܽgaɽ(47P-yr3t}?[o/@[|+\9ƧCg Q,EZ;6g6ծ L&W4_[8_;WޥҒeܥ~mi\8e$8&Ļf[ofJl<~f S j+3RKYٓA;=O\nc:<6G[|Wt1%]K?psѴU\g&GL/;Zt|kBt}w͇v~٫cd:l.*H3+{JՐS?|]j{'ycV1jYB!vkb.赥._ym;zEjU6/ʑS{e(4?wH K1MpD@ΖKj~nHemũ"4@Q{hx)P l7o!ceGOggS@{ @pR qm;[T\0U]f [@v?>"Z~eh%i޼ۿ{^4_s:K}p=OggSD  - vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS*D [3ejiw|[ynn`inq~'@+6`݃ ^A-f+k֛e5|fI>^^/~6 >G1ӷJ3ҌGs.ŷe4I/xEc!:\  svTɿdN6\H黋y/]DW&꽦/ǹLL/Fnm3ٿ {=HPUB&Fݼ_۹ɏqIZ[q)bLKk,_ھ՜<ܳIi;|㓳t1k;yTm"ߓJ-\t-ZuMF/.Y.mZ٣FYP9WaQ;-}X=9;wGӈȿp}'Dk4`Gzeٲ&C{zhu/#eYf3aynح Z?(6o-9)炽jK?{s1McÇ{a_ K1?hu4E݆7_ȹ;ݸd6Ѧ=<ccڒ!h3 T1LN` hU0oc*͚s32'Q'}tQԥRݮ=zᆅ3Ӣۺ#켮)İ! `ssՀ;bb&I,Ҙ~e6Z݉( S2*WWx#v[[Q .af>j|6S0|:i;K5ewq3u^09n]y{s+nFK⭥[;OY{·즶tAž5Lv3zžFeks 4Yr5F#{u*rf#x=8H{7Jx?9$zlg/whNk&7Y37S[T*WZ&!WGUmХ &G-:߲?kZC[qDOh9c;,]t v0٥#ǻqBbJcl &Qލf ~mfK"~O+(C? tǕH)ԙSVdQٙ&p޿-y[&icm컵bS,݅/mߺF;8;}5*5֥vlj5Pn{(׿?zc;cίz"ɐr_3dxa~q_S*O?C 0w!OW ߻6Ruڷf^xuh%豝>T9>Zӟ <v)D}m{s Ta0 7 W=%"ʏ[_$K–]h_}K1}IcD=ʫXk5ߔ#9o)#7"˺(o/cS/X>iIJl¯cUqҚ Pk/VX1 'iһ։t]}t^{bs"Ab{"i[zqq+˶y;.rgB+;~.e@XKJvFL'ɺA`q>w}hbyO"x4SMUr{އy_]Ujdc$03۝R|/}yxΏsN12IJg>iIqi ޟ{sx.Hxd.yToFhwMQfH É  YSy*dpXwkֱ6c70᎝ynow:  ܗz"*: aByjݫK!U>~\ucz9VIC>6O0b 8SEԖxtuE"tzW.H]/ω$Org|mFEZĠI&ҪBV"'a]\ú9Ƽڲmps=.1]J=3 +\Vp_kg~B,,$m4kJ=Z{"ռރϕf/{8:@ EUiFx°vZnemeu=`T f[x.ðe H=YO; t?-5 Zf?XAv{Ȝt2YRad#8a[n״'3g4C'͙ I 'Dّͣ :uU8Up}>)x{,(瞮ckRQ5npR1剹-$w֖\e {hn?~WvAW*$h5P 4S@Vopޅ1b>_̡Nxi'3 7R4ƦNmAxLFc{<n==Bw_eGٱ&SH_ dTBS\+>YQL=IZPJr+cBlw o[".l.- ɝ4gԛX{i Ace7}?3qT@Zkl.zyd×u(r* |uIs_^H'^_SZ } i+l,Fj.MUtQQRlnbx#XF{*Rpwš{zgӦfz8䠯7w|̸Ӵ_g lz3a?uA (1zG?ާs "ׇE ?_Ł8W =Gd|gԑAq sQ [jF-zo6rN5p7CkCMaBH }Θ?}#XycOi|;kFH$%0q"xdtU_%4iRGb*$5lAۇ39X#h#ju(g ,M=?p9M{Hlm%]4FvY %ZR~Q~qk %D?~v^Pˡ?օ^T6Swf`6: gEP,Pæ0* dy!a%N:pA~:RknZuQAVt s5`&K 0.OD5o]H2 A,AS-Ǿ6 dū@#3SvTU>5+xٯu pJ}Aiͮ1?i|93Pʅd13+__jb[)`Y{=T) ,@ ,TH/;쫺'-oPjg#J&`!ӟI`&A܈'YJ&+0>XEEyqQ(?k*j_.j EgkOgv\&9%%7b\C5%`~hr}^QK64d@HY%1rո(%@l|ߌL qͿH.wnL ;WC?Pa :¨:GKa6vzi5(Ez~蟏h[vwN Y=i_{_q`b̬4RiyiСQ#[P ܾƜP J5 ټL B=zϟ,v,D]&KJC}> [xUQЪFyۊUE^߇&:(bs^*[]AxYl}`] Q/A %9Ht+"[Ng7~Ɖa xw>пq2j_5z᫨0ǯks4-*3mS>A0jjk-\qk1Ǔ92n][Cc,0vNVX*@7@ޛGlZw@Lv<@<|,>ۉ0޶H\xTFϧe (VQJ"3wUu>X=:zc̼LcZ2)SY߅oܮdFW-q# ^xjOMm<=>_5$ ]8L۵޻71Diٟ| Ƃ{:,JY+1}&Jl&2?*4b)]v**>(~ /_-ms_D(. (諒4&`{Ο! 7{mϙ 8ﻓ=F!g{1ipþ 흠j&)9h/z|5%K>>AӼ:A{fK?YrtnI"wNDnث1EY㊲où&A ,2@*Ws{$J`$pַ?џ&̎-չfn$bќ2 ٚlɚ;NqDާ(X(̓_ Κ#kg}iVcr.@oO=,cݾ6T^&q}?7EUZg ]ІKMGwmR/,.+PEKh:-B8%Y?'M)w~ɕKzkWhE 7ac^N2j} Hkӱ?6/c\dIS oAuRxgڏJ$,#*<35SB̊z@)u:w 5y:&~ 8:3nDV';sW~{t}PG?-tٯ˂ GkxY=B89i5D do(~` "||> feme2KFwMUڋCtǣI( 13{rKn=(ınI{tjKg]$Z6g&UƑOSڈe x-ˉv'* Vը/-H);1mo+vm;qۢm oFjP~ǯ֮oW>yrfNl=E#`\> Ֆ|0?O񱿣|VwwOݳ:;D'j4iV cG3ͪYMframe = 0.040 0.000, 0 0.040, 2 0.120, 3 0.160, 6 0.200, 5 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 5 0.480, 4 0.560, 7 0.600, 6 0.640, 4 0.720, 1 0.800, 0 0.920, -1 OggS V)vorbis>OggS U- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS. }Ctvtrdqhbupy\tZ69οg,iS]?MY~zPYp ]SJy{Vb"#V7Т}+ޭ睽x8o17b2>OSm_+g!,nF6wmq Erwql΁;0]| ^JLu/GP2˧rޠ1|E hޗ['{:*MT_>_)(tZEG4}i,QӅ US'OF*o\οL>@icwL @RnѧLʡ9#+49|+=br_P} I/)j5"n}'{>񛀌H$RLzLđt^bbHL7͓CVPe[|+;xGR7~Y}j ^-L8}ﵐR9|< UUݸW:j>D6&wt{g( 2iwRh`]%V 3v˼ ϷtxozOp;X\mjw/ :E?d oQ$ (P:H]>v]B"mohTU3@UkI`D^t*g?nLm2w5tWbª* y^-18X} ㊼1<7Aȷ[:XK\)ptoVuެ@},+gD߾\>Fa ~ڮ~ . *U`3iuH_y@]tg{M^_P;)[.*寛pL#gfZG6.9G=;' ڥNfX!Sꛨ~1G%p /JLx0~4X.@!EApzaȦ ̃@/G@'wR l> ˆ@5I V(ȝDrV(.mS ʛ17=q#U2UL 0`-'c76`@\,̯^09a~Χ7 @)[V: L\9cmcEk)*HAB nPII. FIpF8~M׉1Zp @1`ȓo%lRY2O ; ^yu7@"A.M,Ko Lz_ ҃FVً_p e,u(|V5gGd\qPCPH Llz(\\30^N`ٕ⌗ `Z/P@U. %Eʿ\dzon'J|y3W!rƚr44Q{s@ln7JvN )V8 N*Sd2B +J38Ul~{2J)R!ˎLqE@Gu)G:vtW%|BxBV $5F;kaPm.3tT^n M&s 65nAa[s[O&֢IUD_kA{ɸܿq2 S..a'] op%}~u7 :.D@r IQUnClA&{@/|}=)8U@cUXYKz..K[ےgS ^xԱR}] wpS k.c[I8G>[wԫx@ZBP5 s;Iz1z`0&:(j8't%Fow12;HXj-?Rο BI Sow)IK 1rݕ'O׿AgZ.~s9q='17cTtDĨjR ~;`K} vz_$a ƞ$N+oOFbny |9I>ahRlW1yuy~\)z |q^rPqEhM+`|1WHӛ 1ou,^n˲6 = `$5 `1J]U)z O'؛|o]d|+֞E@0nEC~<)@G{|۟8Nf*R[^ĘFu#rն/-5rUzv=ߦ%G;Uдqcր`DiuM2 #)&3;{`eON:$_}~p;+9KBۆ֪\G}88AVl;hIE㼖n1mJٍ¼)ߦ'V!Q:LK:V]GDad{UG:AR Nܔ p: .RWI@8tddQ<daf&ЄczjY^ۣKMyOuq7}0+si,uSK$D7KNGG'.P_̰o b9:wam2OΑSn7OorHS/rP7O%×w,J*DAET@]\Y471pYrė*UoMToeQU!l28<|>i_-x?FNh-mǓEחCKASۈD*3U?gwH/F,HRůHWb<>xEa4 \BԾ_vlO`ڮ9}uT&eOG\=mmH-TZӥ|7]1| mjZO~|I5z$ PZP? |؂t`IE _*UR `<~COOggS@  qUZ}?UyBqg˫c{4 Da3IIC9Gx}~"TS\6~$< -5y8~A M(6|Twbp,?:J)U(9PkOѵw,jZHe=ٿ#41s1!^7Z>olAV%<:/hI3iC #tWJoӈEC_RVre-M֝P(%t#ak"uz U{bQ^7z _mffgeml#y^qR~+ԇr9 b8$ Hv;TwBG}R&DiTᶳ?ѯ[y-(%œY=uWHb-Ikc3xOUBim +ҩvQޤL KO<wgU_^s`PY~q9Eks)LQ7;;ߛqC2Yn\: -cDK9 1FTK? ͺ)g屘!\VZ=e9 OggSo H-- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS o Txz{xkrwtYrjmvwuj$CGLty*sc?y =X.,=u||?S1?>{w}q>u.RL ujn\|S<D /ngwŦ.翟-b̫`NGQXƼeyԜ\=bF5?+덩~zzibn7}/enk~n.{k) ,O<'-zo0DI*Zģn$A'OwȚ"meɈ|}}0Z45x] эc:ʂDzjgIc` 0DŪ\/RO'ˏAwhs hvQB z1V_eO#q1~-7zdÓT] x9fjύ'&gx'E/RQfΔI@Fex$yޗ:~O\SP q9U+؛>O뺦:*[]rL{3n` IJ)!qZ'Rze߰2O%$=?&\\t9xRx]hGL~RO:(a͘PPD&*7T]r Bں5EX8n*Ll UuO~@`ӡŐ&&svUr1"ܾdr66+;O%'G f5#vMRc?~8gsXbέv#wQVs08Jl<o\p8W0S\ؘ@|K1{{nJ#|~" "J xF1 ,DlrY% 5R/E^kOng}m;w^ \7*.)_Mw@=.ZJlb{kmznw⽒ nmVn nmv#wmQb[WݐS#jmz fd6u>ɮ7A ',ïn>M?QՉ-HID;Ңn/$";m*|`x{(K?, =iy*_n]ktտ~eF; ܞ]" PНt=ȿOpgQLc6Ws&5 +"Q >{llZo/u6y=UmD8eS'BoUg$6voFOR+5:㓟'O4@b}Kj)ɧ46-y!Nb_8=}!8i4H׹j\{3bjg+AL+ҽaD 8JPLޟ|Lθ VM7t dX :[kwծoI•n|c]-\rݿ;dt WYCdS,M|CҺxv~wڗQ722f:yqu,jn>@º\ZH:ZӚ?IOm[Ct,F7GoŎ;N.1Xl ׏/^ȑUHhiFXj~R20fl̢Gw~)P3@rWܱͧsl1Xem y5!h~yM=e%f⺷T+YqEEU,;'ۙвZ~vXɚ1֖/M[;M72u*h5%*6hoCOF_Pa3dX5DI1RFspw8Y:\t|08sRڱsumIͦ\,nLms֗o'Βڙ)rl*&3̴?szt|{g<}`=<6; ,Hѹ:psNͭ[{z$Ϥ ΫKhN|}] D\@ frame = 0.040 0.000, 0 0.040, 4 0.080, 7 0.160, 0 0.240, 1 0.280, 2 0.320, 3 0.360, 7 0.400, 2 0.440, 1 0.480, -1 OggS$ tvorbis>OggS$ kч- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS $ p{{qiqstOnwuqxo{$2@ {_>ͧ&{t!4nH {> 1EV?5*&TKOl%̐&dI_.oOeCsҾ9r]1`&bX l bMXV[#!LgV}CK0W'B-i::ukby" @~}:[9ex${Q3'Q\F,4 ~^wLts)g8Q) Dgp|wFy}EUp<fE(<٘ojXק7t%F I>w6;}aw].WH?w\o|!: qv='>6`}cKdB6_~? 18? xj S4 (]􏴱0?OđT'WA t_6{AƓQkN:jv$P'"SKKקO=YXo[ y 1"5|6jN| ƿiY؀}&/{]|SVf'Y͏.3S]( &֝V]H<F¹Zk)A)ONb%铉vM;Իz2>\EOqC_ǤePyLP;e}Hc&q7|mIb.6*ـ "ڥBxx1!t^ULb &VZLi{k7$)@ɫ&krϭ 9iC@<> k1n5C DS{Puؐ_h ;:\[&#* K>uE8e48 ͙-v8)3|A~ʛ lu飀T,YϊwE#vzVZGw#e]$xm[KsەһSA|_Z.m;e>&9y~̙mpmVfvg Kjͷdqnwۨ+ .d^#sG0HS ;pFh6|ߛK 7Uʃ^oDScq "]V86wp>YY- "bD2kcZ<5z+eҥi(hoqY=jL-q~Iy/üQK؂xjQ?t +oS׾YB +5fDzHS@ƊJD ٠bX6olAL[>=̼8T8@"ȹϩUޗ"J|ak1R0y~7N냝b^d%%SH!w8 1FC*ckwr!s?hΜ~J*#B"K&LZs4ɦx:NwdOBgEu+j1\ |_3iO4BKoUv ^_vO|E ECإ[yXxG1Vʘ "xj⠓:QiT Aaj>quKA.{Zړ[k(v|q!/,TS]rPu&sa>m˜v-It7mg~}qS۽{jPܥӫ{ohJn*xŊ7Ȝl,{I ǫLJPkQu%B-ziv{7WH^DXf0\IfiB? e4н/ɾτؘ ӭS%3,v6gr\kge5K/f/zO~ίsl\_yK/_uO_5mӧO?>y.N'ObQiO9qZ1Fܯgׯ__I_OggS !80- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS@ 9r+smuʇ~ȫasrRuyxy{zvs4ZREQ;sl%rkm/kF zsi0|m䝻;]V(lƽ'&Ƀ?R G::Ӎm㽷2dHMծ- k0t>h5tmz;Kͨb9o%~h{*߱S`#:o>fћAYxփ+gv&}װk|R\ @Z\3BF&o_1}o}m>(Ny)(J]m> 7ZiG|r3^.,L,.|.ZfmmAUC*JIiHUFxhM0[8Gٜ4Bq|!}$28}(9;faSz Ï465Sr0gy5S85_߾0G(і>?3&nRhF/Q4*XSAۿ<̻oښiAڞy;pssEf'hu~ҳ˿c86juISRbᆟt|3m0}@ʤ^Ag#cwq\:6!N ;,Lr/m>hM59c𩆞f]Yޥ)E wNDix˹]5pT~UT>ط]^(|]7ab#{xeWTz }%Qv1wue?Ltǽ9ѿ,;Ͽɑ m 5j>][G\`C0T.%j$Hclzܐ궵o}u_̶K\suN@CD]?~Vs82݈S-*jcfn ą7uҟ< ࿷ "pvPV?W63PﯛѦ0KO [IM4 lFQb'Jam /ݚ5ijRf8JNzVX;F_Eèɽ;}$@Pڥ?h}3$-͍ۜE:j,.5K 1{p,$jMN<'𻿲?f~*܏NNH% b\n`y:aS;˾uW45IE؏Ok}mYwzjj`4hTL6ۼξm @6P@YǦD_om@>Z3ƎTR˾t6];IEO?ՈFB )66^ ^49Q5}B٬M3^?+Lř9=I L}uKǍl~96=[rGW8ma/$-y_.]4,C5㮯>=v׿ə-Ο.g~ghq#3͚C33;qbult%YGBYw  zh7Lbahŋ'3LkVJD? &v_mgmtoa܃Y4f|>z鳡kP;zԊj9iŏ$|1heof/>y_J)Zvz-}w"M{i™H i}*O޿6/Bw||>4crw;;V$nO@o'|yC?|65u&ra_Iw w8sS]އ/ڥ-zߕ ߩ^'OIsg?+A3,]/s ͍XBu; ̀i]]k8i5ﳯ Ʀf|_Ҥ\~۞"gxm7?g,ӢbvJƠ>V"08iI<ۺYtCWޘm[z}?ʜ2I>}j" unTNN=7WuZeS+{A?%K/t'6=Ojmώ^+ino\g^v;.N!ftۘ[Z )hf&0C[6£^F'?ZcOg;s.Fov'r8ufzʱzbffN0}FNLy\t&Ů/<XQL~2YZ\I֫"]l'CZ"MO.mc^YRO2;30zFܑv[VHjd ƍ[!)w#iR Bbrr1;upNѤI_b[\+1N˥pX'#s5M8YH[4{b.>v{g6hVf_tǷ=ܿy~|˷k)RBxr3 Q:O<5 Ard9I+Ď:N9e- frame = 0.040 0.000, 0 0.040, 1 0.080, 2 0.120, 1 0.160, 3 0.240, 2 0.280, 1 0.360, 2 0.400, 4 0.440, 3 0.480, 6 0.520, 5 0.560, 3 0.600, 4 0.640, 7 0.680, 4 0.720, 2 0.760, 0 0.920, -1 OggSd ̇9tvorbis>OggSd 7- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS.d L_F[azvrsu2=t0G` /Klm> vY9AtߴӽxUzfgԝ'k6͐35c_oLa{oŒnx&?ӊn\1I*c+vݨzX1$韩c-pHs'i_a6O=C>PFyנW7z|.#}ݘyՊs!eqٿ+2IkB{hn$?{6/;JcRb(pMHU`kFLhE* P7Xͳ}~utw,눨=e8JNͽ.ް6΢ϩK'ƹ"[z˱=3P~Q++<tr%ՋUjbkH[-}WSPJ홤)P@*2;?@荫>ݿ\H0 й{-{6[lC@K3uԜp)>%[M=oѦ~;qM?^%!q?.)8< VlMI"4Uw]w@B0Y0Fff0@:$ K,`\'Om Ȼ2yRU@6z/kWж R!jN\.31}ꧧ_yW Xz'vހ9&VzЋ5EZO3@>潤`w L{Xvz @?^nk* gz*UJη nDVbw8}z&:'^:ךen`yT LkP P1*Ӿ/b}NCUO8Y/w7"` 5\گ8WPYsD+Lkguo!7[wmD*'^u}`=2{%8lJgV^ u^Z;>l'@!HP=])ǒ@N=9%k!75KTq sE* Fj7DcϭDh\@ooPڿLyzKʝ\h76K œ >.2yW|{zO({Q|32j>3rPOIwb?-M Xip|䩞>ޞ7;kӊMg70]8-4y"Q gΥu?t"L46]d]{ac*;8e>]儾Ok}:`Բ%~yw>D${#f_h`(i~)1C¤Cb(I /W{)mQ1aH[񍻴O{DV o0rDBzLminҊnIsj/.c[2vM?wA. n<%Aؐͳ1Nv]FG`˅ٺAmzc@Ժ([`昱3iCFP t7Lc P.@ytW^>Qr֬9-W}$蝓V'oz(qAɓuH||wo140܆B<:Ej<uefe,'f}N*@9PAQW]^)q'2uخ(<˗͒,"Mc,T@=9qc4_G5vD6V/^| #7Bi70aYC a ݂^avK$+.{Z(.t=a?w j݃pon~/-B.du^[!E w\QG®U[:gE w^@Gb펶Px'"*XG|yhq~n+Bdϧ__m\fg^)N~` Bwt/ HDzؽ_>"r3$j)"dڛ~$>Q/5{X"a _- QF84S?_N0.2pa'axS(Cp .gWJBv\e 8fL&L@~ "?8 ~el#%_2EwTp~[ >I[^y \" .EFjKeV 5ѬXVp!5( <>)q98cP#qxU_/bdPEm4SWU,>4м$e:(l{^뻞oty/h 0 `GM=RSF J"e}9oA8ppX (9ժ&WڶTAja~KHG.2PA P@_ 7J&@{K~ʛyU-7~ co @ G~)E67*łz)esOL@d,Da$/+Sܲi#%yҗ!apZ-[F<*PX9*N UT( ^zGrٴ;ە0{v,*I j~V8j P$О)T@rY{_E`~W0q]];Q#.a;P:o|Yk*Ց8BoyV#Ƣ~ˤ8>[fDQǭOZ#mf[ꁝvR֞i53Vw̯3}XJӕGWvNѕ&ό6gZJfDZv-me`DWs,o`6 v, ^v, @# X9mټM@}Rl"C(׵ zuv^[dgNvgЭ-.!$XfdK6ZZR}V3=.'p),+M5s"}.ժXq= ^f駭ҭ[CbgsG˓ԣo/"F 6IYb Tbu7.-kH&V+wXx|թmk6wsk= 422⵫:QZkXH;׍~@')y+ܲ]#7)F8~)4]~nD~jA{%^cV>=x5 uux@B}NT7f ](MQ#Ԓm*[94hg)WFc*n7dc +&Sͺa 5; !km_qc|uor/(wbtxhc?)&C(l#G|5& ND=hoU=֝?]!["oݖ][6sg*Fh6ڶ{q[鴊LJzv#/ s䩾_P+a,_uΞ7M gW'WLM-c1n6O>ZEonLQߓ; v3{H[g$}l[fh ;+} )ڧAg ܯ6N-"4*4KHo-jl[j-+-J+{*|k?zU~Xҭ->R˧ĩZ_gs̯#RAυlԤ_.!F7Ho1<ÞPWBi6y55~!.O^yy >GqsCߡL/qr:?_ƉI\3i;&c(9.󯸯)ĈG,筸!5xv%hA'^z `H0z81*P|^y&>zIGb||nͻ"dž,!';Q=K/d bسD?βkKB.,S_gQ /`T5~mframe = 0.040 0.000, 0 0.040, 1 0.160, 3 0.240, 1 0.280, 3 0.320, 5 0.360, 3 0.440, 7 0.480, 4 0.560, 0 0.600, 1 0.640, 3 0.680, 1 0.720, 2 0.760, 1 0.800, 2 0.840, 3 0.880, 4 0.920, 5 0.960, 1 1.040, 0 1.120, -1 OggSIXc.!vorbis>OggSIn- vorbisXiph.Org libVorbis I 20040629vorbis$BCV@B*c:!B)B!$C:5cGdBɁАU@WPrI-sWq s gq %s9r1sWr)-sGqsGqsm1r9s Rr5sgr %s gq s5r9s9s9s1s9sn1s9s9s9s 4d(( @qGK$  YHHXfi&z(*iʲ,˲. HPQp Yd`(8XYP GM$<<<<<<<  Y (dBCV@!CR\ BCBC)%cSA!|={АUa8$!b'Dq !$Xy$݃B{˹{ 4d B!B)RH)b)s1 2蠓N:ɤN:$Rk)SLc֜sA)c1c1c1# YdA!RH)r1BCVER$Gr$G$ɒ,I<˳<˳ " ff#Cc$Dd$OggS+Ijwy_rv{xu\qqp;PBP!wc]KVlNHgnx/n#R2>¹F~i{5K܆\5%kefzyJw uuC? {պPPu:a5Z~2>7=\ޣ_c2ϗ]۽kν#G,oA|Տgv IzW^a` @jo}lV7Ųq#SAa)Cgw/Py t":ru1cl)Kx[U]^{~zPNCOaIСt8-ӻ+2M\cvvRN\5~>*|' R3)pBfvRJqZ 1EB':27╢=x(8~lM51d,*)"N(%^ ~lOO:\ h5'̀o~DB1)1 ?r{@X4ٶ<@|smm@zrG*D$n57-HQ.\ 1Ä`Qx1Ɔr94q ygw7?JxcDPn DZVMwI|V"i~$vSFN#!iU K.=Ҍm± h5V>uh{rXLZ4Xs9'cvqyfz2*!>uJ|-$1 q̯"%³wOANٱl=qEu!<=8XE|We[Tԡ8{ uJHrښf{t]Շ?܁a`@v@'ۮ3V6wQ*#TM?}a%P9T4E粊q( Ͽ @]~i߳Xrd-@{ο٪Hr%IM|;-5T*+h4s&~{u2 \ H)$$Տ 0R1O5 Sڊ, !&@scp'Q$8q~~dRڀIc{fPXVW4GC(wh2m_ѯC;J ے섮[]jÿ̺G rL '@~>W2N`/rۇx\w)@>HG_ȳgy!\6@Duc(*|OC{  K al8ts)_՟FѬvo IzS2umq0=}c ~>9.L.ӂ ƽ֓@sP fYTpt|#)p -n(2_)T8K0 ) $pF|1R:>-ᡵvz_`ފ[-?ɮ,8[dMT1n =w4dVJa"sz9ʭ $*:OSʞi[=[ vWj;5B{ޚ|דש5noJ#]Dշq{8|ҫ:q6 VT>o~L:s/'~=k|{5 M;?7׋<?{Qu.^~5׹yD@׶%TƱ %KTUmu$faGt4h9@wdN&F0\:҆o+Lۗ-f& TʕF*ë#Eʑ5nxEwzOd7Nt⦂4ۆw=qy#N/-wǦ9q+޳5z6Ȟ|靾]xu=tRsU<5,I{== ?>4"1,鼹oY8Pu"OܟվWBN%ˬɜ|r{.?J>{oIɹn=f6SIc".ԛ.\*f~% vƣ0ckTs/w٢^~6}(%L&~p 6!c B7vc{uIԒ;! '^5zoi QǺ ~_̒ ҧe$_PBՙ<+ +3 7c7m-I'G˗(O ^W 1w$&!lj=_j{fR.3eVOyUf :)ڙ"+ {]-N$ "[v^Hyг~M?zrp,5GC"H\۴0)ύce1nW/ n;BܝLaLghNdz۾yQ4ԡoWiPdU{JhS"iuWr>mcIm<9 ܱᛃ:>$Mm^މqʯ:fqVՄfzpD(:CYףjIB,{1wG]r/yciJ`@rS\yphd'PyYW|2ßh> n=D4fz$s4 ? Ё] o "ܓ7-RKv ٹ@Np3c ,fF?=_73Xsk)Lz#1 Zi[%elҷ~Q܌O_Kpt0;y%h|f8n=3پ TOD$B8ɸ$TkoC } Z>ZPJqLNT `^uƗCW`9\F{L׷:a%PyuVڽm)kqWdzo ^~[a]/\D'å".Bȩr؜Nq=.@usקTu$ @QA|p39lI❲Xm ;Ԣ|vSOggS`I^"ٛf%z΅ _:zd++۾ 9- \(@܄J b{ Fw_;-[?@.<-K^"ߒ/)"O%.y:6(*T@Ť8C\8;鶆h$3XQhe+ lt?9): cog@ dCJX.;@Eh_RR-)P_JnZ;k&`@@Ð*{YΞCx_+^e1n{cM"@\GO}[EV%g*2p9vOAz#^¢ gkW@g 05؅ x)kB t qWQ\p@r#cgfFi]~uT}8:%C|W- **> ϧl^a}}t?/n-#EhEޚӾ[|ˏH76V؃#z@8TOt @"W~ PhZ=DgR<sR`z | ԐEs $XpfR@tG}C 3I|m3}U$LߙopG&ʳP>W#e/O`OZ7h`BAENϴG`zwYwE["vfkX'epX ;3vY`-Dl漅,th۫7hP_oUc;g>'9^f>Z-Vk*ny^sx;:~}CC1Ilֱh*'܈Oҵ%M3ZPR(.F|vÉDʴh;̈闢^vc]8~B-D@V/侩zc$#b;c ֈub1jHٸp̕:s=/pu-kqM*pe N"Y \ uՎ Q ŪeYf׻~cǾ{H*˶L~p 腫NK61Ji=Eegݚ^JA>ϱJzLcZ.-ޠ1ɹcu4f~s8J *D?}zi(̓ځ($k35:dKV+֌9{'XJ^~\27]@gPoݖq>Kjۥ)'ӏ5u d-.]5j!NZQǽ"9~J[3pVDO.%~ڹ\،f]5#봿9}pN4Ɣ~Ҝ ^ Tվծn-XϯnѼq@n]_R|sPξ5S44(qI\*tDQЍNݜ`U潺+1M&@#J8v>KiC:5N?|ΤD*/އEiҮ-V͋mCoṡzms1Gډ^5vAдg`& # b^nEՓ_9xS{77OȚk051eYQq"R*>/E[s|噄,Fyk>Uoæ3xgcdGmi?'|xp{OɱcN-_ܨ_1"uBA%(b<Iuj J\ouF-<j= +@cᔉ'x>}$_n% EqYHX/* TEAM KILL PUNISHMENT SCRIPT This script automatically decreases the revive count of players that team kill JUNE 2009 - norrin ************************************************************************************************************************************* team_killer.sqf */ _killed = _this select 0; _killer = _this select 1; _ally_side_1 = NORRN_revive_array select 42; _ally_side_2 = NORRN_revive_array select 43; _ally_side_1 = call compile format ["%1", _ally_side_1]; _ally_side_2 = call compile format ["%1", _ally_side_2]; if (_killer != _killed && side _killer == _ally_side_1 || _killer != _killed && side _killer == _ally_side_2) then { _var = _killer getVariable "NORRN_teamkill_punish"; _killer setVariable ["NORRN_teamkill_punish", (_var + 1), true]; }; if (true) exitWith {};/* TRIGGER MAKING SCRIPT This script automatically creates the triggers required for the revive_player.sqf script OCTOBER 2008 - norrin ************************************************************************************************************************************* trigger_mkr.sqf */ _mission_end_function = NORRN_revive_array select 0; _Base_1 = NORRN_revive_array select 13; _Base_2 = NORRN_revive_array select 14; _Base_3 = NORRN_revive_array select 15; _Base_4 = NORRN_revive_array select 16; _Base_free_respawn = NORRN_revive_array select 36; _no_enemy_sides = NORRN_revive_array select 22; _enemy_side_1 = NORRN_revive_array select 23; _enemy_side_2 = NORRN_revive_array select 24; _mobile_spawn = NORRN_revive_array select 51; _mobile_base_start = NORRN_revive_array select 52; _Base_1_respawn = _Base_free_respawn select 0; _Base_2_respawn = _Base_free_respawn select 1; _Base_3_respawn = _Base_free_respawn select 2; _Base_4_respawn = _Base_free_respawn select 3; if (_mission_end_function == 1) then { _trig_0 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_0 setTriggerType "END6"; _trig_0 setTriggerActivation ["LOGIC", "", false]; _trig_0 setTriggerArea [1, 1, 0, false]; _trig_0 setTriggerStatements ["mission_Over", "titleText [""Mission Failed - all players are unconscious"", ""Black Faded"", 1]", ""]; _trig_0 setTriggerTimeout [15, 15, 15, false]; }; _trig_1 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_1 setTriggerType "NONE"; _trig_1 setTriggerActivation ["LOGIC", "", true]; _trig_1 setTriggerArea [1, 1, 0, false]; _trig_1 setTriggerStatements ["onConnect", "call{[] execVM ""revive_sqf\onConnect.sqf""}",""]; _trig_2 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_2 setTriggerType "NONE"; _trig_2 setTriggerActivation ["LOGIC", "", true]; _trig_2 setTriggerArea [1, 1, 0, false]; _trig_2 setTriggerStatements ["connected", "call{[] execVM ""revive_sqf\connected.sqf""}", ""]; _trig_3 = createTrigger["EmptyDetector",getArray(configFile>>"CfgWorlds">>worldName>>"centerPosition")]; _trig_3 setTriggerType "NONE"; _trig_3 setTriggerActivation ["LOGIC", "", true]; _trig_3 setTriggerArea [1, 1, 0, false]; _trig_3 setTriggerStatements ["onConnect", "call{[] execVM ""revive_sqf\respawn_counter.sqf""}", ""]; if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { if (_Base_1_respawn == 0 && _mobile_spawn == 0) then { _trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_4 setTriggerType "NONE"; _trig_4 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_4 setTriggerArea [50, 50, 0, false]; _trig_4 setTriggerStatements ["this && !no_base_1", "no_base_1 = true;publicvariable ""no_base_1""",""]; _trig_5 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_5 setTriggerType "NONE"; _trig_5 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_5 setTriggerArea [50, 50, 0, false]; _trig_5 setTriggerStatements ["this && no_base_1", "no_base_1 = false;publicvariable ""no_base_1""",""]; }; if (_Base_2_respawn == 0) then { _trig_6 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_6 setTriggerType "NONE"; _trig_6 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_6 setTriggerArea [50, 50, 0, false]; _trig_6 setTriggerStatements ["this && !no_base_2", "no_base_2 = true; publicvariable ""no_base_2""", ""]; _trig_7 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_7 setTriggerType "NONE"; _trig_7 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_7 setTriggerArea [50, 50, 0, false]; _trig_7 setTriggerStatements ["this && no_base_2", "no_base_2 = false; publicvariable ""no_base_2""", ""]; }; if (_Base_3_respawn == 0) then { _trig_8 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_8 setTriggerType "NONE"; _trig_8 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_8 setTriggerArea [50, 50, 0, false]; _trig_8 setTriggerStatements ["this && !no_base_3", "no_base_3 = true; publicvariable ""no_base_3""", ""]; _trig_9 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_9 setTriggerType "NONE"; _trig_9 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_9 setTriggerArea [50, 50, 0, false]; _trig_9 setTriggerStatements ["this && no_base_3", "no_base_3 = false; publicvariable ""no_base_3""", ""]; }; if (_Base_4_respawn == 0) then { _trig_10 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_10 setTriggerType "NONE"; _trig_10 setTriggerActivation [_enemy_side_1, "PRESENT", true]; _trig_10 setTriggerArea [50, 50, 0, false]; _trig_10 setTriggerStatements ["this && !no_base_4", "no_base_4 = true; publicvariable ""no_base_4""", ""]; _trig_11 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_11 setTriggerType "NONE"; _trig_11 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; _trig_11 setTriggerArea [50, 50, 0, false]; _trig_11 setTriggerStatements ["this && no_base_4", "no_base_4 = false; publicvariable ""no_base_4""", ""]; }; }; If (_no_enemy_sides == 2) then { if (_Base_1_respawn == 0 && _mobile_spawn == 0) then { _trig_12 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_12 setTriggerType "NONE"; _trig_12 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_12 setTriggerArea [50, 50, 0, false]; _trig_12 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicvariable ""no_base_1b""", ""]; _trig_13 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; _trig_13 setTriggerType "NONE"; _trig_13 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_13 setTriggerArea [50, 50, 0, false]; _trig_13 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicvariable ""no_base_1b""", ""]; }; if (_Base_2_respawn == 0) then { _trig_14 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_14 setTriggerType "NONE"; _trig_14 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_14 setTriggerArea [50, 50, 0, false]; _trig_14 setTriggerStatements ["this && !no_base_2b", "no_base_2b = true; publicvariable ""no_base_2b""", ""]; _trig_15 = createTrigger["EmptyDetector", getMarkerPos _Base_2]; _trig_15 setTriggerType "NONE"; _trig_15 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_15 setTriggerArea [50, 50, 0, false]; _trig_15 setTriggerStatements ["this && no_base_2b", "no_base_2b = false; publicvariable ""no_base_2b""", ""]; }; if (_Base_3_respawn == 0) then { _trig_16 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_16 setTriggerType "NONE"; _trig_16 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_16 setTriggerArea [50, 50, 0, false]; _trig_16 setTriggerStatements ["this && !no_base_3b", "no_base_3b = true; publicvariable ""no_base_3b""", ""]; _trig_17 = createTrigger["EmptyDetector", getMarkerPos _Base_3]; _trig_17 setTriggerType "NONE"; _trig_17 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_17 setTriggerArea [50, 50, 0, false]; _trig_17 setTriggerStatements ["this && no_base_3b", "no_base_3b = false; publicvariable ""no_base_3b""", ""]; }; if (_Base_4_respawn == 0) then { _trig_18 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_18 setTriggerType "NONE"; _trig_18 setTriggerActivation [_enemy_side_2, "PRESENT", true]; _trig_18 setTriggerArea [50, 50, 0, false]; _trig_18 setTriggerStatements ["this && !no_base_4b", "no_base_4b = true; publicvariable ""no_base_4b""", ""]; _trig_19 = createTrigger["EmptyDetector", getMarkerPos _Base_4]; _trig_19 setTriggerType "NONE"; _trig_19 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; _trig_19 setTriggerArea [50, 50, 0, false]; _trig_19 setTriggerStatements ["this && no_base_4b", "no_base_4b = false; publicvariable ""no_base_4b""", ""]; }; }; sleep 5; //create mobile spawn triggers if msp deployed if (_Base_1_respawn == 0 && _mobile_spawn == 1 && ((getMarkerPos _Base_1) distance (getMarkerPos _mobile_base_start) > 20)) then { if (_no_enemy_sides == 1 || _no_enemy_sides == 2) then { r_ms_trig_1 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_1 setTriggerType "NONE"; r_ms_trig_1 setTriggerActivation [_enemy_side_1, "PRESENT", true]; r_ms_trig_1 setTriggerArea [50, 50, 0, false]; r_ms_trig_1 setTriggerStatements ["this && !no_base_1", "no_base_1 = true; publicVariable 'no_base_1'",""]; r_ms_trig_2 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_2 setTriggerType "NONE"; r_ms_trig_2 setTriggerActivation [_enemy_side_1, "NOT PRESENT", true]; r_ms_trig_2 setTriggerArea [50, 50, 0, false]; r_ms_trig_2 setTriggerStatements ["this && no_base_1", "no_base_1 = false; publicVariable 'no_base_1'",""]; }; if (_no_enemy_sides == 2) then { r_ms_trig_3 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_3 setTriggerType "NONE"; r_ms_trig_3 setTriggerActivation [_enemy_side_2, "PRESENT", true]; r_ms_trig_3 setTriggerArea [50, 50, 0, false]; r_ms_trig_3 setTriggerStatements ["this && !no_base_1b", "no_base_1b = true; publicVariable 'no_base_1b'", ""]; r_ms_trig_4 = createTrigger["EmptyDetector", getMarkerPos _Base_1]; r_ms_trig_4 setTriggerType "NONE"; r_ms_trig_4 setTriggerActivation [_enemy_side_2, "NOT PRESENT", true]; r_ms_trig_4 setTriggerArea [50, 50, 0, false]; r_ms_trig_4 setTriggerStatements ["this && no_base_1b", "no_base_1b = false; publicVariable 'no_base_1b'", ""]; }; }; if (true) exitWith {}; /* SHK_moveObjects Author: Shuko (miika.jarvinen@pp3.inet.fi, shuko@quakenet) Version 0.2 Moves set of objects from A to B, retaining the direction and distance from a point of reference. Parameters: 0: Object or Position Anchor, point of origin. 1: Object or Position Center position to which objects are move around. 2: Number Range in meters to search for objects. 3: Array or String Optional. Type of objects to search for. Examples: nul = [gl1,gl2,50] execvm "shk_moveobjects.sqf" nul = [start,destination,100,"Man"] execvm "shk_moveobjects.sqf" nul = [[3243,5234,0],gl2,50,["Man","Car"]] execvm "shk_moveobjects.sqf" */ private ["_range","_objects","_aPos","_dPos","_xPos","_dir","_dst","_types"]; _aPos = _this select 0; _dPos = _this select 1; _range = _this select 2; _types = if (count _this > 3) then {_this select 3} else {[]}; if (typename _aPos == typename objNull) then {_aPos = getpos _aPos}; if (typename _dPos == typename objNull) then {_dPos = getpos _dPos}; if (typename _types == typename "") then {_types = [_types]}; _objects = nearestobjects [_aPos,_types,_range]; { _xPos = getpos _x; _dir = ((_xPos select 0) - (_aPos select 0)) atan2 ((_xPos select 1) - (_aPos select 1)); _dst = _aPos distance _xPos; _x setpos [((_dPos select 0) + (_dst * sin _dir)), ((_dPos select 1) + (_dst * cos _dir)), 0]; } foreach _objects; Attack helicopters are in route.Kampfhubschrauber sind auf dem Weg hierher.Штурмовые вертолеты на курсе.Les hélicoptères d'attaque sont en route! The flight of helicopters have returned.Die Hubschrauber sind zurückgekehrt.Штурмовые вертолеты возвращаются.Les hélicoptères sont sur le retour. The flight of helocopters have been shot down!Die Hubschrauber wurden abgeschossen!Вертолет был сбит!Les hélicoptères ont été abattus! A sortie with a JDAM in payload is in flight.Ein Hubschrauber aus der Rotte führt eine JDAM mit.Самолет с JDAM на курсе.Un chasseur avec une bombe guidée est en route. A sortie with two LGB in payload is in flight.Ein Hubschrauber aus der Rotte führt zwei LGB´s mit.Самолет с КАБ на курсе.Un chasseur avec deux bombes LGB en route. A sortie with a CBU Anti-Personnel in payload is in flight.Ein Hubschrauber aus der Rotte führt auch eine CBU mit Anti-Personen Minen mit.Самолет с противотанковыми кассетными боеприпасами на курсе.Un chasseur armé d'une bombe à fragmentation anti-personnels est en route. A sortie with a CBU Anti-Tank in payload is in flight.Ein Hubschrauber aus der Rotte führt auch eine CBU mit Anti-Panzer Minen mit.Самолет с кассетными боеприпасами на курсе.Un chasseur armé d'une bombe à fragmentation anti-chars est en route. The sortie has RTB'D.Die Rotte ist zur Basis zurückgekehrt.Самолет возвращается на базу.Retour à la base du chasseur. The sortie was shot down.Die Rotte wurde abgeschossen!Самолет был сбит!Chasseur abattu! Select (left click) the airstrike location on map.Klicke auf die Map um die Position für den Luftangriff zu bestimmen.Выберите координаты для удара на карте.Sélectionner le nouveau lieu d'appui aérien sur la carte. Air SupportLuft-UnterstützungАвиационная поддержкаAppui aérien Call Fixed-WingFlugzeug rufenВызвать самолетAppel d'un chasseur Call HelicoptersHubschrauber rufenВызвать вертолетыAppel d'hélicoptères Exit MenuMenu beendenВыйти в менюSortir du menu You can't call on this asset anymore.Du kannst Dir keine Unterstützung aus diesem Arsenal mehr rufen.Вы не можете вызывать больше.Vous ne pouvez faire appel à cet appui plus. A sortie with a CBU Mine Dispenser in payload is in flight.Ein Hubschrauber aus der Rotte führt auch einen CBU Minenwerfer mit.Самолет с кассетной нагрузкой в пути.Un chasseur armé d'une bombe à fragmentation contenant des mines est en route. A sortie to provide close air support is in flight.Ein Hubschrauber aus der Rotte dient zur Luft unterstützung.Непосредственная поддержка в пути.Un chasseur est en route pour fournir un soutien aérien rapproché. Indicate (left click) the pickup LZ on map.Klicke auf die Map um den Wiederaufnahmepunkt zu markieren.Укажите точку встречи на карте (ЛКМ).Indiquez sur la carte (Click gauche) le lieu d'évacuation. Indicate (left click) the drop-off LZ on the map.Klicke auf die Map um den Abwurfpunkt zu markieren.Укажите точку выброса на карте (ЛКМ).Indiquez sur la carte (Click gauche) le site d'insertion. Transport helicopter is in route.Transporthubschrauber ist auf dem Weg.Транспортный вертолет в пути.Hélicoptère de transport en route. AttackAngriffУдарAttaque TransportTransportТранспортTransport Good to go pilot!Du kannst losfliegen!Ожидаю на точкеEquipe à bord, prête pour le décollage. /* Ultra Simple Patrol Script v1.4 by JW Custom Put the below line in a units init field, if your working with a group you only need to put it in the leaders init field. ------------------------------------------------------------------------------------------------------------ nul = [this, 500, "patrolMarker", "patrolMarker", 500, "AWARE", 100, "LIMITED", "FILE", 0, 0] execVM "USPS.sqf"; ------------------------------------------------------------------------------------------------------------ argument 0: The unit/group leader we are dealing with argument 1: The radius size where to randomly place the unit/group within argument 2: The marker representing the radius center of where unit/group will be randomly placed within argument 3: The marker representing the center of the unit/group patrol argument 4: The radius size where unit/group will patrol within argument 5: The behaviour of the unit/group argument 6: Chance of unit/group existing in percentage. If set to 100 the unit/group will always exist. argument 7: Movement speed of the unit/group. argument 8: Group formation. argument 9: Wait time in seconds before moving on to next waypoint. Set to 0 and theres no wait time. argument 10: Altitude of unit/group. Unless unit/group are a air vehicle this should be set to 0. For more detailed info read readme.rtf */ if (!isServer) exitWith {}; private ["_wp","_ranPos","_patrolMarker","_patrolRadius","_grp","_iniPos","_oldPos","_newPos","_grp","_spawnRadius","_unit","_spawnMarker","_unitBehaviour","_existChance","_unitSpeed","_unitFormation","_numGrp","_flyInHeight"]; _unit = _this select 0; _spawnRadius = _this select 1; _spawnMarker = _this select 2; _patrolMarker = _this select 3; _patrolRadius = _this select 4; _unitBehaviour = _this select 5; _existChance = _this select 6; _unitSpeed = _this select 7; _unitFormation = _this select 8; _unitWaittime = _this select 9; _flyInHeight = _this select 10; _unit flyInHeight _flyInHeight; _grp = group _unit; _chance = ceil(random 100); if (_chance > _existChance) then { {deleteVehicle vehicle _x; deleteVehicle _x; sleep 0.1;} forEach units _grp; }; _wp = _grp addWaypoint [getMarkerPos _patrolMarker, 1]; _wp setWaypointBehaviour _unitBehaviour; _wp setWaypointSpeed _unitSpeed; _wp setWaypointFormation _unitFormation; _wp setWaypointType "MOVE"; _wp setWaypointCombatMode "RED"; [_grp, 1] setWaypointPosition [getMarkerPos _spawnMarker, _spawnRadius]; _iniPos = getWPPos [_grp,1]; if (_unit isKindOf "Man") then { {_x setpos _iniPos;} forEach units group _unit; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; sleep 2; while {{alive _x} count units _grp > 0} do { waitUntil{ ((getPos leader _grp) distance (getWPPos [_grp,1]) < 5) }; sleep _unitWaittime; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; }; }; if(_unit isKindOf "Air") then { {vehicle _x setpos [(_iniPos select 0) + random 50, (_iniPos select 1) + random 50, _flyInHeight];} forEach units group _unit; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; sleep 2; while {{alive _x} count units _grp > 0} do { waitUntil{ ((getPos leader _grp) distance (getWPPos [_grp,1]) < (_flyInHeight * 3) - _flyInHeight) }; sleep _unitWaittime; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; }; }; if(_unit isKindOf "LandVehicle") then { {vehicle _x setpos [(_iniPos select 0) + random 25, (_iniPos select 1) + random 25, 0];} forEach units group _unit; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; sleep 2; while {{alive _x} count units _grp > 0} do { waitUntil{ ((getPos leader _grp) distance (getWPPos [_grp,1]) < 20) }; sleep _unitWaittime; [_grp, 1] setWaypointPosition [getMarkerPos _patrolMarker, _patrolRadius]; }; }; /* ========================================================= Simple Vehicle Respawn Script v1.7 by Tophe of stgta Ops [OOPS] Put this in the vehicles init line: veh = [this] execVM "vehicle.sqf" Options: There are some optional settings. The format for these are: veh = [this, Delay, Deserted timer, Respawns, Effect, Static] execVM "vehicle.sqf" Default respawn delay is 30 seconds, to set a custom respawn delay time, put that in the init as well. Like this: veh = [this, 15] execVM "vehicle.sqf" Default respawn time when vehicle is deserted, but not destroyed is 120 seconds. To set a custom timer for this first put the respawn delay, then the deserted vehicle timer. (0 = disabled) Like this: veh = [this, 15, 10] execVM "vehicle.sqf" By default the number of respawns is infinite. To set a limit First set the other values then the number of respawns you want (0 = infinite). Like this: veh = [this, 15, 10, 5] execVM "vehicle.sqf" Set this value to TRUE to add a special explosion effect to the wreck when respawning. Default value is FALSE, which will simply have the wreck disappear. Like this: veh = [this, 15, 10, 5, TRUE] execVM "vehicle.sqf" By default the vehicle will respawn to the point where it first was when the mission started (static). This can be changed to dynamic. Then the vehicle will respawn to the position where it was destroyed. First set all the other values then set TRUE for dynamic or FALSE for static. Like this: veh = [this, 15, 10, 5, TRUE, TRUE] execVM "vehicle.sqf" If you you want to set the INIT field of the respawned vehicle, first set all other values, then set init commands. Those must be inside quotations. Like this: veh = [this, 15, 10, 5, TRUE, FALSE, "this setDammage 0.5"] execVM "vehicle.sqf" Default values of all settings are: veh = [this, 30, 120, 0, FALSE, FALSE] execVM "vehicle.sqf" Contact & Bugreport: harlechin@hotmail.com ========================================================= */ if (!isServer) exitWith {}; // Define variables _unit = _this select 0; _delay = if (count _this > 1) then {_this select 1} else {30}; _deserted = if (count _this > 2) then {_this select 2} else {120}; _respawns = if (count _this > 3) then {_this select 3} else {0}; _explode = if (count _this > 4) then {_this select 4} else {false}; _dynamic = if (count _this > 5) then {_this select 5} else {false}; _unitinit = if (count _this > 6) then {_this select 6} else {}; _haveinit = if (count _this > 6) then {true} else {false}; _hasname = false; _unitname = vehicleVarName _unit; if (isNil _unitname) then {_hasname = false;} else {_hasname = true;}; _noend = true; _run = true; _rounds = 0; if (_delay < 0) then {_delay = 0}; if (_deserted < 0) then {_deserted = 0}; if (_respawns <= 0) then {_respawns= 0; _noend = true;}; if (_respawns > 0) then {_noend = false}; _dir = getDir _unit; _position = getPosASL _unit; _type = typeOf _unit; _dead = false; _nodelay = false; // Start monitoring the vehicle while {_run} do { sleep (2 + random 10); if ((getDammage _unit > 0.8) and ({alive _x} count crew _unit == 0)) then {_dead = true}; // Check if the vehicle is deserted. if (_deserted > 0) then { if ((getPosASL _unit distance _position > 10) and ({alive _x} count crew _unit == 0) and (getDammage _unit < 0.8)) then { _timeout = time + _deserted; sleep 0.1; waitUntil {_timeout < time or !alive _unit or {alive _x} count crew _unit > 0}; if ({alive _x} count crew _unit > 0) then {_dead = false}; if ({alive _x} count crew _unit == 0) then {_dead = true; _nodelay =true}; if !(alive _unit) then {_dead = true; _nodelay = false}; }; }; // Respawn vehicle if (_dead) then { if (_nodelay) then {sleep 0.1; _nodelay = false;} else {sleep _delay;}; if (_dynamic) then {_position = getPosASL _unit; _dir = getDir _unit;}; if (_explode) then {_effect = "M_TOW_AT" createVehicle getPosASL _unit; _effect setPosASL getPosASL _unit;}; sleep 0.1; deleteVehicle _unit; sleep 2; _unit = _type createVehicle _position; _unit setPosASL _position; _unit setDir _dir; if (_haveinit) then {_unit setVehicleInit format ["%1;", _unitinit]; processInitCommands;}; if (_hasname) then {_unit setVehicleInit format ["%1 = this; this setVehicleVarName ""%1""",_unitname]; processInitCommands;}; _dead = false; // Check respawn amount if !(_noend) then {_rounds = _rounds + 1}; if ((_rounds == _respawns) and !(_noend)) then {_run = false;}; }; };;Universal Weapons Respawn Script v1.04 (March 31, 2003) revised (February 1, 2007) ;Required Version: ArmA ;original by toadlife revised by norrin for ArmA ;toadlife@toadlife.net ;intialize like this: ["unitname",0] exec "weapons_respawn.sqs" ; Or this: ["unitname",1] exec "weapons_respawn.sqs" ; ; * "unitname" = The name of the player the script runs on (must be enclosed by quotes!) ; * 0/1 = method of repleneshing weapons ; **if method is 0, the player gets the same weapons he started out with every time ; **if method is 1, the player gets the same weapons he had when he died ; ; Advanced example method of initializing script - put the following lines in your init.sqs, ; and replce the unit names with your own: ;_units = ["w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18"] ;{[_x,0] exec "weapons_respawn.sqs"} foreach _units ; ; ~(random 0.3) _name = _this select 0 _method = _this select 1 _hasrifle = false _unit = call compile format["%1",_name] ?(_method == 0):_return = "checklocal";goto "guncheck" #checklocal _unit = call compile format["%1",_name] ?(local _unit):goto "respawnloop" ~(1 + (random 3)) goto "checklocal" #respawnloop @!alive _unit #checkmethod ?(_method == 1):_return = "waitforlife";goto "guncheck" #waitforlife @alive call compile format["%1",_name] _unit = call compile format["%1",_name] removeAllWeapons _unit ?_hasrifle:_guns = _guns - [_prigun];_guncount = count _guns _c = 0 while {_c <= (_magcount - 1)} do {_unit addmagazine (_mags select _c); _c = _c + 1} _c = 0 while {_c <= (_guncount - 1)} do {_unit addweapon (_guns select _c); _c = _c + 1} ?_hasrifle:_unit addweapon _prigun;_gun = _guns + [_prigun] ;//If unit has a rifle select it ?_hasrifle:goto "selectrifle" ;//No rifle - if unit has a pistol, select it ?_unit hasweapon ((weapons _unit - [secondaryweapon _unit,"Binocular","NVGoggles"]) select 0):_unit selectweapon ((weapons _unit - [secondaryweapon _unit,"Binocular","NVGoggles"]) select 0);goto "respawnloop" ;//No rifle or pistol, select secondary weapon _unit selectweapon secondaryweapon _unit goto "respawnloop" #selectrifle ;// BUG WORKAROUND! - Added to compensate for selectweapon bug ;// Any gun with more than one muzzle (grenadelaunchers) cannot be selected with selectweapon! ;// Default Grenadelaunchers supported - Add your own types if you need to. _unit selectweapon _prigun ?_prigun == "M16A2GL":_unit selectweapon "M16Muzzle" ?_prigun == "M16A4GL":_unit selectweapon "M16Muzzle" ?_prigun == "M16A4_ACG_GL":_unit selectweapon "M16Muzzle" ?_prigun == "M4GL":_unit selectweapon "M4Muzzle" ?_prigun == "M4A1GL":_unit selectweapon "M4Muzzle" ?_prigun == "AK74GL":_unit selectweapon "AK74Muzzle" goto "respawnloop" #guncheck _guns = weapons _unit _mags = magazines _unit ~(random 0.5) _guncount = count _guns _magcount = count _mags ?_unit hasweapon (primaryweapon _unit):_hasrifle = true;_prigun = primaryweapon _unit;goto _return _hasrifle = false goto _returny1BgpÏ