sreVammo.sqf}Qbriefing.html}Qbriefing.sqf}Qdescription.ext}Qinit.sqf}Qbinitjipcompatible.sqf}QPmission.sqm}Qoverview.html}Qoverview.paa}Q^phantom.jpg}Qscripts\Init_UPSMON.sqf}QvUscripts\UPSMON\actions\followme.sqf}Q scripts\UPSMON\common\MON_functions.sqf}Qscripts\UPSMON\MON_artillery_add.sqf}Q scripts\UPSMON\MON_spawn.sqf}Qscripts\UPSMON\MON_surrended.sqf}Q,scripts\UPSMON.sqf}Qm@Thumbs.db}Q// Rifles _this addWeaponCargo ["SVD", 1]; _this addWeaponCargo ["Huntingrifle", 1]; _this addWeaponCargo ["AK_47_M", 2]; _this addWeaponCargo ["RPG7V", 2]; _this addWeaponCargo ["ACE_APS", 2]; _this addWeaponCargo ["ACE_TT", 2]; _this addWeaponCargo ["ACE_SKS", 1]; _this addWeaponCargo ["ACE_AKM", 2]; _this addWeaponCargo ["ACE_AKMS", 2]; _this addWeaponCargo ["ACE_AKMS_SD", 1]; ///////////////////////////////////////////////////// // AMMO ///////////////////////////////////////////////////// // Rifle ammo _this addMagazineCargo ["10Rnd_762x54_SVD", 10]; _this addMagazineCargo ["30Rnd_762x39_AK47", 50]; _this addMagazineCargo ["5x_22_LR_17_HMR", 20]; _this addMagazineCargo ["8Rnd_9x18_Makarov", 20]; // Grenades & Satchels _this addMagazineCargo ["HandGrenade_East", 20]; _this addMagazineCargo ["SmokeShell", 10]; _this addMagazineCargo ["PG7V", 15]; _this addMagazineCargo ["PG7VL", 8]; _this addMagazineCargo ["Pipebomb", 10]; _this addMagazineCargo ["MineE", 10]; _this addMagazineCargo ["ACE_Bandage", 20]; _this addMagazineCargo ["ACE_Bodybag", 20]; _this addMagazineCargo ["ACE_Epinephrine", 20]; _this addMagazineCargo ["ACE_IV", 20]; _this addMagazineCargo ["ACE_LargeBandage", 20]; _this addMagazineCargo ["ACE_Medkit", 20]; _this addMagazineCargo ["ACE_Morphine", 20]; _this addMagazineCargo ["ACE_Plasma", 20]; _this addMagazineCargo ["ACE_Splint", 20]; _this addMagazineCargo ["ACE_Tourniquet", 20]; _this addMagazineCargo ["ACE_CLAYMORE_M", 10]; _this addMagazineCargo ["ACE_8Rnd_762x25_B_Tokarev", 20]; _this addMagazineCargo ["ACE_20Rnd_9x18_APS", 20]; _this addMagazineCargo ["ACE_10Rnd_762x39_B_SKS", 10]; _this addMagazineCargo ["ACE_30Rnd_762x39_SD_AK47", 10]; _this addMagazineCargo ["ACE_30Rnd_762x39_AP_AK47", 50]; Debriefing

Endmission cheat is for weaklings.


Cheaters fail at life.





Mission Accomplished


You have successfully defended Vyshnoye and aided in the liberation of Stary Sobor and Novy Sobor. Mission accomplished.





Mission Failed


You and your partner has been elminated. Mission Failed.


p1 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p1 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p1 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p1 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You will be stationed in Vyshnoye Castle to provide sniper fires and AT fires against Chedaki armor and infantries. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Provide sniper support for the the defenders then later provide sniper support for the attackers. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p1 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are two of the choosen higher rank NAPA fighters skilled in marksmanship with AT weaponry and rifles. You will be stationed in Vyshnoye Castle to provide cover fire for the defenders of Vyshnoye. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1a = p1 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1a setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1a setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2a = p1 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2a setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2a setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3a = p1 createSimpleTask ["Defend Vyshnoye"]; tskobj_3a setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3a setSimpleTaskDestination (getMarkerPos "defend"); p2 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p2 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p2 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p2 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You will be stationed in Vyshnoye Castle to provide sniper fires and AT fires against Chedaki armor and infantries. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Provide sniper support for the the defenders then later provide sniper support for the attackers. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p2 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are two of the choosen higher rank NAPA fighters skilled in marksmanship with AT weaponry and rifles. You will be stationed in Vyshnoye Castle to provide cover fire for the defenders of Vyshnoye. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1b = p2 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1b setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1b setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2b = p2 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2b setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2b setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3b = p2 createSimpleTask ["Defend Vyshnoye"]; tskobj_3b setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3b setSimpleTaskDestination (getMarkerPos "defend"); p3 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p3 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p3 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p3 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p3 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1c = p3 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1c setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1c setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2c = p3 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2c setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2c setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3c = p3 createSimpleTask ["Defend Vyshnoye"]; tskobj_3c setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3c setSimpleTaskDestination (getMarkerPos "defend"); p4 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p4 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p4 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p4 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p4 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1d = p4 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1d setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1d setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2d = p4 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2d setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2d setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3d = p4 createSimpleTask ["Defend Vyshnoye"]; tskobj_3d setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3d setSimpleTaskDestination (getMarkerPos "defend"); p5 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p5 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p5 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p5 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p5 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1e = p5 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1e setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1e setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2e = p5 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2e setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2e setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3e = p5 createSimpleTask ["Defend Vyshnoye"]; tskobj_3e setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3e setSimpleTaskDestination (getMarkerPos "defend"); p6 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p6 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p6 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p6 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p6 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1f = p6 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1f setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1f setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2f = p6 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2f setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2f setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3f = p6 createSimpleTask ["Defend Vyshnoye"]; tskobj_3f setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3f setSimpleTaskDestination (getMarkerPos "defend"); p7 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p7 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p7 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p7 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p7 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1g = p7 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1g setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1g setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2g = p7 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2g setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2g setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3g = p7 createSimpleTask ["Defend Vyshnoye"]; tskobj_3g setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3g setSimpleTaskDestination (getMarkerPos "defend"); p8 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p8 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p8 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p8 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p8 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1h = p8 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1h setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1h setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2h = p8 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2h setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2h setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3h = p8 createSimpleTask ["Defend Vyshnoye"]; tskobj_3h setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3h setSimpleTaskDestination (getMarkerPos "defend"); p9 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p9 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p9 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p9 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p9 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1i = p9 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1i setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1i setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2i = p9 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2i setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2i setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3i = p9 createSimpleTask ["Defend Vyshnoye"]; tskobj_3i setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3i setSimpleTaskDestination (getMarkerPos "defend"); p10 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p10 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p10 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p10 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p10 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1j = p10 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1j setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1j setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2j = p10 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2j setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2j setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3j = p10 createSimpleTask ["Defend Vyshnoye"]; tskobj_3j setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3j setSimpleTaskDestination (getMarkerPos "defend"); p11 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p11 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p11 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p11 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p11 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1k = p11 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1k setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1k setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2k = p11 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2k setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2k setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3k = p11 createSimpleTask ["Defend Vyshnoye"]; tskobj_3k setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3k setSimpleTaskDestination (getMarkerPos "defend"); p12 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p12 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p12 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p12 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p12 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1l = p12 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1l setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1l setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2l = p12 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2l setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2l setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3l = p12 createSimpleTask ["Defend Vyshnoye"]; tskobj_3l setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3l setSimpleTaskDestination (getMarkerPos "defend"); p13 createDiaryRecord ["Diary", ["Credits", "Mission by Phantom Six. UPSMON created by Monsada."]]; p13 createDiaryRecord ["Diary", ["Hints", "Target AT gunners, machinegunners, or any high valued targets first. They are more of a threat to the defenders. Before triggering the IED, wait until most of the higher threat vehicles go onto the IED first. Orange tree by the crossroad marks the IED. NAPA reinforcements will arrive after you defend Vyshnoye. They will wait for your command before attacking. Radio them in when you're ready."]]; p13 createDiaryRecord ["Diary", ["Enemies", "The Northern Assault consist of platoons of infantry. The Western Assault consist of motorized infantry (4 technicals and 3 trucks). The Eastern Assault consist of heavy armored and mechanized vehicles (3 T72s, 2 BRDMs, 1 BMP, 1 Tunguska). The infantry division may contain an elite sniper team, be careful."]]; p13 createDiaryRecord ["Diary", ["Situation", "NAPA's checkpoint Vyshnoye will soon be overrun by Chedakis advances. Vyshnoye is the checkpoint for NAPA reinforcement and must be held in order for NAPA to push back against the Chedaki forces. You are the main group in charge of defending Vyshnoye. The snipers in Vyshnoye Castle will be helping out in keeping the enemies pinned down.. The Chedaki forces will be outnumbering the NAPA defenders of Vyshnoye in size and strength. The NAPA forces will only have morale to fight if any of the Vyshnoye defenders stays alive including yourself.. After crushing the Chedaki advances, you will be regrouping with NAPA advances to liberate Stary and Novy Sobor. Hold the line and protect Vyshnoye at all cost. If Vyshnoye were to fall, all hope in defeating the Chedakis tomorrow shall be lost."]]; p13 createDiaryRecord ["Diary", ["Background", "Vyshnoye will be the checkpoint zone for NAPA reinforcements. Unfortunately, the checkpoint here at the moment don't have too much RPG launchers or AT weapons, however, they have some spare rockets. Guerilla defenders mainly consisting of militias and a few NAPA fighters will be defending Vyshnoye for their lives. Enemies will be swarming Vyshnoye to capture it from the North, West, and East. You are one of the 11 men of the more experienced NAPA fighters who will be holding off inside Vyshnoye. You will hold your ground against the assault against Vyshnoye at all cost. Stary and Novy Sobor are also occupied by Chedaki forces as well and Chedakis shall be supplying from there. After their assault is defeated, NAPA reinforcements will raid Stary and Novy Sobor and liberate it."]]; tskobj_1m = p13 createSimpleTask ["Liberate Novy Sobor"]; tskobj_1m setSimpleTaskDescription ["Free Novy Sobor from Chedaki occupants", "Liberate Novy Sobor", "Novy Sobor"]; tskobj_1m setSimpleTaskDestination (getMarkerPos "novy"); tskobj_2m = p13 createSimpleTask ["Liberate Stary Sobor"]; tskobj_2m setSimpleTaskDescription ["Free Stary Sobor from Chedaki occupants", "Liberate Stary Sobor", "Stary Sobor"]; tskobj_2m setSimpleTaskDestination (getMarkerPos "stary"); tskobj_3m = p13 createSimpleTask ["Defend Vyshnoye"]; tskobj_3m setSimpleTaskDescription ["Defend Vyshnoye from Chedaki invaders.", "Defend Vyshnoye", "Vyshnoye"]; tskobj_3m setSimpleTaskDestination (getMarkerPos "defend");onLoadMission = "Vyshie Cover Fire"; onLoadMissionTime = False; loadScreen = "phantom.jpg"; class Header { gameType = Coop; minPlayers = 1; maxPlayers = 13; playerCountMultipleOf =1; }; respawn = "GROUP"; respawnDelay = 5; class Params { class Difficulty { title = "Difficulty:"; values[] = {0,1}; texts[] = {"Cadet","Veteran"}; default = 1; }; };ammobox setPosATL [6553.35,5596.21,11.9536];ammobox setDir 180; p1 setPosATL [6554.17,5601.33,11.5929];p1 setDir 180; p2 setPosATL [6552.03,5601.37,11.7499];p2 setDir 180; "area0" setMarkerAlpha 0; "area1" setMarkerAlpha 0; "area2" setMarkerAlpha 0; if ((!isServer) && (player != player)) then { waitUntil {player == player}; }; //Init UPSMON scritp (must be run on all clients) call compile preprocessFileLineNumbers "scripts\Init_UPSMON.sqf"; //Process statements stored using setVehicleInit processInitCommands; //Finish world initialization before mission is launched. finishMissionInit; // --- Info text waitUntil{!(isNil "BIS_fnc_init")}; sleep 15; ["Feburary 23, 2010", "7:30 AM"] call BIS_fnc_infoText; sleep 3; ["Vyshie", "Coverfire"] call BIS_fnc_infoText; sleep 3; ["Created by", "Phantom Six"] call BIS_fnc_infoText;//OMG don't delete me!!! call compile preProcessFileLineNumbers "briefing.sqf";version=11; class Mission { addOns[]= { "cacharacters2", "chernarus", "caweapons_ammoboxes", "ca_modules_functions", "caweapons", "camisc3", "CAWheeled_Offroad", "CAWheeled", "CAWheeled_Pickup", "CATracked", "ace_main", "ace_sys_wounds" }; addOnsAuto[]= { "cacharacters2", "ca_modules_functions", "caweapons", "CAWheeled_Offroad", "CAWheeled", "CAWheeled_Pickup", "CATracked", "ace_main", "ace_sys_wounds", "caweapons_ammoboxes", "camisc3", "chernarus" }; randomSeed=4467888; class Intel { briefingName="ACE CO 13 Vyshie Coverfire"; briefingDescription="Defend Vysnoye then proceed to assist the resistant fighters in liberating Stary and Novy Sobor."; startWeather=0.25; forecastWeather=0.25; year=2010; month=2; day=23; }; class Groups { items=60; class Item0 { side="GUER"; class Vehicles { items=2; class Item0 { position[]={6541.9565,392.36942,5597.624}; azimut=180; special="NONE"; id=0; side="GUER"; vehicle="GUE_Soldier_Sniper"; player="PLAYER COMMANDER"; leader=1; rank="LIEUTENANT"; skill=1; text="p1"; init="this addMagazine ""10Rnd_762x54_SVD""; this addMagazine ""10Rnd_762x54_SVD""; this addWeapon ""Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov"";this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Sniper/Hunter/RPG Sharpshooter"; }; class Item1 { position[]={6544.9302,393.10721,5597.6982}; azimut=180; special="NONE"; id=1; side="GUER"; vehicle="GUE_Soldier_Scout"; player="PLAY CDG"; rank="SERGEANT"; skill=1; text="p2"; init="removeallWeapons this; this addWeapon ""Binocular""; this addWeapon ""AK_47_S""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""SmokeShell""; this addMagazine ""SmokeShell""; this addMagazine ""SmokeShell""; this addMagazine ""HandGrenade_East""; this addMagazine ""HandGrenade_East""; this addMagazine ""HandGrenade_East""; this addWeapon ""Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov""; this addMagazine ""8Rnd_9x18_Makarov"";this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Spotter/Scout/Ammo Bearer"; }; }; }; class Item1 { side="GUER"; class Vehicles { items=11; class Item0 { position[]={6435.2217,322.05838,6200.4746}; azimut=110.142; special="NONE"; id=3; side="GUER"; vehicle="GUE_Commander"; player="PLAY CDG"; leader=1; rank="MAJOR"; skill=1; text="p3"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Leader"; }; class Item1 { position[]={6435.7446,322.1879,6204.4858}; azimut=110.142; special="NONE"; id=4; side="GUER"; vehicle="GUE_Soldier_GL"; player="PLAY CDG"; rank="LIEUTENANT"; skill=1; text="p4"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Grenadier"; }; class Item2 { position[]={6435.3472,322.14117,6203.646}; azimut=110.142; special="NONE"; id=5; side="GUER"; vehicle="GUE_Soldier_MG"; player="PLAY CDG"; rank="SERGEANT"; skill=1; text="p5"; init="this addWeapon ""ACE_Earplugs"";"; description="Defender Machinegunner"; }; class Item3 { position[]={6434.9165,322.0947,6202.8403}; azimut=110.142; special="NONE"; id=6; side="GUER"; vehicle="GUE_Soldier_MG"; player="PLAY CDG"; rank="SERGEANT"; skill=1; text="p6"; init="this addWeapon ""ACE_Earplugs"";"; description="Defender Machinegunner"; }; class Item4 { position[]={6434.6318,322.07065,6201.9937}; azimut=110.142; special="NONE"; id=7; side="GUER"; vehicle="GUE_Soldier_AR"; player="PLAY CDG"; rank="CORPORAL"; skill=0.7607286; text="p7"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Automatic Rifleman"; }; class Item5 { position[]={6434.313,322.05743,6201.0718}; azimut=110.142; special="NONE"; id=8; side="GUER"; vehicle="GUE_Soldier_AR"; player="PLAY CDG"; rank="CORPORAL"; skill=0.69088632; text="p8"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Automatic Rifleman"; }; class Item6 { position[]={6433.8853,322.04288,6200.1328}; azimut=110.142; special="NONE"; id=9; side="GUER"; vehicle="GUE_Soldier_AT"; player="PLAY CDG"; rank="CORPORAL"; skill=0.62880313; text="p9"; init="this addWeapon ""ACE_Earplugs"";"; description="Defender AT Rifleman"; }; class Item7 { position[]={6433.5298,322.03156,6199.4302}; azimut=110.142; special="NONE"; id=10; side="GUER"; vehicle="GUE_Soldier_AT"; player="PLAY CDG"; rank="CORPORAL"; skill=0.62880313; text="p10"; init="this addWeapon ""ACE_Earplugs"";"; description="Defender AT Rifleman"; }; class Item8 { position[]={6433.1445,322.02023,6198.7515}; azimut=110.142; special="NONE"; id=11; side="GUER"; vehicle="GUE_Soldier_2"; player="PLAY CDG"; skill=1; text="p11"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Rifleman"; }; class Item9 { position[]={6432.9126,322.00949,6197.9766}; azimut=110.142; special="NONE"; id=12; side="GUER"; vehicle="GUE_Soldier_2"; player="PLAY CDG"; skill=1; text="p12"; init="this addWeapon ""ACE_Backpack_Wood""; this addWeapon ""ACE_Earplugs"";"; description="Defender Rifleman"; }; class Item10 { position[]={6432.4961,322,6197.2432}; azimut=110.142; special="NONE"; id=13; side="GUER"; vehicle="GUE_Soldier_Medic"; player="PLAY CDG"; skill=0.54343963; text="p13"; init="this addWeapon ""ACE_Rucksack_East_medic""; this addWeapon ""ACE_Earplugs"";"; description="Defender Medic"; }; }; }; class Item2 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={6539.374,374.48294,5541.3774}; id=14; side="LOGIC"; vehicle="FunctionsManager"; leader=1; lock="UNLOCKED"; skill=0.60000002; }; }; }; class Item3 { side="GUER"; class Vehicles { items=4; class Item0 { position[]={6569.5723,339.39182,6237.7832}; azimut=-26.803699; special="NONE"; id=20; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; class Item1 { position[]={6570.9634,339.08936,6234.9556}; special="NONE"; id=85; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={6569.918,339.0383,6234.3379}; special="NONE"; id=86; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item3 { position[]={6571.7075,338.99503,6234.2905}; special="NONE"; id=87; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; }; }; class Item4 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6658.2749,330.90585,5888.2427}; azimut=-220.22301; special="NONE"; id=34; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6660.5127,330.84949,5891.8101}; azimut=-220.2226; special="NONE"; id=35; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6658.9863,330.836,5890.519}; azimut=-220.2226; special="NONE"; id=36; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6657.4604,330.83014,5889.2271}; azimut=-220.2226; special="NONE"; id=37; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6655.9297,330.8429,5887.9341}; azimut=-220.2226; special="NONE"; id=38; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6654.4033,330.84439,5886.6406}; azimut=-220.2226; special="NONE"; id=39; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item5 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6641.1201,330.59305,5881.0024}; azimut=-220.22301; special="NONE"; id=40; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6643.3579,330.53903,5884.5698}; azimut=-220.2226; special="NONE"; id=41; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6641.8315,330.5459,5883.2788}; azimut=-220.2226; special="NONE"; id=42; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6640.3057,330.53116,5881.9868}; azimut=-220.2226; special="NONE"; id=43; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6638.7749,330.51538,5880.6938}; azimut=-220.2226; special="NONE"; id=44; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6637.2485,330.40402,5879.4004}; azimut=-220.2226; special="NONE"; id=45; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item6 { side="GUER"; class Vehicles { items=4; class Item0 { position[]={6665.9351,331.87073,5860.5791}; azimut=-335.21399; special="NONE"; id=46; side="GUER"; vehicle="GUE_Soldier_Sab"; leader=1; rank="SERGEANT"; skill=0.62880313; init="nul=[this,""area0"",""ambush""] execVM ""scripts\upsmon.sqf""; removeAllWeapons this; this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item1 { position[]={6664.0137,331.811,5860.7891}; azimut=-335.21399; special="NONE"; id=47; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item2 { position[]={6665.1353,331.86298,5859.6875}; azimut=-335.21399; special="NONE"; id=48; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item3 { position[]={6666.7778,331.91486,5859.46}; azimut=-335.21399; special="NONE"; id=49; side="GUER"; vehicle="GUE_Soldier_AT"; skill=0.46195596; init="this addMagazine ""PG7VL"";"; }; }; }; class Item7 { side="GUER"; class Vehicles { items=4; class Item0 { position[]={6732.5508,332.88,5849.3486}; azimut=-512.03485; special="NONE"; id=50; side="GUER"; vehicle="GUE_Soldier_Sab"; leader=1; rank="SERGEANT"; skill=0.62880313; init="nul=[this,""area0"",""ambush""] execVM ""scripts\upsmon.sqf""; removeAllWeapons this; this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item1 { position[]={6734.4595,332.88,5849.0273}; azimut=-512.03485; special="NONE"; id=51; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item2 { position[]={6733.3926,332.88,5850.1948}; azimut=-512.03485; special="NONE"; id=52; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item3 { position[]={6731.7695,332.88,5850.5093}; azimut=-512.03485; special="NONE"; id=53; side="GUER"; vehicle="GUE_Soldier_AT"; skill=0.46195596; init="this addMagazine ""PG7VL"";"; }; }; }; class Item8 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6361.7603,327.39124,6293.4258}; azimut=-57.656185; special="NONE"; id=54; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6360.6973,327.25696,6289.3574}; azimut=-57.655758; special="NONE"; id=55; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6361.7676,327.25089,6291.042}; azimut=-57.655758; special="NONE"; id=56; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6362.8394,327.28357,6292.7329}; azimut=-57.655758; special="NONE"; id=57; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6363.9111,327.49695,6294.4238}; azimut=-57.655758; special="NONE"; id=58; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6364.9771,327.8999,6296.1152}; azimut=-57.655758; special="NONE"; id=59; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item9 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6352.1772,326.43423,6278.708}; azimut=-57.6562; special="NONE"; id=60; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6351.1143,326.19742,6274.6396}; azimut=-57.655758; special="NONE"; id=61; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6352.1846,326.2395,6276.3242}; azimut=-57.655758; special="NONE"; id=62; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6353.2563,326.43057,6278.0151}; azimut=-57.655758; special="NONE"; id=63; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6354.3281,326.78995,6279.7061}; azimut=-57.655758; special="NONE"; id=64; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6355.394,327.14877,6281.3975}; azimut=-57.655758; special="NONE"; id=65; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item10 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6553.5566,342.86414,6266.7173}; azimut=-25.531704; special="NONE"; id=66; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6550.4927,342.0686,6263.8364}; azimut=-25.531277; special="NONE"; id=67; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6552.2959,342.51425,6264.6963}; azimut=-25.531277; special="NONE"; id=68; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6554.1025,342.77701,6265.5557}; azimut=-25.531277; special="NONE"; id=69; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6555.9092,342.88492,6266.4204}; azimut=-25.531277; special="NONE"; id=70; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6557.7124,342.88205,6267.2842}; azimut=-25.531277; special="NONE"; id=71; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item11 { side="GUER"; class Vehicles { items=6; class Item0 { position[]={6565.5708,343.82828,6275.6577}; azimut=-23.462875; special="NONE"; id=72; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6562.4058,343.21564,6272.8901}; azimut=-23.462448; special="NONE"; id=73; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6564.2383,343.20026,6273.6826}; azimut=-23.462448; special="NONE"; id=74; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={6566.0742,343.71576,6274.479}; azimut=-23.462448; special="NONE"; id=75; side="GUER"; vehicle="GUE_Woodlander2"; skill=0.31062999; }; class Item4 { position[]={6567.9106,343.1579,6275.2734}; azimut=-23.462448; special="NONE"; id=76; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item5 { position[]={6569.7432,343.13333,6276.0742}; azimut=-23.462448; special="NONE"; id=77; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item12 { side="GUER"; class Vehicles { items=3; class Item0 { position[]={6566.4282,321.49048,6038.4771}; azimut=-220.22301; special="NONE"; id=78; side="GUER"; vehicle="Offroad_DSHKM_Gue"; leader=1; rank="SERGEANT"; skill=0.54731947; init="nul=[this,""area0"",""reinforcement""] execVM ""scripts\UPSMON.sqf"";"; }; class Item1 { position[]={6563.084,321.48157,6042.3848}; azimut=-220.22301; special="NONE"; id=79; side="GUER"; vehicle="Offroad_DSHKM_Gue"; rank="CORPORAL"; skill=0.48911756; }; class Item2 { position[]={6559.7905,321.48245,6045.9199}; azimut=-220.22301; special="NONE"; id=80; side="GUER"; vehicle="Offroad_SPG9_Gue"; skill=0.48911756; }; }; }; class Item13 { side="GUER"; class Vehicles { items=4; class Item0 { position[]={6301.8672,325.05505,6302.7568}; azimut=-325.49591; special="NONE"; id=81; side="GUER"; vehicle="GUE_Soldier_Sab"; leader=1; rank="SERGEANT"; skill=0.62880313; init="nul=[this,""area0"",""ambush""] execVM ""scripts\upsmon.sqf""; removeAllWeapons this; this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item1 { position[]={6300.0059,324.79022,6303.2949}; azimut=-325.49591; special="NONE"; id=82; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item2 { position[]={6300.9341,324.80893,6302.0151}; azimut=-325.49591; special="NONE"; id=83; side="GUER"; vehicle="GUE_Soldier_Sab"; rank="CORPORAL"; skill=0.50851804; init="this addWeapon ""ak_47_s""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""30Rnd_762x39_AK47""; this addMagazine ""MineE""; this addMagazine ""MineE""; this addMagazine ""MineE"";"; }; class Item3 { position[]={6302.5112,325.02853,6301.5156}; azimut=-325.49591; special="NONE"; id=84; side="GUER"; vehicle="GUE_Soldier_AT"; skill=0.46195596; init="this addMagazine ""PG7VL"";"; }; }; }; class Item14 { side="GUER"; class Vehicles { items=4; class Item0 { position[]={6582.75,339.22601,6240}; special="NONE"; id=88; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6581.7046,339.19901,6239.3823}; special="NONE"; id=89; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item2 { position[]={6583.4941,339.14212,6239.335}; special="NONE"; id=90; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; class Item3 { position[]={6580.9429,339.55231,6243.0596}; azimut=-26.803684; special="NONE"; id=18; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; }; }; class Item15 { side="GUER"; class Vehicles { items=5; class Item0 { position[]={6405.2407,321.99799,6197.9966}; special="NONE"; id=91; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6404.1953,321.99741,6197.3789}; special="NONE"; id=92; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item2 { position[]={6405.9849,321.99622,6197.3315}; special="NONE"; id=93; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; class Item3 { position[]={6403.2832,322.00626,6200.2354}; azimut=-37.112083; special="NONE"; id=25; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; class Item4 { position[]={6407.0645,321.99622,6197.3271}; special="NONE"; id=94; side="GUER"; vehicle="GUE_Soldier_1"; skill=0.24854648; }; }; }; class Item16 { side="GUER"; class Vehicles { items=5; class Item0 { position[]={6416.126,321.99524,6204.4707}; special="NONE"; id=95; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6415.0806,321.99359,6203.853}; special="NONE"; id=96; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item2 { position[]={6416.8701,321.99347,6203.8057}; special="NONE"; id=97; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; class Item3 { position[]={6417.9497,321.99347,6203.8013}; special="NONE"; id=98; side="GUER"; vehicle="GUE_Soldier_1"; skill=0.24854648; }; class Item4 { position[]={6414.0547,322.00211,6207.0439}; azimut=-37.112083; special="NONE"; id=16; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; }; }; class Item17 { side="GUER"; class Vehicles { items=5; class Item0 { position[]={6601.9277,321.92276,5981.7974}; azimut=155.86531; special="NONE"; id=99; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6602.6255,321.91705,5982.7881}; azimut=155.86531; special="NONE"; id=100; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item2 { position[]={6600.9766,321.91357,5982.1011}; azimut=155.86531; special="NONE"; id=101; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; class Item3 { position[]={6599.9878,321.91116,5981.6631}; azimut=155.86501; special="NONE"; id=102; side="GUER"; vehicle="GUE_Soldier_AT"; skill=0.24854648; }; class Item4 { position[]={6602.9404,321.96124,5978.3965}; azimut=-201.66536; special="NONE"; id=31; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; }; }; class Item18 { side="GUER"; class Vehicles { items=5; class Item0 { position[]={6614.6968,321.9382,5984.4805}; azimut=155.86531; special="NONE"; id=103; side="GUER"; vehicle="GUE_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44643539; init="nul=[this,""area0"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6615.3945,321.92896,5985.4712}; azimut=155.86531; special="NONE"; id=104; side="GUER"; vehicle="GUE_Soldier_AR"; skill=0.33779103; }; class Item2 { position[]={6613.7456,321.93036,5984.7842}; azimut=155.86531; special="NONE"; id=105; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.31838968; }; class Item3 { position[]={6612.7568,321.93533,5984.3462}; azimut=155.86501; special="NONE"; id=106; side="GUER"; vehicle="GUE_Soldier_AT"; skill=0.24854648; }; class Item4 { position[]={6615.4595,321.97977,5982.377}; azimut=-201.66536; special="NONE"; id=29; side="GUER"; vehicle="DSHKM_Gue"; skill=0.43862861; }; }; }; class Item19 { side="GUER"; class Vehicles { items=3; class Item0 { position[]={6537.9692,321.90591,6082.7241}; azimut=-0.986467; special="NONE"; id=107; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6537.0645,321.88998,6081.0308}; azimut=-0.9860394; special="NONE"; id=108; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6539.0645,321.87714,6081.0664}; azimut=-0.9860394; special="NONE"; id=109; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; }; }; class Item20 { side="GUER"; class Vehicles { items=3; class Item0 { position[]={6552.4502,321.94867,6081.0225}; azimut=-0.98603898; special="NONE"; id=110; side="GUER"; vehicle="GUE_Woodlander2"; leader=1; skill=0.31062999; init="nul=[this,""area0"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6551.2275,321.92706,6079.8628}; azimut=-0.9860394; special="NONE"; id=111; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item2 { position[]={6553.229,321.97485,6079.8989}; azimut=-0.9860394; special="NONE"; id=112; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item21 { side="GUER"; class Vehicles { items=3; class Item0 { position[]={6499.416,321.99203,6154.6284}; azimut=-0.986467; special="NONE"; id=113; side="GUER"; vehicle="GUE_Worker2"; leader=1; rank="SERGEANT"; skill=0.46666664; init="nul=[this,""area0"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6498.5112,321.99139,6152.9351}; azimut=-0.9860394; special="NONE"; id=114; side="GUER"; vehicle="GUE_Woodlander3"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={6500.5112,321.9913,6152.9707}; azimut=-0.9860394; special="NONE"; id=115; side="GUER"; vehicle="GUE_Villager3"; rank="CORPORAL"; skill=0.33333331; }; }; }; class Item22 { side="GUER"; class Vehicles { items=3; class Item0 { position[]={6481.8457,321.89667,6137.6099}; azimut=-0.98603898; special="NONE"; id=116; side="GUER"; vehicle="GUE_Woodlander2"; leader=1; skill=0.31062999; init="nul=[this,""area0"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6480.623,321.82361,6136.4502}; azimut=-0.9860394; special="NONE"; id=117; side="GUER"; vehicle="GUE_Woodlander1"; skill=0.36107188; }; class Item2 { position[]={6482.6245,321.88608,6136.4863}; azimut=-0.9860394; special="NONE"; id=118; side="GUER"; vehicle="GUE_Villager4"; skill=0.27570841; }; }; }; class Item23 { side="EAST"; class Vehicles { items=10; class Item0 { position[]={6948.728,276.67477,6504.3564}; azimut=-177.187; special="NONE"; id=126; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={6965.5342,274.43155,6507.3125}; azimut=-177.187; special="NONE"; id=127; side="EAST"; vehicle="Ins_Soldier_GL"; rank="SERGEANT"; skill=0.37271231; }; class Item2 { position[]={6961.2935,275.00113,6507.5742}; azimut=-177.187; special="NONE"; id=128; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.43479496; }; class Item3 { position[]={6957.1982,275.58862,6507.8174}; azimut=-177.187; special="NONE"; id=129; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.43479496; }; class Item4 { position[]={6953.0957,276.20004,6508.1099}; azimut=-177.187; special="NONE"; id=130; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.31838968; }; class Item5 { position[]={6948.9927,276.83728,6508.2275}; azimut=-177.187; special="NONE"; id=131; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.31838968; }; class Item6 { position[]={6944.7139,277.51443,6508.52}; azimut=-177.187; special="NONE"; id=132; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.38823289; }; class Item7 { position[]={6940.7871,278.1503,6508.7544}; azimut=-177.187; special="NONE"; id=133; side="EAST"; vehicle="Ins_Soldier_1"; rank="CORPORAL"; skill=0.38823289; }; class Item8 { position[]={6936.5088,278.82422,6508.814}; azimut=-177.187; special="NONE"; id=134; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.26406795; }; class Item9 { position[]={6931.8198,279.54355,6508.9312}; azimut=-177.187; special="NONE"; id=135; side="EAST"; vehicle="Ins_Soldier_Medic"; skill=0.20974502; }; }; class Waypoints { items=3; class Item0 { position[]={6948.3984,276.43228,6496.688}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6738.7915,316.96155,6388.9893}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6560.9258,321.99588,6124.6626}; placement=150; type="SAD"; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; showWP="NEVER"; }; }; }; class Item24 { side="EAST"; class Vehicles { items=3; class Item0 { position[]={6983.0376,274.27719,6583.4653}; azimut=-159.782; special="NONE"; id=136; side="EAST"; vehicle="Ins_Soldier_Sniper"; leader=1; rank="SERGEANT"; skill=1; }; class Item1 { position[]={6984.6729,274.0412,6586.1304}; azimut=-159.782; special="NONE"; id=137; side="EAST"; vehicle="Ins_Soldier_Sniper"; rank="SERGEANT"; skill=0.88101375; }; class Item2 { position[]={6982.7964,274.22903,6586.8232}; azimut=-159.782; special="NONE"; id=138; side="EAST"; vehicle="Ins_Soldier_1"; rank="CORPORAL"; skill=0.76848924; }; }; class Waypoints { items=4; class Item0 { position[]={6980.5815,274.70609,6576.8838}; combatMode="RED"; formation="WEDGE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6780.4268,297.4364,6452.5151}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6760.1045,302.5079,6412.2402}; combatMode="RED"; formation="WEDGE"; speed="NORMAL"; combat="STEALTH"; class Effects { }; timeoutMin=20; timeoutMid=20; timeoutMax=20; showWP="NEVER"; }; class Item3 { position[]={6562.2085,321.99496,6124.063}; placement=150; type="SAD"; combat="STEALTH"; class Effects { }; showWP="NEVER"; }; }; }; class Item25 { side="EAST"; class Vehicles { items=10; class Item0 { position[]={6878.377,288.44812,6509.4185}; azimut=-177.187; special="NONE"; id=139; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={6895.1831,285.35849,6512.3745}; azimut=-177.187; special="NONE"; id=140; side="EAST"; vehicle="Ins_Soldier_GL"; rank="SERGEANT"; skill=0.37271231; }; class Item2 { position[]={6890.9424,286.20331,6512.6362}; azimut=-177.187; special="NONE"; id=141; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.43479496; }; class Item3 { position[]={6886.8472,287.08362,6512.8794}; azimut=-177.187; special="NONE"; id=142; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.43479496; }; class Item4 { position[]={6882.7446,287.97424,6513.1719}; azimut=-177.187; special="NONE"; id=143; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.31838968; }; class Item5 { position[]={6878.6416,288.84695,6513.2896}; azimut=-177.187; special="NONE"; id=144; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.31838968; }; class Item6 { position[]={6874.3628,289.73102,6513.582}; azimut=-177.187; special="NONE"; id=145; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.38823289; }; class Item7 { position[]={6870.436,290.53592,6513.8164}; azimut=-177.187; special="NONE"; id=146; side="EAST"; vehicle="Ins_Soldier_1"; rank="CORPORAL"; skill=0.38823289; }; class Item8 { position[]={6866.1577,291.28503,6513.876}; azimut=-177.187; special="NONE"; id=147; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.26406795; }; class Item9 { position[]={6861.4688,292.08368,6513.9932}; azimut=-177.187; special="NONE"; id=148; side="EAST"; vehicle="Ins_Soldier_Medic"; skill=0.20974502; }; }; class Waypoints { items=3; class Item0 { position[]={6878.0474,287.61444,6501.75}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6674.6157,320.47702,6448.6035}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6561.0127,321.99539,6124.9321}; placement=150; type="SAD"; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; showWP="NEVER"; }; }; }; class Item26 { side="EAST"; class Vehicles { items=8; class Item0 { position[]={6945.1455,279.21005,6556.2476}; azimut=-175.86897; special="NONE"; id=149; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={6951.1982,278.31433,6557.644}; azimut=-175.86897; special="NONE"; id=150; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41927469; }; class Item2 { position[]={6949.2046,278.61139,6557.7891}; azimut=-175.86897; special="NONE"; id=151; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.38435304; }; class Item3 { position[]={6947.2104,278.90668,6557.9316}; azimut=-175.86897; special="NONE"; id=152; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.3261503; }; class Item4 { position[]={6945.2139,279.20239,6558.0757}; azimut=-175.86897; special="NONE"; id=153; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.33003014; }; class Item5 { position[]={6943.2173,279.55756,6558.2222}; azimut=-175.86897; special="NONE"; id=154; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.3804723; }; class Item6 { position[]={6941.2261,279.91708,6558.3657}; azimut=-175.86897; special="NONE"; id=155; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.42703438; }; class Item7 { position[]={6939.2329,280.27136,6558.5054}; azimut=-175.86897; special="NONE"; id=156; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.24466664; }; }; class Waypoints { items=3; class Item0 { position[]={6944.6479,279.23047,6548.3696}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6744.5229,300.57275,6472.1045}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6559.2681,321.99936,6123.7114}; placement=150; type="SAD"; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; showWP="NEVER"; }; }; }; class Item27 { side="EAST"; class Vehicles { items=8; class Item0 { position[]={6881.0146,291.53775,6557.6255}; azimut=-175.86897; special="NONE"; id=157; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={6887.0674,290.32153,6559.022}; azimut=-175.86897; special="NONE"; id=158; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41927469; }; class Item2 { position[]={6885.0737,290.72296,6559.167}; azimut=-175.86897; special="NONE"; id=159; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.38435304; }; class Item3 { position[]={6883.0796,291.14233,6559.3096}; azimut=-175.86897; special="NONE"; id=160; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.3261503; }; class Item4 { position[]={6881.083,291.56302,6559.4536}; azimut=-175.86897; special="NONE"; id=161; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.33003014; }; class Item5 { position[]={6879.0864,291.97852,6559.6001}; azimut=-175.86897; special="NONE"; id=162; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.3804723; }; class Item6 { position[]={6877.0952,292.39105,6559.7437}; azimut=-175.86897; special="NONE"; id=163; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.42703438; }; class Item7 { position[]={6875.1021,292.80624,6559.8833}; azimut=-175.86897; special="NONE"; id=164; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.24466664; }; }; class Waypoints { items=3; class Item0 { position[]={6880.5171,291.42334,6549.7476}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6709.5698,309.26959,6481.2764}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6560.353,321.99741,6124.0898}; placement=150; type="SAD"; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; showWP="NEVER"; }; }; }; class Item28 { side="EAST"; class Vehicles { items=4; class Item0 { position[]={7014.6323,269.46475,6554.6338}; azimut=185.77731; special="NONE"; id=165; side="EAST"; vehicle="Ins_Soldier_Sab"; leader=1; rank="SERGEANT"; skill=0.83057183; }; class Item1 { position[]={7015.6353,269.54712,6559.397}; azimut=185.77699; special="NONE"; id=168; side="EAST"; vehicle="Ins_Soldier_Sab"; rank="CORPORAL"; skill=0.5861218; }; class Item2 { position[]={7019.3862,268.93488,6556.9941}; azimut=185.77699; special="NONE"; id=166; side="EAST"; vehicle="Ins_Soldier_Sab"; rank="SERGEANT"; skill=0.63656372; }; class Item3 { position[]={7011.2979,270.07654,6557.6973}; azimut=185.77699; special="NONE"; id=167; side="EAST"; vehicle="Ins_Soldier_Sab"; rank="CORPORAL"; skill=0.5861218; }; }; class Waypoints { items=3; class Item0 { position[]={7014.0718,269.25314,6549.1602}; combatMode="RED"; formation="DIAMOND"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6721.2207,304.75003,6457.814}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6564.8823,321.99323,6122.7056}; placement=150; type="SAD"; combatMode="RED"; formation="DIAMOND"; speed="NORMAL"; combat="STEALTH"; class Effects { }; showWP="NEVER"; }; }; }; class Item29 { side="EAST"; class Vehicles { items=13; class Item0 { position[]={5631.8628,317.14575,7108.4468}; azimut=-170.82201; special="CARGO"; id=169; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={5633.2734,316.66293,7112.3354}; azimut=-170.82201; special="CARGO"; id=171; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={5631.2983,316.66974,7112.6587}; azimut=-170.82201; special="CARGO"; id=172; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={5629.3228,316.67532,7112.9727}; azimut=-170.82201; special="CARGO"; id=173; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={5627.3472,316.68588,7113.2939}; azimut=-170.82201; special="CARGO"; id=174; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={5625.3755,316.69699,7113.6099}; azimut=-170.82201; special="CARGO"; id=175; side="EAST"; vehicle="Ins_Soldier_GL"; skill=0.3261503; }; class Item6 { position[]={5623.3994,316.81622,7113.9326}; azimut=-170.82201; special="CARGO"; id=176; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.31062999; }; class Item7 { position[]={5621.4292,316.96127,7114.2485}; azimut=-170.82201; special="CARGO"; id=177; side="EAST"; vehicle="Ins_Soldier_MG"; skill=0.38435304; }; class Item8 { position[]={5619.4561,317.10583,7114.5708}; azimut=-170.82201; special="CARGO"; id=178; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.30286941; }; class Item9 { position[]={5617.479,317.25031,7114.8896}; azimut=-170.82201; special="CARGO"; id=179; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.39211273; }; class Item10 { position[]={5615.5039,317.31091,7115.2109}; azimut=-170.82201; special="CARGO"; id=180; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.26406795; }; class Item11 { position[]={5613.5293,317.3718,7115.5293}; azimut=-170.82201; special="CARGO"; id=181; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.2; }; class Item12 { position[]={5637.1841,316.59338,7112.1157}; azimut=-170.82201; special="NONE"; id=170; side="EAST"; vehicle="UralOpen_INS"; rank="SERGEANT"; skill=0.46666664; }; }; class Waypoints { items=2; class Item0 { position[]={5634.4829,317.95316,7101.3818}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6560.5723,321.99698,6124.1758}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item30 { side="EAST"; class Vehicles { items=13; class Item0 { position[]={5635.3794,315.14093,7126.2695}; azimut=-170.82201; special="CARGO"; id=182; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={5636.79,314.73093,7130.1582}; azimut=-170.82201; special="CARGO"; id=184; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.33333331; }; class Item2 { position[]={5634.8149,314.7359,7130.4814}; azimut=-170.82201; special="CARGO"; id=185; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.33333331; }; class Item3 { position[]={5632.8394,314.74179,7130.7954}; azimut=-170.82201; special="CARGO"; id=186; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={5630.8638,314.85168,7131.1167}; azimut=-170.82201; special="CARGO"; id=187; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={5628.8921,314.98352,7131.4326}; azimut=-170.82201; special="CARGO"; id=188; side="EAST"; vehicle="Ins_Soldier_GL"; skill=0.3261503; }; class Item6 { position[]={5626.916,315.11505,7131.7554}; azimut=-170.82201; special="CARGO"; id=189; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.31062999; }; class Item7 { position[]={5624.9458,315.21982,7132.0713}; azimut=-170.82201; special="CARGO"; id=190; side="EAST"; vehicle="Ins_Soldier_MG"; skill=0.38435304; }; class Item8 { position[]={5622.9727,315.30426,7132.3936}; azimut=-170.82201; special="CARGO"; id=191; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.30286941; }; class Item9 { position[]={5620.9956,315.38052,7132.7124}; azimut=-170.82201; special="CARGO"; id=192; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.39211273; }; class Item10 { position[]={5619.0205,315.45227,7133.0337}; azimut=-170.82201; special="CARGO"; id=193; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.26406795; }; class Item11 { position[]={5617.0459,315.52481,7133.3521}; azimut=-170.82201; special="CARGO"; id=194; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.2; }; class Item12 { position[]={5640.7007,314.67682,7129.9385}; azimut=-170.82201; special="NONE"; id=183; side="EAST"; vehicle="UralOpen_INS"; rank="SERGEANT"; skill=0.46666664; }; }; class Waypoints { items=2; class Item0 { position[]={5638.7363,315.75772,7119.5313}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6560.3291,321.99585,6125.2881}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item31 { side="EAST"; class Vehicles { items=13; class Item0 { position[]={5639.0137,313.25339,7144.8574}; azimut=-170.82201; special="CARGO"; id=195; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item1 { position[]={5640.4243,312.84628,7148.7461}; azimut=-170.82201; special="CARGO"; id=197; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.33333331; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item2 { position[]={5638.4492,312.85406,7149.0693}; azimut=-170.82201; special="CARGO"; id=198; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.33333331; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item3 { position[]={5636.4736,312.86218,7149.3833}; azimut=-170.82201; special="CARGO"; id=199; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33333331; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item4 { position[]={5634.498,312.86954,7149.7046}; azimut=-170.82201; special="CARGO"; id=200; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.33333331; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item5 { position[]={5632.5264,312.87741,7150.0205}; azimut=-170.82201; special="CARGO"; id=201; side="EAST"; vehicle="Ins_Soldier_GL"; skill=0.3261503; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item6 { position[]={5630.5503,313.10818,7150.3433}; azimut=-170.82201; special="CARGO"; id=202; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.31062999; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item7 { position[]={5628.5801,313.32672,7150.6592}; azimut=-170.82201; special="CARGO"; id=203; side="EAST"; vehicle="Ins_Soldier_MG"; skill=0.38435304; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item8 { position[]={5626.6069,313.52716,7150.9814}; azimut=-170.82201; special="CARGO"; id=204; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.30286941; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item9 { position[]={5624.6299,313.70911,7151.3003}; azimut=-170.82201; special="CARGO"; id=205; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.39211273; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item10 { position[]={5622.6548,313.80716,7151.6216}; azimut=-170.82201; special="CARGO"; id=206; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.26406795; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item11 { position[]={5620.6802,313.90543,7151.9399}; azimut=-170.82201; special="CARGO"; id=207; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.2; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item12 { position[]={5644.335,312.78482,7148.5264}; azimut=-170.82201; special="NONE"; id=196; side="EAST"; vehicle="UralOpen_INS"; rank="SERGEANT"; skill=0.46666664; init="if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; }; class Waypoints { items=2; class Item0 { position[]={5641.6338,313.8851,7137.7925}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6561.2178,321.99066,6128.2866}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item32 { side="EAST"; class Vehicles { items=10; class Item0 { position[]={5622.9111,323.53052,7068.6475}; azimut=-168.19127; special="CARGO"; id=208; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.33333331; }; class Item1 { position[]={5628.8276,322.64346,7072.52}; azimut=-168.19127; special="NONE"; id=209; side="EAST"; vehicle="Offroad_DSHKM_INS"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={5630.2642,321.3902,7079.3716}; azimut=-168.19127; special="NONE"; id=210; side="EAST"; vehicle="UAZ_SPG9_INS"; rank="CORPORAL"; skill=0.38435304; }; class Item3 { position[]={5631.6953,320.2153,7086.2178}; azimut=-168.19127; special="NONE"; id=211; side="EAST"; vehicle="Pickup_PK_INS"; rank="CORPORAL"; skill=0.38435304; }; class Item4 { position[]={5620.9966,322.64566,7074.1563}; azimut=-168.19127; special="CARGO"; id=212; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.32227042; }; class Item5 { position[]={5619.0381,322.64597,7074.5669}; azimut=-168.19127; special="CARGO"; id=213; side="EAST"; vehicle="Ins_Soldier_MG"; skill=0.43479496; }; class Item6 { position[]={5617.085,322.70779,7074.9756}; azimut=-168.19127; special="CARGO"; id=214; side="EAST"; vehicle="Ins_Soldier_GL"; skill=0.29898956; }; class Item7 { position[]={5633.1504,319.18301,7092.6973}; azimut=-168.19099; special="NONE"; id=215; side="EAST"; vehicle="Pickup_PK_INS"; rank="CORPORAL"; skill=0.38435304; init="if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; class Item8 { position[]={5614.9863,323.0954,7074.9863}; azimut=-169.248; special="CARGO"; id=216; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24466664; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; class Item9 { position[]={5612.6729,323.56711,7074.9873}; azimut=-169.248; special="CARGO"; id=217; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24466664; init="if ((paramsArray select 0) == 0) then {deleteVehicle this};"; }; }; class Waypoints { items=2; class Item0 { position[]={5627.5156,324.3717,7063.1982}; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={6560.4668,321.99753,6123.8896}; placement=150; type="SAD"; combatMode="RED"; class Effects { }; showWP="NEVER"; }; }; }; class Item33 { side="EAST"; class Vehicles { items=8; class Item0 { position[]={7195.3833,276.97864,5925.1929}; azimut=-230.41; special="CARGO"; id=218; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={7193.8384,276.61896,5932.0586}; azimut=-230.41; special="NONE"; id=219; side="EAST"; vehicle="BMP2_INS"; rank="SERGEANT"; skill=0.69088632; }; class Item2 { position[]={7189.6206,276.67059,5926.0664}; azimut=-230.41; special="CARGO"; id=220; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.37271231; }; class Item3 { position[]={7188.3389,276.6799,5924.5249}; azimut=-230.41; special="CARGO"; id=221; side="EAST"; vehicle="Ins_Soldier_AT"; rank="CORPORAL"; skill=0.33333331; }; class Item4 { position[]={7187.0679,276.68268,5922.9824}; azimut=-230.41; special="CARGO"; id=222; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={7185.7939,277.45102,5921.4438}; azimut=-230.41; special="CARGO"; id=223; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={7184.521,278.22467,5919.9019}; azimut=-230.41; special="CARGO"; id=224; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; class Item7 { position[]={7183.2461,278.97827,5918.3599}; azimut=-230.41; special="CARGO"; id=225; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.31062999; }; }; class Waypoints { items=11; class Item0 { position[]={7206.5137,277.59903,5919.5039}; combatMode="RED"; formation="LINE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7253.8286,277.40704,5845.2061}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7259.9678,285.92999,5694.8994}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7254.2495,272.07797,5576.8599}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7363.4116,249.69196,5419.8164}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7020.5796,290.45557,5568.7842}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={6926.2207,310.86148,5593.4116}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6905.8296,324.55978,5663.0918}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6752.5454,332.80783,5828.0293}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6656.8208,331.36462,5873.1172}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6561.0361,322.02478,6132.6909}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item34 { side="EAST"; class Vehicles { items=9; class Item0 { position[]={7186.3589,276.24506,5931.7368}; azimut=-230.52901; special="CARGO"; id=226; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.46666664; }; class Item1 { position[]={7185.6802,275.86667,5938.7759}; azimut=-230.52901; special="NONE"; id=227; side="EAST"; vehicle="BRDM2_INS"; rank="SERGEANT"; skill=0.70640689; }; class Item2 { position[]={7177.2515,275.03934,5945.7451}; azimut=-230.52901; special="NONE"; id=228; side="EAST"; vehicle="BRDM2_INS"; rank="SERGEANT"; skill=0.72580701; }; class Item3 { position[]={7180.5942,275.89386,5932.5991}; azimut=-230.52901; special="CARGO"; id=229; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41927469; }; class Item4 { position[]={7179.3271,275.89905,5931.0586}; azimut=-230.52901; special="CARGO"; id=230; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33333331; }; class Item5 { position[]={7178.0532,276.54694,5929.5103}; azimut=-230.52901; special="CARGO"; id=231; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.33333331; }; class Item6 { position[]={7176.7808,277.18051,5927.9673}; azimut=-230.52901; special="CARGO"; id=232; side="EAST"; vehicle="Ins_Soldier_1"; rank="CORPORAL"; skill=0.33333331; }; class Item7 { position[]={7175.5088,277.80768,5926.4214}; azimut=-230.52901; special="CARGO"; id=233; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.24078679; }; class Item8 { position[]={7174.2397,278.73318,5924.8809}; azimut=-230.52901; special="CARGO"; id=234; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.2; }; }; class Waypoints { items=11; class Item0 { position[]={7197.7842,276.94818,5928.4204}; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7254.4268,277.39609,5844.8184}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7259.562,285.92999,5696.1353}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7254.4204,271.91861,5575.957}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7363.2251,249.69255,5419.606}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7020.8882,290.38425,5568.4087}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={6926.2524,310.81451,5593.2119}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6906.5166,324.64514,5664.0859}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6752.6802,332.80731,5828.1045}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6657.291,331.39264,5872.6533}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6560.2153,321.99094,6129.0801}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item35 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={7163.1294,273.74362,5956.3789}; azimut=-236.58501; special="NONE"; id=235; side="EAST"; vehicle="T72_INS"; leader=1; rank="SERGEANT"; skill=0.75684875; }; }; class Waypoints { items=11; class Item0 { position[]={7189.9971,276.26804,5935.3252}; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7254.1343,277.40381,5845.1265}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7258.999,285.92999,5694.1563}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7254.0234,271.91577,5575.8853}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7363.293,249.69284,5419.9868}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7020.9556,290.40167,5569.3169}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={6925.8174,310.98767,5593.6084}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6905.5161,324.69565,5663.8916}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6752.2607,332.81235,5829.1499}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6656.6216,331.35699,5873.1875}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6561.5898,321.99341,6125.8491}; placement=150; type="SAD"; combatMode="RED"; class Effects { }; showWP="NEVER"; }; }; }; class Item36 { side="EAST"; class Vehicles { items=5; class Item0 { position[]={6013.8164,307.60101,7680.9604}; azimut=-148.41368; special="NONE"; id=240; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={6016.6152,307.80972,7677.1904}; azimut=-139.16701; special="NONE"; id=244; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area1"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={6017.8359,307.77826,7676.7397}; azimut=-139.16701; special="NONE"; id=245; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={6019.229,307.73468,7676.3022}; azimut=-139.16701; special="NONE"; id=246; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={6020.542,307.68823,7675.9443}; azimut=-139.16701; special="NONE"; id=247; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; }; }; class Item37 { side="GUER"; class Vehicles { items=16; class Item0 { position[]={4780.4067,267.54947,6781.8931}; azimut=-308.61163; special="NONE"; id=241; side="GUER"; vehicle="BMP2_Gue"; rank="SERGEANT"; skill=0.62492323; }; class Item1 { position[]={4774.8496,267.51337,6777.6841}; azimut=-309.09534; special="NONE"; id=242; side="GUER"; vehicle="BRDM2_Gue"; rank="CORPORAL"; skill=0.53567868; }; class Item2 { position[]={4771.562,267.51001,6772.5562}; azimut=-309.5199; special="NONE"; id=243; side="GUER"; vehicle="BRDM2_Gue"; rank="CORPORAL"; skill=0.53567868; }; class Item3 { position[]={4791.707,267.90402,6790.5449}; special="CARGO"; id=333; side="GUER"; vehicle="GUE_Commander"; leader=1; rank="LIEUTENANT"; skill=0.7646094; }; class Item4 { position[]={4793.2651,267.91699,6790.5923}; special="CARGO"; id=334; side="GUER"; vehicle="GUE_Soldier_GL"; rank="SERGEANT"; skill=0.54343963; }; class Item5 { position[]={4794.6943,267.92654,6790.5923}; special="CARGO"; id=335; side="GUER"; vehicle="GUE_Soldier_MG"; rank="SERGEANT"; skill=0.54343963; }; class Item6 { position[]={4796.0771,267.93576,6790.5923}; special="CARGO"; id=336; side="GUER"; vehicle="GUE_Soldier_AR"; rank="CORPORAL"; skill=0.46195596; }; class Item7 { position[]={4797.3682,267.94119,6790.5923}; special="CARGO"; id=337; side="GUER"; vehicle="GUE_Soldier_AR"; rank="CORPORAL"; skill=0.43091512; }; class Item8 { position[]={4791.6523,267.87366,6789.7183}; special="CARGO"; id=338; side="GUER"; vehicle="GUE_Soldier_AT"; rank="CORPORAL"; skill=0.43091512; }; class Item9 { position[]={4793.0186,267.88467,6789.7446}; special="CARGO"; id=339; side="GUER"; vehicle="GUE_Soldier_AT"; rank="CORPORAL"; skill=0.43091512; }; class Item10 { position[]={4794.5117,267.89008,6789.6177}; special="CARGO"; id=340; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item11 { position[]={4795.7002,267.90067,6789.6924}; special="CARGO"; id=341; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item12 { position[]={4796.8647,267.90485,6789.5928}; special="CARGO"; id=342; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item13 { position[]={4791.6274,267.83685,6788.7065}; special="CARGO"; id=343; side="GUER"; vehicle="GUE_Soldier_Medic"; skill=0.36495173; }; class Item14 { position[]={4793.0693,267.84653,6788.6812}; special="CARGO"; id=344; side="GUER"; vehicle="GUE_Soldier_GL"; skill=0.36495173; }; class Item15 { position[]={4794.1064,267.85437,6788.7065}; special="CARGO"; id=345; side="GUER"; vehicle="GUE_Soldier_MG"; skill=0.43867481; }; }; class Waypoints { items=4; class Item0 { position[]={4800.7715,268.05927,6794.9956}; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win1"; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={5632.7549,304.453,7266.9883}; combatMode="YELLOW"; combat="AWARE"; synchronizations[]={2}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6129.1855,300.98602,7777.1138}; placement=300; type="SAD"; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win2"; synchronizations[]={0}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7101.2866,293.98999,7684.5488}; placement=300; type="SAD"; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win3"; class Effects { }; showWP="NEVER"; }; }; }; class Item38 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={6377.8662,287.19159,7531.958}; azimut=-237.19548; special="NONE"; id=249; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={6381.6909,287.15045,7534.6758}; azimut=-227.94876; special="NONE"; id=250; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area1"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={6382.1772,287.15961,7535.8774}; azimut=-227.94876; special="NONE"; id=251; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={6382.6372,287.17239,7537.2622}; azimut=-227.94876; special="NONE"; id=252; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={6383.0273,287.20956,7538.5747}; azimut=-227.94876; special="NONE"; id=253; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; class Item5 { position[]={6376.4629,287.07639,7514.3818}; azimut=-237.19548; special="NONE"; id=255; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; }; }; class Item39 { side="EAST"; class Vehicles { items=5; class Item0 { position[]={5923.2407,307.48447,8017.2842}; azimut=-33.631439; special="NONE"; id=257; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={5929.6055,308.0321,8022.5981}; azimut=-24.384762; special="NONE"; id=258; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area1"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={5928.686,307.586,8021.6787}; azimut=-24.384762; special="NONE"; id=259; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={5927.7036,307.49127,8020.5981}; azimut=-24.384762; special="NONE"; id=260; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={5926.8286,307.48367,8019.5547}; azimut=-24.384762; special="NONE"; id=261; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; }; }; class Item40 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={6262.8818,300.99948,7723.5234}; azimut=-139.16701; special="NONE"; id=262; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.5317989; init="nul=[this,""area1""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6269.2495,300.99606,7722.0518}; azimut=-139.16701; special="NONE"; id=263; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={6267.1914,300.99857,7723.918}; azimut=-139.16701; special="NONE"; id=264; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41151375; }; class Item3 { position[]={6265.3574,301,7725.2383}; azimut=-139.16701; special="NONE"; id=265; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33391088; }; class Item4 { position[]={6263.3633,301,7726.5244}; azimut=-139.16701; special="NONE"; id=266; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.29510882; }; class Item5 { position[]={6261.4009,301,7727.4902}; azimut=-139.16701; special="NONE"; id=267; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; }; }; class Item41 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={6161.314,300.98325,7767.6875}; azimut=-139.16701; special="NONE"; id=268; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.5317989; init="nul=[this,""area1""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6167.6816,300.99503,7766.2158}; azimut=-139.16701; special="NONE"; id=269; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={6165.6235,300.99255,7768.082}; azimut=-139.16701; special="NONE"; id=270; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41151375; }; class Item3 { position[]={6163.7896,300.98755,7769.4023}; azimut=-139.16701; special="NONE"; id=271; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33391088; }; class Item4 { position[]={6161.7954,300.9787,7770.6885}; azimut=-139.16701; special="NONE"; id=272; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.29510882; }; class Item5 { position[]={6159.833,300.9696,7771.6543}; azimut=-139.16701; special="NONE"; id=273; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; }; }; class Item42 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={6261.772,298.11142,7644.2202}; azimut=-139.16701; special="NONE"; id=274; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.5317989; init="nul=[this,""area1""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6268.1396,298.69754,7642.7485}; azimut=-139.16701; special="NONE"; id=275; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={6266.0815,298.69669,7644.6147}; azimut=-139.16701; special="NONE"; id=276; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41151375; }; class Item3 { position[]={6264.2476,298.65015,7645.9351}; azimut=-139.16701; special="NONE"; id=277; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33391088; }; class Item4 { position[]={6262.2534,298.57635,7647.2212}; azimut=-139.16701; special="NONE"; id=278; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.29510882; }; class Item5 { position[]={6260.291,298.44086,7648.187}; azimut=-139.16701; special="NONE"; id=279; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; }; }; class Item43 { side="EAST"; class Vehicles { items=5; class Item0 { position[]={6071.5977,300.99454,7778.4468}; azimut=-139.16701; special="NONE"; id=280; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="SERGEANT"; skill=0.60164207; init="nul=[this,""area1"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6075.6987,300.98999,7777.1411}; azimut=-139.16701; special="NONE"; id=281; side="EAST"; vehicle="Ins_Soldier_2"; rank="SERGEANT"; skill=0.53567868; }; class Item2 { position[]={6074.3081,300.99203,7779.0225}; azimut=-139.16701; special="NONE"; id=282; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.50851804; }; class Item3 { position[]={6072.1816,300.99374,7780.1685}; azimut=-139.16701; special="NONE"; id=283; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; class Item4 { position[]={6069.8916,300.9968,7781.2324}; azimut=-139.16701; special="NONE"; id=284; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; }; }; class Item44 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={6911.3916,292.59442,7640.8545}; azimut=-115.08147; special="NONE"; id=286; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={6911.6631,292.42896,7636.1714}; azimut=-105.83498; special="NONE"; id=287; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area2"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={6912.4238,292.47614,7635.1211}; azimut=-105.83474; special="NONE"; id=288; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={6913.3516,292.55099,7633.9961}; azimut=-105.83474; special="NONE"; id=289; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={6914.2559,292.62784,7632.9678}; azimut=-105.83474; special="NONE"; id=290; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; class Item5 { position[]={6917.0537,292.68448,7626.6934}; azimut=-115.08147; special="NONE"; id=292; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; }; }; class Item45 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={7118.8198,276.97583,7460.0405}; azimut=-188.0329; special="NONE"; id=294; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={7115.5786,277.69412,7464.9077}; azimut=-178.78642; special="NONE"; id=295; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area2"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={7116.8091,277.72498,7465.3281}; azimut=-178.78618; special="NONE"; id=296; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={7118.1553,277.7692,7465.8838}; azimut=-178.78618; special="NONE"; id=297; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={7119.4048,277.81497,7466.4497}; azimut=-178.78618; special="NONE"; id=298; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; class Item5 { position[]={7134.6577,277.02069,7462.9033}; azimut=-188.0329; special="NONE"; id=300; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; }; }; class Item46 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={7332.2783,303.03546,7651.1689}; azimut=-242.45175; special="NONE"; id=302; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; class Item1 { position[]={7328.8018,302.6972,7651.5674}; azimut=-233.20532; special="NONE"; id=303; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="CORPORAL"; skill=0.44255555; init="nul=[this,""area2"",""nomove""] execVM ""scripts\upsmon.sqf"";"; }; class Item2 { position[]={7329.1733,302.68875,7652.8101}; azimut=-233.20508; special="NONE"; id=304; side="EAST"; vehicle="Ins_Soldier_AR"; skill=0.34167087; }; class Item3 { position[]={7335.7231,303.03745,7666.3794}; azimut=-233.20508; special="NONE"; id=305; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.27182764; }; class Item4 { position[]={7335.9888,303.1969,7667.7192}; azimut=-233.20508; special="NONE"; id=306; side="EAST"; vehicle="Ins_Soldier_2"; skill=0.27182764; }; class Item5 { position[]={7338.7056,303.27576,7665.8994}; azimut=-242.45175; special="NONE"; id=308; side="EAST"; vehicle="DSHKM_Ins"; skill=0.41927469; }; }; }; class Item47 { side="EAST"; class Vehicles { items=5; class Item0 { position[]={6990.7119,293.99725,7684.7295}; azimut=-131.116; special="NONE"; id=309; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="SERGEANT"; skill=0.60164207; init="nul=[this,""area2"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={6994.813,294,7683.4238}; azimut=-139.16701; special="NONE"; id=310; side="EAST"; vehicle="Ins_Soldier_2"; rank="SERGEANT"; skill=0.53567868; }; class Item2 { position[]={6993.4224,294,7685.3052}; azimut=-139.16701; special="NONE"; id=311; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.50851804; }; class Item3 { position[]={6991.2959,294,7686.4512}; azimut=-139.16701; special="NONE"; id=312; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; class Item4 { position[]={6989.0059,293.99869,7687.5151}; azimut=-139.16701; special="NONE"; id=313; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; }; }; class Item48 { side="EAST"; class Vehicles { items=5; class Item0 { position[]={7100.5435,293.99478,7736.3218}; azimut=-182.20262; special="NONE"; id=314; side="EAST"; vehicle="Ins_Soldier_GL"; leader=1; rank="SERGEANT"; skill=0.60164207; init="nul=[this,""area2"",""reinforcement""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={7104.1353,294.0022,7738.6919}; azimut=-190.25363; special="NONE"; id=315; side="EAST"; vehicle="Ins_Soldier_2"; rank="SERGEANT"; skill=0.53567868; }; class Item2 { position[]={7101.7993,293.99814,7738.792}; azimut=-190.25363; special="NONE"; id=316; side="EAST"; vehicle="Ins_Soldier_2"; rank="CORPORAL"; skill=0.50851804; }; class Item3 { position[]={7099.5703,293.99219,7737.8574}; azimut=-190.25363; special="NONE"; id=317; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; class Item4 { position[]={7097.3047,293.98868,7736.7432}; azimut=-190.25363; special="NONE"; id=318; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.44255555; }; }; }; class Item49 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={7025.8735,294.00119,7653.3008}; azimut=-139.16701; special="NONE"; id=319; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.5317989; init="nul=[this,""area2""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={7032.2412,293.99881,7651.8291}; azimut=-139.16701; special="NONE"; id=320; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={7030.1831,293.99658,7653.6953}; azimut=-139.16701; special="NONE"; id=321; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41151375; }; class Item3 { position[]={7028.3491,293.99548,7655.0156}; azimut=-139.16701; special="NONE"; id=322; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33391088; }; class Item4 { position[]={7026.355,293.99319,7656.3018}; azimut=-139.16701; special="NONE"; id=323; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.29510882; }; class Item5 { position[]={7024.3926,293.9906,7657.2676}; azimut=-139.16701; special="NONE"; id=324; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; }; }; class Item50 { side="EAST"; class Vehicles { items=6; class Item0 { position[]={7149.4033,293.991,7656.7344}; azimut=-198.735; special="NONE"; id=325; side="EAST"; vehicle="Ins_Soldier_CO"; leader=1; rank="SERGEANT"; skill=0.5317989; init="nul=[this,""area2""] execVM ""scripts\upsmon.sqf"";"; }; class Item1 { position[]={7153.8965,293.9953,7661.4775}; azimut=-198.73471; special="NONE"; id=326; side="EAST"; vehicle="Ins_Soldier_GL"; rank="CORPORAL"; skill=0.43867481; }; class Item2 { position[]={7151.2451,293.9942,7660.6489}; azimut=-198.73471; special="NONE"; id=327; side="EAST"; vehicle="Ins_Soldier_MG"; rank="CORPORAL"; skill=0.41151375; }; class Item3 { position[]={7149.1797,293.99298,7659.7354}; azimut=-198.73471; special="NONE"; id=328; side="EAST"; vehicle="Ins_Soldier_AR"; rank="CORPORAL"; skill=0.33391088; }; class Item4 { position[]={7147.0591,293.99155,7658.6709}; azimut=-198.73471; special="NONE"; id=329; side="EAST"; vehicle="Ins_Soldier_AT"; skill=0.29510882; }; class Item5 { position[]={7145.2324,293.99002,7657.4658}; azimut=-198.73471; special="NONE"; id=330; side="EAST"; vehicle="Ins_Soldier_1"; skill=0.24854648; }; }; }; class Item51 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={7072.9624,293.98999,7682.3218}; azimut=70.786598; special="NONE"; id=331; side="EAST"; vehicle="BMP2_HQ_INS"; leader=1; rank="SERGEANT"; skill=0.4658367; init="nul=[this,""area2"",""reinforcement""] execVM ""scripts\upsmon.sqf""; if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; }; }; class Item52 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={6064.0664,300.99344,7765.0898}; azimut=32.437599; special="NONE"; id=332; side="EAST"; vehicle="BMP2_HQ_INS"; leader=1; rank="SERGEANT"; skill=0.4658367; init="nul=[this,""area1"",""reinforcement""] execVM ""scripts\upsmon.sqf""; if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; }; }; class Item53 { side="GUER"; class Vehicles { items=16; class Item0 { position[]={4765.582,267.43005,6738.5991}; azimut=-368.81561; special="NONE"; id=346; side="GUER"; vehicle="BMP2_Gue"; rank="SERGEANT"; skill=0.62492323; }; class Item1 { position[]={4766.4761,267.26703,6731.6899}; azimut=-369.29932; special="NONE"; id=347; side="GUER"; vehicle="BRDM2_Gue"; rank="CORPORAL"; skill=0.53567868; }; class Item2 { position[]={4767.7261,267.03552,6724.1191}; azimut=-369.72388; special="NONE"; id=348; side="GUER"; vehicle="BRDM2_Gue"; rank="CORPORAL"; skill=0.53567868; }; class Item3 { position[]={4762.585,267.53406,6745.52}; special="CARGO"; id=349; side="GUER"; vehicle="GUE_Commander"; leader=1; rank="LIEUTENANT"; skill=0.7646094; }; class Item4 { position[]={4764.1431,267.53235,6745.5674}; special="CARGO"; id=350; side="GUER"; vehicle="GUE_Soldier_GL"; rank="SERGEANT"; skill=0.54343963; }; class Item5 { position[]={4765.5723,267.53046,6745.5674}; special="CARGO"; id=351; side="GUER"; vehicle="GUE_Soldier_MG"; rank="SERGEANT"; skill=0.54343963; }; class Item6 { position[]={4766.9551,267.52859,6745.5674}; special="CARGO"; id=352; side="GUER"; vehicle="GUE_Soldier_AR"; rank="CORPORAL"; skill=0.46195596; }; class Item7 { position[]={4768.2461,267.52689,6745.5674}; special="CARGO"; id=353; side="GUER"; vehicle="GUE_Soldier_AR"; rank="CORPORAL"; skill=0.43091512; }; class Item8 { position[]={4762.5303,267.52753,6744.6934}; special="CARGO"; id=354; side="GUER"; vehicle="GUE_Soldier_AT"; rank="CORPORAL"; skill=0.43091512; }; class Item9 { position[]={4763.8965,267.52591,6744.7197}; special="CARGO"; id=355; side="GUER"; vehicle="GUE_Soldier_AT"; rank="CORPORAL"; skill=0.43091512; }; class Item10 { position[]={4765.3896,267.52292,6744.5928}; special="CARGO"; id=356; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item11 { position[]={4766.5781,267.52191,6744.6675}; special="CARGO"; id=357; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item12 { position[]={4767.7427,267.51956,6744.5679}; special="CARGO"; id=358; side="GUER"; vehicle="GUE_Soldier_2"; skill=0.36495173; }; class Item13 { position[]={4762.5054,267.51947,6743.6816}; special="CARGO"; id=359; side="GUER"; vehicle="GUE_Soldier_Medic"; skill=0.36495173; }; class Item14 { position[]={4763.9473,267.51733,6743.6563}; special="CARGO"; id=360; side="GUER"; vehicle="GUE_Soldier_GL"; skill=0.36495173; }; class Item15 { position[]={4764.9844,267.51614,6743.6816}; special="CARGO"; id=361; side="GUER"; vehicle="GUE_Soldier_MG"; skill=0.43867481; }; }; class Waypoints { items=4; class Item0 { position[]={4766.1392,267.61752,6763.1792}; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win1"; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={5551.4551,308.70615,7280.6763}; combatMode="YELLOW"; combat="AWARE"; synchronizations[]={3}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={6117.0933,300.99612,7781.9517}; placement=300; type="SAD"; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win2"; synchronizations[]={1}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7089.1943,293.98999,7689.3872}; placement=300; type="SAD"; combatMode="RED"; formation="FILE"; speed="NORMAL"; combat="AWARE"; expCond="!alive win3"; class Effects { }; showWP="NEVER"; }; }; }; class Item54 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={7147.2803,272.50543,5967.3589}; azimut=-238.017; special="NONE"; id=236; side="EAST"; vehicle="T72_INS"; leader=1; rank="CORPORAL"; skill=0.71804732; }; }; class Waypoints { items=11; class Item0 { position[]={7170.3296,274.39319,5950.936}; combatMode="RED"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7253.9424,277.40628,5845.1982}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7258.688,285.92999,5694.9829}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7254.5547,271.97623,5576.311}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7362.8271,249.6953,5420.084}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7020.3477,290.49615,5568.6743}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={6926.8848,310.68784,5593.2568}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6905.603,324.60181,5663.2686}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6752.6826,332.81198,5829.8555}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6656.3677,331.34607,5873.312}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6562.9951,321.99084,6126.3672}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item55 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={7133.0562,271.76978,5976.8521}; azimut=-236.355; special="NONE"; id=237; side="EAST"; vehicle="T72_INS"; leader=1; rank="CORPORAL"; skill=0.72968781; init="if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; }; class Waypoints { items=11; class Item0 { position[]={7153.9829,273.01389,5962.312}; combatMode="RED"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7254.9546,277.40317,5845.3125}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7258.9253,285.92999,5694.2441}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7253.9214,272.02362,5576.498}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7362.8252,249.69588,5420.4238}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7021.1094,290.34708,5568.5586}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={6926.3599,310.93777,5593.939}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6905.3062,324.73154,5664.0342}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6752.7417,332.81009,5829.2617}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6656.0942,331.34531,5873.1152}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6561.3462,321.99185,6127.2554}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item56 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={7113.1797,271.67422,5988.9268}; azimut=126.248; special="NONE"; id=238; side="EAST"; vehicle="ZSU_INS"; leader=1; rank="SERGEANT"; skill=0.81117141; init="if ((paramsArray select 0) == 0) then {{deleteVehicle _X} forEach (crew this)+[this]};"; }; }; class Waypoints { items=12; class Item0 { position[]={7137.1655,271.94891,5973.978}; combatMode="RED"; speed="NORMAL"; combat="AWARE"; class Effects { }; timeoutMin=300; timeoutMid=300; timeoutMax=300; showWP="NEVER"; }; class Item1 { position[]={7208.0591,277.68518,5918.3481}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={7254.3682,277.39972,5844.9834}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={7257.4751,285.92999,5693.7441}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={7253.3281,271.94888,5575.981}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={7363.3936,249.69435,5421.2036}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={7019.6772,290.58139,5567.4883}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={6926.9102,310.81421,5593.9121}; class Effects { }; showWP="NEVER"; }; class Item8 { position[]={6904.8965,324.81131,5664.3813}; class Effects { }; showWP="NEVER"; }; class Item9 { position[]={6753.6367,332.80603,5829.5391}; class Effects { }; showWP="NEVER"; }; class Item10 { position[]={6657.7236,331.3837,5873.2676}; class Effects { }; showWP="NEVER"; }; class Item11 { position[]={6560.5522,321.99097,6128.71}; placement=150; type="SAD"; class Effects { }; showWP="NEVER"; }; }; }; class Item57 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={6617.8677,374.38651,5558.1592}; id=362; side="LOGIC"; vehicle="ACE_Required_Logic"; leader=1; lock="UNLOCKED"; skill=0.60000002; }; }; }; class Item58 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={6636.0591,370.15604,5559.1094}; id=363; side="LOGIC"; vehicle="ACE_Wounds_Logic"; leader=1; lock="UNLOCKED"; skill=0.60000002; }; }; }; class Item59 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={6646.7837,367.40536,5559.1094}; id=364; side="LOGIC"; vehicle="ACE_Wounds_EveryoneMedic"; leader=1; lock="UNLOCKED"; skill=0.60000002; }; }; }; }; class Vehicles { items=31; class Item0 { position[]={6543.4551,393.04745,5604.5352}; azimut=180; id=2; side="EMPTY"; vehicle="GuerillaCacheBox"; skill=0.60000002; text="ammobox"; init="clearWeaponCargo this; clearMagazineCargo this; null = this execVM ""ammo.sqf"";"; }; class Item1 { position[]={6414.1587,322.00134,6206.7568}; azimut=143.31592; id=15; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item2 { position[]={6580.9966,339.52411,6242.7607}; azimut=153.62433; id=17; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item3 { position[]={6569.626,339.3634,6237.4844}; azimut=153.62433; id=19; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item4 { position[]={6351.1431,326.53867,6279.5088}; azimut=300; id=21; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item5 { position[]={6360.5527,327.53369,6294.3643}; azimut=300; id=22; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item6 { position[]={6564.8154,343.56088,6277.3105}; azimut=340; id=23; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item7 { position[]={6403.3872,322.00534,6199.9482}; azimut=143.31592; id=24; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item8 { position[]={6552.8115,342.992,6268.3867}; azimut=340; id=26; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item9 { position[]={6543.9736,392.93118,5600.7314}; azimut=180; id=27; side="EMPTY"; vehicle="Offroad_DSHKM_Gue"; skill=0.60000002; }; class Item10 { position[]={6615.436,321.97421,5982.6836}; azimut=-21.237329; id=28; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item11 { position[]={6602.917,321.95822,5978.7031}; azimut=-21.237329; id=30; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.60000002; }; class Item12 { position[]={6659.0103,330.99677,5886.6733}; azimut=135; id=32; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item13 { position[]={6642.6045,330.67746,5880.0967}; azimut=135; id=33; side="EMPTY"; vehicle="Fort_Barricade"; skill=0.60000002; }; class Item14 { position[]={6811.127,331.80472,5767.7783}; id=119; side="EMPTY"; vehicle="Explosive"; skill=0.60000002; text="bomb"; }; class Item15 { position[]={6817.834,331.72067,5760.626}; id=120; side="EMPTY"; vehicle="Explosive"; skill=0.60000002; text="bomb_1"; }; class Item16 { position[]={6823.71,331.64856,5754.5591}; id=121; side="EMPTY"; vehicle="Explosive"; skill=0.60000002; text="bomb_2"; }; class Item17 { position[]={6829.2676,331.5502,5749.0674}; id=122; side="EMPTY"; vehicle="Explosive"; skill=0.60000002; text="bomb_3"; }; class Item18 { position[]={6518.7202,360.67862,5530.1846}; id=123; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="win1"; }; class Item19 { position[]={6529.8521,364.79285,5530.1846}; id=124; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="win2"; }; class Item20 { position[]={6541.187,368.78018,5530.1636}; id=125; side="EMPTY"; vehicle="HeliHEmpty"; skill=0.60000002; text="win3"; }; class Item21 { position[]={6013.5586,307.66714,7680.4741}; azimut=-328.46423; special="NONE"; id=239; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item22 { position[]={6378.3521,287.17551,7531.6865}; azimut=-417.24612; special="NONE"; id=248; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item23 { position[]={6376.9487,287.06808,7514.1104}; azimut=-417.24612; special="NONE"; id=254; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item24 { position[]={5922.9092,307.49619,8017.7241}; azimut=-213.68196; special="NONE"; id=256; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item25 { position[]={6910.9058,292.5289,7640.5894}; azimut=-295.13199; special="NONE"; id=285; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item26 { position[]={6916.5679,292.6275,7626.4282}; azimut=-295.13199; special="NONE"; id=291; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item27 { position[]={7118.9331,276.89719,7459.4971}; azimut=-368.0834; special="NONE"; id=293; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item28 { position[]={7134.7705,276.94516,7462.3608}; azimut=-368.0834; special="NONE"; id=299; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item29 { position[]={7332.7847,303.09055,7650.9434}; azimut=-422.50232; special="NONE"; id=301; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; class Item30 { position[]={7339.2114,303.30167,7665.6729}; azimut=-422.50232; special="NONE"; id=307; side="EMPTY"; vehicle="Land_fortified_nest_small"; skill=0.2; }; }; class Markers { items=17; class Item0 { position[]={6555.3604,413.67953,5600.335}; name="start"; text="Sniping Location"; type="mil_dot"; colorName="ColorGreen"; }; class Item1 { position[]={6549.6631,321.60895,6066.9351}; name="defend"; text="defend"; type="Empty"; }; class Item2 { position[]={6538.3379,322,6128.5703}; name="area0"; markerType="ELLIPSE"; type="Empty"; colorName="ColorGreen"; fillName="Border"; a=400; b=200; angle=58.579899; drawBorder=1; }; class Item3 { position[]={6847.7524,331.10355,5732.0181}; name="attack"; text="Incoming Armor/Mechanized Vehicles"; type="mil_arrow2"; colorName="ColorRed"; angle=-44.154598; }; class Item4 { position[]={6531.4492,362.49332,6506.0542}; name="attack_1"; text="Incoming Infantries"; type="mil_arrow2"; colorName="ColorRed"; angle=-167.54057; }; class Item5 { position[]={6199.8691,323.43073,6432.1309}; name="attack_1_1"; text="Incoming Light Vehicles"; type="mil_arrow2"; colorName="ColorRed"; angle=-209.3196; }; class Item6 { position[]={6465.417,328.42252,6190.666}; name="boss"; text="Protect Vyshnoye"; type="mil_dot"; colorName="ColorGreen"; }; class Item7 { position[]={6143.9214,300.99759,7756.8071}; name="target"; markerType="ELLIPSE"; type="Empty"; colorName="ColorRed"; fillName="Cross"; a=350; b=300; }; class Item8 { position[]={7112.9937,293.99591,7752.5186}; name="target_1"; markerType="ELLIPSE"; type="Empty"; colorName="ColorRed"; fillName="Cross"; a=250; b=200; }; class Item9 { position[]={6148.6401,300.98999,7718.9038}; name="stary"; type="Empty"; }; class Item10 { position[]={7131.9199,293.98999,7693.0591}; name="novy"; type="Empty"; }; class Item11 { position[]={6811.1196,331.80536,5767.8525}; name="bomb"; text="IED"; type="mil_dot"; colorName="ColorBlack"; }; class Item12 { position[]={6817.8306,331.72119,5760.7197}; name="bomb_1"; type="mil_dot"; colorName="ColorBlack"; }; class Item13 { position[]={6823.7017,331.64941,5754.7598}; name="bomb_1_1"; type="mil_dot"; colorName="ColorBlack"; }; class Item14 { position[]={6829.1387,331.5524,5749.1392}; name="bomb_1_2"; type="mil_dot"; colorName="ColorBlack"; }; class Item15 { position[]={6135.2236,301,7755.8047}; name="area1"; markerType="ELLIPSE"; type="Empty"; fillName="Border"; a=400; b=350; drawBorder=1; }; class Item16 { position[]={7111.5269,293.98071,7756.083}; name="area2"; markerType="ELLIPSE"; type="Empty"; fillName="Border"; a=300; b=250; drawBorder=1; }; }; class Sensors { items=12; class Item0 { position[]={6528.5015,377.99622,5555.0225}; a=0; b=0; interruptable=1; age="UNKNOWN"; expCond="!alive p1 && !alive p2 && !alive p3 && !alive p4 && !alive p5 && !alive p6 && !alive p7 && !alive p8 && !alive p9 && !alive p10 && !alive p11 && !alive p12 && !alive p13"; class Effects { track="Track21_Rise_Of_The_Fallen"; titleType="TEXT"; titleEffect="BLACK FADED"; title="YOU HAVE DIED!! MISSION FAILED!!"; }; }; class Item1 { position[]={6528.4595,376.21576,5552.3901}; a=0; b=0; timeoutMin=10; timeoutMid=10; timeoutMax=10; interruptable=1; type="END3"; age="UNKNOWN"; expCond="!alive p1 && !alive p2 && !alive p3 && !alive p4 && !alive p5 && !alive p6 && !alive p7 && !alive p8 && !alive p9 && !alive p10 && !alive p11 && !alive p12 && !alive p13"; expActiv="forceEnd;"; class Effects { }; }; class Item2 { position[]={6517.5591,364.32791,5656.6753}; a=0; b=0; timeoutMin=10; timeoutMid=10; timeoutMax=10; interruptable=1; age="UNKNOWN"; expCond="true"; class Effects { track="Track09_Movement_To_Contact"; }; }; class Item3 { position[]={6531.6074,367.25027,5656.9106}; a=0; b=0; activationBy="ALPHA"; interruptable=1; age="UNKNOWN"; text="Trigger IEDs"; expActiv="Bomb1=""BO_GBU12_LGB"" createVehicle [(getPos bomb select 0),(getPos bomb select 1),0]; Bomb2=""BO_GBU12_LGB"" createVehicle [(getPos bomb_1 select 0),(getPos bomb_1 select 1),0]; Bomb3=""BO_GBU12_LGB"" createVehicle [(getPos bomb_2 select 0),(getPos bomb_2 select 1),0]; Bomb4=""BO_GBU12_LGB"" createVehicle [(getPos bomb_3 select 0),(getPos bomb_3 select 1),0]; deleteVehicle bomb; deleteVehicle bomb_1; deleteVehicle bomb_2; deleteVehicle bomb_3;"; class Effects { }; }; class Item4 { position[]={6537.1953,378.22333,5555.0444}; a=0; b=0; interruptable=1; age="UNKNOWN"; expCond="!alive win1 && !alive win2 && !alive win3"; class Effects { track="Track08_Harvest_Red"; titleType="TEXT"; title="Vyshnoye has been saved. Stary Sobor has been Liberated. Novy Sobor has been liberated. MISSION ACCOMPLISHED!!"; }; }; class Item5 { position[]={6537.1953,377.4989,5552.3335}; a=0; b=0; timeoutMin=20; timeoutMid=20; timeoutMax=20; interruptable=1; type="END2"; age="UNKNOWN"; expCond="!alive win1 && !alive win2 && !alive win3"; expActiv="forceEnd;"; class Effects { }; }; class Item6 { position[]={6494.9097,355.51065,5658.749}; a=0; b=0; timeoutMin=300; timeoutMid=300; timeoutMax=300; interruptable=1; age="UNKNOWN"; expCond="true"; class Effects { track="Short01_Defcon_Three"; titleType="TEXT"; titleEffect="PLAIN DOWN"; title="GET READY!! HERE THEY COME!!!"; }; }; class Item7 { position[]={6557.8442,324.57361,5855.5977}; a=2000; b=1500; activationBy="EAST"; activationType="NOT PRESENT"; interruptable=1; age="UNKNOWN"; expActiv="""3a"" objStatus ""DONE""; tskobj_3a setTaskState ""SUCCEEDED""; obj_3a = true; publicVariable ""obj_3a""; ""3b"" objStatus ""DONE""; tskobj_3b setTaskState ""SUCCEEDED""; obj_3b = true; publicVariable ""obj_3b""; ""3c"" objStatus ""DONE""; tskobj_3c setTaskState ""SUCCEEDED""; obj_3c = true; publicVariable ""obj_3c""; ""3d"" objStatus ""DONE""; tskobj_3d setTaskState ""SUCCEEDED""; obj_3d = true; publicVariable ""obj_3d""; ""3e"" objStatus ""DONE""; tskobj_3e setTaskState ""SUCCEEDED""; obj_3e = true; publicVariable ""obj_3e""; ""3f"" objStatus ""DONE""; tskobj_3f setTaskState ""SUCCEEDED""; obj_3f = true; publicVariable ""obj_3f""; ""3g"" objStatus ""DONE""; tskobj_3g setTaskState ""SUCCEEDED""; obj_3g = true; publicVariable ""obj_3g""; ""3h"" objStatus ""DONE""; tskobj_3h setTaskState ""SUCCEEDED""; obj_3h = true; publicVariable ""obj_3h""; ""3i"" objStatus ""DONE""; tskobj_3i setTaskState ""SUCCEEDED""; obj_3i = true; publicVariable ""obj_3i""; ""3j"" objStatus ""DONE""; tskobj_3j setTaskState ""SUCCEEDED""; obj_3j = true; publicVariable ""obj_3j""; ""3k"" objStatus ""DONE""; tskobj_3k setTaskState ""SUCCEEDED""; obj_3k = true; publicVariable ""obj_3k""; ""3l"" objStatus ""DONE""; tskobj_3l setTaskState ""SUCCEEDED""; obj_3l = true; publicVariable ""obj_3l""; ""3m"" objStatus ""DONE""; tskobj_3m setTaskState ""SUCCEEDED""; obj_3m = true; publicVariable ""obj_3m""; deleteVehicle win1;"; class Effects { }; }; class Item8 { position[]={6133.1147,301.02582,7791.5005}; a=500; b=500; activationBy="EAST"; activationType="NOT PRESENT"; interruptable=1; age="UNKNOWN"; expActiv="""2a"" objStatus ""DONE""; tskobj_2a setTaskState ""SUCCEEDED""; obj_2a = true; publicVariable ""obj_2a""; ""2b"" objStatus ""DONE""; tskobj_2b setTaskState ""SUCCEEDED""; obj_2b = true; publicVariable ""obj_2b""; ""2c"" objStatus ""DONE""; tskobj_2c setTaskState ""SUCCEEDED""; obj_2c = true; publicVariable ""obj_2c""; ""2d"" objStatus ""DONE""; tskobj_2d setTaskState ""SUCCEEDED""; obj_2d = true; publicVariable ""obj_2d""; ""2e"" objStatus ""DONE""; tskobj_2e setTaskState ""SUCCEEDED""; obj_2e = true; publicVariable ""obj_2e""; ""2f"" objStatus ""DONE""; tskobj_2f setTaskState ""SUCCEEDED""; obj_2f = true; publicVariable ""obj_2f""; ""2g"" objStatus ""DONE""; tskobj_2g setTaskState ""SUCCEEDED""; obj_2g = true; publicVariable ""obj_2g""; ""2h"" objStatus ""DONE""; tskobj_2h setTaskState ""SUCCEEDED""; obj_2h = true; publicVariable ""obj_2h""; ""2i"" objStatus ""DONE""; tskobj_2i setTaskState ""SUCCEEDED""; obj_2i = true; publicVariable ""obj_2i""; ""2j"" objStatus ""DONE""; tskobj_2j setTaskState ""SUCCEEDED""; obj_2j = true; publicVariable ""obj_2j""; ""2k"" objStatus ""DONE""; tskobj_2k setTaskState ""SUCCEEDED""; obj_2k = true; publicVariable ""obj_2k""; ""2l"" objStatus ""DONE""; tskobj_2l setTaskState ""SUCCEEDED""; obj_2l = true; publicVariable ""obj_2l""; ""2m"" objStatus ""DONE""; tskobj_2m setTaskState ""SUCCEEDED""; obj_2m = true; publicVariable ""obj_2m""; deleteVehicle win2;"; class Effects { }; }; class Item9 { position[]={7047.479,295.92963,7767.5469}; a=500; b=500; activationBy="EAST"; activationType="NOT PRESENT"; interruptable=1; age="UNKNOWN"; expActiv="""1a"" objStatus ""DONE""; tskobj_1a setTaskState ""SUCCEEDED""; obj_1a = true; publicVariable ""obj_1a""; ""1b"" objStatus ""DONE""; tskobj_1b setTaskState ""SUCCEEDED""; obj_1b = true; publicVariable ""obj_1b""; ""1c"" objStatus ""DONE""; tskobj_1c setTaskState ""SUCCEEDED""; obj_1c = true; publicVariable ""obj_1c""; ""1d"" objStatus ""DONE""; tskobj_1d setTaskState ""SUCCEEDED""; obj_1d = true; publicVariable ""obj_1d""; ""1e"" objStatus ""DONE""; tskobj_1e setTaskState ""SUCCEEDED""; obj_1e = true; publicVariable ""obj_1e""; ""1f"" objStatus ""DONE""; tskobj_1f setTaskState ""SUCCEEDED""; obj_1f = true; publicVariable ""obj_1f""; ""1g"" objStatus ""DONE""; tskobj_1g setTaskState ""SUCCEEDED""; obj_1g = true; publicVariable ""obj_1g""; ""1h"" objStatus ""DONE""; tskobj_1h setTaskState ""SUCCEEDED""; obj_1h = true; publicVariable ""obj_1h""; ""1i"" objStatus ""DONE""; tskobj_1i setTaskState ""SUCCEEDED""; obj_1i = true; publicVariable ""obj_1i""; ""1j"" objStatus ""DONE""; tskobj_1j setTaskState ""SUCCEEDED""; obj_1j = true; publicVariable ""obj_1j""; ""1k"" objStatus ""DONE""; tskobj_1k setTaskState ""SUCCEEDED""; obj_1k = true; publicVariable ""obj_1k""; ""1l"" objStatus ""DONE""; tskobj_1l setTaskState ""SUCCEEDED""; obj_1l = true; publicVariable ""obj_1l""; ""1m"" objStatus ""DONE""; tskobj_1m setTaskState ""SUCCEEDED""; obj_1m = true; publicVariable ""obj_1m""; deleteVehicle win3;"; class Effects { }; }; class Item10 { position[]={5551.0454,307.7652,7307.9448}; a=0; b=0; activationBy="BRAVO"; interruptable=1; age="UNKNOWN"; text="NAPA, Attack Stary Sobor"; class Effects { }; synchronizations[]={2,3}; }; class Item11 { position[]={6145.6538,302.40714,7809.8398}; a=0; b=0; activationBy="CHARLIE"; interruptable=1; age="UNKNOWN"; text="NAPA, Attack Novy Sobor"; class Effects { }; synchronizations[]={0,1}; }; }; }; class Intro { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=8384128; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; class OutroWin { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=864760; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; class OutroLoose { addOns[]= { "chernarus" }; addOnsAuto[]= { "chernarus" }; randomSeed=13473929; class Intel { startWeather=0.25; forecastWeather=0.25; year=2008; month=10; day=11; hour=9; minute=20; }; }; Overview

Provide cover fire and sniper shots for the defenders of Vyshnoye then assist the resistant fighters later in the liberation of Stary and Novy Sobor.

by Phantom Six

GGATCGVAGGATGALFGGATSFFO@pw~:I~>Ǫ^ǫu~^Ǫ~^.ޞ^Ϫ_^ϪU^Ϩ^ מ~ ՞^x[^U^U^~ת~>*^ϯ^ϯ ~Ϟש >Ǩ~>u^>^>^ǀ>^ǪZ~>~>>^ϪZVZ~^U}*^UU^^*~ןꪂת~~מתUת~תת~׫~ת_~~~~Ϫ~^^Ͽ^~]~ߟ^~_ *_~ϪUUe~~__~_ϫ^_~ϩ^^^z~_ǿ:/~?>_j^ ~>NJ^(^>^>~>ǺWW~>ǺWUU~>Ǻ~> U~>Ǡ}^>^>Ǫu^>ǀ^ ^^ - ^_^^ϥ^>Ǫ^> ^^վ^>ꪪ^>~>ǿ~>~^ϕ ~ߞ~~מϫ~מת~ߞ~~ߞU爵*ߞߟ׿ןߪ~ןߪ~ן***^ׯ~ϊꫪ~ש~ߟ~___^^~_Ϫ~^~ϟ~ϟ~W~U~z{~_~_ ~_(^^^~_ǯWW^Ǫ ^? _^_>jk_}>ǩ_׿^^>տ^^>^ ^>UV>^^>^>UU^>Ǖ~>ǯ~>/^^ǠU>^~>~>Ǫ*~>^U^^~~__Ϻ~ׯW~Ͽ ߞUߟ׫~נߟׯמߪןߪ~׿_׀Ϫ_~ןϠϪ~ת~ϟת~_^^^ϭ~z~]iמǪ~U[[~^~^Ͽ^^Ϫ^ǟϠ~_*^W_^Z_>_^ _~*_^>>ZV_>^>ߵ^>*~>^~ ~>^>ǫ*^>Ϫ^>^>^>>^Ϫ^>Ǫ~^miU>^^^ϪVjV~^~׀~מꪪ~ן~ןϯ~ןϪ~ןϪ*~מϪ~ת~Ϫߪ*~ߪמߪZZמUמU ~Ϫ_Ϟץ~U_מտ~ϿמϺ~ןϪ~~ןϫ~ןϯ~~~~~_ϮǪ~_Ǣ^^ǿ^^~_Ǫz~_^UUW_^^~__^_^^>^> ~>~>~>ǿ~>Ǫ~^~^W_^>^^>Ǫ~>~>*~>~>^^~>*~^+^~מϺ~~~ןϪ~ןϪ~ןϪ~~ןϪ~ן׊~~ןת_~Ϫ~ץ*~^Ϫ_^^~WWU~~_W~]~~~ת~ߟ~מǪמǪ~ϟϪ~Ǫ~^ǟϪ^ ~ǵ^^]_~Ϣ~_ǻWU~__^^ϩ_~_^>ן^*^^~?਀^_~ǯ^=~^^~*ZU~^*^~^~^ ~>**~~*~ןϿ*_Ϫ~ׯU՟~Ͼ~ןϫ~ןϪ~Ϫ_~ןϪ~ןϪ_Ϫ~ןϪ~ןϪ~ן*~ןϨϪ^Ϫ~_~U^^_뿪~~W_ꪪ~]U~ϟ׀מ_מU~ϟϪ ~ਪǫǪϞ ~﫺~~ǪU^ǿ^W^ǥ(^ǯ ^lj ^>_>^~WW~ןϪ~מ^~ટ^UU_~ZZUU~UU~ממ뫫*~~ן~~ןϪת~}~_Ϯ~~~~__~~ןϪ~ןϨ~ןϪ~ϟת~~~W_~_Ϩ _Ͽ~~~ϯממממ~__~Ϫ~Ǡ~Ϫ~~Ǫ~ǟϪ~~ݟ_֟~}^_~U~Wz___^_~_꯯^_תߞ⢾~ꪞϪ~*ϫ*~ߞUן*Ϫ~_Ϟץמϯ~ןϪ~~ϟߪ~j~ןϾ~Ͽ__~_Ϫ_~Ujj~~מ~~~_~U~Ϟת~~מ~ϟת* ~Ͼ___Ϫ~ϟ~_ꪞǯկ~ǟϪ~ǟϪ~׿~~^~z_ǿ ǞϪUU+.~ϿϪמoǪ~VǞ_ǟ__^>Ǫ~__ߟת^~׫ן*  ~߾ꪞמߪ~몞ןߨמji߿蠪ߞ^__ ׫ߟUUꨪ~WW_*_מϪ_ϫ~ןϪמ~ϟϪ~ߟ~ϟ*^~~~~W~U~~Ͽߺ՟~_u~ߟ~Z~Ͽj~Z_~^Ϫ_ǯ~ںޞ_ǪϪ~Ǫ~ן~.^_(~ǽ~ǯ~ϟ*Ϟ_ǀǢz]_ਪ_^_Ǩ^Ǫ^뫯*Jߞ}Uꪾߞׯ׮~׾ߪ~׾ߟת+UߞתWߞ_UϪ~zz^ϟתU~ϫ +ת‚~~~]U_U~u~u~WWW~~~UU~U~ϟ~~~_~ϯϪս~ϟ~Ϫ ~ϟϪמ~ǟϪVUϞϪUמ~מW~ןן~תןUϞתǠϞ^__Ǫ_^_^Ǫj*2``^UUUj_Uߞߪߞת ߞ׊ߞת߿ߪjߟ׿ߟ׀~תWמꪪ~Ϡ~ϟת~ϟת~Ͽ~~*~ϸ~~ϟϪ~~_~WW~Wս~ϥޟ~ϗ~~~מW~~տממ~תמ~ϟ׊~ϟנϞתZן߿*~ߞUUߞUկߞמߪߞןwwwUןx||~ןUU~Ϫ~ϠjUU__~_~___~LJ!xxWU1l\U)~%ߟߞנwߟנ׿ߪߞ׿ߟ(** ߟתߞWU~מוπמ~~~~ϟת~~տ~__Ϫꪞ_ϯ~~}~_UU~ϟ ~^V~WU~Ϫ~~~ןϪϪ Ϫ מת׿~ߞUU*ߟU諭U__߿ߕjjߞתߞתמzZ^ϞUUϞ*ϟϪj~ǠϞVx___~__UW_]U~%`X-K_1c9~ 1~׸ׂ ׿׀ߞׯUUߟ מת~ϪϪתמϿ~מ~Ϫ~ǟתמϿϵ~Ǫ~Ǫ^Ǡ_**~ϟ/ ^~}~WW~*ϫ ϞתUUUמתUןעߞUߞUߞ_ߟ Uժջߪߪߪ~~W׾ߪߟ]uϟUןϞ* ~~ǟϥǞǪ __ǩ_Ǫ~_Wz^_^_^f)`X\!^oKf!=5)%!ת**~ϟש~ϟת ϠϞZUU~ׯϨ~ת~רמ~~ꂀ~ϯ~W{^_ǀ_ǞϪ_~ϥ%*^^_~ZVhZ~UWϯ__ϋ+*ߞU׿ߨߟ׿ߞߞ﫫ߞWUWߟ ߾ߪj߻ߪߪߺ߾ת_ߟ~ߞת_Uߟ_ןϨWU~ןU~*~ǞϪ^__Ǫ ~_{U^_~?_>>_jj_!\\\\D!8(E!jp!+)7)>מϪUǪ~Ǫ~ן~ϟת~ת~jמ~WמϪממ~ϟר* ~~ϟǿ~z~~~U]~~ϟǪ**+~ϟϪ~~*+ߞU׾ߨXZ׾ߪߞת꪿ߞUߞ/ߟ ߟ稪Wޕ߫߾ߥZZ׾ߩ ׾ת ~Ͽץן__W~Ǡz____^>_UU_>^_z^_>?^oj_>_ $!\XXX)mE!` ?_~UU_?_^*>1PPp^)(]V11E!_61%!f)zp~_~_ꪪ~_~_*^Ǫ__ǿ^Ǫ*~_Ǻ Ǫ ǟϪ~ǯ~ϟת ~ן_מUUממ~ϟתϯ ߞUu׿ߠ`׾ߪת.߿ߕh*տ__uߞy}תߞ.Xq~ZUUU9UAUmc _Ǫ *~?_??]7^)pV1^UU9 UUU>A*UUUA U_k_?[`?n[~)BpTWUJA^hJ!`p)%!Z1j%!(:)^Ǫ^ǟZ_W_^//~}**~* ~ǯמ_*~ןǾתמ~ת~ϟת~ϟתϞתjjϞתUמתjZߞUߟׯ ߾ߥU/_HJW9UGJ/}ߪߪ}UwwU߾窪**WUUD)UU BxUU5 hRd)*HJ96iR9X/ k'BU%ZJ%UUUD)U]D)U>AUU>9_UUZD1UUZ1ZAUZAZ(Ju* RB._,[9 ~W,[9iR9R9HJ9U׉R$!j˪)%!"n1f))bx"WǕ~ǫ~~*~Ǫ ǟתϟϪj~ן~ןWמߜ*J1~UU 1^UU1^UUe1U9U9UIJ^着VUUIBxHJXWURe1UhR9U ZJ`(J9^_9 UUAU(JUHRUߦ9UJUUBWUUHR1wHRD)+5 ce1~Z9(bBW(bBUȭ{HJU Lk(JUbA{b9Lk(JoZAɋ+k9 {RB,U}RA/5/Z9: cHJ ^biR^bhJkkZAhZD)R9[iJ9 XpR9)!)%!As7†)/\^)~ϪןUUU >תj%BXTW1uUU9*UU)JU~9U!Uׅ1U^φ9_Uׅ9UUצ9UUB`^UUiR$!hJ$)k׉R9(R1|jR1 UHJ9WUiR1 %HJ/UUU׭@Kc9ԭZB׬RAUhJBUZHJE1ZR1U RAp_B9>HR9ZJ bJWUxRAhR9ZJ*x KkB/r+kiR5*?LkHJxvlKsB7/ LsiR_,kZ} LsZuLkHRu{ZmsZ%.*,kHBܮZAV0 Z(BU,]UZ9uUR1_iR9%RA}B9&GJA%b'J ^LkHJ shRW({iR}`ZAlshR+ULkhR {ZUmsiRrlsiRjsZ߫lsb/*9{,kk}s k+plsZ ciRTbjR>bZkkLkJJjZiJ/Z(B\zRHBVRD)HJ9"R'B }GJ9oV'J1/X9(JVZHJ]uJ%!XXPf)x^)Ն)%!isR$)/+URe1xx hR1 xGJe)Z1/Z#)xB#)^Z9שRAZA z_(JAU~HR9XWRe97Z'JWuJ(phRA+J9%*(hR9 hJ1UWhJ9* Z9R1^HJ1-*R9*~Z(BaZBr+J9WZ9_Z9bz}A!uHJ9R9Uo'Be1()HJ9V gRE1 ZC){bA#_[ k'JU{HJ5UsZ {(JXx{Z뺣LkZ. {bKz{Zu kR* kZu,ciR?5 ,kZ cRRC cR: ciJVXXJ'BR'B1֨hJ9+ HJ9 HJ1zHJ9{۸HJ9 6'B1 u'BPZrp)u Æ)()pHJ9*R9HJ9v HJ9]l*RAU R9}.Z1Z9~ZA`R9`(Jd1HJ9 (J)(J9ui(J9*HR9ypJ9U(J9 =iJ9HJ9w.iJ9}_ª'BA:ZBU*hR9UVxhJ9HJ9 jR9WhJ9U,HJ1kz@AD)-ZB*b1x^Bd) -9+ZB ^RAhપR9% ZBzKkGJ -LkA _{(J[]LkiR`b,kR=LkZ_U,kZZ9XX,k9 %* cIR 6,kZ?,kR(,kjR^Pbb)J" Z9(pb'B^uhJBchJ9*VhJC) z׈J9뭽HJ1khJ9 _wHJ1^?HJe)@k1%!r^W1r{f)Z(Jp^ cHJ%uZB85ZB_Z9bHJ c(J^. bHJ)\qRA / ZIJkVZ9RB Z$!`xHJ$)UhRA/*HJ9x'JA֖,/R1Z9. ,cIJ cB_R9**!HJ B$!?U(B9 :߫RAU}'B1~B1(WZ9_Ad1B$!{HJe1HJ9'HJ9uRAWkGR9թZBls'JuLk'JR9V,kA ,kHJؾZB`zRd)ZB:LkZ cHJ,ciR_ZAT,kiR -u kIJ^~b9Z^ZAחhJ9J9xzBD1W&BD1.hJB~}}RBHJ9rBHJ1{_(1uz11E!iJ1(iRd)ߪR9R9xxB1.(J1 (ZHJU/WZ9](7R9IJ9 ^iJB?͉R9*(VhJ1PX+iJ9ZBU R9ոHJA _R1R1WV:(B!(R1HJ1 UHJ1_hBD)_ iJ$)R9UiR9UUiR1׸ c9Lc9pRd1__ަ9!AD)-+*A1\Ae1(hRAՍbA{b9ZAKbB?Z9 cB*UlkBU c1,kGJ U,chRu ciR.hRZ`UZIJ^R9ZJ85LcHJܧ cHJqKZ9/jR1'Bd1xHJ1 HJ1%RBmRB*\hJ9^V'B%!^T\1r1RBTHJ9Z9U/'B9*tR9^wb9- c(B^ cBZ9WZ9_W?iR9 UZAcjR9*uR9GJA(5iJB>R9jWR$)p9D)Ae)K HJ!^ BE)^UtB$!RWR_URUU(BuuU9AUU1aWU1AUWA1U1 *JAURRE1zzAD1 zHR9AHJbiRAx^HJ9//RA_b #ZBR1ޖ+iR9z`ZA?%bB*"+cRbZHJZJb+c(JkzZB) ciRbhJ)]ZIB`R9jR9z}9#)%B1*+?-HJ9'B1hJC) hJpp)Xտ†)z*RA{ ce1*jLkiRU_R9ԿpzZBW ls(J LkZ,kZ寖"LkjRU_bHJ(0,cIR߾ cBVZR9W/HJ9VHJe1WR1iR9 HJ1wZRD)/,c1R \iRWU1AWan7z& 騂!(!V^\b!7bzꨢb!-݂!+1!i9 5hJ1_WpBD)ZHJ1iR9U}HJ1 XZe)W(B1ډR1Z9ZA+b9ZHJZ(J|]Z(BR9 觩R1iJD)\Re)R9 [9iJ1XZ1-U?R'B( R1WhRd)+URE)``je!f).biR cAxZ9WRA ^ cHR];sHR=: msZ`8lsb)5UlsZh`bRJZZ %R ch c1~(J1뵆1B%*%Bf)*% IJ1*iJe1P/(B`R^UU$)"#u]D)axU!a{K!W/!A!a+A ר!A^PWb(r{/!\!-"ab>7hJbHJD)W(HJD)(Be1x(IRe1ժ HJe1XHJ1X;jZe)*ZB]ZB[* Z'B7, ZhJ^RBzbR9*{R9R(B!; Z(B(Z(B~lxiJBb HJD)x~(J_UHJ hJ9RAzc'B9,HJe)@11%!zUBf1z]R9mR9UZ9/+k(Ju|,kB; cA U c9X cZ..LLkZݏ ciRZZ(B`pxiJe1zz9 ~1 (B1U}9D))'iJ#)*B\$)^¯Ak5$)$)b$)% E)Rˮa<@$!aZi#!AmA!\(%![_! A׿ +A.A%$A_}-B-(B9HZe)iR9* iR9,iRe)^pR9 -Z(B+-RB תZ'B8ZA_Z(BZBUURA R9RB SZ9߯ Z(BZRBUz_'B$)XHJ1--R9R1XR9*iJB8}{(BE!WT֧1ꀪZ1_*iR1{<(Je1">iR1ViR9}diJ95 ce1W*,c9؜bIJ6^bIJJBZ(B Z9pX^(BE)^r1!x(-9!9E)9D)Z*9\xe1e1a܆1 1z\D) e1! PE)*ڸ$!i`%!a-UD)A"$!bpAV~!!_^b{z!:!U/^b<9'7?(B%)*BE)&'RAZ%RA 뀉R9 RB*R'B,+hJ1xp R9.R9 R(B*ZHJZBu ZA ZBUR9zR9}R9}B9*V>B1w'B9iHJe) ߨHJ9UHJ9uRE!WW^p1E!o/Z(J-kiR9BRA b(J*b(B_ZHJ ݷZIR'Z(B~ZBzu^Z1bHJhB$)B~IJ!U/(Be1^IJ1mi(Je1Ϸ9D)`Ʌ1p9  9)`e1]?1 E)p1㍮E) b!A֮A7!A{!!Zj<A}\xa!rU_!*گ!5Ub!RZ!%1#)-%9E)HJ!(B1.yR1iR9Z(B(uuZ(Bz}HJ9"RB_hJ9W(HJ1 iJBVhJAbZA7͉ZHJ ߻RB(~iJ9pWhJ9*:UGJ1T^\hJ9]hJ1R9?*R9jRB bE!j)%!~¨bHJu^RBp R(B-iRe1`HJe1ޥZ(J.W}ZiR}}Z(JZ(BE)RBZ'BE).UB1uUB1 (B19 jh1BVjR9cu919 ph009! *89 HH1BCaye11bme) 鱉?e1!u\E)b^~$!b !{ȸAk!A!^'b!}aw!b%!/a!*9b5=%59D)hjiJ!^'BD)W9E)B9."7HJD)^9!(7 *RB5 cHJª]ZHJ(^UR(B(iJ9hRB* ZHJRHJ Z(B]yhJ9_ޠR9UR1wHJ9W~B1U 91X 'B1-^ c(J##)bBkjk(IB%!UU cBWLk(BUZBՉR(B\_^ZBժZA^Z(BR1 zHJ1HJe1ׯiJe)V9E).B9pWS]B90eB$)zHJ9-+Z9^(B9Xj,Be1P(B!6A$!b (9&'9hpXx1 1|zSE)$)a*czpE)!)!bp`A( 7B^(A/!Wpz!_cb!:-Pb!b!W1b55Յ1$!@py11D)59E)+(V9D)_iR!j *Z9پR9Z9% [A\\R9*ՊR9Z(B?W}R: 'RB U^R9 wHJ9Z_HJ1UBd)w'B1 UU'B1hJ1 iJ1_R9ÀkY cAIJ%!|\R9_R1 Be)(׫ R9 _Z9.ZBZHJz_R(BBiJ1vB1W 9E)^@9E)z=9D)-*91Voʂ: ҚB1 ?ԉRe1``iJ1)%(Bd1`(J1::B jj9 Ai91}M9p1߽+E)a$)X b$!rz!bת A\A !^_!] b!}s b!뾘!?1b571!k9a1!71E)-/9e)*7hR95%ZBhZ(J»bBR(B-R9R9RBu}rPHJ9 5RIJiR1XHJd)B19)/9E)/B1nB1gHB!IJ1 Re1wHJE). HJe)kB!(Be1&/AD)>BX9!\|/9E1Be1 Te) ɻ%)aX$)k/?E){i~AA^pu!Ղ!_b!(U\b!Tb!kok9B55(Be)i.*R Z9E!% 9e)>zrB1RA -ZiR UwbR cZ. ciJ^h^RBZr(B1^iJ9 }hJ9HJ9yt'B1~(B1UHJe) jHJ1ߢHJ1 }(B1(xHJ9Xr(BD)(B9UR9Uscb$[_rpHJB (խRA'%RAR9޸hJ9X(RBiJ9z|BE)\X_ߥ1E)0yUg1E)1$!\z/9$!='.91791/l9$!&B1wniJD) (B!(JD)4(B$)\BD)%%9)>B X9 XҦ9 1!/ E)(p$)| j6%)Ab!U$)E)U*$)^ $)ժ !AW9A?>B1^(BE)RPPBE)*B1Z9/ZHJժZ9z cR3LciR c(B~BR9XjjhJ1 (B9xB1]?.(J1B1ջHJ9W_'B9b (B9}(B9?uB1ڢhJ9'B9(B9bzVHJ9(J%!pbBKHJ9--RB Z(B}_R9*WZB7WUJBHJ1`BE)ꪨ9D)X1E)uWw/1$!U/ 9E)%%B19e1p9E)(BD)?{IJd) -HJ9"˦9!9D)Be1Ȃ9$)69!؅1pX!oֈ!b E)պ$)!ּvE)+E)E)!e)!1!uJW19D).BE)PrcB1 %(J9 ) bHJZiJ7% 0 c(B~, cIJ!/,lkR/*mkZM ,c(BUVp(B1^9191 'B9{9%'B1HJ1B1>*(B1^zB1 -91€B1 VBe) }'B9UhJ9uURE)jjB9R*HJ1iJ95HJ9 wHJ9ej'B9 !'Be1*'B9Ȫw9e)p9e)_p1E)W1e1B1}Be)o9! )B9WoHJD)%HJ9HJ9HJ9H*BD)͏B!B!~XWBE)9e1ڲ9$)&pD)Bpb!բ$)?^$) /5E)7UUU UUUaU_UU 9b*'BE)z}9)kXHJ$!+ .Z9 cRIkK cJ_ύkIJ/McIJ,cjJ:/-{Mc{(B@R1xx91`:e)(立Je1U_Ae) U9E)Be)*91B1+(B95WU(J1u5HJ1* (B1ZP\R1?hJ9iJ9*ZBy u(B1(B1(B1‚B1om(B9^i{:1W`9e)X`1!/\9$)Xz1D)%91U9|`BB$!9D1(ZZB$)ciJ$)ͅ(J9,ewB9¨iJ9{s_W(B$)9!HJ1JJ1.)AD)ژبe1{%).e1Uת2{`Ve1UU(WzW|_| UUIJx@@@9D))9zp9$).>-R9+ ZHJ+ZRH-,kiJuo /{R}j [iJýsR  c c(B(B1\\~ܦ1e)91]59e)Z9e)B1(B9-(}IJ9׫ HJ1_pkBe)u-(B9"(B9XB1V^>Z1:1㞞HJ1UB1XiJ1_^ Re) iJ1W9179$!_9$!1E)z9$)ݿ B1uB1uV'B%)BbzzIB1XZ1UHJE)Wꊢ(B$)]վ9$!'HJ ₪zHJe1hJ%)HJ9_Zpc(B)lCBD) mB1D)0$)UUU5$) wUU|UUU|| U\\߀U|\WU\<ר^W\9+IJ$!@B_9E)- +R9 R(B0R(Bv(ZhJ* R,kUj+kR\UZ(JUZB\R(B"J9ZiJ9UBe)^9e)+9E)B1U(B1VWB1JBe)(B1 ~(BE)UIJD)(B1խiJ1WU*91cHBf)_+*(B1VIJ9 "ZIJ9Be)޷(B1B1b1!^9%!/%1E)(WB$!'B1u(B!(B9ܸ9)~BD)5)iJ9 A!zhBz 9B HJ9V<(B!'IJ$)jj`1#)\'9D)ckr,c$)U=| |UU\ߪW|\U|<נ\\U\<ߪ \<תW\<תUUW\HJ1uR1W_iJ1WݠB15HJ9u:{R1߉J9riJ9WiJ1(}R1Wx:)Ae1U#9e)w9e)zB1-:W9e)WU9e)߫)(B1 m_(Be)UzA&B1'B$)xxE)*^9%)}9E)J9D)`9!qa1 @iJD)-ՉRD)|HB{/R9} Խ9U1UU9/*~x^W{_\W;ߥ1`R1$!B! /_U1 + 1E)W1$)-զ1$){e) _ e) U9!U9$! A1_B1WziBe)?5IJ9-_z91:'BD1+ (Be)~ ((B1XBD!( 'B1 (B9 Be1\91B1b(B1 HJ1 }R1iJ9_(B1zPA!AD16(B1m=(B1/IJ9U=(B1W\Be)"=B)n1e) 9  -(B91!\E) E)!BW9!--UIJD)]U9#!9!W_ B =9RD)W]'BD)J:6(B$)--ޚBE).+HJ1X^+k1=+b=o_W器n#!px\9^)⢵1*B$) e) >)d)!.U1 /(զ1$)]{ 1!1$)V9E)*/%(B1U (BE)bBe))91/%944a9 *UA 5B1(Be1j1D1 ݀Be19(B1 *_9$!W9( WA( UBUU(B1*]HJ1.HJ9ט*HJ &J$) A$)9$)$% B1.(B1 u9e)W9E)9E)*צ1!~h`B) Be1pe)XE)!uE)|$)-%D) /*w9$! ]9!¯A1lUhJe1}~BD) iJ95(BD)"vRe) UZ9 UhR1:窪@ք)U^`^1] 1++9$!{~` !* !xD) 1!9e1j29e1\9D)7/(IJE)zz9!_9%)Be)ߠ94֖9$)+-9\B U9WU1 W1W#!xU#!UZU*9E)~9E) .1!,|\1@{9 -.D)AVX&eiJ1U/HJf)z9E)1E)X1%).9E)U1zB!ძ9 pP_]%!}%!AE!E! [11%!+HJ A$!U9%!*U9bª%!U%!8E)u"$!5(+D!!>z1!?99$)UiR$!*UR!1E)"9 '9E)80]$)&. 1  9 U..9 e189!++}9D)U9E)B!*WBU9 W1U1&d)W1\Xx$! P#! #!_#!U!zUZu_UB1 ](B9w8PBe)B!ؿ(B 6'''BE)^_W1E))(Be1]]B!U9E)}E)!.\^E)!/D)j`9XW%!%!*Uj%!i{E!] %! E)y?E)+5 %! f)%!Uue)%!baצ1/1%!^f)%! f)!~f)!_)!*1%).1%!V 1$)9f).91Jr]9e) +91W׽X9E)x1$! zd)ޠd1+U1U9 *U9_U9UU! /W#! U#!U#! #!WU_e)51!͂UW#!1s 9U]1UU1W91W~9U1U 9U(B1@hBf1 Be)*.B 19$!?1D)^|겦9$!_ke)pzd)_D)!bW%!ZW%f)e)!E)e)z&e)W* d)(1%!e)!..("e)%!1%!]բ)$!d)$!Pڦ d)%!~(1%!}^!)XZ1C)_U1C) V9B) _9C)UU1"!W_1"!u뫅1"!d)"!vC)~(C)U C)U*(C)UC)U C) UC)*C)>c)"!{"!C)`jc)]C)1!U++9_"9#!U*$BC!U9C!*1C)΀c)#!行1C!)/?9)9) zB)91-}9).91&%B1ʪB1_Bc) }(Jd) UU9c)}9 jD)D)1 UD)D)!#!:C)!UUC)Wc)*d)!c)#!U 1#! 1c):ϊ1C)&Bc)UR1b)⸊1c)- *9b)*{1c)1C) .1B)`1C)%1C)[W1B)_Uc)B)j1C)_Uc)")1C)U߄)B))c)#)跨c)!C)b)c)"!*)B)5w)C)~51C)UU1C)1C)U~1#!_)B) 1c)UUC))VZ)B) c)11"!1c)*jU1#!^1#!W1C)*9c)z-91U29)"j1b)p1C)-#9c)91W *e9)91ҵ1C)p9c)/)! c)!~"c)"!1! 9!}crc)C)W"!"! W]! 1#!1C)ը*1c).T1C)U1!1C)*}1B)݃1C)(܃1C)1c)+u1C)zף1C)~WW1B)*1C)~1C)c)")*1C)Y 1C)ڸ1B)^1C)/{1C)1C)1B)|Wc)")Y1B)1C)1B)]1B)1B))") ڣ1B)*U_1B!)B)1b)w1b)C1b)WU1c)1b)b^v)B)V/1c)UՃ1B) 1B){1B)'1b)]1B)/W1!)]1")Uc1!)_1!!)B)+y{1B)+]U9_c)U1WՄ1"!*1C)*V1"!(1#!Uc)!_C)!`v#! `*C) UC)c)!U)C)UkՃ1"!~)#)d)!c)#!˯\c)#)߷c)")\*1"!+1C)1C)1C)%1c)y1B)1b)?~1B)k1b)U̓1b)^׃1B)J1B)뫄1b)1B)^1B)ޣ1b)1b)IW1B)w1A)^1B)_u1B)W^]1B)ﵵՃ1B)Uղ)B)^A1c)U)B)]B1)}1!! ~)B)Ճ)B)U1B)?+51B)zsc1B)ª9B)-59B)zB)b1Uc1!)1")]uc1!!]B)!c)!?1"!肤1 C)_WD!]$!_*e)? c){#!$!!^{$![/$!5D)~$! zC)!>"C)!:c)!]C)!ث c)")z-눤1!Ճ1C)}C)11b)}Y1B)1B)1B)~1B)x}1B)}1B)_U1!!^1B)1B)/#׃1B)b)! h1!b)") b)!.b)!1!!_1!!_ 1"!`1#!9")յ.9B)u߰9")_ꂃ1")9B)%[b1!)"b1")(9B1W]?9B1_s9")ݻ +9B)UU9b1U9b1WՕ9")9b1+/A1w9b1=9b1 j9b10"1b1踖69"!*~1!xꫤ1"!1#!X޿1#!{ ^17 ) ^_C) #)#!U'C)UUߨD)ի$! ND)*D) Uݯ#! ]D)!yD)!]D) D)!U c)!//*1B)߃1B)c)B)pe1B)-ߖ 1b)WUu1B)?1b)]1b)]1"!j1"!*1B)_߮1B)V1!!;1B)W_c)"!Rc)!> >{c)!kd)!{ 9#!}/9"!- 9b)9C)^9B)9A)u9A)߻m9B)Ȣy9b1mu1B)@1!)9B)9A) zz9b1Ң9c1uW9b1*9b1u9b179b191غ9b19b1mo9B)9b1ꍣ1")>1!x-1!"1B)^1!*n1 1 ^d)U!]C)~d) zWD) /yd) \ZD) _D) (~}D) xݷD)*D)!^'D)^ D)!`c)!"c)")ʃ1B)_ 1B)yޣ1B)_k1B)#>1!!r)!)?)B)^Ub)!)/1!!^1!~b)!b)!/c)!p^c)!71B)Wb)")C)!R! ࠃ)!--1!~71!!C$1!*]c)(_{11"!{c)!¤9"!ߗ!c1!_9")ϯ9#)*9c1ߗ-9B1j9B) Ab1UU91]k9B)ˁ 9b1,U툣9b1+91l;9b1i~ 9B)b9c1ZW+ Ab1U9c1kzV91{):9B) hA")9!ϊb)*`C) X_!p$)$)z$)~#) XUC)1!U߻*1#!uW1!o1B)U1"!1B)]1B)z}mA)1*1B)]UU59A)Uw1B)U1b)ق)B)j1!!!c)*Uc1"!>!B)A&Yc1!W *9!Ub)! B)"! .b)"); 1A)ܜs݃1!!߯1"!z+1!׺9#!U"9B1"9b1.9b1kjA1_ۓz9C)R(.9")(9c1w|9A)j₣9B)9B) b19eQ9b1I9b1+]wAb1uW9b19b1j?19J&j9b1`9B)^ 9b1991+z9b1W9A) Ab1w 9b1'91gk_"A1_x9b1Аդ9")*C)zpD)?|!~PC) m'C)/1  1B)]U1B)o1A)1B)W1B)U|[1B)u1B)ս1!!튪1!!黪1B)ן9B1[9#)ןb1B)*.1A)1A)^1!!1B)hUUB)"!jc1"!1!_b)!c)!/1"!ꥮ1!/ 1B)nB41B) 9B)!y9b1m͏A1UUu9b1#zb19h91o[&9b1_p9B1.A179191,k91X8 9B)zA!*wAB)9!)(9! 9B)c199")(&1B) y9)Ճ9B),1! 9!1 1 9!)?9B)e1 W1 {d)­c)_D!X~!W􃯢1B)u~1A)/)A)Z\)A)"l)A) b)!!8c)")|c)!**1!!1!!j)B)~1A)`c1!)c1")b1B)zz1!)*U1!b)! *B)[b) -1"!^=1"!c)!d1Uc)*}c) *գ1 "99A)V9")y9!1B)/9b1׿9b19b1գ9b1)V_9B1{9A)A!!_Ղ1B)2zW1 b1c)#k1Ub1/׃1#)([c)(9"!7݂1`z1!=^1 xwV1-/1*nWb1(?U1/9+u1 oW1C)؟e)W$!Z1!z׿#) b1!)h :B)b1b)!).تb)")"c1"!c)!)ʊ1!1B)Uץ1!!c)!). 1B)k.)A)+zW1!!w1"!B)"!(b)!ظ1"!ߪc)!Wc)"!Uc)!7Z>d)(~D)]$!}#!__/99!]px51B)m- 1!!i1!u1!;1!!-9B)_]1!)_b1"!y}1 (1"!1X) C)V!C! D)uWs!*$!Bxzk ]5!!{cd)UD)/]1We)wꠀD!+$!Z$!{ C!XWY{!b$!~u$!}]X`i$!jUe-#!uUY !W9A)9B)uA!!x1!!1B)}պ1B)U1B)uۂ)B)*VUB)c)1B)_1"!1"!"!c)!jc)"!+c)"!Npc)!+ 1"!wc)"!WUC)(*c)Ud)>:U^' B9 w1WwC)ս) 9#!bd19/}91 Ud1Wc)UC!7zC).]c1u-9e1u/e)U_!})!$!b_!I+$!7]$!h-D!վΆ)/:! uUU9xUU_$!D))U$!$! #!pb$! 7!:*! !$!?!܊ ࿃1B)/]c1")xp1")c)#)$! ((p$!xW!#!ݪU_$!:u$!!o$!?i!(zbc)!xC)#! c)! :c)!,(c)!c)"!{r1"!]c)"!ުVC)"!^B)!Oc)!C)"!Hpc)!j)!( c)!,{1"!::C!x_դ)"!% 1#!(W9 U1!*1"!ޤ1? B zD)} WD)bD! d)^(C)Zc)~#!0w$!1zU1#!Ä1U9 _1 Ud1D)W$!a!U [P!'$!D)7ߵD)Рx$!!^x{~!jW!g!뾪.!*!!9W!_!rSW)ˀZ#!U X1-u$!! }D)%c)"!]%1"!c)"!c)!_c)!{:*c)"!hf#C) c)"!~ c)!UPC)!]c)! 5c)#!+.1!j𺮤1^)/_C){1}d)խD)!57D)؅)/d)*w1 U1`դ1] d)_XD1-1?$)"D)`1WD)].e1='D1Ze)WD)/ 9/jC)*`y1! WD)!}WD) D)^$!!!%W$!S $! $!$!r$!]wx?D!W$!5/!x(J!%$)e!$)՗^ :!md) 1o1Օ) +c)!11"!c)!c)!.j`B!!cC))d)!tc)c)C)! 8rC)*c)!7}C)ޮ$!勠!e?D)d)'?_d)Z"!*z !7D)wWר!;~!ȧD)5D)VUU$)+(9UD)p*D)^D)$! d) wk1_p!*uD)+z_$!u~$!'$!W! 'e)1D)tx]!$!}x#!^!# e!$!$!^ $!8mD)j!x!bw!Â$)y#!imc)a /.B!)(*16zc)x*1zZ)yހ ~> ~>U>ǪU~>U>Ǡ>ǢWU~> U^Ͽ՞>Ǩ_~>^^>~>~^U- ^^ϯ*ߞ_ןן~~~Ϫ~W~_~]U՟~UU}~u~_~_Ǡ~Ϫ~_ǾW_^ǩ_^^>^>>^>^>^>^_U~>~>ǿ ^U^~ןϪ~מߨZߟתߞ׫WϪ~~~Ͽ~ϟת~_~U~_~{^Ǫ^Ϫ_~Ϫ*~_z~w_~ *_^~>~>^~^U~^UU ~^U~>^Uտ^խ~ןϪ~ןϪ~ןϪ~ןϪ~ןϪ~Ϫ~Ϫ~WU_~ϕjiU~UU_ϫꪟ~מϪמǪמǪ~ϟǪ~~^^ ^~_~_*~^^ꪀ~UϞרjUϞתjUU~~ןϪ~~~{~~~ןϪ~~~UϞϪמ~ϟת ~ǪǪϪ~Ǯ~*_*_zzW__~~_׮~׾ߪߟ׿W_ߞU~~~ןϪ~ϯ ~ꪟ~_~U~՟~_~_~~~ޯ~~몠~~Ϟנ ~Ǡ_W_^^Ǫ>xߟߟנߟ׺/ߟת~ߞWUϠϨ~ת~~~~ϻ~^~w}~~~*~  Uߞߞzן~ǟUU__~___ K`xWUj:\ *ߞׯUUϪ~ϟת~Ϫ~Ǫ_ǀ^Ǫ~VVVV~U ׿ߞUߞU߯ߪUWߞϨ_Ϟו ~W__ǥ ^_UU>_Ue$!xVVV$!_|f). Ǫ_~ǪǪǪǪǪϞϪ~ϟϪ~Ǫ~^~~տ*ߞ׽ߞתߟ׿ ߟ߿窪ߞϪ~Ǡ^~__>^_}U_?z?UUUE!TT\\)$!U*)%!x^_~ǩ__ǞϪZ_ǿϿǪ*מϞתZϞתjVUߟ׵ xlk_s __]תj߉R^~HJWU^BUU^HJ/U9UU>BUBVUUlB UUU?RUUݮ` HJZUUiJ1xJꯆ)E!CWE!b~p9^UU%9~UUD)~UUUmc~UUU~iRU~HJUB۾U۾BUU=9UU'B U}HJ_UHJ\WUUHJ9/b3a/'JUUR9zj9HJUjhJAUHJ9=/'Je1XRA-] cBUUbAUb'J*msZ %,kR( lsb+lsbx} cZ*bRzbiJ{zbiJ9PHJB SB9hR9/_B\Tf)ˠRBU.(Z9_ ZBU %ZAURAk R9*iR9T'J9뀢HJ9 R'BU RBW_HJD)WHJ1 'B9 ^(J1HJ1­WhR9-hR90bGJ5% c'J[z chRbB^^bHJ6 cZZ ciR.Z(JhzR'B_'B9|X'B9 HJ9BE!xXZX)%!V/*HJ9^HJ9rR9՗+ZHJ_iJ9xiJB {HJ9ԊމRAHJ9J^`B1ޠ(B1+UiJD)~/_iJ U(JURbUAa9 5'J9//^ZA*_iRA *׉RJ(^תZBuZHJ=-bRZ`R(JZ舏ZhJZ'BzhJ9~uxB1*->hJ9*}GJE!zxb†)%!Z(JZBp`w khR5- ,kZU(,kRUZHJz`R9Wx\iJ9%IJ9z/R^BxU)\_wWUAWV!b! ׂA51 5U9 B1 iR9 WuHJ9*?/RHJY_+ZHJR(J|R(BZ?*R9R1"z'B$)((.hJ9pHJ1Cm惘)%!W?iR9/iR9?/bB+UWbB cR" ZBbz(BE)|^V9D)."B! ~z9VW{D)U$) $)z, b^_^xAWpA!ޔV^A;/u9%5HJ1*]iRBiJ97 R9rRBݿR(B_*RHJq_ R(BzJBzVB15`0(B9U{b(J1  iJ1 B9jw-(B1`9e)`1E)z9e)խ9D)zb(Be1*Be1;_B1u(B9~BD)Ad)b c ?%)U {XUUU|U\߀W\k`BE)kuHJE) --/ZHJ+LkRխsR U{iJPZWU(B1V^91렬91?%'(B9^B1ܞB1*(J1'R1_HB9-%IJ1xB1Vզ1E)հ9e)*ߵ BE)^B1zZ(B1 -U9e1vxBE) BD)ˍ-9D).[15 |_U~\U\UUB)^B) ݂1"! 1B)+ߣ9B)+91U9b19B)+ _9B)U1 9!Ub1_1/1! 1 ׂ1"ׂ1!-Ղ1!Wc1C)_u$!z׵B)b1U1B)UuTb)B)b)") c)B)7b)B)`ub)")-C)!! "!c) C) _1!_UU59_1W1#!-c) .1![b) Ub1*W b)i #)~pj ި#!uu/$!+/d)^$!j$!^w?#!W!/*!U{zxc1"!c)")zc)"!c)"!c)"!C)"!~c)"!c)"!^.)!.(1!z z1d)5]9z|1%_d1p^!5 $)X$)_{!%(e1 /D)WD)xW_õ$!/*$!%!^$!!! j!WU!*U!($!j5c)"! ^c)"!zC)"!\C)"!/-C)!ւC)"!-^c)!`[_c)WUWC)#!vC!d)UUC)]#)%$)zD)$)kz$!";u#)C)`_e) ի !xT!!.+!h-$!!~!_#!_?B!ji)+c)-@@^>W~>U~>~> ~>+~>^~Ϫ~~ןϪꪟ~_WW~W_~UU_~ϩ* _^^U^U ^U^U_ϭ~~Ϫ~ς~^W~~ǪמǪ~_^^^ߞ_ߞ׿ *Ϟו~ןϪ~~}~~~UߞUϞ׀ __d!ǧ)^U*Ǫ~ϟϪ~Ǩ~~~ս׿Uߞ׽+׫ߟ~_^_^~?]>e)`pppf)~ǒ`~υ1~q|_~B_BUUZUHJWUJUHJU׉R^UUZ(UUUZuUU6HJUUUR{V(J\UUU)%!^^^xmkB`UUb9HJA(J9piJA HJ1pHJA]HJ9.b9LkHR=},kHJ,kR設bRziJ9zHJ9'9E!TV\ԊRBwbB c(JUWHJ9.T(Je)(j9(XWAUU(JAUU9bHRe)iRBUZHJ RHJ_R9xHJ1 BE!\XXpRA(ZBZ9Z^9E) 9 r~e1տ$)XA~xxb!'(B HJ9+uiR9 iR(B*RBzXx(B9 iR)ZzbBR9iR1j9e)U912:(J1z~9D)Te1~x\xp(BWWW9B iR1Օ/Z(JHJ9~HJ9\WB1HJ9CKmHJ9rU(B1~~1e)/918B19e19zx0|!U- |UU;߆1UWXXR9 mkR=?]lk9V\\91:9ur(B9>IJ9WB1x_9e)"(91gB$)Ae);ߵ[1557\U9XX\VHJe)U(B$)9e)B9$) -5%B96B9 9e1{`9e1-- 9E)_9!K{U1+9$! E)9UU e1 UU9ZUU/e)TVUUe) 1!* U9! U9*_9(U1WU9C)jUUd)!^^c)*ZZc)*1$!1E!1D)1B)b)D)c)#!^(c)UUUc)#!WC)1X1B)_1B)u1#! ~רC)!UU B)!b)C) B)b)UU%b)B)_Ub)B)~յb)!1B)[1B) 9B)9b19b19b)j9b)UUC)xxxb)")b)B)b)B)*c1B)UUb)"!^c)!zW c)! '1#!*u1!U9!_U1Ub1Uc1}b1 Ub1~UW#!Uc1B!"!c)UC)"!%C)^c) U9UD)!! $)]E)r!!!.#!u-C!2 >U>>~Ͻ~ϪW}~ןǨ~ϟ~_ϪU~U~Uտ~U ~U^E!p\\~hJUUJUU=BUU'BUUhR_UU5Z UUUQtHJU_Wke)\___b(B/Z9pXV9 pV1bW_~BB-5R9 /RB`k'Bf)bbŠHJ991Be1X~$!`;UU,c9+R1\B991֦1$!^9!*-1:XX`ߦ1@`pUB$)U9 09#!_U9!Uc)!/ c)B)\c)B)*^1C)_1C)U+9c)}ꪣ1!zzxb)#)b)!{c)!U1!+UU1!uUC)UC)W_B)xUU^U_/ ~UX)^UU%HJZUT WU Mc1`~~(B1We1U5չe)\VBD) Wc1#!ܵ!c)UUj 1!*^Uc1U* 1^UU=9UmkC)UU|D)TUUܾd1uU@ ;ExifMM*bj(1r2i ' 'Adobe Photoshop CS5 Windows2012:07:29 18:55:15&(. HH Adobe_CMAdobed            P" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RYe粠 kI inr_D~ϩ[5ٍ]~V5H_㧷aɢPۉiF:[#"~?oJpCm0]R21ѲǵޓzϨXKjpe{>ͬ?h_zuQhe6YfQU{*۫+~;>XhvFkz3!:e{II_# nJ^C-cM?z9M*]CXsUYm䲿OuU}y!T;n}ͳ#)?5ڨY6<}5>Ο]U1‘Z+[RSG/; 噘ci17mrq`vQ~#]3,9eye_g1Ue_5~cmYC=T+7>\c]K롔R:M\$I%)$IJI$SI%)$IJI$RI$I%)k*2@ʫ5ޛ.I*8 m824uXkG_U~c^1Z׆=ޑS_` ޭ/ݴ=/jeyfsfh{kH?{^^%ؗsu?E?$E I$RI$I%)$IJI$RRnYm elsorVI±O \n.0qZ_gG|G8hjVjKMaK2"EO[{pW?7R[ck>ác`1i{JԺ~F>F]A2ʚKc?V9k^!A.)m}Yll5ßV*zƿ.k2[spMhcn`yhUI$I%)$IOI%)$IJI$StLJc/!͜a[, 7vE[^;}mSj75*+ RmJL(RdaT@YpoR[zmFIZk:. K{1~C!§ĺΛ|89YVֹQuk+k\tUv0-g!|OQҭvZR:KcSܬ.:jYEd1k=cwC'}mɧ 0kKlf_&FӲC(%t4;5kZ;96mɶ󽈍֚keDGm_b{cֱͽnv㵕[eLoJrRWY)c^mϵkS\ͷ5AWF$I)I$JRI$Photoshop 3.08BIM'Z%GZ%GZ%GZ%Gw8BIM%{hֻ8BIM: printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Rlt@ɷ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMCphantomnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM !P  Adobe_CMAdobed            P" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RYe粠 kI inr_D~ϩ[5ٍ]~V5H_㧷aɢPۉiF:[#"~?oJpCm0]R21ѲǵޓzϨXKjpe{>ͬ?h_zuQhe6YfQU{*۫+~;>XhvFkz3!:e{II_# nJ^C-cM?z9M*]CXsUYm䲿OuU}y!T;n}ͳ#)?5ڨY6<}5>Ο]U1‘Z+[RSG/; 噘ci17mrq`vQ~#]3,9eye_g1Ue_5~cmYC=T+7>\c]K롔R:M\$I%)$IJI$SI%)$IJI$RI$I%)k*2@ʫ5ޛ.I*8 m824uXkG_U~c^1Z׆=ޑS_` ޭ/ݴ=/jeyfsfh{kH?{^^%ؗsu?E?$E I$RI$I%)$IJI$RRnYm elsorVI±O \n.0qZ_gG|G8hjVjKMaK2"EO[{pW?7R[ck>ác`1i{JԺ~F>F]A2ʚKc?V9k^!A.)m}Yll5ßV*zƿ.k2[spMhcn`yhUI$I%)$IOI%)$IJI$StLJc/!͜a[, 7vE[^;}mSj75*+ RmJL(RdaT@YpoR[zmFIZk:. K{1~C!§ĺΛ|89YVֹQuk+k\tUv0-g!|OQҭvZR:KcSܬ.:jYEd1k=cwC'}mɧ 0kKlf_&FӲC(%t4;5kZ;96mɶ󽈍֚keDGm_b{cֱͽnv㵕[eLoJrRWY)c^mϵkS\ͷ5AWF$I)I$JRI$8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlong׌FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong׌LCntlong8BIMRoll8BIMmfri8BIM http://ns.adobe.com/xap/1.0/ Adobed@        s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]L`~Yp\n"Fլqf|n;T5[}Z]Ʊ^I9⯦m>[.W=gqT?/z4.?%UP91/$⯖?="cmΏj,#x9#bqW~Q~Da~tߡ~ZrMyTIL*?C^Ǫ[D}U88k~yYI=oX ya~ y8sݼ8??Ck4H[b?7< /8I$}#i,U+=y.t>=/BWԿߞm_XѤ|ápG9-织^^XFtt~TIc^s?25#HC~ļ?Wh?+<O|9-~MykrK-C @ŗ_;-忙4:] ?ۂg?u,UJd{R?wS!kou_,j?Z_3yV7Gk$bXQy䏓ʴ/$ߔn9uON DՓ^k 3~>*7Ԯ# ($.A7lUc\h?~@󧒮>^h=U~|8CƗ~Qfu՝(S{!U|]' o_W~D~hrj;Ǟnp_pf_*U?ʚǝ|æykAUn ;tw_˭A/<{ɣ~Nث2^G=c\I~~㊾7Ҽ齟#y$oguJmzAboX򷘴)cC_\:bw*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*YW6vpqqq'i~Uϻ ={Ϛſko8?WXf<٦q!i}⯺*b.#yPa;Cz֞.!~i#%e_i<ɠOڥߛtGX=4zz%Iһ=w<1W/W=y쾴MqWkhz|#ooG{TﴔV_bH?9z$RHtNB7G/E5׼K)$Ԡ5k벺_0<=|GiWOw [LLUW'BhߔߟA;-KC{xU 3V?D$?Wa~Rd|IO^Meӊ_~ m+s._Ͽql?wKlt+}/JN@O{i/o,RrW U8OuKB{U_)n1TsqSz\ѭn?}Nߒ⯑?>E?<^kqRKMF]X_^7?G[~76*x+|o7yz?SOd]z?>Ոb?33X{Z_͒'oG*ï3~|?4y[#bU;j0_:T3^\kF:"X$|UɊ}78m[<۩IwVk'<7*|)y~.5M>_|ʝ6Pn4Gh>jgm%zqK,+O@~iGѿ]k7oV/5ܤ0O>qU'䞉cuGQX?۩%=;=F7&*Ww-ENk?)\P ˷;F=77t{tb|Q?-\\?-|͝qU,UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbW(fF*ǯͫSvjhJ*.}ɬiW׼g|eqV7k8Ge ?OPN;œ[?#<ʏ-[X)}I5K98`zI^*Mov~[94}._DGA)!?şCynP5WT4:W89mWMaiZ4R{-B4xfOJUlUʤ$T|>>ܐڻ?%犿e1WVG\58B[]L /#* ʿuӼgǝyu]woK1Wi?ʿhZ5X4{}FQѢVTV_^nVǕ34GEF{^;bWVtĴI*hf;k-# :?Ĭ٥dw?J8o"W侓WͲINML8*N>R5[o_gv7^Iy8}z㹴,Oo/:~[r=>q;Y٥^)8- W[Wj|MEeYYvD*_ί/~C~Xs.#1%/GwUD_qWg࿗F]sG?GDb45^Z{yR6Mf~ 4[ث{p7;E<_PAw;˞Ms}Sҷ_vgyΟZ-<Ϩgχ1WW,u2Ky^K;]OHk]9`HgRMWǖuʿ!zy`yJ?ǪHCK˟ bx4}b拏-I}nןeN2W݇/<>g$7懟6}*O}ɦ:@-}:8fBVIg]t㼺Kq|9M8d~\Xs|5/{ddҧ1*?lU8o\{]]MkTJ4]꾿9z'H͏o[ˏ$>qK<)-r;|WԾX-ZfLXj!Ԓ4YK[kX eۗ_#?o^ayj.5G\[ xqzRU={gzm<)~GYO%}inNqW_o;=5.bdi_`.xKu3J꼿PZvZZmƟXȒhON*ʺu/CƎ>jzokI훋f7H|cE֣:⯀36?.~~j?fxWXomX,ljVNS U]g?TU'u+ii*_OɽG>U&_j7X~F͝u+*]X4n.|O}NT$?0;r__א4=> /wP|ϚsOBXVYG㟒3/?+t)~l;e'K;iㅇhyc)|9g7?C_|pY`W}_8mMSƇqK{-,7 ?⯛~y ?V8~bk_i%,U/o̿/%z֟Ꟈ~+Yd"~aGʹy$\?q' U|[ɗv~mrj0zֿ]O(*#8?7?43io OXy"X(>|qW>v\>n#cN|/1Ww䆋J|yE{&ӡ}(GG'>/_ ]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbS+ cޜz^sWq o/!yYu /K'4'bɼ=񿹞oY/.ZDOO*o/*F[ɪGqm>{/'m$s/ο \*v=jk ~qWO䛟0y3w>mq4twO_>*sq˾yG%q'/Gdܾitr\Rw~_A㯔'.oΚ>ͣpFʯ|y?w< y'XҼѧizp6.*D>[=׷o|Swd+Q6~}/u?0dʺ~$|?N[i'KUaO+L"ϫk`M>}GW#O^Or`t_>Hz6~jhw>sw|??.%t?6gZ~Kԭ%V'*?]o#=_Rh!xyızǯ4lU<Կ',e|󆡡GA5ΓCcRoO]oϯO̿7y^D󍟙.٥.ooП6^*W'o?08}N}CK .|%Q/__~toɖrzOKH:9sy⯟4?4滏:yR1\ZYz#ѵOJ%*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb^?Qd?GooPI-\&t_^g42h7\g'ܧ*s[MGMƑiwZ_v/gG/(SmǞ*}uoZ&uyT5k9jJI'Ŋ?D7˟ӊSM7 /C<ӬC-0RO >_LU_G][yPGI9oh-zӖ*v*UثWb]v*UثWb]v*UثWb]v*UثWbSҟPLַL褭Xǖ*~zo,4y^f7|j7z.rk,L8]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U~@#mSs}#2[fLU-_?@VX~oy&̚ lP>Ao,uMOT}SVm5_ߟ1WF*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]^M<+d˄7!a8g.YM Fk@6mY $E s˂=Y?*|miW}gX谘[qI o%ӈ,RK: .ᙤ-1)wTTr 76~Jhy Z0$-GCˆn KNNoO9 _M pFJ:ݼZީu|TfYv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U↍ǚny[UX@rݘ  3yɍ"GHOjBLkjk-8ݜį/$kX$ $ՈߦMAT<$4'4aڵ ]YIģKe.ԏS&{{{BF1`JqƩE.,Rsma!FBِř{]&m{ˋFD=͝H}84Mڬ0mzrVXKIb rbx4ܨ?s b_LEp*&z7$x1gf]͵=-5=:+?F=$y]{0Hٚ6brkA~n~eyJ/) hZ5΃~<-oNXJ0ͮ)[8]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Um]=T5Rw4U8sxW65{;M ; $qތVzd"6YsSy+$? qWSPO',egRśySp+ָ|$ = ԝ(V>OkdX1 ʊwf BHc<МWӌRgKR2e4<ރ dvf>߭Ɵw l 2BM7 7Mo ( {\VVCN@PD1SH pa(ɳ@y˞`ޓaok :QE{{$9UYHS(D6~j~Zyj[=>}(Ɛyfx]K )^ ׸K.ʑ1!P$Vn,%p$>e*w`z2UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UVW!遄7 b {P()"Hb.x[QUAd~=EaeB"!H;צ(LZOה7P,sc`:犱׹kYQehۅ?ɦ("ݘJnZ`aȢ\[OE @J)`lH_it-+2>F WJۊK¤*ƑXKUX"U4vj_1)ܱ^yZ/tYEE'Քy/!tz0 PU>ڕg`3So|%8~y61\UbPK0@8yqڋӢs T2@5Fn0,ĸGKxmlFl-!pY r-ZuN7Y fIyXJY/c"+P0"Bc$JԾ;j)$v}f8-䊮x¿@OJe&-ѓټo0jv#%(AkYo33pd$V4|e&R6a#uaq`ReI%-b0kѫ\3g >du +ܤJ$B;:0^ Lo v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]DgeDRƊ'~04ZO _At~kmp(.5:*?<0 Gyk@]a^3ƈ59e$}ωuQ.ug^R gݫn =$[jch!FQ,$l( KF{孴FIrG(_7`[oe$S <Ċ$x97nJiCP2DʼjP g WSKpqwY^1 5ndq8n5$r[[BFAŹ4i_ڦK 8mzVG= w;`pRػJ+ !EH% EXsa(wW+$.\m\?&~iywM`$(M(@Fm^e(`15.Mye˛MBKFH]^7SFGS Fgn*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbW*DGRqW?ߙO>y^#kȠ+4pm$!UTnIiC!MrI.rJѝc`K)Dl92# liNFvYOu[eyN>8rB YS-pv;ue )g{k:m$wP/N$x?#iv,9p:W( ϲ̎'\ؾt]gTѮ%zȦ?IZ% JC@{RL#$PRCµZ R&G<( B@ڤ"i,X:+^ZQ&Y qw,VTt+Zxlrn &eI"Yyc4Sx(ea,0f{vb_G%7KkɣRYգD5rAAᴪR8Ě}A$Ekʕ6Im:巶d AN{k_O4'BJ;1Tr"oq9#]㵆mY )El%[b - Y#4|.}ozW~h!,i@9&FRArp^:-Z6Ln%7QjH۰fvNFY,F6׮Z*ZX(arx:͢]]pA3jC_S VOVL/&9Eyv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbn<2ZxQgu^99 _"yD[n.V ߉&I"Urb[vqj'k:Ο_nn ҰXIWߛ9=e(6sjwzwW2C-IrquraeK<w|)Zq |O>2ϫii#ݧf (T&_`r95- (}-.BHcon[9&ѭ֎kf<7peFAoK/dcP辝(%M 偭,ٮ\Yq$.&%9% ң_nYgE|<>ptdb1? RT2!x=v;3 rjн-w:)\[bB!5iO ͼ涑x#F΀)ؐ=rkVNOlZyEZW*S T&|&dnW#PWgom"P/$f,Mѽ=XQ^^^$2R݈gyi{*Ȗ^?Zn c9/O v,-yYU[4NT`|;o[dmmK; (-# $Dj@onDŌaoO(Zϖ,uNemZ8bP 8NF w|ɷ:Si4Hu+!.q/Qy,bY6:"jظN]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW^a r&_^~'ah;<\`gyCaw4qhTXT@1h$R 6[){(AժiA_H'J"H2XњmK_#$lYjH)ʕ5uj[]&TI-^Muse0T'GN%:kQ(DR ?dˮLayw}h}iRŬ5- 8֤ Ƒ,3MCVC_ӴM,n C|])ܷ@yblu<廖8ZB@=SXm䷝mjWQ̭)oR5\cJiƀ2Jm&BGH$ZR t!1/^)0$DԐJa&($/Mk:H ~ao$^[ c.Hb3%M¯V4 ص?%[^_kYQ4i4VoEOģ`dVGqP@о}ˮj7?WL++ 0 *QhĠ;$@ ky(Zd˃ WPFqmqG/.2KmOz0u$ *b(>'A-l=έj$oWvVt&"CS'Z~t9a%3cmӾ-$6%2ur]B90MF~,`5JE.3Eqf:oZʅ=!0jуfQ<٦-/P[k{(q%SPhQO8.@ƛFxlX%y`}D#ב%+Cq2O/^Mw\[GyD G5\Zi)I8ZlxcExFwz'/5{LPMQ9ij~0W꾠RwZT@_&V#η:m֑{Eure$1r#F;[Xf$-kv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uت`YzPiGqSu6moF#Q(U hX"$0FO*hYn9)xdxvRa2:U-k!"9,F],}9hJ5EFf輏$ On#k%.jvZçk),= V_ '~Ny-.'8`ƒ+)i~^G FDz)nq{V/mː Y &IZ8HUiphUe5[ Z-*=5pپ/ӔOk.`nMlWrLz`{Q2?1ln5+c-5W Ѐ_ x,ppQHIOFw^`򥶻d686JSVf]O#ZPoAK,y{-=}SFvp^Z۵}Y9H'&rbNFUđsmyJP̑XV&6! 9+#3?g*nEyYk^iQ+\k%g;į <HkHmA%H2r4W-V q%ʻI ʚ}e*US6+r(QoZRXznE#P7f9$7yD/>m >X\@-%ԕ)$?1成rra$dCIQ`*  l}{f'1*h֫JEiSeuLT&)$j@gBAB޽ ʍ]Y*Y6b(*Z$=3Eõ 6NxCQ"$գc*hSKGwhk=VWӹ,1,sVvsőăAr$ٿ1ը2j‘E-i4hTc Z1 x.ͱIZi֖t7r2NfZ o+P 4YS|wA5ߥQhX"kg4qȊ̧Гx&\s%ثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*˚:4״~:hڠDf6DJ~N +^NU«\%ʹ ie4fh+esQp1Ƣ"BU e{q'(42pتW XT=\,S->;hao՚(xЗO._Kʳ?n};h }o2y^rSk:BΆ~}6*9.! 12Z_}diYsGqa>Hޕug8Q;0? {䌶a|^O[{kK1hh-ϯ$ՌH 2Z`in(W\GzjJ|a;( Ŧ\Gg%wEwmku\#Ȧ}H]$F%'9e-MZ}B5PFaoJOV%H45mm5ߔnP[CKgeBFChMkO 7 .K˨xJѤQI :DPzpn51IC91n5zօ'.R仉UCu ^@}bIѢ$l>͓CWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]p1Wضs꿕ҒTH +q8P+$|hv*!i_>Eb ͕y/*Տ%$\V٩TvUYO+ʧrp8{#iƮocaV@$%;FZPx jHNNҁ-Pȃ76bZ*b)ZΕ,]A"PkC]HRvGmQ0=-Q9cV9(߶s/)9>t0_%ynznm1O|$r鑎xX%FӭmWN.䕖= S2 _Qgi朷FSV4'jVL%Xb7S}ZTu;ek[#q!q  =TbWmyisPèOK0 _z[Vj0`!O4B2 f36ŸR\v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v* ޙAYu+M= +M>K${YCDcoMZfr*V=YEx})%[uiĮm)VUVq#bFTFKw6tRMxRYdAtA 1XҲi"@|."qs@2#oI:+qi+^*?z&J|J-? ^b?r!*S\2ً{j-VHUvf%t"]c9#&oqu> m=&,<%!@ ҪVQ5L321'~>9Dr |U!&>XҦ]y34M;oڊaIAbi}zk; .cޜܰþN xƄ^EFL"6^ 5Ѵu, 8G7ʓz5 iT|Nx  iBo{]z[i@^4$|M;zgO#~D ϝ)ثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]O˯#~y򷐴k[OzZ}u;)$~*'튿Oo~`D[q^- =:M20-~Mu4/wo C~Do$Rʚ ?Bki.n&:K!S~YΚ Ͼl [_]ao ̗s$줵jmmG%4I?(" $_/impi^O?Jo";yGX>AC҄_<ʘ1-o/,/:UpXC*KZi8-p׆ʿ+ە!0X =;% PZL? ,?ձmIH" SZ{1?.-$e?v9-K@ ~ 0xIo7gYdhNvef*[~5 xid6֭-'11$Sh%%!ϏR7#>kHͯKGos~4pO{EPiS *VH;?%4!h&:ph 7z8lh?KyTLcST|AE} OdbGN eiV` ) ]4A9%Ga"ieJ*<ĕ S⭭stW@XIԀ]"?6KonRtAjHP Os$sVk&B;_]- y c=Ar8FUYs9ַ:MK{P8x̰X V}Ir',8s&GӤK=nJʣ|Y˿gx撋$nkȆ1xי@Mjcd6|q8;sZOϥ*7O#G[z0R21Ha(_^Dw/; hDM9(HO3c1!aM'k͚ϖm+@KYd$ jmd>*Uc[#8*+4:.ivZG6M$WDRzL@$GZea- u16LU PË(ΘԚ3Ǯ*D\J&dգ$#0<[nst fgѻ[rʼn~ҙgEaѳ+#Ԃze&u(IM% M'KޣH, 6 tWgrF%z$vB;v/@ A0)A*t ֑{wvvWY{wݘI&2QjO96#K-fӛNiţ[ZZCq C J*`l$Nohމ$GrdزgcFPx=f=KSM9#k[Kctp&hAfЇxҬ;X[jn-f 7Z¼HăSkwZB&2Y\0GkB: A=H+h.g{4[^gyNFheG,@|C,yw^mA Y7_V1l+zkbE-U`3 6e埫3گ>ywuv"K_r^T dֳy^äRڛfLH+OFDdn |Adi)֥ek&4oq5y5l!H&yYo:PmfT]e{;8^95/M$*zWXOM9nGHER.]CD[մnѦܔW4X.Tzqk/`e$q(掊ûY_\iIwuiKAmA)>RXQ-Uy`UV^bkyeϨM i#E6$W5imq%֋NQv"KMyj.>*g)EƝ4LOwPAdKqqDkoA,Q%UERm _4`Ԭ/MŨ[شLїaT=+["_b,-mE {hN6֟)!bʭȢ'*i,kՄ7q$ :5x`(Rb ++<./ů7ꖖ:)-!nNH;lˣ#pZkRSqsߞvFْp&UPMEx?\bͦQVyX98$*wS*FLSA|0AEH_$IΘiP8)4R7!RB晨ԍAp\ @T2(CQ㓵UBUrO*SaB y2RPjV|'*+*Ikִ%L[wQ,HR`C_]YU7 J)ZZW"Il4NAFdUIÌ3/jv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW~Q!7ΰV-O "FK ##(@Y[xH{'5Y$6or\0cXZ %ޤ! Pq+Gߘ~c/ЖU!V믭^Η~Tp XrӒ\`k椲k5Kۈ!aJт4{I-U@7gK( h]5k[IenZ[I#6]F7!Fmȡ+H.Ll!Ɏ an{i YtVpq-':MƗwsz?m mb\%ЪC~aNnB卭%W.ͷ?ZoDR>WӽBkD4>? +D|"핧vVҴO5.RoWWWs$s[Iqw *6xb9` Ē[y{E:ǘ|wsimgpz.ZvȜT,)x"1a mke{ \j6N}잚M#]JիU!mu'%Ӭ |"a8hVw һU*{Ĕ@4[[O5`,r9G*[{rDVJTKR[EdY%u1>V@!iiUZG/(5=>˔]LKxKk4RB9(.@-k4(O.f @!>҅dU,1hD\Zcqy{YuI }mqu ݐڋUG%ʍe<CN}JGWW,FY UD zkIpo/iw'IƧE~Bʤc\DiA Bo<ۀE2lU1CP6*JǏUkWhYv5،]M9H8䪮>퀥V8CVj";& #-=N W~Piq5Ѻ&t;ȢΒ!uȬ0P+e"%_c7͟s_k͚hg -+FgCW'AʎKeOaQ}P\I 巬M%osAvpAM5}d(-w\$P<Y[woR[~TkH^.I|:Gp,ȑwd:5i}kZ4_T7p.KdY]}B$P݋6BՏjUԯ4Ak ԚMSNޜ$K!FXXLZ|x?/4'h*o2$U$IszU^%C_yjJ/oۦpZՑM, )U.KﳌxRXfKCsePAv'@^WqLJȭ¦ Xm{qeGK>^t/"j gmh@iҎDleIس˭+:Y΀&rSvЉKU1dd)clުQVMl5ǫ[%Eot2 xr e <^Y"ԮV{Qq,Գ0^UPCߔmOy[L &օ@f\1oȦHCAm'LV`B;o*Ol"a_drc*0I3ӗԳSƂ9مQ#h~E 5`ߪsr!ZGD!"nVri*i(Um-~\ME5풴'kIeDxq%,@O2CıbW[8c>w)8fWSA짗,}X;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb?y:mލ/&tjr,G $]ߝFRon'Q`O49B+tF%U>"-k麮YYe_ɥDUe&)7_ր Ho* ӥDE,y 5_Pߓl>C21b5MJkZI ֥k\Zhwipnv(&:ҍeǗa-b[{+h嵼_]iRJ=Y# 'dz rR2o/Sƕ#E %GVكBhUKG]å~W i=HxLYhĞn~5j()s_jMqsY$ªKնfܓV;`rIgt@}=*ݤWWO`mA6v=Ne|UpK. Osbǯa$N`V1rG"@ñ6/,*'RGZVھc,5{{ft1GE Od#-ӭyhofy$ Sa6_󄟺2VE1!fTo9Jki~C8j<+ZA{mPmj^;gky8ti'6#}Vߍcp5[T,P,CUcmvS[MwW) nc,OY}<2| r5 ; 3(׮仿v՗$b]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uo/?u步oy\eэ&M:KHU;31 N|,m:yz~}sWC! 1?.mm?Q5"sK=5$JQHoɟ3y.KkO)r$0"/Hh1x@@?sV'Knf""ɰP܁; niVAvv H'IㄿNEz]vNo=FXknkRR[N{Kmon"I1D@5!A5R}0sLNq]2VEX8ُ'iwtbrmJI3C,47xHۉr;bq-4WjKN FQ$xOSzu*mE Wgܱv<*Ƨjhlm ]ԦM;Qo⾰iQe:J4&TFS;<"ahSˡh5w%| QClf>VH F~"8Jx^iT[3pE;׿.5}j]'gѢKu7KvnbIPS1$#6-R[ @rPPֵT/n,;+k/c[k[{u9VITr17 ALKtzV5/tcm4ί1C+(C$dȨÝ~D49nt_Q33OVWj*Ɵ#eWrCg4xit-'H&&D@$аxw̸+1.xa`60(i$z0d7D$ Z%`9ҝ~yU>@ͣ2\C4Ġ@I߰ALH}{>ʖriit}ԕ+% z֦aYBimym5t gi#/+-Y#Q)JrGY擤L[~N)9UȉSQ^Ϧ\ -!-qpd|1(v*F!_wҮ<{rZrV9A_pS"4Hie1"o˯ ծ:׵?rT?SZ}i[$خƊυ쭴ķf$W%BF3dwYN\f*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U<ٵbME2hkx'@CP,7cIJA\G91H;j:^;Fۭ|9*$ "ˍ;NSv6l.#ѫ9'pH 8ST!`${EcE3RDJ1W(_JN~ hg`- 5Wl ]}Vi-ԑJ!yRkZ۰(iڍ2RdwYtrԡ ,/X#ZUo8l Fnz^HI#Ѣ"Km?%Ė[xZH#EcB`< WloFt+ {8;޾UHSŃal^yҵXyPQ%  =YGN$1,`IEN_5fm'Yvk'XYKYD2/#zWUJQėiksmHCpx ÒI6@@]Oo{iokqi ՞8Dd[8+D9)I+LJ[JM.'M"y-nt V ˩搙$ՓДr䀇nyq#j<ƌ%j04YB*'K#3{ZyTF}U\{*y!~>&m7R`"̴.;/9Pݶ"*%EE4oq jXL@Q* dm"m5WP4 q#\^+59mڬHP)4!##+ MSP.j62܋Ԋ9ݪfX`+*2A^z|@׳kq"Oo8R&d exk #PK}R-BDҖ [4D Qd BZ6pvWgu}W囸M߀xʀZky@**Sdaor.8B}RIPR R6/ kF:ʆy)e3#MЀQ4˅~QšOk{鬮>"H@r`žP-/%|'2o>i l5XsF(*Ö́6`]](Ô[V5(GE4Bw`7ī&Ѵ/Hq_&5xbFVK!Zhzs mYA~q W9f+ :â֤k ڔ5=F$΃w_\_ed(xRG=1iBOJ@82ZE05h[iڠz\O*' Ll]qVz;Cs6 nCTk][Iqu, rZURĂXr}&-?PW{a57ZcBt O U%=>Xen"@,(=op78=+|a槸O84.8M j`ӣqN!dqI9JRlէʹFKڱ3_aSң݁8Ka]Ոbb0^=MkMx%HDv+w9Ti]'XeJQ90mh8_^$mO <*OTtԩ' *+TI\쭸jOWָ^%Hr`)\,X޻ EAk3SH׹qUKF ǛIB8Swt6dx8S n#SddW{ks] *[qnוH|5T9F_O&ؾԭ0Wm +n`\:2 Ðʙ oыMFNUI#bWjU^޻Xe_jC~lԅyeV@xװ͌y0`#Qaq^%YR)DhvŊsCemԝvʛ(%<О1> ^C^RJ?\z 9Z&S)]}WVҮ4סԫ I.%(d01̒,#^ۺjgC}iR%%Hm mg29#P򿙧X}g"B d2Lr*R2fFϔrƷb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UتwCTbbXaIAr?k֛Gw?O#A]h \h+r?O3q77h+_Xth+YQs\W-^SZVz\&tӊKoo[]߯Vš[oQUh JBAK!#Ko8_Վ{8ChʁsfvW#”!tyeE,keU7:ΘaJPh7օBDF'Jsy֡2 +ɑsf C2Y~c?,8ٲ( m̶}#L naIx1Q*wڙc"K=MMx\-m boт 0ݨλ/jqh3[yԆVi-" ̨dZ$j$n+Zd1 eBTAs[ؿKy+bdmcNb ]2_ZlvC :mc;&"k^`}f9;1rւ~]l#i,5 : D[^=ͫ* T7 [SZ8i79kV V)l^hD>rI4mǁ_ʆI5;[[@z}Ώiej-+3)f /"jQTHPNZ!Jeo=4_6BJ,F|:CA-HඎC5#b:T xBcKk"~@^pc֭ZQuCX0s򪎵=ɍms̉4AE||2%!疵he_XTE,,ԎQxk+%H>mּ_fo.j=փw kv#uQFv xsFѺ2!Kv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]TYdQE*\?jSU?ƕP_uVRW=dC` P>nLm6L)OV}`[Z<Ć m{ 5~(@*:oQ8,qlq"$Q2@RY(#p+)i,O O6Ɩ3i+b% i}h~#LHD#vRϝ䑥sW1;K1UA,(:HV>$[X{0iюM-`C}jvZ~FBL'j}dRpàՑWS:.b2w5/<.޳~zs]5=*@MGm2-9׿,n+]Y4v r,sȁC)>-z Z宵>[jV) %vdaUuRFLk!UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*]byXP0R.cJO0VB.߫ gw5v.@Xo[v*Uتij躕lnqt*̯0yky˯*”lol!`Y4q@{ҙ"=PH=*ё[LdP]U"-m־ci.RL-ov4ujѕ5&L$lđ{iz--4~C cv2/2]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbUbXMb=~cL?L^z~pqو5 T]ܵz^aU?Z^UwOMw2ĭF|UKv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb[Z]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثU@eqUO\!]Iwզ^S,v\UKv*U>>UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uت긫ѼWͺޗ|\G}W&>ҭ#&Zޟ*-4:yLUq:AGE?OԎ;+WntGO` V2&*JO]I8MGO\UOMF xC#W}ZoT?b)?gwCɊeLU6Ҟ׊*iz~>?.!_R.*UuLUKv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UتUG-gݦ=>|OU8D濕t<TX֩$5?/bGȿz&aj&'/8gO,4+8yMWA;/7ث~8m+ɟW5KO2:scbXo4 &O2^jϪS:b3y{R跂7KZ ~/'OF?֕W׉8{ [XEw}:kOz*ϟ6=q -hfW|֚%A?OqW۟ߙsmb;%MXd/z|ԉ.⯼?tO*͡SO5K ߗOZg;bԈ|sy~W4cVMC>do -]STM2Ix~3?c}/oJ;zKI8ߝ*,U?ÝKQ\Nw'|W)kOg$i'y鿢^ov*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWy'>dҡ,Nxp2k?%\Y.*O˯mG2,/4MGOt&_qTWK1>]{^<N*M[OO!떾h5B :jv$Vٿs$/~g*pKߘK.__// ٍ^S/+#4+z}t @zh>8̿7ƥ]sK4wHf~ 3n|b`}|gy0dO0y͖pj᷶ӢOZ hmGi?k\ާJҧۅĊqW?Mm*I?fz=-BO-.O\w?<}7K}IsO o~F\^{9k~Zhߤ:?B9mKAմgᷯB)Ř˯1]hwy;Gq<OwծXĩR~_v~I'xo _kp?(,/(ɨj:GYGSg1Trf[Nߗvk\[+ooUx*5e~Ymv:~1O.Wme^$~'⯷5$PMK%Hzd,s\%|89fy)?*z徏yCk߭]—[{Ixr1W*dF?~Tj1~YyR,M: x\(bֿ&jWsuqWUOeyU! [SCWNJfy6y/GPx./]^z'mWfy?MN|Ҵ y@?ٛ{p|Tsq'9ErryypUxOXc,mBI49RoN|DȜ>W*lRҵM5$P9# ~RL꿐_Z޹g ?{& ՜ElUW̏ X^[wt=BܧV^1W8'|?^ky侯켘Irq[hc>t'uWzzصa7*OqH6y@4#{ZfOW\JO}9O99_^r~my?n?^;?)ǔo?#m۩ #^Ω%̉rn_iӂqTp{{K#0i;Ms>'叓M<qg VqV{8aE?-ŝ~d4C]3sR͏/$'\԰Ozkœ/f8-?'?0pܟ bK=.xr,U'⧐5_˯SggekkG{^_k㊿7~X*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uت:Fw^g:=4aU9\U[%S2\U?"u3Tb{+OGDF'lU6*x&~~YN7΅6 /GZRM7퓄^ث#K<ptKQVԯ+?XԮ$'9bL.5/ˏ6]y|?IX ͵~OZq,WqWo]x~vIya:4?QO_(7<%{??6;5>{XWQpOMu1WS$Sԭoi&R}Z~oGT?&q^h~S{Ii:wR_ ^^j7R^^H]GlUߔ?)%|%$ǕNw?K?U~kɿ[Ϩɯq_)~qE~mx\ۿ$ߝmQ-42E),UHXk>z痿/CjKz_ sN?*O)gOs;O?9`5}9Zpz\xbIOo??SO%լy:Ϝdz>yqj%޳I>NJr˺4Z>5~ƧKyYOъzg5$}Z@=Vvz?>>|==+~}0ixz1VW?#죳֘+o-i~&*;o6w^'EyOEJHnѢoWn-]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW// ========================================================================================================= // UPSMON - Urban Patrol Script Mon // Version: 5.0.7 // Author: Monsada (chs.monsada@gmail.com) // Comunidad Hispana de Simulacin: // http://www.simulacion-esp.com // // Wiki: http://dev-heaven.net/projects/upsmon/wiki // Forum: http://forums.bistudio.com/showthread.php?t=91696 // Share your missions with upsmon: http://dev-heaven.net/projects/upsmon/boards/86 // --------------------------------------------------------------------------------------------------------- // Based on Urban Patrol Script // Version: 2.0.3 // Author: Kronzky (www.kronzky.info / kronzky@gmail.com) // --------------------------------------------------------------------------------------------------------- //Adding eventhandlers "KRON_UPS_EAST_SURRENDED" addPublicVariableEventHandler { if (_this select 1) then { nul=[east] execvm "scripts\UPSMON\MON_surrended.sqf";};}; "KRON_UPS_WEST_SURRENDED" addPublicVariableEventHandler { if (_this select 1) then { nul=[west] execvm "scripts\UPSMON\MON_surrended.sqf";};}; "KRON_UPS_GUER_SURRENDED" addPublicVariableEventHandler { if (_this select 1) then { nul=[resistance] execvm "scripts\UPSMON\MON_surrended.sqf";};}; "MON_LOCAL_EXEC" addPublicVariableEventHandler { if (local ((_this select 1)select 0)) then { call ( compile format[(_this select 1)select 1,(_this select 1)select 0] ); }; }; if (!isServer) exitWith {}; //1=Enable or 0=disable debug. in debug could see a mark positioning de leader and another mark of the destinity of movement, very useful for editing mision KRON_UPS_Debug = 0; //Time that lider wait until doing another movement, this time reduced dinamically under fire, and on new targets KRON_UPS_react = 60; //Min time to wait for doing another reaction KRON_UPS_minreact = 30; //Max waiting is the maximum time patrol groups will wait when arrived to target for doing another target. KRON_UPS_maxwaiting = 30; // how long AI units should be in alert mode after initially spotting an enemy KRON_UPS_alerttime = 90; // how far opfors should move away if they're under attack KRON_UPS_safedist = 300; // how close unit has to be to target to generate a new one target or to enter stealth mode KRON_UPS_closeenough = 300; // how close units have to be to each other to share information, over this, will lose target KRON_UPS_sharedist = 600; //If enabled IA comunicating between them with radio defined sharedist distance, KRON_UPS_comradio = 2; //Sides that are enemies of resistance KRON_UPS_Res_enemy = [east]; //Frequency for doin calculations for each squad. KRON_UPS_Cycle = 20; //Height that heli will fly this input will be randomiced in a 10% KRON_UPS_flyInHeight = 40; //Max distance to target for doing paradrop, will be randomiced between 0 and 100% of this value. KRON_UPS_paradropdist = 250; //Enables or disables AI to use static weapons KRON_UPS_useStatics = true; //Enables or disables AI to put mines if armored enemies near KRON_UPS_useMines = true; //Distance from destination for seraching vehicles KRON_UPS_searchVehicledist = 500; //Percentage of units to surrender. KRON_UPS_EAST_SURRENDER = 0; KRON_UPS_WEST_SURRENDER = 0; KRON_UPS_GUER_SURRENDER = 0; //Efective distance for doing perfect ambush (max distance is this x2) KRON_UPS_ambushdist = 50; //Enable it to send reinforcements, better done it in a trigger inside your mission. KRON_UPS_reinforcement = true; //Artillery support, better control if set in trigger KRON_UPS_ARTILLERY_EAST_FIRE = false; //set to true for doing east to fire KRON_UPS_ARTILLERY_WEST_FIRE = false; //set to true for doing west to fire KRON_UPS_ARTILLERY_GUER_FIRE = false; //set to true for doing resistance to fire //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Initialization of public Variables used in script, do not touch //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- KRON_UPS_flankAngle = 45; //Angulo de flanqueo KRON_UPS_INIT = 0; //Variable que indica que ha sido inicializado KRON_UPS_EAST_SURRENDED = false; KRON_UPS_WEST_SURRENDED = false; KRON_UPS_GUER_SURRENDED = false; KRON_AllWest=[]; //All west AI KRON_AllEast=[]; //All east AI KRON_AllRes=[]; //All resistance AI KRON_UPS_East_enemies = []; KRON_UPS_West_enemies = []; KRON_UPS_Guer_enemies = []; KRON_UPS_East_friends = []; KRON_UPS_West_friends = []; KRON_UPS_Guer_friends = []; KRON_targets0 =[];//objetivos west KRON_targets1 =[];//objetivos east KRON_targets2 =[];//resistence KRON_targetsPos =[];//Posiciones de destino actuales. KRON_NPCs = []; //Lideres de los grupos actuales KRON_UPS_Instances=0; KRON_UPS_Total=0; KRON_UPS_Exited=0; KRON_UPS_East_Total = 0; KRON_UPS_West_Total = 0; KRON_UPS_Guer_Total = 0; KRON_UPS_ARTILLERY_UNITS = []; KRON_UPS_ARTILLERY_WEST_TARGET = objnull; KRON_UPS_ARTILLERY_EAST_TARGET = objnull; KRON_UPS_ARTILLERY_GUER_TARGET = objnull; KRON_UPS_TEMPLATES = []; KRON_UPS_MG_WEAPONS = ["MG36","M249","M240","MK_48","PK","PKm","Pecheneg","M249 Para","M249 Para M145","M240G M145","M60"]; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // ***************************************** SERVER INITIALIZATION ***************************************** if (isNil("KRON_UPS_INIT") || KRON_UPS_INIT == 0) then { //Init library function, Required Version: 5.0 of mon_functions call compile preprocessFileLineNumbers "scripts\UPSMON\common\MON_functions.sqf"; //scripts initialization UPSMON = compile preprocessFile "scripts\UPSMON.sqf"; UPSMON_surrended = compile preprocessFile "scripts\UPSMON\MON_surrended.sqf"; // declaracin de variables privadas private["_obj","_trg","_l","_pos"]; // global functions KRON_randomPos = {private["_cx","_cy","_rx","_ry","_cd","_sd","_ad","_tx","_ty","_xout","_yout"];_cx=_this select 0; _cy=_this select 1; _rx=_this select 2; _ry=_this select 3; _cd=_this select 4; _sd=_this select 5; _ad=_this select 6; _tx=random (_rx*2)-_rx; _ty=random (_ry*2)-_ry; _xout=if (_ad!=0) then {_cx+ (_cd*_tx - _sd*_ty)} else {_cx+_tx}; _yout=if (_ad!=0) then {_cy+ (_sd*_tx + _cd*_ty)} else {_cy+_ty}; [_xout,_yout]}; KRON_PosInfo = {private["_pos","_lst","_bld","_bldpos"];_pos=_this select 0; _lst=_pos nearObjects ["House",12]; if (count _lst==0) then {_bld=0;_bldpos=0} else {_bld=_lst select 0; _bldpos=[_bld] call KRON_BldPos}; [_bld,_bldpos]}; KRON_PosInfo3 = {private["_pos","_lst","_bld","_bldpos"];_pos=_this select 0; _lst= nearestObjects [_pos, [], 3]; if (count _lst==0) then {_bld=objnull;_bldpos=0} else {_bld = nearestbuilding (_lst select 0); _bldpos=[_bld] call KRON_BldPos2}; [_bld,_bldpos]}; KRON_BldPos = {private ["_bld","_bldpos","_posZ","_maxZ"];_bld=_this select 0;_maxZ=0;_bi=0;_bldpos=0;while {_bi>=0} do {if (((_bld BuildingPos _bi) select 0)==0) then {_bi=-99} else {_bz=((_bld BuildingPos _bi) select 2); if (((_bz)>4) && ((_bz>_maxZ) || ((_bz==_maxZ) && (random 1>.8)))) then {_maxZ=_bz; _bldpos=_bi}};_bi=_bi+1};_bldpos}; KRON_BldPos2 = {private ["_bld","_bldpos"]; _bld=_this select 0; _bldpos = 1; while {format ["%1", _bld buildingPos _bldpos] != "[0,0,0]"} do {_bldpos = _bldpos + 1;}; _bldpos = _bldpos - 1; _bldpos;}; KRON_OnRoad = {private["_p","_w","_i","_lst"];_p=_this select 0; _w=_this select 1; _i=_this select 2; _lst=_p nearObjects ["House",12]; if ((count _lst==0) && (_w || !(surfaceIsWater _p))) then {_i=99}; (_i+1)}; KRON_getDirPos = {private["_a","_b","_from","_to","_return"]; _from = _this select 0; _to = _this select 1; _return = 0; _a = ((_to select 0) - (_from select 0)); _b = ((_to select 1) - (_from select 1)); if (_a != 0 || _b != 0) then {_return = _a atan2 _b}; if ( _return < 0 ) then { _return = _return + 360 }; _return}; //KRON_distancePosSqr = {round(((round((_this select 0) select 0)-round((_this select 1) select 0))^2 + (round((_this select 0) select 1)-round((_this select 1) select 1))^2)^0.5)}; //KRON_distancePosSqr = {((((_this select 0) select 0)-((_this select 1) select 0))^2 + (((_this select 0) select 1)-((_this select 1) select 1))^2)^0.5}; KRON_distancePosSqr = {round(((((_this select 0) select 0)-((_this select 1) select 0))^2 + (((_this select 0) select 1)-((_this select 1) select 1))^2)^0.5)}; KRON_relPos = {private["_p","_d","_a","_x","_y","_xout","_yout"];_p=_this select 0; _x=_p select 0; _y=_p select 1; _d=_this select 1; _a=_this select 2; _xout=_x + sin(_a)*_d; _yout=_y + cos(_a)*_d;[_xout,_yout,0]}; KRON_rotpoint = {private["_cp","_a","_tx","_ty","_cd","_sd","_cx","_cy","_xout","_yout"];_cp=_this select 0; _cx=_cp select 0; _cy=_cp select 1; _a=_this select 1; _cd=cos(_a*-1); _sd=sin(_a*-1); _tx=_this select 2; _ty=_this select 3; _xout=if (_a!=0) then {_cx+ (_cd*_tx - _sd*_ty)} else {_cx+_tx}; _yout=if (_a!=0) then {_cy+ (_sd*_tx + _cd*_ty)} else {_cy+_ty}; [_xout,_yout,0]}; KRON_stayInside = { private["_np","_nx","_ny","_cp","_cx","_cy","_rx","_ry","_d","_tp","_tx","_ty","_fx","_fy"]; _np=_this select 0; _nx=_np select 0; _ny=_np select 1; _cp=_this select 1; _cx=_cp select 0; _cy=_cp select 1; _rx=_this select 2; _ry=_this select 3; _d=_this select 4; _tp = [_cp,_d,(_nx-_cx),(_ny-_cy)] call KRON_rotpoint; _tx = _tp select 0; _fx=_tx; _ty = _tp select 1; _fy=_ty; if (_tx<(_cx-_rx)) then {_fx=_cx-_rx}; if (_tx>(_cx+_rx)) then {_fx=_cx+_rx}; if (_ty<(_cy-_ry)) then {_fy=_cy-_ry}; if (_ty>(_cy+_ry)) then {_fy=_cy+_ry}; if ((_fx!=_tx) || (_fy!=_ty)) then {_np = [_cp,_d*-1,(_fx-_cx),(_fy-_cy)] call KRON_rotpoint}; _np; }; // Misc KRON_UPSgetArg = {private["_cmd","_arg","_list","_a","_v"]; _cmd=_this select 0; _arg=_this select 1; _list=_this select 2; _a=-1; {_a=_a+1; _v=format["%1",_list select _a]; if (_v==_cmd) then {_arg=(_list select _a+1)}} foreach _list; _arg}; KRON_UPSsetArg = {private["_cmd","_arg","_list","_a","_v"]; _cmd=_this select 0; _arg=_this select 1; _list=_this select 2; _a=-1; { _a=_a+1; _v=format["%1",_list select _a]; if (_v==_cmd) then { _a=_a+1; _list set [_a,_arg]; }; } foreach _list; _list}; KRON_deleteDead = {private["_u","_s"];_u=_this select 0; _s= _this select 1; _u removeAllEventHandlers "killed"; sleep _s; deletevehicle _u}; // *********************************************************************************************************** // MAIN UPSMON SERVER FUNCTION // *********************************************************************************************************** MON_MAIN_server = { private["_obj","_trg","_l","_pos","_countWestSur","_countEastSur","_countResSur","_WestSur","_EastSur","_ResSur","_target","_targets","_targets0","_targets1","_targets2","_npc","_cycle" ,"_arti","_side","_range","_rounds","_area","_maxcadence","_mincadence","_bullet","_fire","_knownpos","_sharedenemy","_enemyside"]; _cycle = 20; //Time to do a call to commander _arti = objnull; _side = ""; _range = 0; _rounds = 0; _area = 0; _maxcadence = 0; _mincadence = 0; _bullet = ""; _fire = false; _target = objnull; _knownpos =[0,0,0]; _enemyside = []; _WestSur = KRON_UPS_WEST_SURRENDED; _EastSur = KRON_UPS_EAST_SURRENDED; _ResSur = KRON_UPS_GUER_SURRENDED; //Main loop while {true} do { _countWestSur = round ( KRON_UPS_West_Total * KRON_UPS_WEST_SURRENDER / 100); _countEastSur = round ( KRON_UPS_East_Total * KRON_UPS_EAST_SURRENDER / 100); _countResSur = round ( KRON_UPS_Guer_Total * KRON_UPS_GUER_SURRENDER / 100); //Checks for WEST surrender if (KRON_UPS_WEST_SURRENDER > 0 && !KRON_UPS_WEST_SURRENDED ) then { { if (!alive _x || !canmove _x) then {KRON_AllWest = KRON_AllWest-[_x]}; }foreach KRON_AllWest; if ( count KRON_AllWest <= _countWestSur ) then { KRON_UPS_WEST_SURRENDED = true; publicvariable "KRON_AllWest"; publicvariable "KRON_UPS_WEST_SURRENDED"; }; }; //Checks for EAST surrender if (KRON_UPS_EAST_SURRENDER > 0 && !KRON_UPS_EAST_SURRENDED ) then { { if (!alive _x || !canmove _x) then {KRON_AllEast = KRON_AllEast-[_x]}; }foreach KRON_AllEast; if ( count KRON_AllEast <= _countEastSur ) then { KRON_UPS_EAST_SURRENDED = true; publicvariable "KRON_AllEast"; publicvariable "KRON_UPS_EAST_SURRENDED"; }; }; //Checks for RESISTANCE surrender if (KRON_UPS_GUER_SURRENDER > 0 && !KRON_UPS_GUER_SURRENDED ) then { { if (!alive _x || !canmove _x) then {KRON_AllRes = KRON_AllRes-[_x]}; }foreach KRON_AllRes; if ( count KRON_AllRes <= _countResSur ) then { KRON_UPS_GUER_SURRENDED = true; publicvariable "KRON_AllRes"; publicvariable "KRON_UPS_GUER_SURRENDED"; }; }; //Exec surrended script if (KRON_UPS_WEST_SURRENDED && !_WestSur ) then { _WestSur = true; [west] spawn UPSMON_surrended; }; if (KRON_UPS_EAST_SURRENDED && !_EastSur ) then { _EastSur = true; [east] spawn UPSMON_surrended; }; if (KRON_UPS_GUER_SURRENDED && !_ResSur ) then { _ResSur = true; [Resistance] spawn UPSMON_surrended; }; sleep 0.5; _sharedenemy = 0; _targets0 = []; _targets1 = []; _targets2 = []; { if (!isnull _x && alive _x && !captive _x ) then { _npc = _x; _targets = []; switch (side _npc) do { //West targets case west: { _sharedenemy = 0; _enemyside = [east]; }; //East targets case east: { _sharedenemy = 1; _enemyside = [west]; }; //Resistance targets case resistance: { _sharedenemy = 2; _enemyside = KRON_UPS_Res_enemy; }; }; if (side _npc in KRON_UPS_Res_enemy) then { _enemyside = _enemyside + [resistance]; }; //Gets known targets on each leader for comunicating enemy position //Has better performance with targetsquery //_targets = _npc nearTargets KRON_UPS_sharedist; _targets = _npc targetsQuery ["","","","",""]; { //_target = _x select 4; //Neartargets _target = _x select 1;//Targetsquery if ( side _target in _enemyside ) then { //if (KRON_UPS_Debug>0) then {diag_log format["%1: %2 _enemyside=%3 _target=%4 %5 enemies=%6",_npc getVariable ("UPSMON_grpid"),_npc,_enemyside, typeof _target,side _target,_npc countEnemy _targets ]}; //if (KRON_UPS_Debug>0) then {player globalchat format["%1: %2 _enemyside=%3 _target=%4 %5 enemies=%6",_npc getVariable ("UPSMON_grpid"),_npc,_enemyside, typeof _target,side _target,_npc countEnemy _targets ]}; if (!isnull _target && alive _target && canmove _target && !captive _target && _npc knowsabout _target > 0.5 && ( _target iskindof "Land" || _target iskindof "Air" || _target iskindof "Ship" ) && !( _target iskindof "Animal") && ( _target emptyPositions "Gunner" == 0 && _target emptyPositions "Driver" == 0 || (!isnull (gunner _target) && canmove (gunner _target)) || (!isnull (driver _target) && canmove (driver _target))) ) then { //Saves last known position //_knownpos = _x select 0; //Neartargets _knownpos = _x select 4;//Targetsquery _target setvariable ["UPSMON_lastknownpos", _knownpos, false]; call (compile format ["_targets%1 = _targets%1 - [_target]",_sharedenemy]); call (compile format ["_targets%1 = _targets%1 + [_target]",_sharedenemy]); }; }; }foreach _targets; }; sleep 0.5; }foreach KRON_NPCs; //Share targets KRON_targets0 = _targets0; KRON_targets1 = _targets1; KRON_targets2 = _targets2; //Target debug console if (KRON_UPS_Debug>0) then {hintsilent parseText format["West(A=%1 C=%2 T=%3)
East(A=%4 C=%5 T=%6)
Res(A=%7 C=%8 T=%9)
" ,KRON_UPS_West_Total, count KRON_AllWest, count KRON_targets0 ,KRON_UPS_East_Total, count KRON_AllEast, count KRON_targets1 ,KRON_UPS_Guer_Total, count KRON_AllRes, count KRON_targets2 ]}; sleep 0.5; //Artillery module control { _arti = _x select 0; _rounds = _x select 1; _range = _x select 2; _area = _x select 3; _maxcadence = _x select 4; _mincadence = _x select 5; _bullet = _x select 6; if (!isnull (gunner _arti) && canmove (gunner _arti)) then { _side = side gunner _arti; _fire = call (compile format ["KRON_UPS_ARTILLERY_%1_FIRE",_side]); //If fire enabled gets a known target pos for doing fire if no friendly squads near. if (_fire) then { _target = call (compile format ["KRON_UPS_ARTILLERY_%1_TARGET",_side]); if (isnil "_target" ) then {_target = objnull;}; switch (_side) do { //West targets case west: { _targets = KRON_targets0; }; //East targets case east: { _targets = KRON_targets1; }; //Resistance targets case resistance: { _targets = KRON_targets2; }; }; //Check if has a target if (!(_target in _targets ) || isnull _target || !alive _target) then { _target = objnull; { _auxtarget = _x; _targetPos = _auxtarget getvariable ("UPSMON_lastknownpos"); if (!isnil "_targetPos") then { //If target in range check no friendly squad near if (alive _auxtarget && !(_auxtarget iskindof "Air") && (round([position _arti,_targetPos] call KRON_distancePosSqr)) <= _range) then { _target = _auxtarget; //Must check if no friendly squad near fire position { if (!isnull _x && _side == side _x) then { if ((round([position _x,_targetPos] call KRON_distancePosSqr)) < KRON_UPS_safedist) exitwith {_target = objnull;}; }; }foreach KRON_NPCs; }; }; //If target found exit if (!isnull _target) exitwith {}; }foreach _targets; }; //If target fires artillery if (!isnull _target) then { //Fix current target call (compile format ["KRON_UPS_ARTILLERY_%1_TARGET = _target",_side]); _targetPos = _target getvariable ("UPSMON_lastknownpos"); if (!isnil "_targetPos") then { [_targetPos,_rounds,_area,_maxcadence,_mincadence,_bullet] spawn MON_artillery_dofire; }; }; }; }; sleep 0.5; }foreach KRON_UPS_ARTILLERY_UNITS; //if (KRON_UPS_Debug>0) then {player globalchat format["Init_upsmon artillery=%1 %2",count KRON_UPS_ARTILLERY_UNITS]}; sleep _cycle; }; }; // *********************************************************************************************************** // INITIALIZATION OF UPSMON // *********************************************************************************************************** _l = allunits + vehicles; { if ((_x iskindof "AllVehicles") && (side _x != civilian)) then { _s = side _x; switch (_s) do { case west: { KRON_AllWest=KRON_AllWest+[_x]; }; case east: { KRON_AllEast=KRON_AllEast+[_x]; }; case resistance: { KRON_AllRes=KRON_AllRes+[_x]; }; }; }; } forEach _l; _l = nil; if (isNil("KRON_UPS_Debug")) then {KRON_UPS_Debug=0}; KRON_UPS_East_enemies = KRON_AllWest; KRON_UPS_West_enemies = KRON_AllEast; if (east in KRON_UPS_Res_enemy ) then { KRON_UPS_East_enemies = KRON_UPS_East_enemies+KRON_AllRes; KRON_UPS_Guer_enemies = KRON_AllEast; } else { KRON_UPS_East_friends = KRON_UPS_East_friends+KRON_AllRes; KRON_UPS_Guer_friends = KRON_AllEast; }; if (west in KRON_UPS_Res_enemy ) then { KRON_UPS_West_enemies = KRON_UPS_West_enemies+KRON_AllRes; KRON_UPS_Guer_enemies = KRON_UPS_Guer_enemies+KRON_AllWest; } else { KRON_UPS_West_friends = KRON_UPS_West_friends+KRON_AllRes; KRON_UPS_Guer_friends = KRON_UPS_Guer_friends+KRON_AllWest; }; KRON_UPS_West_Total = count KRON_AllWest; KRON_UPS_East_Total = count KRON_AllEast; KRON_UPS_Guer_Total = count KRON_AllRes; //Initialization done KRON_UPS_INIT=1; }; // --------------------------------------------------------------------------------------------------------- processInitCommands; //Executes de main process of server [] SPAWN MON_MAIN_server; diag_log "--------------------------------"; diag_log (format["UPSMON started"]); if(true) exitWith {}; // ========================================================================================================= // Script for action follow me when surrended, adds the soldier to player squad in a random choice. // Version: 1.0 // Author: Monsada (smirall@hotmail.com) // --------------------------------------------------------------------------------------------------------- private ["_obj","_caller","_id","_objtype","_rnd","_join","_direction"]; _npc = _this select 0; _caller = _this select 1; _id = _this select 2; _rnd = 0; _join=true; _npc switchmove ""; _direction = ((getpos _caller select 0) - (getpos _npc select 0)) atan2 ((getpos _caller select 1) - (getpos _npc select 1)); //If positive values are needed then use: if(_direction < 0) then {_direction = _direction + 360}; _npc setdir _direction; _npc dowatch _caller; _npc setSpeedMode "LIMITED"; _npc domove position _caller; sleep 0.5; _rnd = random 100; _npc setmimic "Sad"; if (_rnd <= 30 ) then { _npc globalchat "Ok"; }; if (_rnd > 30 && _rnd <= 50) then { _npc globalchat "Yes"; }; if (_rnd > 50 && _rnd <= 100) then { _join=false; _rnd = random 100; if (_rnd < 20) then { _npc setmimic "angry"; _npc switchmove "CtsPercMstpSnonWnonDnon_idle31rejpaniVnose"; _npc globalchat "Kiss my ass"; }; if (_rnd > 20 && _rnd <= 40) then { _npc setmimic "Agresive"; _npc switchmove "CtsPercMstpSnonWnonDnon_idle33rejpaniVzadku"; sleep 3; _npc globalchat "Que te den"; }; if (_rnd > 40 && _rnd <= 60) then { _npc setmimic "Agresive"; _npc switchmove "CtsPercMstpSnonWnonDnon_idle33rejpaniVzadku"; sleep 1; _npc globalchat "Fuck you"; }; if (_rnd > 60 && _rnd <= 80) then { _npc setmimic "Agresive"; _npc switchmove "CtsPercMstpSnonWnonDnon_idle32podrbaniNanose"; sleep 0.5; _npc globalchat "Follow your mother"; }; if (_rnd > 80 && _rnd <= 100) then { _npc setmimic "angry"; sleep 0.1; _npc switchmove "CtsPercMstpSnonWnonDnon_idle32podrbaniNanose"; _npc globalchat "Fuck you"; }; }; if (_join) then { // remove the action once it is activated _npc stop false; if (_npc == leader _npc) then { _npc globalchat "All follow that man"; { _x switchmove ""; [_x] joinSilent _caller; }foreach units _npc; } else { _npc removeAction _id; [_npc] joinSilent _caller; }; }; if (true) exitWith {}; // ========================================================================================================= // Biblioteca de funciones comunes // Version: 5.0.7 // Author: Monsada (smirall@hotmail.com) // http://www.simulacion-esp.com/ // Comunidad Hispana de Simulacin // ========================================================================================================= MON_bugged_vehicles = ["BIS_alice_emptydoor","ACE_Grenade_Geometry"]; // --------------------------------------------------------------------------------------------------------- //Funcin que permite posicionar objetos a la altura definida //param1: objeto //param2: altura MON_subir = { if (!isserver) exitwith{}; private ["_object","_altura","_pos","_x","_y","_z","_bld","_bldpos"]; _object = _this select 0; _altura = _this select 1; _x = 0; _y = 0; _z = 0; _pos =0; _bld = objnull; _bldpos =0; _pos = getposasl _object; _x = _pos select 0; _y = ( _pos select 1 ); _z = ( _pos select 2 ) + _altura; _object setposasl [_x,_y ,_z]; }; //Retorna la direccin entre dos posiciones MON_getDirPos = {private["_a","_b","_from","_to","_return"]; _from = _this select 0; _to = _this select 1; _return = 0; _a = ((_to select 0) - (_from select 0)); _b = ((_to select 1) - (_from select 1)); if (_a != 0 || _b != 0) then {_return = _a atan2 _b}; if ( _return < 0 ) then { _return = _return + 360 }; _return}; // --------------------------------------------------------------------------------------------------------- //Funcin de borra unidades que han sido matadas //param1: objeto a borrar cuando muera //param2: tiempo a esperar antes de borrar el objeto MON_deleteDead = {private["_u","_s"];_u=_this select 0; _s= _this select 1; _u removeAllEventHandlers "killed"; sleep _s; deletevehicle _u}; MON_deleteDeadDist = {private["_u","_s","_dist","_OCercanos","_cicle","_deleted","_isplayer"]; _i = 0; _cicle = 10; _deleted = false; _isplayer = false; _u = _this select 0; _s = _this select 1; _dist = _this select 2; _u removeAllEventHandlers "killed"; sleep _s; while {!_deleted} do { _isplayer = false; //Buscamos objetos cercanos _OCercanos = nearestObjects [_u, ["Man"] , _dist]; //Validamos si alguno de los soldados cerca es un jugador y est vivo {if (isplayer _x && alive _x) exitwith {_isplayer = true;}}foreach _OCercanos; if (!_isplayer) then { deletevehicle _u; _deleted = true; }; sleep _cicle; }; }; // --------------------------------------------------------------------------------------------------------- //Funcin tomada de UPS, busca el comando en la lista y devuelve el siguiente elemento //param1: comando a buscar //param2: valor por defecto del comando //param3: array con los comandos //Retorna valor del comando encontrado o valor por defecto MON_getArg = {private["_cmd","_arg","_list","_a","_v"]; _cmd=_this select 0; _arg=_this select 1; _list=_this select 2; _a=-1; {_a=_a+1; _v=format["%1",_list select _a]; if (_v==_cmd) then {_arg=(_list select _a+1)}} foreach _list; _arg}; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve una posicin en 3D a partir de otra, una direccin y una distancia //param1: posicin //param2: direccin //param3: distancia //Retorna vector de posicion en 3D [0,0,0] MON_GetPos = { private ["_pos","_dir","_dist","_cosU","_cosT","_relTX","_sinU","_sinT","_relTY","_newPos","_newPosX","_newPosY", "_targetZ" ]; _pos = _this select 0; _dir = _this select 1; _dist = _this select 2; _targetX = _pos select 0; _targetY = _pos select 1; _targetZ = _pos select 2; //Calculamos posicin _cosU = [_dir] call MON_GetCOS; _sinU = [_dir] call MON_GetSIN; _cosT = abs cos(_dir); _sinT = abs sin(_dir); _relTX = _sinT * _dist * _cosU; _relTY = _cosT * _dist * _sinU; _newPosX = _targetX + _relTX; _newPosY = _targetY + _relTY; _newPos = [_newPosX,_newPosY,_targetZ]; _newPos; }; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve una posicin en 2D a partir de otra, una direccin y una distancia //param1: posicin //param2: direccin //param3: distancia //Retorna vector de posicion en 2D [0,0] MON_GetPos2D = { private ["_pos","_dir","_dist","_cosU","_cosT","_relTX","_sinU","_sinT","_relTY","_newPos","_newPosX","_newPosY" ]; _pos = _this select 0; _dir = _this select 1; _dist = _this select 2; _targetX = _pos select 0; _targetY = _pos select 1; //Calculamos posicin _cosU = [_dir] call MON_GetCOS; _sinU = [_dir] call MON_GetSIN; _cosT = abs cos(_dir); _sinT = abs sin(_dir); _relTX = _sinT * _dist * _cosU; _relTY = _cosT * _dist * _sinU; _newPosX = _targetX + _relTX; _newPosY = _targetY + _relTY; _newPos = [_newPosX,_newPosY]; _newPos; }; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve las posiciones que se pueden ocupar dentro de un edificio //param1: objeto location //Retorna numero de posiciones que tiene el edificio MON_BldPos = {private ["_bld","_bldpos"]; _bld=_this; _bldpos = 1; while {format ["%1", _bld buildingPos _bldpos] != "[0,0,0]"} do {_bldpos = _bldpos + 1;}; _bldpos = _bldpos - 1; _bldpos;}; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve la casa que hay ms cerca del objeto param1 y las posiciones que se pueden ocupar dentro de ella. //param1: objeto //Retorna vector con [objeto location, posiciones que tiene] MON_PosInfo = { private["_obj","_bld","_bldpos"]; _obj=_this; _bld = nearestbuilding _obj; _bldpos= _bld call MON_BldPos; [_bld,_bldpos]; }; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve el valor negativo o positivo del seno en base a un angulo MON_GetSIN = { private["_dir","_sin","_cos"]; _dir=_this select 0; if (_dir<90) then { _sin=1; } else { if (_dir<180) then { _sin=-1; } else { if (_dir<270) then { _sin=-1; } else { _sin=1; }; }; }; _sin }; // --------------------------------------------------------------------------------------------------------- //Funcin que devuelve el valor negativo o positivo del coseno en base a un angulo MON_GetCOS = { private["_dir","_cos"]; _dir=_this select 0; if (_dir<90) then { _cos=1; } else { if (_dir<180) then { _cos=1; } else { if (_dir<270) then { _cos=-1; } else { _cos=-1; }; }; }; _cos }; //Funcin que busca vehiculos cercanos y hace entrar a las unidades del lider //Parmeters: [_grpid,_npc] // <- _grpid: id of group to assign to vehicle // <- _npc: lider // -> _getin: true if any getin MON_GetIn_NearestVehicles = { private["_vehicles","_npc","_units","_unitsIn","_grpid","_getin"]; _grpid = _this select 0; _npc = _this select 1; _vehicles=[[]]; _air=[[]]; _units = []; _unitsIn = []; _getin=false; if (leader _npc == _npc) then { _units = units _npc; } else { _units = _units + [_npc]; }; { if ( (_x!= vehicle _x && !((vehicle _x) iskindof "StaticWeapon" )) || !(_x iskindof "Man") || !alive _x || !canmove _x || !canstand _x) then {_units = _units-[_x];}; }foreach _units; _unitsIn = _units; //if (KRON_UPS_Debug>0) then {diag_log format["%1 _units=%2",_grpid, count _units]}; //First catch combat vehicles if ( (count _units) > 0) then { _air = [_npc,200] call MON_NearestsAirTransports; {if (_npc knowsabout (_x select 0) <= 0.5) then{ _air = _air - [_x]};}foreach _air; _units = [_grpid, _units, _air, false] call MON_selectvehicles; }; sleep 0.05; if ( (count _units) > 1) then { _vehicles = [_npc,200,true] call MON_NearestsLandCombat; {if (_npc knowsabout(_x select 0) <= 0.5) then{ _vehicles = _vehicles - [_x]};}foreach _vehicles; _units = [_grpid, _units, _vehicles, false] call MON_selectvehicles; }; sleep 0.05; if ( (count _units) > 0) then { _vehicles = [_npc,200] call MON_NearestsLandTransports; {if (_npc knowsabout (_x select 0) <= 0.5) then{ _vehicles = _vehicles - [_x]};}foreach _vehicles; _units = [_grpid, _units, _vehicles, false] call MON_selectvehicles; }; sleep 5; if ( (count _units) > 0 && (count _vehicles) > 0) then { sleep 1; _vehicles = _vehicles + _air; _units = [_grpid, _units, _vehicles, true] call MON_selectvehicles; }; sleep 0.05; _unitsIn = _unitsIn - _units; _unitsIn; }; //Funcin que busca vehiculos cercanos y hace entrar a las unidades del lider //Parmeters: [_grpid,_npc] // <- _grpid: id of group to assign to vehicle // <- _npc: lider // -> _getin: true if any getin MON_GetIn_NearestCombat = { private["_vehicles","_npc","_units","_unitsIn","_grpid","_getin","_dist","_all"]; _grpid = _this select 0; _npc = _this select 1; _dist = _this select 2; _all = _this select 3; _vehicles=[[]]; _units = []; _unitsIn = []; _getin=false; if (leader _npc == _npc) then { _units = units _npc; } else { _units = _units + [_npc]; }; { if ( (_x!= vehicle _x && !((vehicle _x) iskindof "StaticWeapon" )) || !(_x iskindof "Man") || !alive _x || !canmove _x || !canstand _x) then {_units = _units-[_x];}; }foreach _units; //If suficient units leader will not get in if (!all) then { if (count _units > 2 ) then {_units = _units - [leader _npc]}; }; _unitsIn = _units; //We need 2 units available if not any leave vehicle to another squad if ( (count _units) > 1) then { _vehicles = [_npc,_dist,_all] call MON_NearestsAirCombat; {if (_npc knowsabout (_x select 0) <= 0.5) then{ _vehicles = _vehicles - [_x]};}foreach _vehicles; _units = [_grpid, _units, _vehicles, false] call MON_selectvehicles; }; sleep 0.05; if ( (count _units) > 1) then { _vehicles = [_npc,_dist,_all] call MON_NearestsLandCombat; {if (_npc knowsabout(_x select 0) <= 0.5) then{ _vehicles = _vehicles - [_x]};}foreach _vehicles; _units = [_grpid, _units, _vehicles, false] call MON_selectvehicles; }; _unitsIn = _unitsIn - _units; _unitsIn; }; //Funcin que busca vehiculos cercanos y hace entrar a las unidades del lider //Parmeters: [_grpid,_npc] // <- _grpid: id of group to assign to vehicle // <- _npc: lider // -> _getin: true if any getin MON_GetIn_NearestBoat = { private["_vehicles","_npc","_units","_unitsIn","_grpid","_getin","_dist"]; _grpid = _this select 0; _npc = _this select 1; _dist = _this select 2; _vehicles=[[]]; _units = []; _unitsIn = []; _getin=false; if (leader _npc == _npc) then { _units = units _npc; } else { _units = _units + [_npc]; }; { if ( (_x!= vehicle _x && !((vehicle _x) iskindof "StaticWeapon" )) || !(_x iskindof "Man") || !alive _x || !canmove _x || !canstand _x) then {_units = _units-[_x];}; }foreach _units; _unitsIn = _units; //We need 2 units available if not any leave vehicle to another squad if ( (count _units) > 0) then { _vehicles = [_npc,_dist] call MON_Nearestsboats; {if (_npc knowsabout (_x select 0) <= 0.5) then{ _vehicles = _vehicles - [_x]};}foreach _vehicles; _units = [_grpid, _units, _vehicles, false] call MON_selectvehicles; }; if ( (count _units) > 1 && (count _vehicles) > 0) then { sleep 1; _units = [_grpid, _units, _vehicles, true] call MON_selectvehicles; }; _unitsIn = _unitsIn - _units; _unitsIn; }; //Funcin que busca staticos cercanos y hace entrar a las unidades del lider //Parmeters: [_grpid,_npc] // <- _grpid: id of group to assign to vehicle // <- _npc: lider // -> _getin: true if any getin MON_GetIn_NearestStatic = { private["_vehicles","_npc","_units","_unitsIn","_grpid","_getin","_count"]; _grpid = _this select 0; _npc = _this select 1; _count = 0; _distance = 100; if ((count _this) > 2) then {_distance = _this select 2;}; _vehicles=[]; _units = []; _unitsIn = []; _getin=false; //Buscamos staticos cerca _vehicles = [_npc,_distance] call MON_NearestsStaticWeapons; if ( count _vehicles == 0) exitwith {_unitsIn;}; if (leader _npc == _npc) then { _units = (units _npc) - [_npc]; } else { _units = _units + [_npc]; }; //Solo tomamos las unidades vivas y que no estn en vehiculo { if ( (_x iskindof "Man") && _x == vehicle _x && alive _x && canmove _x && canstand _x) then { _unitsIn = _unitsIn + [_x]; }; }foreach _units; //Intentamos tomar solo las que estn disponibles _units = []; { if (unitready _x) then { _units = _units + [_x]; }; }foreach _unitsin; //Si hay unidades disponibles las usamos if (count _units > 0) then { _unitsIn = _units; }; //if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: Found %2 estatic weapons %3 men available",_grpid,count _vehicles, count _unitsIn]}; _units = _unitsIn; if ( count _unitsIn > 0) then { _units = [_grpid, _units, _vehicles, true] call MON_selectvehicles; }; _unitsIn = _unitsIn - _units; _unitsIn; }; //Function to assign units to vehicles //Parmeters: [_grpid,_unitsin,_vehicle] // <- _grpid: id of group to assign to vehicle // <- _units: array of units to getin // <- _vehicles: array of vehicles to use // -> _untis: array of units getin MON_selectvehicles = { private["_vehicles","_emptypositions","_units","_unitsIn","_i","_grpid","_vehgrpid","_unit","_wp","_any","_index","_cargo"]; _grpid = _this select 0; _units = _this select 1; _vehicles = _this select 2; _any = _this select 3; //meter en cualquier vehiculo _wp = []; _vehicle = []; _unitsIn = []; _emptypositions = 0; _i = 0; _vehgrpid = 0; _unit = objnull; _index = 0; _cargo = []; { if ((count _units) == 0 ) exitwith {}; _vehicle = _x select 0 ; _emptypositions = _x select 1; _unitsIn = []; _i = 0; _vehgrpid = _vehicle getvariable ("UPSMON_grpid"); _cargo = _vehicle getvariable ("UPSMON_cargo"); if ( isNil("_vehgrpid") ) then {_vehgrpid = 0;}; if ( isNil("_cargo") ) then {_cargo = [];}; //Asignamos el vehiculo a a la escuadra si contiene las posiciones justas if (_vehgrpid == 0) then { _vehicle setVariable ["UPSMON_grpid", _grpid, false]; _vehicle setVariable ["UPSMON_cargo", _units, false]; _vehgrpid = _grpid; }; { if (!alive _x || !canmove _x) then {_cargo = _cargo - [_x]; }; }foreach _cargo; _emptypositions = _emptypositions - (count _cargo - count ( crew _vehicle) ); //ahora buscamos en cualquier vehiculo if ( _vehgrpid == _grpid || (_emptypositions > 0 && _any)) then { while {_i < _emptypositions && _i < count _units} do { _unit = _units select _i; _unitsIn = _unitsIn + [_unit]; _i = _i + 1; }; { _units = _units - [_x]; }foreach _unitsIn; if ( (count _unitsIn) > 0) then { //Asignamos el vehiculo a a la escuadra si contiene las posiciones justas if (_vehgrpid == _grpid) then { _vehicle setVariable ["UPSMON_cargo", _units, false]; }; //Metemos las unidades en el vehiculo [_grpid,_unitsIn,_vehicle] spawn MON_UnitsGetIn; if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: Get in %2 %3 units of %4 available",_grpid,typeof _vehicle,count _unitsIn,_emptypositions]}; //if (KRON_UPS_Debug>0) then {diag_log format["%1 getin %2 id=%7 any=%8 unitsin=%9 quedan=%6 emptypositions=%3 cargo=%4 crew=%5",_grpid, typeof _vehicle, _emptypositions, count _cargo,count (crew _vehicle),count _units,_vehgrpid,_any, count _unitsIn]}; }; }; _index = _index + 1; sleep 0.05; } foreach _vehicles; _units; }; //Funcion que mete la tropa en el vehiculo //Parmeters: [_grpid,_unitsin,_vehicle] // <- _grpid: id of group to assign to vehicle // <- _unitsin: array of units to getin // <- _vehicle MON_UnitsGetIn = { private["_grpid","_vehicle","_npc","_driver","_gunner", "_unitsin", "_units" , "_Commandercount","_Drivercount","_Gunnercount","_cargo", "_Cargocount","_emptypositions","_Commander","_vehgrpid","_cargo"]; _grpid = _this select 0; _unitsin = _this select 1; _vehicle = _this select 2; _units = _unitsin; _driver = objnull; _gunner = objnull; _Commander = objnull; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; _cargo = []; _Cargocount = (_vehicle) emptyPositions "Cargo"; _Gunnercount = (_vehicle) emptyPositions "Gunner"; _Commandercount = (_vehicle) emptyPositions "Commander"; _Drivercount = (_vehicle) emptyPositions "Driver"; //Obtenemos el identificador del vehiculo _vehgrpid = _vehicle getvariable ("UPSMON_grpid"); _cargo = _vehicle getvariable ("UPSMON_cargo"); if ( isNil("_vehgrpid") ) then {_vehgrpid = 0;}; if ( isNil("_cargo") ) then {_cargo = [];}; _cargo = _cargo - _unitsin; //Para evitar duplicados _cargo = _cargo + _unitsin; //Aadimos a la carga _vehicle setVariable ["UPSMON_cargo", _cargo, false]; //Hablitamos a la IA para entrar en el vehiculo { [_x,0] call MON_dostop; if ("StaticWeapon" countType [vehicle (_x)]>0) then { _x spawn MON_doGetOut; }; unassignVehicle _x; _x spawn MON_Allowgetin; }foreach _units; //Asignamos al lider como comandante o carga { if ( _vehgrpid == _grpid && _x == leader _x && _Commandercount > 0 ) exitwith { _Commandercount = 0; _Commander = _x; _Commander assignAsCommander _vehicle; _units = _units - [_x]; [_x] orderGetIn true; }; if ( _x == leader _x && _Cargocount > 0 ) exitwith { _x assignAsCargo _vehicle; _units = _units - [_x]; _Cargocount = _Cargocount - 1; [_x] orderGetIn true; }; }foreach _units; //if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: _vehgrpid %2 ,_Gunnercount %3, %4",_grpid,_vehgrpid,_Gunnercount,count _units]}; //Si el vehiculo pertenece al grupo asignamos posiciones de piloto, sin solo de carga if ( _vehgrpid == _grpid ) then { //Asignamos el conductor if ( _Drivercount > 0 && count (_units) > 0 ) then { _driver = _units select (count _units - 1); [_driver,_vehicle,0] spawn MON_assignasdriver; _units = _units - [_driver]; }; //Asignamos el artillero if ( _Gunnercount > 0 && count (_units) > 0 ) then { _gunner = [_vehicle,_units] call MON_getNearestSoldier; [_gunner,_vehicle] spawn MON_assignasgunner; _units = _units - [_gunner]; }; }; //if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: _vehgrpid=%2 units=%4",_grpid,_vehgrpid,_cargocount,count _units]}; //Movemos el resto como carga if ( _Cargocount > 0 && count (_units) > 0 ) then { { _x assignAsCargo _vehicle; [_x] orderGetIn true; sleep 0.05; } forEach _units; }; { [_x] spawn MON_avoidDissembark; } forEach (_unitsin - [_driver]) - [_gunner]; }; MON_getNearestSoldier = { private["_units","_obj","_near"]; _obj = _this select 0; _units = _this select 1; _near = objnull; { if (isnull _near) then { _near = _x; } else { if ( _x distance _obj < _near distance _obj ) then {_near = _x;}; }; }foreach _units; _near; }; MON_avoidDissembark = { private["_npc","_vehicle","_timeout"]; _npc = _this select 0; _vehicle = vehicle _npc ; _timeout = 120; _timeout = time + _timeout; while {_npc == vehicle _npc && alive _npc && canmove _npc && time < _timeout} do { sleep 1; }; if (!alive _npc || !canmove _npc || time >= _timeout || driver vehicle _npc == _npc) exitwith{}; _npc stop true; while {_npc != vehicle _npc && alive _npc && canmove _npc} do {sleep 1;}; if (!alive _npc || !canmove _npc) exitwith{}; _npc stop false; //sleep 0.5; if (!isnull (assignedVehicle player)) then { [_npc] ordergetin true; [_npc] spawn MON_avoidDissembark; }; }; //Funcin que devuelve un vehiculo de transporte cercano //Parmeters: [_npc] // <- _npc: object for position search // -> _vehicle: vehicle MON_NearestLandTransport = { private["_vehicle","_npc","_transportSoldier","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount"]; _npc = _this; _OCercanos = []; _transportSoldier = 0; _vehicle = objnull; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Car","TANK","Truck","Motorcycle"] , 150]; { _Cargocount = (_x) emptyPositions "Cargo"; _Gunnercount = (_x) emptyPositions "Gunner"; _Commandercount = (_x) emptyPositions "Commander"; _Drivercount = (_x) emptyPositions "Driver"; _transportSoldier = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && canMove _x && _transportSoldier >= count (units _npc) && !(typeof _x in MON_bugged_vehicles) && (_drivercount > 0 || side _npc == side _x )) exitwith {_vehicle = _x;}; }foreach _OCercanos; _vehicle; }; //Funcin que devuelve un array con los vehiculos terrestres ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_NearestsLandTransports = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance"]; _npc = _this select 0; _distance = _this select 1; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Car","TANK","Truck","Motorcycle"] , _distance]; { _Cargocount = (_x) emptyPositions "Cargo"; _Gunnercount = (_x) emptyPositions "Gunner"; _Commandercount = (_x) emptyPositions "Commander"; _Drivercount = (_x) emptyPositions "Driver"; _emptypositions = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && _emptypositions > 0 && canMove _x && !(typeof _x in MON_bugged_vehicles) && (_drivercount > 0 || side _npc == side _x )) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin que devuelve un array con los vehiculos terrestres ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_NearestsLandCombat = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance","_all"]; _npc = _this select 0; _distance = _this select 1; _all = _this select 2; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Car","TANK","Truck","Motorcycle"] , _distance]; { if (_all) then { _Cargocount = (_x) emptyPositions "Cargo"; }; _Gunnercount = (_x) emptyPositions "Gunner"; _Drivercount = (_x) emptyPositions "Driver"; _Commandercount = (_x) emptyPositions "Commander"; _emptypositions = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && _Gunnercount > 0 && canMove _x && !(typeof _x in MON_bugged_vehicles) && (_drivercount > 0 || side _npc == side _x )) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin que devuelve un array con los vehiculos aereos ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_NearestsAirTransports = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance"]; _npc = _this select 0; _distance = _this select 1; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Helicopter"] , _distance]; { _Cargocount = (_x) emptyPositions "Cargo"; _Gunnercount = (_x) emptyPositions "Gunner"; _Commandercount = (_x) emptyPositions "Commander"; _Drivercount = (_x) emptyPositions "Driver"; _emptypositions = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && _emptypositions > 0 && canMove _x && !(typeof _x in MON_bugged_vehicles) && (_drivercount > 0 || side _npc == side _x )) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin que devuelve un array con los vehiculos aereos ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_NearestsAirCombat = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance","_all"]; _npc = _this select 0; _distance = _this select 1; _all = _this select 2; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Helicopter"] , _distance]; { if (_all) then { _Cargocount = (_x) emptyPositions "Cargo"; }; _Gunnercount = (_x) emptyPositions "Gunner"; _Drivercount = (_x) emptyPositions "Driver"; _Commandercount = (_x) emptyPositions "Commander"; _emptypositions = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && _Gunnercount > 0 && canMove _x && !(typeof _x in MON_bugged_vehicles) && (_drivercount > 0 || side _npc == side _x )) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin que devuelve un array con los vehiculos staticos ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_NearestsStaticWeapons = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance"]; _npc = _this select 0; _distance = _this select 1; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["StaticWeapon"] , _distance]; { _Gunnercount = (_x) emptyPositions "Gunner"; _emptypositions = _Gunnercount; if (!locked _x && alive _x && _emptypositions > 0 && !(typeof _x in MON_bugged_vehicles) ) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin que devuelve un array con los vehiculos marinos ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_Nearestsboats = { private["_vehicles","_npc","_emptypositions","_OCercanos","_driver", "_Commandercount","_Drivercount","_Gunnercount","_Cargocount","_distance"]; _npc = _this select 0; _distance = _this select 1; _OCercanos = []; _emptypositions = 0; _vehicles = []; _Cargocount = 0; _Gunnercount = 0; _Commandercount = 0; _Drivercount = 0; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Ship"] , _distance]; { _Cargocount = (_x) emptyPositions "Cargo"; _Gunnercount = (_x) emptyPositions "Gunner"; _Commandercount = (_x) emptyPositions "Commander"; _Drivercount = (_x) emptyPositions "Driver"; _emptypositions = _Cargocount + _Gunnercount + _Commandercount + _Drivercount; if (!locked _x && _emptypositions > 0 && canMove _x && (_drivercount > 0 || side _npc == side _x )) then { _vehicles = _vehicles + [[_x,_emptypositions]];}; }foreach _OCercanos; _vehicles; }; //Funcin para retardar la toma del volante, as no se va el vehiculo y da tiempo a subir MON_assignasdriver = { private["_vehicle","_driver","_wait"]; _driver = _this select 0; _vehicle = _this select 1; _wait = _this select 2; [_driver,_wait] spawn MON_dostop; unassignVehicle _driver; _driver assignasdriver _vehicle; [_driver] orderGetIn true; //if (KRON_UPS_Debug>0) then {player sidechat format["%1: assigning to driver of %2 ",_driver, typeof _vehicle]}; }; MON_assignasgunner = { private["_vehicle","_gunner","_dist"]; _gunner = _this select 0; _vehicle = _this select 1; _dist=0; _gunner assignasgunner _vehicle; [_gunner] orderGetIn true; waituntil { _gunner != vehicle _gunner || !alive _gunner || !canmove _gunner ||!alive _vehicle || !canfire _vehicle}; if ( alive _gunner && alive _vehicle && canmove _gunner && canfire _vehicle) then { _dist = _gunner distance _vehicle; if (_dist < 3) then { _gunner moveInTurret [_vehicle, [0,0]] ; }; }; }; //Allow getin MON_Allowgetin = { //Hablitamos a la IA para entrar en el vehiculo [_this] allowGetIn true; }; //Funcin que ordena al soldado salir si se encuentra en un vehiculo y a la distancia indicada //Parmeters: [_heli,_targetPos,_atdist] // <- _npc: unit in vehicle // <- _targetPos: position for exiting(if no waypoint used) // <- _atdist: distance for doing paradrop or landing // -> _getout: true if getout MON_GetOutDist = { private["_vehicle","_npc","_target","_atdist","_getout","_dogetout","_driver","_commander","_targetpos","_dist","_vehpos","_vehicles"]; _npc = _this select 0; _targetpos = _this select 1; _atdist = _this select 2; _getout = false; _dogetout = []; _vehicles = []; sleep 0.05; if (!alive _npc) exitwith{}; _vehicle = vehicle _npc; _vehpos = getpos _vehicle; _dist = round([_vehpos,_targetpos] call KRON_distancePosSqr); //if (KRON_UPS_Debug>0) then {player sidechat format["%1: Getoutdist dist=%2 atdist=%3 ",typeof _vehicle,_dist, _atdist]}; if ( _vehicle != _npc || !(_npc iskindof "Man")) then { if ( (_dist) <= _atdist ) then { { if (( vehicle _x != _x || !(_x iskindof "Man")) && !((vehicle _x) in _vehicles)) then { _vehicles = _vehicles + [vehicle _x]; }; }foreach units _npc; { _vehicle = _x; _dogetout = crew _vehicle; _driver = driver _vehicle; _gunner = gunner _vehicle; //Si hay artillero no sacarenos ni al piloto ni al artillero ni al comandante if ( alive _gunner && canmove _gunner ) then { _dogetout = _dogetout - [_gunner] - [_driver]; }; if ( count _dogetout > 0 ) then { _getout = true; //Paramos el vehiculo y esperamos 5 segundos [_vehicle,10] spawn MON_doStop; //if (KRON_UPS_Debug>0) then {player sidechat format["%1: Getoutdist dist=%2 atdist=%3 ",typeof _vehicle,_dist, _atdist]}; { _x spawn MON_GetOut; sleep 0.5; }foreach _dogetout; //Quitamos el id al vehiculo para que pueda ser reutilizado _vehicle setVariable ["UPSMON_grpid", 0, false]; _vehicle setVariable ["UPSMON_cargo", [], false]; [_npc,_vehicle, _driver] spawn MON_checkleaveVehicle; }; } foreach _vehicles; }; }; _dogetout; }; //Evalua si han salido todas las unidades para abandonar el vehiculo MON_checkleaveVehicle={ _npc = _this select 0; _vehicle = _this select 1; _driver = _this select 2; _in = false; //Damos tiempo a que todas las unidades salgan sleep 10; { if (_x != vehicle _x) then {_in = true}; }foreach units _npc; if (!_in) then { _driver enableAI "MOVE"; sleep 1; _driver stop false; sleep 1; _driver leaveVehicle _vehicle; sleep 1; }; }; //Function for order a unit to exit if no gunner //Parmeters: [_npc] // <- _npc: MON_GetOut = { private["_vehicle","_npc","_getout" ,"_gunner"]; _npc = _this; _vehicle = vehicle (_npc); _gunner = objnull; _gunner = gunner _vehicle; sleep 0.05; if (!alive _npc) exitwith{}; //Si no hay artillero abandonamos el vehiculo if ( isnull _gunner || !alive _gunner || !canmove _gunner || (_gunner != _npc && driver _vehicle != _npc && commander _vehicle != _npc) ) then { [_npc] allowGetIn false; unassignVehicle _npc; _npc spawn MON_doGetOut; }; }; //Function for order a unit to exit //Parmeters: [_npc] // <- _npc: MON_doGetOut = { private["_vehicle","_npc","_getout" ,"_gunner","_groupOne","_timeout","_dir"]; _npc = _this; _vehicle = vehicle (_npc); sleep 0.05; if (_vehicle != _npc) then { //Wait until vehicle is stopped waituntil {!alive _npc || !canmove _npc || !alive _vehicle || ((velocity _vehicle select 0) <= 0 && (velocity _vehicle select 1) <= 0 ) || ( _vehicle iskindof "Air" && ((position _vehicle) select 2) <= 1)}; if (!alive _npc || !canmove _npc) exitwith{}; unassignVehicle _npc; _npc action ["getOut", _vehicle]; doGetOut _npc; [_npc] spawn MON_cancelstop; waituntil {!alive _npc || !canmove _npc || vehicle _npc == _npc}; }; if (!alive _npc || !canmove _npc) exitwith{}; if (leader _npc != _npc) then { //Moves out with dispersion of 45 _dir = getDir _npc; _dir = _dir + 45 - (random 90); [_npc,25,_dir] spawn MON_domove; //if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 Moving away from %2 %3",_npc, typeof _vehicle,_dir];}; }; }; //Function for exiting of heli //Parmeters: [_heli,_targetPos,_atdist] // <- _heli: // <- _targetPos: position for exiting(if no waypoint used) // <- _atdist: distance for doing paradrop or landing MON_doParadrop = { private["_heli","_npc","_getout" ,"_gunner","_targetpos","_helipos","_dist","_index","_grp","_wp","_targetPosWp","_targetP","_units","_crew","_timeout","_firstTime","_NearestEnemy"]; _heli = _this select 0; _targetPos = [0,0]; _atdist = 250; _flyingheigh = 90; _landonBeh = ["CARELESS","SAFE"]; _timeout=0; _firstTime = true; //Gets optional parameters if ((count _this) > 1) then {_targetPos = _this select 1;}; if ((count _this) > 2) then {_atdist = _this select 2;}; if ((count _this) > 3) then {_flyingheigh = _this select 3;}; _helipos = [0,0]; _targetposWp = [0,0]; _gunner = objnull; _gunner = gunner _heli; _dist = 1000000; _index = 0; _grp = GRPNULL; _wp = []; _units =[]; _crew =[]; if (_flyingheigh < 90) then {_flyingheigh = 90}; waituntil {count crew _heli > 0 || !alive _heli || !canmove _heli}; _grp = group ((crew _heli) select 0); _npc = leader ((crew _heli) select 0); _units = units _npc; if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 do paradrop at dist %2 ",typeof _heli, _atdist];}; while { (_dist >= _atdist || _dist < 10) && alive _heli && canmove _heli && count crew _heli > 0} do { _heli flyInHeight _flyingheigh; //Take last waypoint _index = (count waypoints _grp) - 1; _wp = [_grp,_index]; _targetPosWp = waypointPosition _wp; if (format ["%1", _targetPosWp] == "[0,0,0]") then {_targetPosWp = _targetPos}; _helipos = position _heli; _dist = round([_helipos,_targetPosWp] call KRON_distancePosSqr); if (_firstTime) then { _firstTime = false; if (_dist <= _atdist ) then { _targetPosWp = _targetPos; _dist = round([_helipos,_targetPosWp] call KRON_distancePosSqr); }; }; //if (KRON_UPS_Debug>0 ) then {hintsilent format["flying heigh=%1 dist=%2 jump at=%3",(position _heli) select 2,_dist,_atdist];}; sleep 1; }; if (!alive _heli || count crew _heli == 0 || (count (assignedCargo _heli) == 0 && !isnull (gunner _heli))) exitwith{}; _crew = crew _heli; _NearestEnemy = _heli findnearestenemy _heli; //Jump if (((position _heli) select 2) >= 55 && !surfaceIsWater position _heli && (!(toupper (behaviour _npc) IN _landonBeh) || !isnull _NearestEnemy || random 100 <= 50)) then { //moving hely for avoiding stuck [_heli,1000] spawn MON_domove; sleep 3; if (KRON_UPS_Debug>0 ) then {_heli globalchat format["doing paradrop high %1 dist=%2",(position _heli) select 2,_dist,_atdist];}; //Do paradrop { if( (assignedVehicleRole _x) select 0 == "Cargo")then { unassignVehicle _x; _x action ["EJECT", _heli] ; _x stop false; [_x] spawn MON_ACE_Watersurvival; }; sleep 0.5; } forEach crew _heli - [gunner _heli] - [driver _heli]; //Clear Hely vars _heli setVariable ["UPSMON_grpid", 0, false]; _heli setVariable ["UPSMON_cargo", [], false]; //Waits until all units are down _timeout = time + 60; { waituntil {(_x == vehicle _x ) || !alive _x || !canmove _x || isnull _x || time > _timeout}; //Fix bug of ACE that sometimes AI gets in stand animation //_x switchMove "AmovPercMsprSlowWrflDf_AmovPpneMstpSrasWrflDnon_2"; }foreach (_crew - [driver _heli]) - [gunner _heli]; //if (KRON_UPS_Debug>0) then {player globalchat format["%1 after paradrop",_npc]}; if (alive _npc && canmove _npc) then { _npc move _targetPosWp; }else{ {if (alive _x && canmove _x) exitwith { _x move _targetPosWp;}}foreach _crew; }; //If only pilot land heli if (count crew _heli <=1) then { [_heli] spawn MON_landHely; }; } else { //land if ( !surfaceIsWater _helipos && ((random 100)<20 || !canmove _heli || (!isnull _NearestEnemy && (toupper (behaviour _npc) IN _landonBeh) && random 100 <= 50))) then { [_heli] spawn MON_landHely; } else { If (alive _heli && canmove _heli && count crew _heli > 0) then { if (KRON_UPS_Debug>0 ) then {_heli globalchat format["%1 failed paradrop, trying another time",typeof _heli];}; //Try another time _heli flyInHeight _flyingheigh; sleep 3; [_heli, _targetPos, _atdist*1.5,_flyingheigh] spawn MON_doParadrop; }; }; }; //if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 exit do paradrop %2 ",_npc, _atdist];}; }; //Lands hely MON_landHely = { private["_heli","_npc","_crew","_NearestEnemy","_timeout","_landing","_targetpos"]; _heli = _this select 0; _crew =[]; _targetpos=[0,0]; _timeout = 0; _landing = false; sleep 0.05; if (!alive _heli || !canmove _heli ) exitwith{}; _crew = crew _heli; _npc = leader (_crew select 0); //Checks hely is already landing _landing = _heli getVariable "UPSMON_landing"; if (isnil ("_landing")) then {_landing=false;}; if (_landing) exitwith {}; //Orders to land heli _heli land "LAND"; if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 is trying to land, altitude=%2 %3",typeof _heli,(position _heli) select 2,behaviour _npc];}; //Puts a mark for knowing hely is landing _heli setVariable ["UPSMON_landing", true, false]; //Waits for land position waituntil {!alive _heli || toUpper(landResult _heli) != "NOTREADY" }; if (alive _heli && (toUpper(landResult _heli) == "NOTFOUND")) exitwith { if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 no landing zone, doing paradrop",typeof _heli];}; _heli setVariable ["UPSMON_landing", false, false]; [_heli] spawn MON_doparadrop; }; //1rt try-Waits until velocity and heigh are good for getting out _timeout = 30 + time; waituntil {!alive _heli || time > _timeout || ((velocity _heli select 2) <= 1 && ((position _heli) select 2) <= 2)}; //2nd try-Waits until velocity and heigh are good for getting out if (((position _heli) select 2) > 2 && ((position _heli) select 2) < 50 && !surfaceiswater position _heli) then { _heli land "LAND"; _timeout = 30 + time; if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 trying another time to land",typeof _heli,(position _heli) select 2,behaviour _npc];}; waituntil {!alive _heli || time > _timeout || ((position _heli) select 2) > 30 || ((velocity _heli select 2) <= 1 && ((position _heli) select 2) <= 2)}; }; //Chechs if alive before continuing if (!alive _heli) exitwith {}; if (((position _heli) select 2) >= 3) exitwith { if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 landing timeout, doing paradrop",typeof _heli];}; _heli setVariable ["UPSMON_landing", false, false]; //[_heli,1000] spawn MON_domove; sleep 5; [_heli] spawn MON_doparadrop; }; //dogetout each soldier { _x spawn MON_doGetOut; sleep 0.2; }forEach crew _heli; _timeout = 30 + time; //Waits until all getout of heli { waituntil {vehicle _x == _x || !canmove _x || !alive _x || movetofailed _x || time > _timeout }; }forEach _crew; // If leader alive sets combat mode if (alive _npc && canmove _npc) then { //Gets nearest known enemy for putting in combat mode _NearestEnemy = _npc findNearestEnemy _npc; if (!isnull _NearestEnemy ) then { _npc setBehaviour "AWARE"; _groupOne = group _npc; _groupOne setFormation "DIAMOND"; }; //Moves to current target Position _grpid = _npc getvariable "UPSMON_grpid"; if !(isnil "_grpid") then { _targetpos =(KRON_targetsPos select _grpid); _npc move _targetpos; if (KRON_UPS_Debug>0 ) then { player globalchat format["%1 landed",_grpid,count KRON_targetsPos];}; }; }; //Quitamos el id al vehiculo para que pueda ser reutilizado _heli setVariable ["UPSMON_grpid", 0, false]; _heli setVariable ["UPSMON_cargo", [], false]; _heli setVariable ["UPSMON_landing", false, false]; }; //Controls that heli not stoped flying MON_HeliStuckcontrol = { private["_heli","_landing","_stuckcontrol","_dir1","_targetPos","_lastpos"]; _heli = _this select 0; _landing = false; _stuckcontrol = false; _targetPos=[0,0,0]; _dir1 = 0; sleep 0.05; if ( !alive _heli || !canmove _heli ) exitwith{}; //Checks stuckcontrol not active _stuckcontrol = _heli getVariable "UPSMON_stuckcontrol"; if (isnil ("_stuckcontrol")) then {_stuckcontrol=false}; if (_stuckcontrol) exitwith {}; _heli setVariable ["UPSMON_stuckcontrol", true, false]; if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 stuck control begins",typeof _heli];}; //Stuck loop control while { alive _heli } do { sleep 5; if ((velocity _heli select 0) <= 3 && (velocity _heli select 1) <= 3 && (velocity _heli select 2) <= 3 && ((position _heli) select 2) >= 30) then { _landing = _heli getVariable "UPSMON_landing"; if (isnil ("_landing")) then {_landing=false;}; if (!_landing) then { //moving hely for avoiding stuck [_heli,1000] spawn MON_domove; if (KRON_UPS_Debug>0 ) then {player GLOBALCHAT format["%1 stucked at %2m altitude, moving",typeof _heli,(position _heli) select 2];}; sleep 30; }; }; }; //if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 exits from stuck control",typeof _heli];}; _heli setVariable ["UPSMON_stuckcontrol", false, false]; }; //Function that checks is gunner is alive, if not moves a cargo MON_Gunnercontrol = { private["_vehicle","_gunnercontrol","_hasgunner","_crew","_crew2"]; _vehicle = _this select 0; _targetPos=[0,0,0]; _dir1 = 0; _gunnercontrol = false; _hasgunner = (_vehicle) emptyPositions "Gunner" > 0 || !isnull gunner _vehicle; _crew = []; _crew2 = []; //Without driver and gunner sleep 0.05; if ( !alive _vehicle || !canmove _vehicle ) exitwith{}; //Checks stuckcontrol not active _gunnercontrol = _vehicle getVariable "UPSMON_gunnercontrol"; if (isnil ("_gunnercontrol")) then {_gunnercontrol=false}; if (_gunnercontrol) exitwith {}; _vehicle setVariable ["UPSMON_gunnercontrol", true, false]; _crew = crew _vehicle; //gunner and driver loop control while { alive _vehicle && canmove _vehicle && count _crew > 0} do { _crew = crew _vehicle; { if (!canmove _x || !alive _x) then {_crew = _crew -[_x];}; }foreach _crew; //Driver control if ((isnull (driver _vehicle) || !alive (driver _vehicle) || !canmove (driver _vehicle)) && count _crew > 0) then { _crew2 = _crew - [gunner _vehicle]; if (count _crew2 > 0) then { (_crew2 select (count _crew2 - 1)) spawn MON_movetodriver; }; }; //Gunner control if ( _hasgunner && (isnull (gunner _vehicle) || !alive (gunner _vehicle) || !canmove (gunner _vehicle)) && count _crew > 1) then { _crew2 = _crew - [driver _vehicle]; if (count _crew2 > 0) then { (_crew2 select (count _crew2 - 1)) spawn MON_movetogunner; }else{ (_crew select 0) spawn MON_movetogunner; }; }; sleep 20; //if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 crew=%2",typeof _vehicle, count _crew];}; }; //if (KRON_UPS_Debug>0 ) then {player globalchat format["%1 exits from gunner control",typeof _vehicle];}; _vehicle setVariable ["UPSMON_gunnercontrol", false, false]; }; //Mueve a todo el grupo adelante MON_move = { private["_npc","_dir1","_targetPos","_dist"]; _npc = _this select 0; _dist = _this select 1; sleep 0.05; if (!alive _npc || !canmove _npc ) exitwith{}; _dir1 = getDir _npc; _targetPos = [position _npc,_dir1, _dist] call MON_GetPos2D; _npc move _targetPos; }; //Mueve al soldado adelante MON_domove = { private["_npc","_dir1","_targetPos","_dist"]; _npc = _this select 0; _dist = _this select 1; if ((count _this) > 2) then {_dir1 = _this select 2;} else{_dir1 = getDir _npc;}; sleep 0.05; if (!alive _npc || !canmove _npc ) exitwith{}; _targetPos = [position _npc,_dir1, _dist] call MON_GetPos2D; //If position water and not boat not go if (surfaceIsWater _targetPos && !(_npc iskindof "boat" || _npc iskindof "air") ) exitwith {}; _npc domove _targetPos; }; //Funcin que detiene al soldado y lo hace esperar x segundos MON_doStop = { private["_sleep","_npc"]; _npc = _this select 0; _sleep = _this select 1; sleep 0.05; if (!alive _npc || !canmove _npc ) exitwith{}; if ( _sleep == 0 ) then {_sleep = 0.001}; //Restauramos valores por defecto de movimiento //_npc disableAI "MOVE"; dostop _npc ; sleep _sleep; [_npc] spawn MON_cancelstop; }; //Funcin que detiene al soldado y lo hace esperar x segundos MON_cancelstop = { private["_npc"]; _npc = _this select 0; _npc stop false; }; //Realiza la animacin de esquivar granada MON_evadeGrenade = { if (!alive _this || (vehicle _this) != _this || !canmove _this) exitwith{}; _this playmovenow "AmovPercMstpSlowWrflDnon_ActsPpneMstpSlowWrflDr_GrenadeEscape"; sleep 8; if (!alive _this || (vehicle _this) != _this || !canmove _this) exitwith{}; _this switchmove "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDr"; //croqueta _this playmovenow "AmovPpneMstpSrasWrflDnon"; //prone }; //Realiza la animacin de la croqueta MON_animCroqueta = { if (!alive _this || (vehicle _this) != _this || !canmove _this || !(_this iskindof "Man")) exitwith{}; if ((random 1)<=.50) then { _x switchmove "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDl"; //croqueta } else { _x switchmove "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDr"; //croqueta }; }; //Lanza una granada MON_throw_grenade = { private["_target","_npc"]; _npc = _this select 0; _target = _this select 1; sleep 0.5; if (!alive _npc || (vehicle _npc) != _npc || !canmove _npc) exitwith{}; _npc addMagazine "SmokeShell"; [_npc,_target] spawn MON_dowatch; _npc selectWeapon "throw"; sleep .1; _npc fire ["SmokeShellMuzzle","SmokeShellMuzzle","SmokeShell"]; sleep 4; }; //Establece el tipo de posicin MON_setUnitPos = { private["_pos","_npc"]; _npc = _this select 0; _pos = _this select 1; sleep 0.5; if (!alive _npc || !canmove _npc || _npc != vehicle _npc || !(_npc iskindof "Man")) exitwith{}; _npc setUnitPos _pos; sleep 1; }; //Establece el tipo de posicin MON_setUnitPosTime = { private["_pos","_npc"]; _npc = _this select 0; _pos = _this select 1; _time = _this select 2; if (!alive _npc || !canmove _npc) exitwith{}; _npc setUnitPos _pos; sleep _time; _npc setUnitPos "AUTO"; sleep 1; }; // Funcin para mirar en una direccin MON_dowatch = { private["_target","_npc"]; _npc = _this select 0; _target = _this select 1; if (!alive _npc) exitwith{}; _npc dowatch _target; sleep 1; }; //Funcin que mueve al soldado a la posicin de conductor //Parmeters: [_npc,_vehicle] // <- _npc: unit to move to driver pos // <- _vehicle MON_movetoDriver = { private["_vehicle","_npc"]; _npc = _this ; _vehicle = vehicle _npc; //Si est muerto if (vehicle _npc == _npc || !alive _npc || !canmove _npc || !(_npc iskindof "Man")) exitwith{}; if (isnull(driver _vehicle) || !alive(driver _vehicle) || !canmove(driver _vehicle)) then { //if (KRON_UPS_Debug>0) then {player sidechat format["%1: Moving to driver of %2 ",_npc,typeof _vehicle]}; _npc action ["getOut", _vehicle]; doGetOut _npc; WaitUntil {vehicle _npc==_npc || !alive _npc || !canmove _npc}; //Si est muerto if (!alive _npc || !canmove _npc) exitwith{}; unassignVehicle _npc; _npc assignasdriver _vehicle; _npc moveindriver _vehicle; }; }; //Funcin que mueve al soldado a la posicin de conductor //Parmeters: [_npc,_vehicle] // <- _npc: unit to move to driver pos // <- _vehicle MON_movetogunner = { private["_vehicle","_npc"]; _npc = _this ; _vehicle = vehicle _npc; sleep 0.05; //Si est muerto if (vehicle _npc == _npc || !alive _npc || !canmove _npc || !(_npc iskindof "Man")) exitwith{}; if (isnull(gunner _vehicle) || !alive(gunner _vehicle) || !canmove(gunner _vehicle)) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1: Moving to gunner of %2 ",_npc,typeof _vehicle]}; _npc action ["getOut", _vehicle]; doGetOut _npc; WaitUntil {vehicle _npc==_npc || !alive _npc || !canmove _npc}; //Si est muerto if (!alive _npc || !canmove _npc) exitwith{}; unassignVehicle _npc; _npc assignasgunner _vehicle; _npc moveingunner _vehicle; }; }; //Funcin que retorna array de arrays con edificios y sus plantas //Parmeters: [_object,(_distance,_minfloors)] // <- _object: soldier to get near buildings // <- _distance: distance to search buildings (optional, 25 by default) // <- _minfloors: min floors of building (optional) if not especified min floors is 2 // -> [_bld,_bldpos] MON_GetNearestBuildings = { private ["_object","_altura","_pos","_bld","_bldpos","_posinfo","_minfloors","_OCercanos","_distance","_blds"]; _distance = 25; _minfloors = 2; _altura = 0; _blds = []; _object = _this select 0; if ((count _this) > 1) then {_distance = _this select 1;}; if ((count _this) > 2) then {_minfloors = _this select 2;}; _pos =0; _bld = objnull; _bldpos =0; _posinfo=[]; //La altura mnima es 2 porque hay muchos edificios q devuelven 2 de altura pero no se puede entrar en ellos. if ( minfloors == 0 ) then { minfloors = 2; }; // _posinfo: [0,0]=no house near, [obj,0]=house near, but no roof positions, [obj,pos]=house near, with roof pos //_posinfo= _object call MON_PosInfo; _OCercanos = nearestObjects [_object, ["house","building"] , _distance]; { _bldpos = _x call MON_BldPos; if ( _bldpos >= _minfloors && damage _x <= 0 ) then { _blds = _blds + [[_x,_bldpos]];}; //player sidechat format["%1 cerca de edificio con %2 plantas %5",typeof _object,_bldpos]; }foreach _OCercanos; _blds; }; //Function to move al units of squad to near buildings //Parmeters: [_npc,(_patrol,_minfloors)] // <- _npc: lider // <- _distance: distance to search buildings (optional, 25 by default) // <- _patrol: wheter must patrol or not MON_moveNearestBuildings = { private ["_npc","_altura","_pos","_bld","_bldpos","_posinfo","_blds","_distance","_cntobjs1","_bldunitin","_blddist","_patrol","_wait","_all"]; _distance = 30; _altura = 0; _patrol = false; _wait=60; _all = false; _npc = _this select 0; if ((count _this) > 1) then {_distance = _this select 1;}; if ((count _this) > 2) then {_patrol = _this select 2;}; if ((count _this) > 3) then {_wait = _this select 3;}; if ((count _this) > 4) then {_all = _this select 4;}; _pos =0; _bld = objnull; _bldpos =0; _cntobjs1=0; _bldunitsin=[]; _units=[]; _blds=[]; //If all soldiers move leader too if (_all) then { _units = (units _npc); }else{ _units = (units _npc) - [_npc]; }; sleep 0.05; { if (_x iskindof "Man" && unitReady _x && _x == vehicle _x && canmove _x && alive _x && canstand _x) then {_bldunitsin = _bldunitsin + [_x]} }foreach _units; if (count _bldunitsin == 0) exitwith {}; //Obtenemos los edificios cercanos al lider _blds = [_npc,_distance] call MON_GetNearestBuildings; if (count _blds==0) exitwith {}; //Movemos a la unidades a los edificios cercanos. [_bldunitsin, _blds, _patrol,_wait,_all] spawn MON_moveBuildings; }; //Function to move al units of squad to near buildings //Parmeters: [_npc,(_patrol,_minfloors)] // <- _units: array of units // <- _blds: array of buildingsinfo [_bld,pos] // <- _patrol: wheter must patrol or not // -> _bldunitsin: array of units moved to builidings MON_moveBuildings = { private ["_npc","_altura","_pos","_bld","_bldpos","_posinfo","_blds","_cntobjs1","_bldunitin","_blddist","_i","_patrol","_wait","_all","_minpos","_blds2"]; _patrol = false; _wait = 60; _minpos = 2; _all = false; _units = _this select 0; _blds = _this select 1; if ((count _this) > 2) then {_patrol = _this select 2;}; if ((count _this) > 3) then {_wait = _this select 3;}; if ((count _this) > 4) then {_all = _this select 4;}; if ((count _this) > 5) then {_minpos = _this select 5;}; _altura = 0; _pos =0; _bld = objnull; _bldpos =0; _cntobjs1=0; _bldunitsin=[]; _movein=[]; _blds2 =[]; //if (KRON_UPS_Debug>0) then {player globalchat format["MON_moveBuildings _units=%1 _blds=%2",count _units, count _blds]; }; //if (KRON_UPS_Debug>0) then {diag_log format["MON_moveBuildings _units=%1 _blds=%2",count _units, count _blds];}; { _bld = _x select 0; _bldpos = _x select 1; if ( _bldpos >= _minpos ) then { _cntobjs1 = 1; _movein = []; _i = 0; if (_patrol) then { if (_bldpos >= 8) then { _cntobjs1 = 2 }; } else { if (_bldpos >= 8) then { _cntobjs1 = round(random 3) + 1;}; }; //Buscamos una unidad cercana para recorrerlo { if (_x iskindof "Man" && unitReady _x && canmove _x && alive _x && vehicle _x == _x && _i < _cntobjs1) then{ _movein = _movein + [_x]; _i = _i + 1; }; } foreach _units; //if (KRON_UPS_Debug>0) then {player globalchat format["_units=%3 _bldunitsin %4 _movein=%1",_movein, typeof _bld, count _units, count _bldunitsin];} //if (KRON_UPS_Debug>0) then {diag_log format["_units=%3 _bldunitsin %4 _movein=%1 %2 %5",_movein, typeof _bld, count _units, count _bldunitsin,_x];}; if (count _movein > 0) then { _bldunitsin = _bldunitsin + _movein; _units = _units - _bldunitsin; if (_patrol) then { { [_x,_bld,_bldpos] spawn MON_patrolBuilding; }foreach _movein; } else { { _altura = floor(random(_bldpos)); if (_altura<2) then {_altura = _minpos}; [_x,_bld,_altura,_wait] spawn MON_movetoBuilding; }foreach _movein; }; }; }; if (count _units == 0) exitwith {}; }foreach _blds; //If need to enter all units in building and rest try with a superior lvl if ( _all && count _units > 0 ) then { _blds2 = []; _minpos = _minpos + 3; { if ( (_x select 1) >= _minpos) then { _blds2 = _blds2 + [_x]; }; }foreach _blds; //if (KRON_UPS_Debug>0) then {player globalchat format["MON_moveBuildings exit _units=%1 _blds=%2",count _units, count _blds2]; }; //if (KRON_UPS_Debug>0) then {diag_log format["MON_moveBuildings exit _units=%1 _blds=%2",count _units, count _blds2];}; if (count _blds2 > 0 ) then { [_units, _blds2, _patrol,_wait,_all,_minpos] call MON_moveBuildings; }; _bldunitsin = _bldunitsin + _units; }; _bldunitsin; }; //Function to move a unit to a position in a building //Parmeters: [_npc,(_patrol,_minfloors)] // <- _npc: soldier // <- _bld: building // <- _altura: building // <- _wait: time to wait in position MON_movetoBuilding = { private ["_npc","_altura","_bld","_wait","_dist","_retry","_soldiers"]; _wait = 60; _timeout = 120; _dist = 0; _retry = false; _npc = _this select 0; _bld = _this select 1; _altura = _this select 2; if ((count _this) > 3) then {_wait = _this select 3;}; //Si est en un vehiculo ignoramos la orden if (vehicle _npc != _npc || !alive _npc || !canmove _npc) exitwith{}; //Si ya est en un edificio ignoramos la orden _inbuilding = _npc getvariable ("UPSMON_inbuilding"); if ( isNil("_inbuilding") ) then {_inbuilding = false;}; if (_inbuilding) exitwith{}; _npc domove (_bld buildingPos _altura); _npc setVariable ["UPSMON_inbuilding", _inbuilding, false]; _npc setvariable ["UPSMON_buildingpos", nil, false]; _timeout = time + _timeout; //if (KRON_UPS_Debug>0) then {player globalchat format["%4|_bld=%1 | %2 | %3",typeof _bld, _npc, typeof _npc ,_altura];}; //if (KRON_UPS_Debug>0) then {diag_log format["%4|_bld=%1 | %2 | %3",typeof _bld, _npc, typeof _npc ,_altura];}; waitUntil {moveToCompleted _npc || moveToFailed _npc || !alive _npc || !canmove _npc || _timeout < time}; if (moveToCompleted _npc && alive _npc && canmove _npc) then { _dist = [position _npc,_bld buildingPos _altura] call KRON_distancePosSqr; _soldiers = [_npc,1] call MON_nearestSoldiers; //If more soldiers in same floor see to keep or goout. if (count _soldiers > 0) then { { if (!isnil{_x getvariable ("UPSMON_buildingpos")}) exitwith {_retry = true}; }foreach _soldiers; }; if (!_retry && _dist <= 2) then { _npc setvariable ["UPSMON_buildingpos", _altura, false]; sleep 0.1; [_npc,_wait] spawn MON_dostop; }; }; if (!alive _npc || !canmove _npc) exitwith{}; _npc setVariable ["UPSMON_inbuilding", false, false]; //Down one position. if (_retry ) then { _altura = _altura + 1; _bldpos = _bld call MON_BldPos; if (_altura <= _bldpos) then { [_npc,_bld,_altura] spawn MON_movetoBuilding; }; }; }; //Funcin para mover a una unidad al edificio ms cercano //Parmeters: [_npc,_bld,(_BldPos)] // <- _npc: soldier to move // <- _bld:building to patrol // <- _BldPos: positions of builiding (optional) MON_patrolBuilding = { private ["_npc","_bld","_bldpos","_posinfo","_minfloors","_OCercanos","_distance","_timeout","_pos","_inbuilding","_rnd","_NearestEnemy","_patrolto","_time"]; _bldpos = 0; _pos = 0; _timeout = 0; _i = 1; _inbuilding = false; _rnd = 0; _patrolto = 0; _NearestEnemy = objnull; _time = 0; _npc = _this select 0; _bld = _this select 1; if ((count _this) > 2) then {_bldpos = _this select 2;} else {_bldpos = _x call MON_BldPos;}; if (_i > _bldpos) then {_i = _bldpos}; _patrolto = round ( 10 + random (_bldpos) ); if (_patrolto > _bldpos) then {_patrolto = _bldpos}; //Si ya est muerto o no se puede mover se ignora if (!(_npc iskindof "Man") || !alive _npc || !canmove _npc) exitwith{}; //Si ya est en un edificio ignoramos la orden _inbuilding = _npc getvariable ("UPSMON_inbuilding"); if ( isNil("_inbuilding") ) then {_inbuilding = false;}; //Asignamos el vehiculo a a la escuadra si contiene las posiciones justas if (!_inbuilding) then { _inbuilding = true; _npc setVariable ["UPSMON_inbuilding", _inbuilding, false]; [_npc,"Middle"] spawn MON_setUnitPos; _timeout = time + 60; //player sidechat format["%1 patrol building %2 from %3 to %4",typeof _npc, typeof _bld,_i, _patrolto]; while { _i <= _patrolto && alive _npc && canmove _npc} do{ _npc domove (_bld buildingPos _i); _time = time + 30; waitUntil {moveToCompleted _npc or moveToFailed _npc or !alive _npc or _time < time}; if (moveToCompleted _npc) then { _timeout = time + 60; _i = _i + 1; } else { if (moveToFailed _npc || !canmove _npc || !alive _npc || _timeout < time) then { //player sidechat format["%1 Cancelando patrulla en %2",_npc, typeof _bld]; _i = _patrolto + 1; }; }; sleep 0.05; }; //Si est en un vehiculo ignoramos la orden if (!alive _npc || !canmove _npc) exitwith{}; //Volvemos con el lider _npc domove (position leader _npc); //Marcamos que ya hemos finalizado sleep 60; //Damos tiempo para salir del edificio _npc setVariable ["UPSMON_inbuilding", false, false]; }; }; //Function to put a mine //Parmeters: [_npc,(_position)] // <- _npc: leader // <- _position:location for mine (optional) MON_CreateMine = { private ["_npc","_rnd","_soldier","_mine","_dir","_position"]; _soldier = _this select 0; if ((count _this) > 1) then {_position = _this select 1;} else {_position = [0,0];}; _mine = objnull; _rnd = 0; _dir = 0; _npc = leader _soldier; if (_soldier == _npc ) then { _rnd = round (random ( count ((units _npc)))); _soldier = (units _npc) select _rnd; }; //leader only control not work //Si est en un vehiculo ignoramos la orden if (!(_x iskindof "Man" ) || _soldier == _npc || _soldier!=vehicle _soldier || !alive _soldier || !canmove _soldier) exitwith {false}; //Animacin para montar el arma if ((count _this) > 1) then { [_soldier,_position] spawn MON_doCreateMine; }else{ [_soldier] spawn MON_doCreateMine; }; true; }; MON_doCreateMine = { private ["_npc","_rnd","_soldier","_mine","_dir","_position"]; _position = [0,0]; _soldier = _this select 0; if ((count _this) > 1) then {_position = _this select 1;}; //If not is Man or dead exit if (!(_x iskindof "Man" ) || _soldier!=vehicle _soldier || !alive _soldier || !canmove _soldier) exitwith {false}; _soldier stop false; [_soldier,"AUTO"] spawn MON_setUnitPos; if ((count _this) > 1) then { _soldier domove _position; waituntil {unitReady _soldier || moveToCompleted _soldier || moveToFailed _soldier || !alive _soldier || !canmove _soldier}; }; if (moveToFailed _soldier || !alive _soldier || _soldier != vehicle _soldier || !canmove _soldier) exitwith {false}; //Crouche _soldier playMovenow "ainvpknlmstpslaywrfldnon_1"; sleep 1; if (!alive _soldier || !canmove _soldier) exitwith{}; _dir = getdir _soldier; _position = [position _soldier,_dir, 0.5] call MON_GetPos2D; _mine = createMine ["MineMine", _position , [], 0]; //Prepare mine _soldier playMoveNow "AinvPknlMstpSlayWrflDnon_medic"; sleep 5; //Return to formation _soldier domove position ( leader _soldier ); }; //Function to surrender AI soldier //Parmeters: [_npc] // <- _npc: soldier to surrender MON_surrender = { private ["_npc","_vehicle"]; _npc = _this select 0; if (!alive _npc || !canmove _npc) exitwith {}; _npc addrating -1000; _npc setcaptive true; sleep 0.5; _vehicle = vehicle _npc; if ( _npc != _vehicle || !(_npc iskindof "Man" )) then { _vehicle setcaptive true; if ( "Air" countType [_vehicle]>0) then { //Si acaba de entrar en el heli se define punto de aterrizaje if (_npc == driver _vehicle ) then { [_vehicle] call MON_landHely; }; } else { _npc spawn MON_doGetOut; }; //Esperamos a que est parado waituntil {_npc == vehicle _npc || !alive _npc}; }; if (!alive _npc || !canmove _npc) exitwith {}; _npc setcaptive true; _npc stop true; [_npc,"UP"] call MON_setUnitPos; removeAllWeapons _npc; sleep 1; _npc playMoveNow "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon"; }; //Returns leader if was dead MON_getleader = { private ["_npc","_members"]; _npc = _this select 0; _members = _this select 1; sleep 0.05; if (!alive _npc ) then { //takes commder a soldier not in vehicle { if (alive _x && canmove _x && _x == vehicle _x && !isplayer _x) exitwith { _npc = _x; }; }foreach _members; //if no soldier out of vehicle takes any if (!alive _npc ) then { { if (alive _x && canmove _x) exitwith {_npc = _x;}; }foreach _members; }; //If not alive or already leader or is player exits if (isPlayer _npc || !alive _npc || !canmove _npc ) then { { if (alive _x && !isPlayer _x) exitwith {_npc = [_npc, _members] call MON_getleader;}; }foreach _members; _npc; }; if (leader _npc == _npc) exitwith {_npc}; //Set new _npc as leader group _npc selectLeader _npc; }; _npc; }; MON_ACE_Watersurvival = { private ["_lb","_pos","_ejector","_in","_grpid","_rnd"]; _in =[]; _rnd = 0; _ejector = _this select 0; //if (KRON_UPS_Debug>0) then {player globalchat format["MON_ACE_Watersurvival %1",typeof _ejector]}; waitUntil { !canmove _ejector || !alive _ejector || isnull (_ejector) || ((getPos vehicle _ejector) select 2 < 1) }; if ( !surfaceIsWater (getpos _ejector) || !canmove _ejector || !alive _ejector || isnull (_ejector) ) exitWith {}; //Miramos de entrar en un barco cercano _grpid = _ejector getvariable "UPSMON_grpid"; if (isnil "_grpid") then {_grpid = 0}; _in = [_grpid,_ejector,30] call MON_GetIn_NearestBoat; //If no boat near creates a zodiac if (count _in <= 0) then { if (!(isNil "ace_main")) then { _lb = "ACE_Lifeboat_US" createVehicle getposASL _ejector; }else{ _lb = "Zodiac" createVehicle getposASL _ejector; }; _pos = getposASL _ejector; _pos set [0, ((_pos select 0) + 2)]; _pos set [1, ((_pos select 1) + 2)]; //_pos set [2, 0]; _lb setPos _pos; //Moves in boat if !(isPlayer _ejector) then { [_ejector,_lb,0] call MON_assignasdriver; }; }; //Wait until reached eart waitUntil { !canmove _ejector || !alive _ejector || isnull (_ejector) || !surfaceIsWater (position _ejector) }; if (KRON_UPS_Debug>0) then {player globalchat format["Exit from boat%1",typeof _lb]}; _ejector spawn MON_dogetout; }; //Function to do artillery //Parmeters: [_position,(_rounds,_area,_cadence,_mincadence)] // <- _position: center of fire create artillery // <- _rounds: rounds of fire // <- _area: Dispersion area // <- _maxcadence: Cadence of fire, is random between min // <- _mincadence: Minimum cadence // <- _bullet: class of bullet to fire, default ARTY_Sh_81_HE MON_artillery_dofire = { if (!isserver) exitWith {}; private ["_smoke1","_i","_area","_position","_maxcadence","_mincadence","_sleep","_rounds"]; _area = 150; _maxcadence = 10; _mincadence = 5; _sleep = 0; _rounds = 5; _bullet = "ARTY_Sh_81_HE"; _position =[]; //_bullet = "ARTY_Sh_105_HE"; //_bullet = "ARTY_Sh_122_HE"; _position = _this select 0; if ((count _this) > 1) then {_rounds = _this select 1;}; if ((count _this) > 2) then {_area = _this select 2;}; if ((count _this) > 3) then {_maxcadence = _this select 3;}; if ((count _this) > 4) then {_mincadence = _this select 4;}; if ((count _this) > 5) then {_bullet = _this select 5;}; _area2 = _area * 2; if (KRON_UPS_Debug>0) then {player globalchat format["artillery doing fire on %1",_position]}; for [{_i=0}, {_i<_rounds}, {_i=_i+1}] do { _sleep = random _maxcadence; if (_sleep < _mincadence) then {_sleep = _mincadence}; sleep _sleep; _smoke1 = _bullet createVehicle [(_position select 0)+ random _area2 - _area, (_position select 1)+ random _area2 - _area, (_position select 2)+ 20]; }; }; //Funcin que devuelve un array con los vehiculos terrestres ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_deadbodies = { private["_vehicles","_npc","_bodies","_OCercanos","_distance","_side"]; _npc = _this select 0; _distance = _this select 1; //_side = _this select 2; _OCercanos = []; _bodies = []; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Man"] , _distance]; { if (_npc knowsabout _x >0.5 && (!canmove _x || !alive _x)) then { _bodies = _bodies + [_x];}; }foreach _OCercanos; _bodies; }; //Funcin que devuelve un array con los vehiculos terrestres ms cercanos //Parmeters: [_npc,_distance] // <- _npc: object for position search // <- _distance: max distance from npc // -> _vehicles: array of vehicles MON_nearestSoldiers = { private["_vehicles","_npc","_soldiers","_OCercanos","_distance","_side"]; _npc = _this select 0; _distance = _this select 1; if (isnull _npc) exitwith {}; _OCercanos = []; _soldiers = []; //Buscamos objetos cercanos _OCercanos = nearestObjects [_npc, ["Man"] , _distance]; _OCercanos = _OCercanos - [_npc]; { if ( alive _x && canmove _x ) then { _soldiers = _soldiers + [_x];}; }foreach _OCercanos; _soldiers; }; /* ===================================================================================================== MON_spawn.sqf Author: Monsada (chs.monsada@gmail.com) Comunidad Hispana de Simulacin: http://www.simulacion-esp.com ===================================================================================================== Parmeters: [_artillery,(_range,_rounds,_area,_cadence,_mincadence)] execvm "scripts\UPSMON\MON_artillery_add.sqf"; <- _artillery object to attach artillery script, must be an object with gunner. <- ( _rounds ) rounds to fire each time, default 1 <- ( _range ) range of artillery, default 800 <- ( _area ) Dispersion area, 150m by default <- ( _maxcadence ) Cadence of fire, is random between min, default 10s <- ( _mincadence ) Minimum cadence, default 5s <- ( _bullet ) Class of bullet to fire, default ARTY_Sh_81_HE ===================================================================================================== 1. Place a static weapon on map. 2. Exec module in int of static weapon nul=[this] execVM "scripts\UPSMON\MON_artillery_add.sqf"; 1. Be sure static weapon has a gunner or place a "fortify" squad near, this will make squad to take static weapon. 2. Create a trigger in your mission for setting when to fire. Set side artillery variable to true: KRON_UPS_ARTILLERY_EAST_FIRE = true; This sample will do east artilleries to fire on known enemies position, when you want to stop fire set to false. For more info: http://dev-heaven.net/projects/upsmon/wiki/Artillery_module =====================================================================================================*/ if (!isserver) exitWith {}; //Waits until UPSMON is init waitUntil {!isNil("KRON_UPS_INIT")}; waitUntil {KRON_UPS_INIT==1}; private ["_artillery","_smoke1","_i","_area","_position","_maxcadence","_mincadence","_sleep","_rounds"]; _range = 800; _area = 150; _maxcadence = 10; _mincadence = 5; _sleep = 0; _rounds = 1; _bullet = "ARTY_Sh_81_HE"; _vector =[]; _artillery = _this select 0; //if (KRON_UPS_Debug>0) then {player globalchat format["MON_artillery_add before %1 %2 %3",isnull _artillery,alive _artillery]}; if (isnull _artillery || !alive _artillery) exitwith{}; if ((count _this) > 1) then {_rounds = _this select 1;}; if ((count _this) > 2) then {_range = _this select 2;}; if ((count _this) > 3) then {_area = _this select 3;}; if ((count _this) > 4) then {_maxcadence = _this select 4;}; if ((count _this) > 5) then {_mincadence = _this select 5;}; if ((count _this) > 6) then {_bullet = _this select 6;}; //Add artillery to array of artilleries _vector = [_artillery,_rounds,_range,_area,_maxcadence,_mincadence,_bullet]; if (isnil "KRON_UPS_ARTILLERY_UNITS" ) then {KRON_UPS_ARTILLERY_UNITS = []}; KRON_UPS_ARTILLERY_UNITS = KRON_UPS_ARTILLERY_UNITS + [_vector]; if (true) exitwith{}; /* ===================================================================================================== MON_spawn.sqf Author: Monsada (chs.monsada@gmail.com) Comunidad Hispana de Simulacin: http://www.simulacion-esp.com ===================================================================================================== Parmeters: [Param1,Param2,Param3,[Param4]] EXECVM "SCRIPTS\UPSMON\MON_SPAWN.SQF"; <- Param1 Id of the template to copy. <- Param2 Position to create new squad. <- Param3 N of squads to create <- Param4 Array of parameters of UPSMON, first must be name of marc to patrol ===================================================================================================== Function that allows to spawn UPSMON squads. 1- create a squad in editor. Exec UPSMON and set TEMPLATE id, this will save members of squad, not equipement. nul = [this,"town","TEMPLATE:",1] execVM "scripts\upsmon.sqf"; 2- Exec MON_spawn on trigger or where you want telling the copy of the template to create and the position. nul = [1,[0,0,0],3,[mark, upsmon optional params]] EXECVM "SCRIPTS\UPSMON\MON_SPAWN.SQF"; =====================================================================================================*/ if (!isserver) exitWith {}; //Waits until UPSMON is init waitUntil {!isNil("KRON_UPS_INIT")}; waitUntil {KRON_UPS_INIT==1}; private ["_template","_position","_params","_copies","_membertypes","_unittype","_side","_UCthis","_initstr","_grp","_lead","_newunit","_i","_newpos","_vehicle","_initlstr"]; //Parameter reading _template = _this select 0; _position = _this select 1; _copies = _this select 2; _params = _this select 3; //Initialization _membertypes = []; _side = ""; _UCthis = []; _initstr = ""; _initlstr = ""; _grp = grpnull; _lead = objnull; _newunit = objnull; _newpos=[]; _vehicle=[]; //Gets parameters of UPSMON for [{_i=0},{_i0) then {player globalchat format["Spawning %3 copies of template %1",_template,_position,_copies,count KRON_UPS_TEMPLATES]}; //if (KRON_UPS_Debug>0) then {diag_log format["Spawning %3 copies of template %1 on %2 templates %4",_template,_position,_copies,count KRON_UPS_TEMPLATES]}; //Search if any template { if ((_x select 0) == _template) then { _side = _x select 1; _membertypes = _x select 2; _vehicletypes = _x select 3; //Gets leader type _unittype= _membertypes select 0; //if (KRON_UPS_Debug>0) then {player globalchat format["template %1:%2 ",_template,_membertypes]}; for [{_i=1},{_i<=_copies},{_i=_i+1}] do { // make the clones civilians // use random Civilian models for single unit groups if ((_unittype=="Civilian") && (count _members==1)) then {_rnd=1+round(random 20); if (_rnd>1) then {_unittype=format["Civilian%1",_rnd]}}; _grp=createGroup _side; _lead = _grp createUnit [_unittype, _position, [], 0, "form"]; _lead setVehicleInit _initlstr; [_lead] join _grp; _grp selectLeader _lead; sleep 1; // copy team members (skip the leader) _c=0; { _c=_c+1; if (_c>1) then { _newpos = _position findEmptyPosition [10, 200]; sleep .4; if (count _newpos <= 0) then {_newpos = _position}; _newunit = _grp createUnit [_x, _newpos, [],0,"form"]; _newunit setVehicleInit _initstr; [_newunit] join _grp; }; } foreach _membertypes; { _newpos = _position findEmptyPosition [10, 200]; sleep .4; if (count _newpos <= 0) then {_newpos = _position}; _newunit = _x createvehicle (_newpos); } foreach _vehicletypes; //Set new parameters _params = [_lead] + _UCthis; //Exec UPSMON script _params SPAWN UPSMON; processInitCommands; }; }; }foreach KRON_UPS_TEMPLATES; if (true) exitwith{}; // ========================================================================================================= // Script for adding the action of follow player. // Version: 1.0 // Author: Monsada (smirall@hotmail.com) // --------------------------------------------------------------------------------------------------------- private ["_side","_soldiers"]; _side = _this select 0; _soldiers = switch (_side) do { case west: {KRON_AllWest}; case east: {KRON_AllEast}; case resistance: {KRON_AllRes}; }; { if ( leader _x == _x ) then { _x addaction ["Order your men to follow me", "scripts\UPSMON\actions\followme.sqf", [], 1, false]; } else { _x addaction ["Follow me", "scripts\UPSMON\actions\followme.sqf", [], 1, false]; }; }foreach _soldiers; if (true) exitWith {}; // ========================================================================================================= // UPSMON - Urban Patrol Script Mon // Version: 5.0.7 // Author: Monsada (chs.monsada@gmail.com) // Comunidad Hispana de Simulacin: // http://www.simulacion-esp.com // // Wiki: http://dev-heaven.net/projects/upsmon/wiki // Forum: http://forums.bistudio.com/showthread.php?t=91696 // Share your missions with upsmon: http://dev-heaven.net/projects/upsmon/boards/86 // --------------------------------------------------------------------------------------------------------- // Based on Urban Patrol Script // Version: 2.0.3 // Author: Kronzky (www.kronzky.info / kronzky@gmail.com) // --------------------------------------------------------------------------------------------------------- // Required parameters: // unit = Unit to patrol area (1st argument) // markername = Name of marker that covers the active area. (2nd argument) // // Patrol squad samples: // nul=[this,"town"] execVM "upsmon.sqf"; // // defensive squad samples: // nul=[this,"town","nomove"] execVM "scripts\upsmon.sqf"; // // Optional parameters: _ // random = Place unit at random start position. // randomdn = Only use random positions on ground level. // randomup = Only use random positions at top building positions. // min:n/max:n = Create a random number (between min and max) of 'clones'. // init:string = Custom init string for created clones. // nomove = Unit will stay at start position until enemy is spotted. // nofollow = Unit will only follow an enemy within the marker area. // delete:n = Delete dead units after 'n' seconds. // nowait = Do not wait at patrol end points. // noslow = Keep default behaviour of unit (don't change to "safe" and "limited"). // noai = Don't use enhanced AI for evasive and flanking maneuvers. // showmarker = Display the area marker. // trigger = Display a message when no more units are left in sector. // empty:n = Consider area empty, even if 'n' units are left. // track = Display a position and destination marker for each unit. // reinforcement = Makes squad as reinforcement, when alarm KRON_UPS_reinforcement==true this squad will go where enemy were. // reinforcement:x = Makes squad as reinforcement id, when alarm KRON_UPS_reinforcementx==true this squad will go where enemy were. // fortify = makes leader order to take positions on nearly buildings at distance 200 meters, squad fortified moves less than "nomove" // spawned = use only with squads created in runtime, this feature will add squad to UPSMON correctly. // nowp = No waypoints will be created for this squad UNTIL ENEMY DETECTED, this squad will comunicate enemies but will not be moved by UPSMON until enemy detected, after that upsmon takes control of squad // nowp2 = No waypoints will be created for this squad UNTIL ENEMY DETECTED and damaged, this squad will comunicate enemies but will not be moved by UPSMON until enemy detected and damaged, after that upsmon takes control of squad // nowp3 = No waypoints will be created for this squad in any way, this squad will comunicate enemies but will not be moved by UPSMON. // ambush = Ambush squad will not move until in combat, will lay mines if enabled and wait for incoming enemies stealth and ambush when near or discovered. // ambush2 = Ambush squad will not move until in combat, will NOT LAY MINES and wait for incoming enemies stealth and ambush when near or discovered. // ambush:n = Creates an anbush and wait maximun the especified time n in seconds. you can put 0 seconds for putting mines and go away if combined with "move" for example // ambush2:n = Same as ambush:n but without laying mines. // aware,combat,stealth,careless defines default behaviour of squad // respawn = allow squad to respawn when all members are dead and no targets near // respawn:x = allows to define the number of times squad may respawn. // ----------------------------------------------------------------------------- // Modified: 08.04.2010 // ----------------------------------------------------------------------------- // Changes in version: // ----------------------------------------------------------------------------- // Added: // nowp = No waypoints will be created for this squad UNTIL ENEMY DETECTED // nowp2 = No waypoints will be created for this squad UNTIL ENEMY DETECTED AND DAMAGED // nowp3 = No waypoints will be created for this squad in any way. // Ambush2 Same as ambush but without using mines // Added spawn support for vehicles in squad // Modified: // FORTIFY moves leader too and prevents from moving when hurt // Solved bug in targetting of resistance // Solved bug when respawning a template squad were creating a new template // Solved bug that did exiting AI form vehicle when upsmon begins // Solved bug of squads loosing group and gets stucked // Avoid to take same position on buildings // Solved bug in control of heli // ----------------------------------------------------------------------------- if (!isServer) exitWith {}; // ----------------------------------------------------------------------------- if (isNil("KRON_UPS_INIT")) then { KRON_UPS_INIT=0; }; waitUntil {KRON_UPS_INIT==1}; // convert argument list to uppercase _UCthis = []; for [{_i=0},{_i0) then {player sidechat format["%1: New instance",_grpidx,_npc getVariable ("UPSMON_grpid")]}; //Is ACE mod installed and loaded? //_ace = isClass(configFile >> "CfgPatches" >> "ace_main"); //Did ACE scripting start? //if (KRON_UPS_Debug>0) then {player sidechat format["_ACE=%1 ACE=%2",_ace,!(isNil "ace_main")]}; // get name of area marker _areamarker = _this select 1; if (isNil ("_areamarker")) exitWith { hint "UPS: Area marker not defined.\n(Typo, or name not enclosed in quotation marks?)"; }; // remember center position of area marker _centerpos = getMarkerPos _areamarker; _centerX = abs(_centerpos select 0); _centerY = abs(_centerpos select 1); _centerpos = [_centerX,_centerY]; // show area marker _showmarker = if ("SHOWMARKER" in _UCthis) then {"SHOWMARKER"} else {"HIDEMARKER"}; if (_showmarker=="HIDEMARKER") then { //_areamarker setMarkerCondition "false"; // VBS2 _areamarker setMarkerPos [-abs(_centerX),-abs(_centerY)]; }; // is anybody alive in the group? _exit = true; if (typename _npc=="OBJECT") then { if (!isnull group _npc) then { _npc = [_npc,units (group _npc)] call MON_getleader; }else{ _vehicles = [_npc,2] call MON_nearestSoldiers; if (count _vehicles>0) then { _npc = [_vehicles select 0,units (_vehicles select 0)] call MON_getleader; }; }; } else { if (count _obj>0) then { _npc = [_obj,count _obj] call MON_getleader; }; }; if (!(_npc iskindof "Man")) then { if (!isnull(commander _npc) ) then { _npc = commander _npc; }else{ if (!isnull(driver _npc) ) then { _npc = driver _npc; }else{ _npc = gunner _npc; }; }; group _npc selectLeader _npc; }; if (alive _npc) then {_exit = false;}; if (KRON_UPS_Debug>0 && _exit) then {player sidechat format["%1 There is no alive members %1 %2 %3",_grpidx,typename _npc,typeof _npc, count units _npc]}; // exit if something went wrong during initialization (or if unit is on roof) if (_exit) exitWith { if (KRON_UPS_DEBUG>0) then {hint "Initialization aborted"}; }; // remember the original group members, so we can later find a new leader, in case he dies _members = units _npc; KRON_UPS_Total = KRON_UPS_Total + (count _members); //Fills member soldier types _vehicles = []; { if (vehicle _x != _x ) then { _vehicles = _vehicles - [vehicle _x]; _vehicles = _vehicles + [vehicle _x]; }; _membertypes = _membertypes + [typeof _x]; }foreach _members; //Fills member vehicle types { _vehicletypes = _vehicletypes + [typeof _x]; }foreach _vehicles; // what type of "vehicle" is unit ? _isman = "Man" countType [_npc]>0; _iscar = "LandVehicle" countType [_npc]>0; _isboat = "Ship" countType [_npc]>0; _isplane = "Air" countType [_npc]>0; // we just have to brute-force it for now, and declare *everyone* an enemy who isn't a civilian _issoldier = _side != civilian; _friends=[]; _enemies=[]; _sharedenemy=0; if (_issoldier) then { switch (_side) do { case west: { _sharedenemy=0; _friendside = [west]; _enemyside = [east]; }; case east: { _sharedenemy=1; _friendside = [east]; _enemyside = [west]; }; case resistance: { _sharedenemy=2; _enemyside = KRON_UPS_Res_enemy; if (!(east in _enemyside)) then { _friendside = [east]; }; if (!(west in _enemyside)) then { _friendside = [west]; }; }; }; }; if (_side in KRON_UPS_Res_enemy) then { _enemyside = _enemyside + [resistance]; }else { _friendside = _friendside + [resistance]; }; sleep .05; //Sets min units alive for surrender _surrender = call (compile format ["KRON_UPS_%1_SURRENDER",_side]); // Tanks friendlys are contabiliced { if ( side _x in _friendside && ( _x iskindof "Tank" || _x iskindof "Wheeled_APC" )) then { _friendlytanks = _friendlytanks + [_x]; }; }foreach vehicles; // global unit variable to externally influence script //call compile format ["KRON_UPS_%1=1",_npcname]; // X/Y range of target area _areasize = getMarkerSize _areamarker; _rangeX = _areasize select 0; _rangeY = _areasize select 1; _area = abs((_rangeX * _rangeY) ^ 0.5); // marker orientation (needed as negative value!) _areadir = (markerDir _areamarker) * -1; // store some trig calculations _cosdir=cos(_areadir); _sindir=sin(_areadir); // minimum distance of new target position _mindist=(_rangeX^2+_rangeY^2)/3; if (_rangeX==0) exitWith { hint format["UPS: Cannot patrol Sector: %1\nArea Marker doesn't exist",_areamarker]; }; //hint format["%1,%2,%3,%4",_areamarker,isNil ("_areamarker"),_rangeX,_rangeY]; // remember the original mode & speed _orgMode = behaviour _npc; _orgSpeed = speedmode _npc; // set first target to current position (so we'll generate a new one right away) _currPos = getpos _npc; _orgPos = _currPos; _orgDir = getDir _npc; _orgWatch=[_currPos,50,_orgDir] call KRON_relPos; _lastpos = _currPos; _avoidPos = [0,0]; _flankPos = [0,0]; _attackPos = [0,0]; _newattackPos = [0,0]; _fixedtargetpos = [0,0]; _frontPos = [0,0]; _dirf1 = 0;_dirf2=0;_flankPos2=[0,0]; _dist = 10000; _lastdist = 0; _lastmove1 = 0; _lastmove2 = 0; _maxmove=0; _moved=0; _damm=0; _dammchg=0; _lastdamm = 0; _timeontarget = 0; _fightmode = "walk"; _fm=0; _gothit = false; _pursue=false; _hitPos=[0,0,0]; _react = 0; _lastdamage = 0; _lastknown = 0; _opfknowval = 0; _sin0=1; _sin90=1; _cos90=0; _sin270=-1; _cos270=0; _targetX =0; _targetY=0; _relTX=0;_relTY=0; _relUX=0;_relUY=0; _supressed = false; _flankdist=0; _nBuilding=nil; _nBuildingt =nil; _speedmode="Limited"; _distnbuid = 0; _distnbuidt = 0; _objsflankPos1 = []; _cntobjs1 = 0; _objsflankPos2 = []; _cntobjs2 = 0; _targettext =""; _dir1 =0;_dir2=0;_dir3=0;_dd=0; _timeontarget=0; _newdamage =0; _reinforcement =""; _reinforcementsent = false; _target = objnull; _newtarget=objnull; _flankdir=0; //1 tendencia a flankpos1, 2 tendencia a flankpos2 _prov=0; _targets=[]; _planta=0; //Indice de plantas en edificios _newflankAngle = 0; _closeenough = KRON_UPS_closeenough; _gunner = objnull; _driver = objnull; _fortify = false; _buildingdist= 60;//Distance to search buildings near _Behaviour = "CARELESS"; _grp = grpnull; _grp = group _npc; _template = 0; _nowpType = 1; _ambushtype = 1; // set target tolerance high for choppers & planes if (_isplane) then {_closeenough=KRON_UPS_closeenough * 2}; // ***************************************** optional arguments ***************************************** // wait at patrol end points _pause = if ("NOWAIT" in _UCthis) then {"NOWAIT"} else {"WAIT"}; // don't move until an enemy is spotted _nomove = if ("NOMOVE" in _UCthis) then {"NOMOVE"} else {"MOVE"}; //fortify group in near places _fortify= if ("FORTIFY" in _UCthis) then {true} else {false}; _fortifyorig = _fortify; if (_fortify) then { _nomove="NOMOVE"; _minreact = KRON_UPS_minreact * 3; _buildingdist = _buildingdist * 2; _makenewtarget = true; _wait = 3000; }; // don't follow outside of marker area _nowp = if ("NOWP" in _UCthis) then {true} else {false}; _nowp = if ("NOWP2" in _UCthis) then {true} else {_nowp}; _nowp = if ("NOWP3" in _UCthis) then {true} else {_nowp}; _nowpType = if ("NOWP2" in _UCthis) then {2} else {_nowpType}; _nowpType = if ("NOWP3" in _UCthis) then {3} else {_nowpType}; _orignowp = _nowp; //Ambush squad will no move until in combat or so close enemy _ambush= if ("AMBUSH" in _UCthis) then {true} else {false}; _ambush= if ("AMBUSH:" in _UCthis) then {true} else {_ambush}; _ambush= if ("AMBUSH2" in _UCthis) then {true} else {_ambush}; _ambushwait = ["AMBUSH:",_ambushwait,_UCthis] call KRON_UPSgetArg; _ambushwait = ["AMBUSH2:",_ambushwait,_UCthis] call KRON_UPSgetArg; _ambushType = if ("AMBUSH2" in _UCthis) then {2} else {_ambushType}; _ambushType = if ("AMBUSH2:" in _UCthis) then {2} else {_ambushType}; // don't follow outside of marker area _respawn = if ("RESPAWN" in _UCthis) then {true} else {false}; _respawn = if ("RESPAWN:" in _UCthis) then {true} else {_respawn}; _respawnmax = ["RESPAWN:",_respawnmax,_UCthis] call KRON_UPSgetArg; if (!_respawn) then {_respawnmax = 0}; // any init strings? _initstr = ["INIT:","",_UCthis] call KRON_UPSgetArg; // don't follow outside of marker area _nofollow = if ("NOFOLLOW" in _UCthis) then {"NOFOLLOW"} else {"FOLLOW"}; // share enemy info _shareinfo = if ("NOSHARE" in _UCthis) then {"NOSHARE"} else {"SHARE"}; // "area cleared" trigger activator _areatrigger = if ("TRIGGER" in _UCthis) then {"TRIGGER"} else {if ("NOTRIGGER" in _UCthis) then {"NOTRIGGER"} else {"SILENTTRIGGER"}}; // suppress fight behaviour if ("NOAI" in _UCthis) then {_issoldier=false}; // adjust cycle delay _cycle = ["CYCLE:",KRON_UPS_Cycle,_UCthis] call KRON_UPSgetArg; _currcycle=_cycle; //spawned for squads createds in runtime _spawned= if ("SPAWNED" in _UCthis) then {true} else {false}; if (_spawned) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1: squad has been spawned, respawns %2",_grpidx,_respawnmax]}; switch (side _npc) do { case west: { KRON_AllWest=KRON_AllWest + units _npc; }; case east: { KRON_AllEast=KRON_AllEast + units _npc; }; case resistance: { KRON_AllRes=KRON_AllRes + units _npc; if (east in KRON_UPS_Res_enemy ) then { KRON_UPS_East_enemies = KRON_UPS_East_enemies+units _npc; } else { KRON_UPS_East_friends = KRON_UPS_East_friends+units _npc; }; if (west in KRON_UPS_Res_enemy ) then { KRON_UPS_West_enemies = KRON_UPS_West_enemies+units _npc; } else { KRON_UPS_West_friends = KRON_UPS_West_friends+units _npc; }; }; }; call (compile format ["KRON_UPS_%1_Total = KRON_UPS_%1_Total + count (units _npc)",side _npc]); }; // drop units at random positions _initpos = "ORIGINAL"; if ("RANDOM" in _UCthis) then {_initpos = "RANDOM"}; if ("RANDOMUP" in _UCthis) then {_initpos = "RANDOMUP"}; if ("RANDOMDN" in _UCthis) then {_initpos = "RANDOMDN"}; // don't position groups or vehicles on rooftops if ((_initpos!="ORIGINAL") && ((!_isman) || (count _members)>1)) then {_initpos="RANDOMDN"}; // set behaviour modes (or not) _orgMode = "SAFE"; if ("CARELESS" in _UCthis) then {_orgMode = "CARELESS"}; if ("AWARE" in _UCthis) then {_orgMode = "AWARE"}; if ("COMBAT" in _UCthis) then {_orgMode = "COMBAT"}; if ("STEALTH" in _UCthis) then {_orgMode = "STEALTH"}; _Behaviour = _orgMode; _npc setbehaviour _Behaviour; //Sets initial speed _noslow = if ("NOSLOW" in _UCthis) then {"NOSLOW"} else {"SLOW"}; if (_noslow!="NOSLOW") then { _orgSpeed = "limited"; } else { _orgSpeed = "FULL"; }; _speedmode = _orgSpeed; _npc setspeedmode _speedmode; // If enemy detected reinforcements will be sent _reinforcement= if ("REINFORCEMENT" in _UCthis) then {"REINFORCEMENT"} else {"NOREINFORCEMENT"}; _rfid = ["REINFORCEMENT:",0,_UCthis] call KRON_UPSgetArg; if (_rfid>0) then { _reinforcement="REINFORCEMENT"; //if (KRON_UPS_Debug>0) then {hintsilent format["%1: reinforcement group %2",_grpidx,_rfid,_rfidcalled,_reinforcement]}; }; //Is a template for spawn module? _template = ["TEMPLATE:",_template,_UCthis] call KRON_UPSgetArg; //Fills template array for spawn if (_template > 0 && !_spawned) then { KRON_UPS_TEMPLATES = KRON_UPS_TEMPLATES + ( [[_template]+[_side]+[_membertypes]+[_vehicletypes]] ); //if (KRON_UPS_Debug>0) then {diag_log format["%1 Adding TEMPLATE %2 _spawned %3",_grpidx,_template,_spawned]}; //if (KRON_UPS_Debug>0) then {player globalchat format["KRON_UPS_TEMPLATES %1",count KRON_UPS_TEMPLATES]}; }; // make start position random if (_initpos!="ORIGINAL") then { // find a random position (try a max of 20 positions) _try=0; _bld=0; _bldpos=0; while {_try<20} do { _currPos=[_centerX,_centerY,_rangeX,_rangeY,_cosdir,_sindir,_areadir] call KRON_randomPos; _posinfo=[_currPos] call KRON_PosInfo3; // _posinfo: [0,0]=no house near, [obj,-1]=house near, but no roof positions, [obj,pos]=house near, with roof pos _bld=_posinfo select 0; _bldpos=_posinfo select 1; if (_isplane || _isboat || !(surfaceiswater _currPos)) then { if (((_initpos=="RANDOM") || (_initpos=="RANDOMUP")) && (_bldpos>0)) then {_try=99}; if (((_initpos=="RANDOM") || (_initpos=="RANDOMDN")) && (_bldpos==0)) then {_try=99}; }; _try=_try+1; //sleep .05; }; if (_bldpos==0) then { if (_isman) then { {_x setpos _currPos} foreach units _npc; } else { _npc setpos _currPos; }; } else { // put the unit on top of a building _npc setPos (_bld buildingPos _bldpos); _currPos = getPos _npc; _nowp=true; // don't move if on roof }; sleep .05; }; // track unit _track = if (("TRACK" in _UCthis) || (KRON_UPS_Debug>0)) then {"TRACK"} else {"NOTRACK"}; _trackername = ""; _destname = ""; if (_track=="TRACK") then { _track = "TRACK"; _trackername=format["trk_%1",_grpidx]; _markerobj = createMarker[_trackername,[0,0]]; _markerobj setMarkerShape "ICON"; _markertype = if (isClass(configFile >> "cfgMarkers" >> "WTF_Dot")) then {"WTF_DOT"} else {"DOT"}; _trackername setMarkerType _markertype; _markercolor = switch (side _npc) do { case west: {"ColorGreen"}; case east: {"ColorRed"}; case resistance: {"ColorBlue"}; default {"ColorBlack"}; }; _trackername setMarkerColor _markercolor; _trackername setMarkerText format["%1",_grpidx]; _trackername setmarkerpos _currPos; _destname=format["dest_%1",_grpidx]; _markerobj = createMarker[_destname,[0,0]]; _markerobj setMarkerShape "ICON"; _markertype = if (isClass(configFile >> "cfgMarkers" >> "WTF_Flag")) then {"WTF_FLAG"} else {"FLAG"}; _destname setMarkerType _markertype; _destname setMarkerColor _markercolor; _destname setMarkerText format["%1",_grpidx]; _destname setMarkerSize [.5,.5]; }; // delete dead units _deletedead = ["DELETE:",0,_UCthis] call KRON_UPSgetArg; if (_deletedead>0) then { {_x addEventHandler['killed',format["[_this select 0,%1] spawn KRON_deleteDead",_deletedead]]; }forEach _members; }; // how many group clones? // TBD: add to global side arrays? _mincopies = ["MIN:",0,_UCthis] call KRON_UPSgetArg; _maxcopies = ["MAX:",0,_UCthis] call KRON_UPSgetArg; if (_mincopies>_maxcopies) then {_maxcopies=_mincopies}; if (_maxcopies>140) exitWith {hint "Cannot create more than 140 groups!"}; if (_maxcopies>0) then { _copies=_mincopies+random (_maxcopies-_mincopies); // create the clones for "_grpcnt" from 1 to _copies do { // copy groups if (isNil ("KRON_grpindex")) then {KRON_grpindex = 0}; KRON_grpindex = KRON_grpindex+1; // copy group leader _unittype = typeof _npc; // make the clones civilians // use random Civilian models for single unit groups if ((_unittype=="Civilian") && (count _members==1)) then {_rnd=1+round(random 20); if (_rnd>1) then {_unittype=format["Civilian%1",_rnd]}}; _grp=createGroup side _npc; _lead = _grp createUnit [_unittype, getpos _npc, [], 0, "form"]; _lead setVehicleVarName format["l%1",KRON_grpindex]; call compile format["l%1=_lead",KRON_grpindex]; _lead setBehaviour _orgMode; _lead setSpeedmode _orgSpeed; _lead setSkill skill _npc; _lead setVehicleInit _initstr; [_lead] join _grp; _grp selectLeader _lead; // copy team members (skip the leader) _c=0; { _c=_c+1; if (_c>1) then { _newunit = _grp createUnit [typeof _x, getpos _x, [],0,"form"]; _newunit setBehaviour _orgMode; _newunit setSpeedMode _orgSpeed; _newunit setSkill skill _x; _newunit setVehicleInit _initstr; [_newunit] join _grp; }; } foreach _members; _nul=[_lead,_areamarker,_pause,_noslow,_nomove,_nofollow,_initpos,_track,_showmarker,_shareinfo,"DELETE:",_deletedead] execVM "scripts\upsmon.sqf"; //sleep .05; }; processInitCommands; sleep .05; }; // units that can be left for area to be "cleared" _zoneempty = ["EMPTY:",0,_UCthis] call KRON_UPSgetArg; // create area trigger if (_areatrigger!="NOTRIGGER") then { _trgside = switch (side _npc) do { case west: {"WEST"}; case east: {"EAST"}; case resistance: {"GUER"}; case civilian: {"CIV"};}; //_trgside = switch (side _npc) do { case west: {"EAST"}; case east: {"WEST"}; case resistance: {"ANY"}; case civilian: {"ANY"};}; _trgname="KRON_Trig_"+_trgside+"_"+_areamarker; _flgname="KRON_Cleared_"+_areamarker; // has the trigger been created already? KRON_TRGFlag=-1; call compile format["%1=false",_flgname]; call compile format["KRON_TRGFlag=%1",_trgname]; if (isNil ("KRON_TRGFlag")) then { // trigger doesn't exist yet, so create one (make it a bit bigger than the marker, to catch path finding 'excursions' and flanking moves) call compile format["%1=createTrigger['EmptyDetector',_centerpos]",_trgname]; call compile format["%1 setTriggerArea[_rangeX*1.5,_rangeY*1.5,markerDir _areamarker,true]",_trgname]; call compile format["%1 setTriggerActivation[_trgside,'PRESENT',true]",_trgname]; call compile format["%1 setEffectCondition 'true'",_trgname]; call compile format["%1 setTriggerTimeout [5,7,10,true]",_trgname]; if (_areatrigger!="SILENTTRIGGER") then { call compile format["%1 setTriggerStatements['count thislist<=%6', 'titletext [''SECTOR <%2> LIMPIO'',''PLAIN''];''%2'' setmarkerpos [-%4,-%5];%3=true;', 'titletext [''SECTOR <%2> HA SIDO REOCUPADO'',''PLAIN''];''%2'' setmarkerpos [%4,%5];%3=false;']", _trgname,_areamarker,_flgname,_centerX,_centerY,_zoneempty]; } else { call compile format["%1 setTriggerStatements['count thislist<=%3', '%2=true;', '%2=false;']", _trgname,_flgname,_zoneempty]; }; //Si quieres que ejecute tu script descomenta estas lineas //message = format["_trgside=%1, _npc=%2",_trgside, _npc]; //call compile format["%1 setTriggerStatements['this', 'nul = [%1,%3,thisList] execvm ''mon\enemydetected.sqF'';', '%2=false;'];", _trgname,_flgname,_trgside]; //setTriggerStatements['this', 'nul = [thislist,_trgside] execvm "mon\enemydetectedd.sqF"';, 'ok = false'] }; sleep .05; }; //Si algn soldado tiene un edificio util cerca lo toma if ( _nomove=="NOMOVE" ) then { sleep 10; _unitsIn = [_grpid,_npc,150] call MON_GetIn_NearestStatic; if ( count _unitsIn > 0 ) then { sleep 10}; [_npc, _buildingdist,false,_wait,true] spawn MON_moveNearestBuildings; }; // init done _makenewtarget=true; _newpos=false; _targetPos = [0,0,0];//_currPos; _targettext ="_currPos"; _swimming = false; _waiting = if (_nomove=="NOMOVE") then {9999} else {0}; _sharedist = if (_nomove=="NOMOVE") then {KRON_UPS_sharedist} else {KRON_UPS_sharedist*1.5}; //Gets position of waypoint if no targetpos if (format ["%1", _targetPos] == "[0,0,0]") then { _index = (count waypoints _grp) - 1; _wp = [_grp,_index]; _targetPos = waypointPosition _wp; if (([_currpos,_targetPos] call KRON_distancePosSqr)<= 20) then {_targetPos = [0,0,0];}; }; // *********************************************************************************************************** // ************************************************ MAIN LOOP ************************************************ // *********************************************************************************************************** _loop=true; scopeName "main"; while {_loop} do { //if (KRON_UPS_Debug>0) then {player sidechat format["%1: _cycle=%2 _currcycle=%3 _react=%4 _waiting=%5",_grpidx,_cycle,_currcycle,_react,_waiting]}; _timeontarget=_timeontarget+_currcycle; _react=_react+_currcycle; _waiting = _waiting - _currcycle; _lastreact = _lastreact+_currcycle; _newpos = false; // did anybody in the group got hit? _newdamage=0; { if((damage _x)>0.2) then { _newdamage=_newdamage+(damage _x); // damage has increased since last round if (_newdamage>_lastdamage) then { _lastdamage=_newdamage; _gothit=true; }; }; if (!alive _x || !canmove _x) then { _members=_members-[_x]; }; } foreach _members; // nobody left alive, exit routine if (count _members==0) then { _exit=true; } else { // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; }; //exits from loop if (_exit) exitwith {}; //Checks if surrender is enabled if ( _surrender > 0 ) then { _surrended = call (compile format ["KRON_UPS_%1_SURRENDED",_side]); }; //If surrended exits from script if (_surrended) exitwith { { [_x] spawn MON_surrender; }foreach _members; if (KRON_UPS_Debug>0) then {_npc globalchat format["%1: %2 SURRENDED",_grpidx,_side]}; }; //Asignamos el lider actual del grupo en el array de lideres de grupos KRON_NPCs set [_grpid,_npc]; // current position _currPos = getpos _npc; _currX = _currPos select 0; _currY = _currPos select 1; if (_track=="TRACK" || KRON_UPS_Debug>0) then { _trackername setmarkerpos _currPos; }; // if the AI is a civilian we don't have to bother checking for enemy encounters if ((_issoldier) && !(_exit)) then { _pursue=false; //_Behaviour = Behaviour _npc; //Variables para saber si estamos en un vehiculo _incar = "LandVehicle" countType [vehicle (_npc)]>0; _inheli = "Air" countType [vehicle (_npc)]>0; _inboat = "Ship" countType [vehicle (_npc)]>0; //Si el grupo es un refuerzo y se han detectado los enemigos se envian al objetivo if (_rfid > 0 ) then { _rfidcalled = call (compile format ["KRON_UPS_reinforcement%1",_rfid]); if (isnil "_rfidcalled") then {_rfidcalled=false}; _fixedtargetPos = call (compile format ["KRON_UPS_reinforcement%1_pos",_rfid]); if (isnil "_fixedtargetPos") then { _fixedtargetPos=[0,0]; }else{ _fixedtargetPos = [abs(_fixedtargetPos select 0),abs(_fixedtargetPos select 1)]; _target = objnull; }; }; //Reinforcement control if (_reinforcement=="REINFORCEMENT") then { if ( (KRON_UPS_reinforcement || _rfidcalled) && (!_reinforcementsent)) then { _reinforcementsent=true; _fortify = false; _minreact = KRON_UPS_minreact; _buildingdist = 60; _react = _react + 100; _waiting = -1; if (KRON_UPS_Debug>0) then {player sidechat format["%1 called for reinforcement %2",_grpidx,_fixedtargetPos]}; }else{ if ( !(KRON_UPS_reinforcement || _rfidcalled) && (_reinforcementsent)) then { _fixedtargetPos = [0,0]; _attackPos = [0,0]; _fortify = _fortifyorig; _reinforcementsent=false; _nowp = _orignowp; if (_rfid > 0 ) then { call (compile format ["KRON_UPS_reinforcement%1_pos = [0,0]",_rfid]); call (compile format ["KRON_UPS_reinforcement%1 = false",_rfid]); }; if (KRON_UPS_Debug>0) then {player sidechat format["%1 reinforcement canceled",_grpidx]}; }; }; }; //Gets targets from radio _targets = call (compile format ["KRON_targets%1",_sharedenemy]); //Reveal targets found by members to leader { _NearestEnemy = assignedTarget _x; //_NearestEnemy = _x findnearestenemy _x; if (_x knowsabout _NearestEnemy > 0.5 && (_npc knowsabout _NearestEnemy <= 0.5 || count _targets <= 0 )) then { if (_npc knowsabout _NearestEnemy <= 0.5 ) then { _npc reveal _NearestEnemy; if (KRON_UPS_Debug>0) then {player globalchat format["%1: %2 reveals target %3 to leader",_grpidx,typeof _x, typeof _NearestEnemy]}; }; //If no targets adds this if (count _targets <= 0) then { //_target = _NearestEnemy; _targets = _targets + [_NearestEnemy]; _NearestEnemy setvariable ["UPSMON_lastknownpos", position _NearestEnemy, false]; //if (KRON_UPS_Debug>0) then {player globalchat format["%1: %3 added to targets",_grpidx,typeof _x, typeof _target]}; }; }; }foreach units _npc; //Resets distance to target _dist = 10000; //Gets current known position of target and distance if ( !isNull (_target) && alive _target ) then { _newattackPos = _target getvariable ("UPSMON_lastknownpos"); if ( !isnil "_newattackPos" ) then { _attackPos=_newattackPos; //Gets distance to target known pos _dist = ([_currpos,_attackPos] call KRON_distancePosSqr); }; }; //Initialization for geting new targets //Si el objetivo actual est muerto o no existe se limpia el conocimiento anterior if (isNull (_target) || !alive _target || !canmove _target ) then { _lastknown = 0; _opfknowval = 0; _target = objnull; }; //_maxknowledge=0; _newtarget = _target; if ((_shareinfo=="SHARE")) then { // if the leader comes across another unit that's either injured or dead, go into combat mode as well. // If the other person is still alive, share enemy information. //Solicita por radio la posicin del enemigo, si est dentro del radio de accin actua if ((KRON_UPS_comradio == 2)) then { _targetsnear = false; //I we have a close target alive do not search another if (!alive _target || !canmove _target || _dist > _closeenough) then { { //if (KRON_UPS_Debug>0) then {player sidechat format["%1: targets=%2 tg=%3 newtg=%4 dist=%5 %6 %7 %8 %9",_grpidx,count _targets,typeof _x,_newtarget, _dist,_knows, _maxknowledge,_dist2,_attackPos]}; if ( !isnull _x && canmove _x && alive _x ) then { _newattackPos = _x getvariable ("UPSMON_lastknownpos"); if ( !isnil "_newattackPos" ) then { _dist3 = ([_currpos,_newattackPos] call KRON_distancePosSqr); //Sets if near targets to begin warning IF ( _dist3 <= (_closeenough + KRON_UPS_safedist)) then { _targetsnear = true }; //Sets new target if ( ( isnull (_newtarget) || captive _newtarget|| !alive _newtarget|| !canmove _newtarget || _dist3 < _dist ) && ( _dist3 <= _sharedist || _reinforcementsent ) && ( !(_x iskindof "Air") || (_x iskindof "Air" && _isplane )) && ( !(_x iskindof "Ship") || (_x iskindof "Ship" && _isboat )) && ( _x emptyPositions "Gunner" == 0 && _x emptyPositions "Driver" == 0 || (!isnull (gunner _x) && canmove (gunner _x)) || (!isnull (driver _x) && canmove (driver _x))) ) then { _newtarget = _x; _opfknowval = _npc knowsabout _x; _dist = _dist3; if (_dist < _closeenough) exitWith {}; }; }; }; } foreach _targets; sleep 0.5; }; }; //Si cambia el target cambiamos inicializamos la direccin de flanqueo if ( !isNull (_newtarget) && alive _newtarget && canmove _newtarget && (_newtarget != _target || isNull (_target)) ) then { _timeontarget = 0; _targetdead = false; _flankdir= if (random 100 <= 10) then {0} else {_flankdir}; _target = _newtarget; }; }; //Gets current known position of target and distance if ( !isNull (_target) && alive _target ) then { //Enemy detected if (_fightmode != "fight" ) then { _fightmode = "fight"; _react = KRON_UPS_react; if (KRON_UPS_Debug>0) then {player sidechat format["%1: Enemy detected %2",_grpidx, typeof _target]}; if (_nowpType == 1) then {_nowp = false}; }; _newattackPos = _target getvariable ("UPSMON_lastknownpos"); if ( !isnil "_newattackPos" ) then { _attackPos=_newattackPos; //Gets distance to target known pos _dist = ([_currpos,_attackPos] call KRON_distancePosSqr); //Looks at target known pos _members lookat _attackPos; }; }; //Si el enemigo se ha alejado de la covertura de rdio y no es un refuerzo enviado habremos perdido la pista if ( _fightmode != "walk" && !isnull(_target) && _dist < 15 && _npc knowsabout _target < 0.5 ) then { //If squad is near last position and no target clear position of target if (KRON_UPS_Debug>0) then {player sidechat format["%1: Target lost",_grpidx]}; _fightmode="walk"; _speedmode = _orgSpeed; _target = objnull; _Behaviour = _orgMode; _waiting = -1; _unitpos = "AUTO"; _pursue=false; _nowp = _orignowp; _targetdead = true; _makenewtarget = true; //Volvemos a la posicin original }; //Si aumenta el conocimiento del target aceleramos la reaccin if (_opfknowval>_lastknown ) then { _react = _react + 20; }; // if spotted an enemy or got shot, so start pursuit, if in combat and exceed time to react or movecompleted if (_fightmode != "walk" && ((_react >= KRON_UPS_react && _lastreact >=_minreact) || moveToCompleted _npc )) then { _pursue=true; }; //Ambush if (_ambush && !_ambushed) then { _ambushed = true; _nowp = true; _currcycle = 2; _grp setFormation "LINE"; _npc setBehaviour "STEALTH"; _npc setSpeedMode "FULL"; sleep 10; { [_x,"DOWN"] spawn MON_setUnitPos; _x stop true; }foreach units _npc; //Puts a mine if near road if ( KRON_UPS_useMines && _ambushType == 1 ) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1: Puting mine for ambush",_grpidx]}; _npc setBehaviour "careless"; _dir1 = getDir _npc; _mineposition = [position _npc,_dir1, 25] call MON_GetPos2D; _roads = _mineposition nearroads KRON_UPS_ambushdist; if (count _roads > 0) then { _mineposition = position (_roads select 0); if (_Mines > 0 && [_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; if (count _roads > 3) then { _mineposition = position (_roads select 3); if (_Mines > 0 && [_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; }; } else { _mineposition = [position _npc,(_dir1-30)mod 360, KRON_UPS_ambushdist + random 15] call MON_GetPos2D; if (_Mines > 0 && [_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; _mineposition = [position _npc,(_dir1+30)mod 360, KRON_UPS_ambushdist + random 15] call MON_GetPos2D; if (_Mines > 0 && [_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; }; _mineposition = [position _npc,_dir1, KRON_UPS_ambushdist + random 20] call MON_GetPos2D; if ([_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; _mineposition = [position _npc,_dir1-15, KRON_UPS_ambushdist + random 10] call MON_GetPos2D; if ([_npc,_mineposition] call MON_CreateMine) then {_Mines = _Mines -1;}; _npc setBehaviour "careless"; sleep 30; { if (!stopped _x) then { _x domove position _npc; waituntil {moveToCompleted _x || moveToFailed _x || !alive _x || !canmove _x || _x distance _npc <= 5}; }; }foreach units _npc; }; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; _npc setBehaviour "STEALTH"; _grp setFormation "LINE"; sleep 10; { [_x,"DOWN"] spawn MON_setUnitPos; _x stop true; _x setUnitPos "DOWN"; }foreach units _npc; }; //Ambus enemy is nearly aproach //_ambushdist = 50; if (_ambush) then { _prov = ((_ambushdist*2 - (_npc distance _target))*3) - 40; //if (KRON_UPS_Debug>0) then {player sidechat format["%1:%6 _ambushdist=%5 last=%2 dist=%3 prov=%4",_grpidx,_lastdist,_npc distance _target,_prov,_ambushdist,typeof _target]}; if (_gothit || _reinforcementsent || time > _ambushwait || ( "Air" countType [_target]<=0 && ( _npc distance _target <= _ambushdist + random 10 || (!isNull (_target) && (( random 100 <= _prov && _npc distance _target > _lastdist) || _npc distance _target > _ambushdist*3 && _lastdist < _ambushdist*3 && _lastdist > 0)) )) ) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1: FIREEEEEEEEE!!!",_grpidx]}; _nowp = _orignowp; _ambush = false; _ambushed = false; _currcycle = _cycle; { _x stop false; _x setUnitPos "Middle"; } foreach _members; //No engage yet _pursue = false; }; //Sets distance to target _lastdist = _npc distance _target; }; //if (KRON_UPS_Debug>0) then {player sidechat format["%1: _nowp=%2 in vehicle=%3 _inheli=%4 _npc=%5",_grpidx,_nowp,vehicle (_npc) ,_inheli,typeof _npc ]}; //If in vehicle take driver if not controlled by user if (alive _npc && !_nowp) then { if (!_isman || (vehicle (_npc) != _npc && !_inboat && !(vehicle (_npc) iskindof "StaticWeapon"))) then { //If new target is close enough leaves vehicle _unitsin = []; if (!_inheli) then { if (_fightmode == "walk") then { _GetOutDist = _area / 20; }else{ _GetOutDist = _closeenough * ((random .4) + 0.6); }; //If near target or stuck getout of vehicle and lock or gothit exits inmediately if (_gothit || _dist <= _closeenough * 1.5 || (_lastcurrpos select 0 == _currpos select 0 && _lastcurrpos select 1 == _currpos select 1 && moveToFailed (vehicle (_npc))) || moveTocompleted (vehicle (_npc))) then { _GetOutDist = 10000; }; //if (KRON_UPS_Debug>0) then {player sidechat format["%1: vehicle=%2 _npc=%3",_grpidx,vehicle (_npc) ,typeof _npc ]}; _unitsin = [_npc,_targetpos,_GetOutDist] call MON_GetOutDist; sleep 0.05; }else{ _GetOutDist = 0; }; if (count _unitsin > 0) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1: Geting out of vehicle",_grpidx,([_currpos,_targetpos] call KRON_distancePosSqr),_GetOutDist,_area]}; _timeout = time + 15; { waituntil {vehicle _x == _x || !canmove _x || !alive _x || time > _timeout || movetofailed _x }; }foreach _unitsin; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; if (_fightmode == "fight" || _gothit) then { _npc setBehaviour "AWARE"; _groupOne = group _npc; _groupOne setFormation "DIAMOND"; [_npc,50] call MON_move; }; if (_fightmode == "fight") then { _pursue = true; }else { _pursue = false; _makenewtarget=true; }; }; }; }; //Si bajo ataque o aumenta el conocimiento se acelera la respuesta y se retoma el control de la AI if (_gothit ) then { _react = if (!_supressed) then {_react + 30}; if (_fightmode != "walk") then { if (_nowpType == 2) then {_nowp = false}; }; }; //Si no hay objetivo se anula la orden de persecucin if ((isNull (_target) || !alive _target )) then { _pursue=false; if (_gothit && !_fortify) then { if (_fightmode == "walk") then { //Podra tratarse de un sniper, mejor estar alerta y moverse por si acaso _Behaviour = "AWARE"; _speedmode = "FULL"; _unitpos = "AUTO"; _gothit = false; _makenewtarget = true; _waiting = -1; if (KRON_UPS_Debug>0) then {player sidechat format["%1: Have been damaged moving",_grpidx,_makenewtarget]}; } else { if (_react >= KRON_UPS_react && _lastreact >=_minreact && count _targets <= 0) then { //Nos disparan y no tenemos target, nos movemos de posicin if (KRON_UPS_Debug>0) then {player sidechat format["%1: Under fire by unkown target, moving to newpos",_grpidx]}; //Cubre al grupo con una granada de humo if (!_supressed && (random 100)<80) then { [_npc,_target] spawn MON_throw_grenade; }; _gothit = false; _makenewtarget = true; _waiting = -1; _pause="NOWAIT"; _speedmode = "FULL"; _unitpos = "middle"; _Behaviour = "AWARE"; }else{ if (_lastreact >=_minreact && !_targetdead) then { _targetdead = true; _pursue = true; //Nos hemos qdado sin objetivos continuamos la bsqueda if (KRON_UPS_Debug>0) then {player sidechat format["%1: Target defeated, searching",_grpidx]}; }; }; }; }; }; //If no fixed target check if current target is available if (format ["%1",_fixedtargetPos] != "[0,0]") then { //If fixed target check if close enough or near enemy and gothit if (([_currpos,_fixedtargetpos] call KRON_distancePosSqr) <= _closeenough || (_dist <= _closeenough && _gothit)) then { _fixedtargetPos = [0,0]; }else{ _pursue = false; _attackPos=_fixedtargetPos; if (_react >= KRON_UPS_react && _lastreact >=_minreact) then { _makenewtarget = true; _unitpos = "AUTO"; _speed = "FULL"; }; }; }; //If captive or surrended do not pursue if ( isnil "_attackPos") then {_pursue = false;}; if ( captive _target || format ["%1", _attackPos] == "[0,0]") then {_pursue = false;}; //If no waypoint do not move if (_nowp) then { _makenewtarget = false; _pursue = false; }; if (_inheli) then { _landing = _heli getVariable "UPSMON_landing"; if (isnil ("_landing")) then {_landing=false;}; if (_landing) then { _pursue = false; }; }; sleep 0.5; //********************************************************************************************************************** // PURSUE: SE INICIA LA PERSECUCIN DEL OBJETIVO //********************************************************************************************************************** //if (KRON_UPS_Debug>0) then {diag_log format["%1:pursue=%3 _react=%9 timeon=%4 targets=%5 _target=%6 captive=%11 _attackPos=%7 nowp=%8 _inheli=%10 _fixedtargetPos=%12 _fightmode=%13",_grpidx,_dist,_pursue,_timeontarget,count _targets, _target,_attackPos,_nowp,_react,_inheli,captive _target,_fixedtargetPos,_fightmode]}; if (_pursue) then { _pursue = false; _newpos = true; _react = 0; _lastreact = 0; _timeontarget = 0; _makenewtarget = false; _fm = 1; //Cancel supress effect when reaction time _supressed = false; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; // get position of spotted unit in player group, and watch that spot _targetPos = _attackPos; _targetX = _targetPos select 0; _targetY = _targetPos select 1; _currPos = getpos _npc; // also go into "combat mode" _pause="NOWAIT"; _waiting=0; // angle from unit to target _dir1 = [_currPos,_targetPos] call KRON_getDirPos; // angle from target to unit (reverse direction) _dir2 = (_dir1+180) mod 360; //Establecemos una distancia de flanqueo _flankdist = ((random 0.5)+0.7)*KRON_UPS_safedist; //La distancia de flanqueo no puede ser superior a la distancia del objetivo o nos pordra pillar por la espalda _flankdist = if ((_flankdist*1.40) >= _dist) then {_dist*.65} else {_flankdist}; if (_inheli) then {_flankdist = _flankdist / 2;}; // avoidance position (right or left of unit) _avoidPos = [_currPos,_dir2, KRON_UPS_safedist] call MON_GetPos2D; //Calculamos posicin de avance frontal _frontPos = [_targetPos,_dir2, _flankdist] call MON_GetPos2D; //Adaptamos el ngulo de flanqueo a la distancia _newflankAngle = ((random(KRON_UPS_flankAngle)+1) * 2 * (_flankdist / KRON_UPS_safedist )) + (KRON_UPS_flankAngle/1.4) ; if (_newflankAngle > KRON_UPS_flankAngle) then {_newflankAngle = KRON_UPS_flankAngle}; //Calculamos posicin de flanqueo 1 45 _dirf1 = (_dir2+_newflankAngle) mod 360; _flankPos = [_targetPos,_dirf1, _flankdist] call MON_GetPos2D; //Calculamos posicin de flanqueo 2 -45 _dirf2 = (_dir2-_newflankAngle+360) mod 360; _flankPos2 = [_targetPos,_dirf2, _flankdist] call MON_GetPos2D; if (KRON_UPS_Debug>0) then { "flank1" setmarkerpos _flankPos; "flank2" setmarkerpos _flankPos2; "target" setmarkerpos _attackPos; }; //Decidir por el mejor punto de flanqueo //Contamos las posiciones de destino de otros grupos ms alejadas _fldest = 0; _fldest2 = 0; _fldestfront = 0; _i = 0; { if (_i != _grpid && format ["%1", _x] != "[0,0]") then { _dist1 = [_x,_flankPos] call KRON_distancePosSqr; _dist2 = [_x,_flankPos2] call KRON_distancePosSqr; _dist3 = [_x,_frontPos] call KRON_distancePosSqr; if (_dist1 <= _flankdist/1.5 || _dist2 <= _flankdist/1.5 || _dist3 <= _flankdist/1.5) then { if (_dist1 < _dist2 && _dist1 < _dist3) then {_fldest = _fldest + 1;}; if (_dist2 < _dist1 && _dist2 < _dist3) then {_fldest2 = _fldest2 + 1;}; if (_dist3 < _dist1 && _dist3 < _dist2) then {_fldestfront = _fldestfront + 1;}; }; }; _i = _i + 1; }foreach KRON_targetsPos; //sleep 0.05; //Contamos las posiciones de otros grupos ms alejadas _i = 0; { if (_i != _grpid && !isnull(_x)) then { _dist1 = [getpos(_x),_flankPos] call KRON_distancePosSqr; _dist2 = [getpos(_x),_flankPos2] call KRON_distancePosSqr; _dist3 = [getpos(_x),_frontPos] call KRON_distancePosSqr; if (_dist1 <= _flankdist/1.5 || _dist2 <= _flankdist/1.5 || _dist3 <= _flankdist/1.5) then { if (_dist1 < _dist2 && _dist1 < _dist3) then {_fldest = _fldest + 1;}; if (_dist2 < _dist1 && _dist2 < _dist3) then {_fldest2 = _fldest2 + 1;}; if (_dist3 < _dist1 && _dist3 < _dist2) then {_fldestfront = _fldestfront + 1;}; }; }; _i = _i + 1; }foreach KRON_NPCs; //sleep 0.05; //La preferencia es la eleccin inicial de direccin switch (_flankdir) do { case 1: {_prov = 125}; case 2: {_prov = -25}; default {_prov = 50}; }; //Si es positivo significa que hay ms destinos existentes lejanos a la posicion de flanqueo1, tomamos primariamente este if (_fldest<_fldest2) then {_prov = _prov + 50;}; if (_fldest2<_fldest) then {_prov = _prov - 50;}; //Si la provablilidad es negativa indica que tomar el flank2 por lo tanto la provabilidad de coger 1 es 0 if (_prov<0) then {_prov = 0;}; //Evaluamos la direccin en base a la provablilidad calculada if ((random 100)<=_prov) then { _flankdir =1; _flankPos = _flankPos; _targettext = "_flankPos"; } else { _flankdir =2; _flankPos = _flankPos2; _targettext = "_flankPos2"; }; //Posicin de ataque por defecto el flanco _targetPos = _flankPos; _targettext = "_flankPos"; if ((surfaceIsWater _flankPos && !(_isplane || _isboat)) ) then { _targetPos = _attackPos;_targettext ="_attackPos"; _flankdir =0; } else { if (_fldestfront < _fldest && _fldestfront < _fldest2) then { _targetPos = _frontPos;_targettext ="_frontPos"; }; }; //Establecemos tipo de waypoint //con DESTROY tiene peor comportamiento y a veces no se mueven _wptype = "MOVE"; //Establecer velocidad y modo de combate _rnd = random 100; if ( _dist <= _closeenough ) then { //Si estamos muy cerca damos prioridad a fuego a discreccin if ( _dist <= _closeenough/2 ) then { //Modo combate cerrado _speedmode = "LIMITED"; _wpformation = "LINE"; _unitpos = "Middle"; _react = _react + KRON_UPS_react / 2; _minreact = KRON_UPS_minreact / 2; if ((_nomove == "NOMOVE" && _rnd < 25) && !_reinforcementsent) then { //Combate defensivo _Behaviour = "STEALTH"; _wptype = "HOLD"; } else { _Behaviour = "COMBAT"; _wptype = "MOVE"; } }else{ //Si la tropa tiene el rol de no moverse tender a mantener la posicin _speedmode = "FULL"; _wpformation = "WEDGE"; _unitpos = "Middle"; _minreact = KRON_UPS_minreact / 1.5; if ((_nomove == "NOMOVE" && _rnd < 50) && !_reinforcementsent) then { //Combate defensivo _Behaviour = "COMBAT"; _wptype = "HOLD"; } else { _Behaviour = "AWARE"; _wptype = "MOVE"; }; }; } else { if (( _dist <= (_closeenough + KRON_UPS_safedist))) then { _speedmode = "FULL"; _wpformation = "WEDGE"; _unitpos = if (_rnd < 90) then {"Middle"}else{"AUTO"}; _minreact = KRON_UPS_minreact; if ((_nomove=="NOMOVE" && _rnd < 75) && !_reinforcementsent) then { //Combate defensivo _Behaviour = "AWARE"; _wptype = "HOLD"; }else{ //Movimiento con precaucin (ms rpido) _Behaviour = "AWARE"; _wptype = "MOVE"; }; } else { //In distance of radio patrol may act. if (( _dist < KRON_UPS_sharedist )) then { //Pelotn lejos del objetivo hay que desplazarse rpido y directo al punto _Behaviour = "AWARE"; _speedmode = "FULL"; _unitpos = if (_rnd < 60) then {"Middle"}else{"AUTO"}; _minreact = KRON_UPS_minreact * 2; if ((_nomove=="NOMOVE" && _rnd < 95) && !_reinforcementsent) then { _wptype = "HOLD"; _wpformation = "WEDGE"; }else{ _wptype = "MOVE"; _wpformation = "WEDGE"; }; } else { //Pelotn muy muy lejos del objetivo si es rol nomove no se movern _Behaviour = "SAFE"; _speedmode = "FULL"; _unitpos = "AUTO"; _minreact = KRON_UPS_minreact * 3; if (((_nomove=="NOMOVE") || (_nomove=="MOVE" && _rnd < 70)) && !_reinforcementsent) then { _wptype = "HOLD"; _wpformation = "WEDGE"; }else{ _wptype = "MOVE"; _wpformation = "COLUMN"; }; }; }; }; //Las escuadras fortificadas mantienen siempre la posicin if ( _fortify && (random 100)<99) then {_wptype = "HOLD"}; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; //If leader is in vehicle will move in anyway if (vehicle (_npc) != _npc || !_isman) then { _wptype = "MOVE"; _Behaviour = "AWARE"; if ( _inheli ) then { _speedmode = "FULL"; _unitpos = "AUTO"; if ( (random 100)<60 ) then { _targetPos = _AttackPos; }; }; }; //Establecemos el target KRON_targetsPos set [_grpid,_targetPos]; sleep .05; //If use statics are enabled leader searches for static weapons near. // Tanks enemies are contabiliced if ( KRON_UPS_useMines && _Mines > 0 ) then { _enemytanksnear = false; { if ( ("Tank" countType [_x] > 0 || "Wheeled_APC" countType [_x] >0 || "Tank" countType [vehicle _x] > 0 || "Wheeled_APC" countType [vehicle _x] >0 ) && alive _x && canMove _x && _npc distance _x <= _closeenough + KRON_UPS_safedist ) exitwith { _enemytanksnear = true; _enemytanknear = _x;}; }foreach _targets; //If use mines are enabled and enemy armors near and no friendly armor put mine. if ( _enemytanksnear && !isnull _enemytanknear && alive _enemytanknear ) then { _friendlytanksnear = false; { if (!( alive _x && canMove _x)) then {_friendlytanks = _friendlytanks - [_x]}; if (alive _x && canMove _x && _npc distance _x <= _closeenough + KRON_UPS_safedist ) exitwith { _friendlytanksnear = true;}; }foreach _friendlytanks; if (!_friendlytanksnear && random(100)<30 ) then { _dir1 = [_currPos,position _enemytanknear] call KRON_getDirPos; _mineposition = [position _npc,_dir1, 25] call MON_GetPos2D; _roads = _mineposition nearroads 50; if (count _roads > 0) then {_mineposition = position (_roads select 0);}; if ([_npc,_mineposition] call MON_CreateMine) then { _Mines = _Mines -1; if (KRON_UPS_Debug>0) then {player sidechat format["%1: %3 puting mine for %2",_grpidx,typeof _enemytanknear, side _npc]}; }; }; }; }; //Si es unidad de refuerzo siempre acosar al enemigo if (_reinforcementsent) then { _wptype="MOVE"; _newpos=true; _makenewtarget = false; }; if (_nofollow=="NOFOLLOW" && _wptype != "HOLD") then { _targetPos = [_targetPos,_centerpos,_rangeX,_rangeY,_areadir] call KRON_stayInside; _targetdist = [_currPos,_targetPos] call KRON_distancePosSqr; if ( _targetdist <= 1 ) then { _wptype="HOLD"; }; }; if (_wptype == "HOLD") then { _targetPos = _currPos; _targettext ="_currPos"; }; _lastknown = _opfknowval; //Se actualiza con el ltimo valor, por si cambia el target //Si por el motivo que sea se cancela la nueva posicin se deben limpiar los parmetros que hacen entrar en pursuit if (!_newpos) then { //Si la unidad ha decidio mantener posicin pero est siendo atacada est siendo suprimida, debe tener la oportunidad de reaccionar _newpos = _gothit; if (!_newpos) then { _targetPos=_lastpos; if (KRON_UPS_Debug>0) then {player sidechat format["%1 Mantaining orders %2",_grpidx,_nomove]}; }; }; if (KRON_UPS_Debug>=1) then { "avoid" setmarkerpos _avoidPos; "flank" setmarkerpos _flankPos; _destname setMarkerPos _targetPos; }; }; //END PURSUE }; //((_issoldier) && ((count _enemies)>0) sleep 0.5; //********************************************************************************************************************** // SIN NOVEDADES //********************************************************************************************************************** if !(_newpos) then { // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; // calculate new distance // if we're waiting at a waypoint, no calculating necessary _currpos = getpos _npc; //Sets behaviour of squad if nearly changes of target if (_targetsnear) then{ if( toUpper(_Behaviour) IN _safemode) then { _Behaviour = "AWARE"; _npc setBehaviour _Behaviour; }; }; //If in safe mode if find dead bodies change behaviour if( toUpper(_Behaviour) IN _safemode) then { _unitsin = [_npc,_buildingdist] call MON_deadbodies; if (count _unitsin > 0) then { _Behaviour = "AWARE"; _react = _react + 30; _npc setBehaviour _Behaviour; if (KRON_UPS_Debug>0) then {player sidechat format["%1 dead bodies found! set %2",_grpidx,_Behaviour, count _targets]}; }; }; //Stuck control if (!_nowp && alive _npc && canmove _npc && _wptype == "MOVE" && _timeontarget >= 60 && _lastcurrpos select 0 == _currpos select 0 && _lastcurrpos select 1 == _currpos select 1) then { [_npc] call MON_cancelstop; _makenewtarget = true; if (KRON_UPS_Debug>0) then {player sidechat format["%1 stucked, moving",_grpidx]}; }; _lastpos = _targetPos; _lastcurrpos = _currpos; //sets last currpos for avoiding stuk if (_waiting<0) then { //Gets distance to targetpos _targetdist = [_currPos,_targetPos] call KRON_distancePosSqr; //Se evalua si se ha excedido el tiempo mximo de espera y el objetivo ya est abatido para retornar a la posicin inicial. if (_fightmode!="walk") then { if (_timeontarget > KRON_UPS_alerttime && count _targets <= 0 && ( isNull (_target) || !alive (_target) || captive _target)) then { _pursue = false; _gothit = false; _targetdead = true; _fightmode = "walk"; _speedmode = _orgSpeed; _targetPos = _currPos; _reinforcementsent = false; _nowp = _orignowp; _target = objnull; _fixedtargetPos = [0,0]; _Behaviour = _orgMode; _waiting = -1; _unitpos = "AUTO"; _wpformation = "WEDGE"; KRON_UPS_reinforcement = false; //ya no hay amenaza if (_rfid > 0 ) then { call (compile format ["KRON_UPS_reinforcement%1 = false;",_rfid]); }; {[_x,"AUTO"] spawn MON_setUnitPos;} foreach units _npc; _npc setBehaviour _orgMode; if (KRON_UPS_Debug>0) then {player sidechat format["%1 Without objectives, leaving combat mode",_grpidx]}; }; }; //if (KRON_UPS_Debug>0) then {player globalchat format["%1 _targetdist %2 atdist=%3 dist=%4",_grpidx, _targetdist, _area/8,_dist]}; // if not in combat and we're either close enough, seem to be stuck, or are getting damaged, so find a new target if (!_nowp && (!_gothit) && (!_swimming) && (_fightmode == "walk") && (( _targetdist <= (_area/4) || moveToFailed _npc) && (_timeontarget > KRON_UPS_maxwaiting))) then { _makenewtarget=true; _unitpos = "AUTO"; _Behaviour = _orgMode; }; // make new target if (_makenewtarget) then { _gothit=false; _react = 0; _lastreact = 0; _makenewtarget = false; _gothit=false; _timeontarget = 0; _wptype = "MOVE"; //if (KRON_UPS_Debug>0) then {player globalchat format["%1 _fixedtargetPos %2 dist %3 ",_grpidx,_fixedtargetPos,_dist]}; if (format ["%1",_fixedtargetPos] !="[0,0]") then { _targetPos = _fixedtargetPos; _targettext ="Reinforcement"; }else{ if (KRON_UPS_Debug>0) then {player sidechat format["%1 Patrol to new position",_grpidx]}; if ((_nomove=="NOMOVE") && (_timeontarget>KRON_UPS_alerttime)) then { if (([_currPos,_orgPos] call KRON_distancePosSqr)<_closeenough) then { _newpos = false; _wptype = "HOLD"; _waiting = 9999; if (_fortify) then { _minreact = KRON_UPS_minreact * 3; _buildingdist = _buildingdist * 2; _wait = 3000; }; } else { _targetPos=_orgPos; _targettext ="_orgPos"; }; } else { // re-read marker position/size _centerpos = getMarkerPos _areamarker; _centerX = abs(_centerpos select 0); _centerY = abs(_centerpos select 1); _centerpos = [_centerX,_centerY]; _areasize = getMarkerSize _areamarker; _rangeX = _areasize select 0; _rangeY = _areasize select 1; _areadir = (markerDir _areamarker) * -1; // find a new target that's not too close to the current position _targetPos=_currPos; _targettext ="newTarget"; _tries=0; while {((([_currPos,_targetPos] call KRON_distancePosSqr) < _mindist)) && (_tries<20)} do { _tries=_tries+1; // generate new target position (on the road) _road=0; while {_road<20} do { _targetPos=[_centerX,_centerY,_rangeX,_rangeY,_cosdir,_sindir,_areadir] call KRON_randomPos; _road=[_targetPos,(_isplane||_isboat),_road] call KRON_OnRoad; }; }; }; }; sleep 0.05; // distance to target position _avoidPos = [0,0]; _flankPos = [0,0]; _attackPos = [0,0]; _frontPos = [0,0]; _fm=0; _newpos=true; }; }; }; // if in water, get right back out of it again if (surfaceIsWater _currPos) then { if (_isman && !_swimming) then { _drydist=999; // look around, to find a dry spot for [{_a=0}, {_a<=270}, {_a=_a+90}] do { _dp=[_currPos,30,_a] call KRON_relPos; if !(surfaceIsWater _dp) then {_targetPos=_dp}; }; _newpos=true; _swimming=true; }; } else { _swimming=false; }; sleep 0.5; //********************************************************************************************************************** // NEWPOS: SE EJECUTA LA ORDEN DE MOVIMIENTO //********************************************************************************************************************** // if (KRON_UPS_Debug>0) then {player sidechat format["%1 rea=%2 wai=%3 tim=%4 tg=%5 %6",_grpidx,_react,_waiting,_timeontarget,typeof _target,alive _target]}; if ((_waiting<=0) && _newpos) then { // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; _currPos = getpos _npc; _newpos = false; _waiting = -1; _swimming=false; _GetIn_NearestVehicles = false; //Gets distance to targetpos _targetdist = [_currPos,_targetPos] call KRON_distancePosSqr; //If gothit and not in vehicle if (_gothit && _npc == vehicle (_npc) && alive _npc ) then { //Unidad suprimida if ((random 100)<50) then { //if (KRON_UPS_Debug>0) then {player sidechat format["%1 supressed by fire",_grpidx]}; //La unidad est suprimida, borramos el waypoint actual _supressed = true; _targetPos = _currPos; _targettext ="SUPRESSED"; _wptype = "HOLD"; //Cuerpo a tierra { //Se anula el movimiento if ( _x iskindof "Man" && canmove _x && alive _x) then { if ((random 100)<40 || (primaryWeapon _x ) in KRON_UPS_MG_WEAPONS) then {[_x,"DOWN",20] spawn MON_setUnitPosTime; }else{ [_x,"Middle"] spawn MON_setUnitPos;}; }; } foreach units _npc; sleep 0.05; //Retirada!! if ((random 100)<=60 && morale _npc < 0) then { _targetPos = _avoidPos;_targettext = "_avoidPos"; _wptype = "MOVE"; _flankdir = 0; if (!_newpos && KRON_UPS_Debug>0) then {player sidechat format["%1 All Retreat!!!",_grpidx]}; }; }; //Animacin croqueta { if ( (random 100)<20) then { _x spawn MON_animCroqueta; }; } foreach units _npc; //Cubre al grupo con una granada de humo if ((random 100)<30 || _targettext == "_avoidPos") then { //[_npc,_target] call MON_throw_grenade; }; sleep 0.5; }; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; //Si no ha sido suprimida continuamos el avance if (alive _npc) then { _currPos = getpos _npc; if ( _wptype == "MOVE") then { //Try to avoid stucked soldiers out of vehicles if ( _npc == vehicle _npc) then { { if (alive _x && canmove _x) then { //[_x] spawn MON_cancelstop; [_x] dofollow _npc; }; }foreach _members; }; sleep 0.05; //Search for vehicle if (!_gothit && _targetdist >= ( KRON_UPS_searchVehicledist )) then { if ( vehicle _npc == _npc && _dist > _closeenough ) then { _unitsIn = [_grpid,_npc] call MON_GetIn_NearestVehicles; if ( count _unitsIn > 0) then { _GetIn_NearestVehicles = true; _speedmode = "FULL"; _unitpos = "AUTO"; _npc setbehaviour "CARELESS"; _npc setspeedmode "FULL"; _timeout = time + 60; _vehicle = objnull; _vehicles = []; { waituntil {vehicle _x != _x || !canmove _x || !canstand _x || !alive _x || time > _timeout || movetofailed _x}; if ( vehicle _x != _x && (isnull _vehicle || _vehicle != vehicle _x)) then { _vehicle = vehicle _x ; _vehicles = _vehicles + [_vehicle] }; }foreach _unitsIn; sleep 1; { _vehicle = _x; _cargo = _vehicle getvariable ("UPSMON_cargo"); if ( isNil("_cargo")) then {_cargo = [];}; _cargo ordergetin true; //Wait for other groups to getin { waituntil {vehicle _x != _x || !canmove _x || !canstand _x || !alive _x || time > _timeout || movetofailed _x}; }foreach _cargo; //Starts gunner control [_vehicle] spawn MON_Gunnercontrol; //Resets vehicle id and cargo _vehicle setVariable ["UPSMON_grpid", 0, false]; _vehicle setVariable ["UPSMON_cargo", [], false]; } foreach _vehicles; //Cheks if leader has dead until wait _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc) exitwith {exit=true;}; if ( "Air" countType [vehicle (_npc)]>0) then { _rnd = (random 2) * 0.1; _flyInHeight = round(KRON_UPS_flyInHeight * (0.9 + _rnd)); vehicle _npc flyInHeight _flyInHeight; //Si acaba de entrar en el heli se define punto de aterrizaje if (_GetIn_NearestVehicles) then { _GetOutDist = round(((KRON_UPS_paradropdist ) * (random 100) / 100 ) + 150); [vehicle _npc, _TargetPos, _GetOutDist,_flyInHeight] spawn MON_doParadrop; //Execute control stuck for helys [vehicle _npc] spawn MON_HeliStuckcontrol; //if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: flyingheiht=%2 paradrop at dist=%3",_grpidx, _flyInHeight, _GetOutDist,_rnd]}; }; }; }; }; }; }; sleep 0.05; //Get in combat vehicles if (!_gothit && !_GetIn_NearestVehicles && _fightmode != "walk" ) then { _dist2 = _dist / 4; if ( _dist2 <= 100 ) then { _unitsIn = []; _unitsIn = [_grpid,_npc,_dist2,false] call MON_GetIn_NearestCombat; _timeout = time + (_dist2/2); if ( count _unitsIn > 0) then { if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: Geting in combat vehicle targetdist=%2",_grpidx,_npc distance _target]}; _npc setbehaviour "CARELESS"; _npc setspeedmode "FULL"; { waituntil {vehicle _x != _x || !canmove _x || !canstand _x || !alive _x || time > _timeout || movetofailed _x}; }foreach _unitsIn; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; //Return to combat mode _npc setbehaviour _Behaviour; _timeout = time + 180; { waituntil {vehicle _x != _x || !canmove _x || !alive _x || time > _timeout || movetofailed _x}; }foreach _unitsIn; { if ( vehicle _x iskindof "Air") then { //moving hely for avoiding stuck if (driver vehicle _x == _x) then { _vehicle = vehicle (_x); [_vehicle,1000] spawn MON_domove; //Execute control stuck for helys [_vehicle] spawn MON_HeliStuckcontrol; if (KRON_UPS_Debug>0 ) then {player sidechat format["%1: Geting in combat vehicle after",_grpidx,_npc distance _target]}; }; }; if (driver vehicle _x == _x) then { //Starts gunner control [vehicle _x] spawn MON_Gunnercontrol; }; }foreach _unitsIn; }; sleep 0.05; }; }; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; //If use statics are enabled leader searches for static weapons near. if (KRON_UPS_useStatics && (vehicle _npc == _npc) && !_GetIn_NearestVehicles && ((_wptype == "HOLD" && (random 100) < 80) || (_wptype != "HOLD" && (random 100) < 60))) then { _unitsIn = [_grpid,_npc,_buildingdist] call MON_GetIn_NearestStatic; if ( count _unitsIn > 0) then { _npc setbehaviour "CARELESS"; _npc setspeedmode "FULL"; _timeout = time + 60; { waituntil {vehicle _x != _x || !canmove _x || !alive _x || time > _timeout || movetofailed _x}; }foreach _unitsIn; }; sleep 0.05; }; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc || isplayer _npc ) exitwith {exit=true;}; //Buildings usage. if (!_GetIn_NearestVehicles) then { if ( _wptype == "HOLD" && vehicle _npc == _npc && ( _fortify ||(random 100) < 60) ) then { //if (KRON_UPS_Debug>0) then {player sidechat format["%1: Moving to nearest buildings",_grpidx]}; [_npc,_buildingdist,false,_wait] spawn MON_moveNearestBuildings; } else { //If we are close enough patrol in buildings for searching enemies if ((( _wptype != "HOLD" && vehicle _npc == _npc && (random 100) < 90 ) && _npc == vehicle _npc && _dist <= ( _closeenough ))) then { [_npc,_buildingdist,true] spawn MON_moveNearestBuildings; }; }; sleep 0.05; }; // did the leader die? _npc = [_npc,_members] call MON_getleader; if (!alive _npc || !canmove _npc) exitwith {exit=true;}; if (isnull _grp || _grp != group _npc) then { _grp = group _npc; }; _index = currentWaypoint _grp; //Si el waypoing es distinto del que tiene o es diferente de hold lo establecemos IF (_wptype != "HOLD" || _lastwptype != _wptype) then { //No haq waypoints o estn completados //_index = 1 Waypoint por defecto, no usar. if ( _index == 1 || _index > count waypoints _grp && !isnull _grp) then { _wp = _grp addWaypoint [_targetPos, 0]; _index = _wp select 1; //if (KRON_UPS_Debug>0) then {player sidechat format["%1: created wp %2 index %3",_grpidx,_wp, _index]}; } else { _wp = [_grp,_index]; //if (KRON_UPS_Debug>0) then {player globalchat format["%1: not created wp %2 index %3 %4",_grpidx,_wp, _index,_targetPos]}; }; }; _wp = [_grp,_index]; //Definimos los parmetros del nuevo waypoint _wp setWaypointType _wptype; _wp setWaypointPosition [_targetPos, 0]; _wp setWaypointFormation _wpformation; _wp setWaypointSpeed _speedmode; _lastwptype = _wptype; //Si tiene ms de 2 waypoints borramos los obsoletos { if ( _x select 1 < _index ) then { deleteWaypoint _x; }; }foreach waypoints _grp; sleep 0.05; //if (KRON_UPS_Debug>0) then {diag_log format["%1: waypoints %2 %3 %4 %5",_grpidx,count waypoints _grp, _grp, group _npc, group (leader _npc)]}; //Sets behaviour if (toupper(behaviour _npc) != toupper (_Behaviour)) then { _npc setBehaviour _Behaviour; }; //Refresh position vector KRON_targetsPos set [_grpid,_targetPos]; //Aunque haya predefinido un tipo de movimiento se dejar un pequeo porcentaje para variar a nivel individual { if ((random 100)<95 && _x == vehicle _x && _x iskindof "Man" && !((primaryWeapon _x ) in KRON_UPS_MG_WEAPONS)) then { [_x,_unitpos] spawn MON_setUnitPos; }else{ [_x,"AUTO"] spawn MON_setUnitPos; }; } foreach units _npc; //If closeenough will leave some soldiers doing supress fire if (_gothit || _dist <= _closeenough) then { { if (!canStand _x || ((primaryWeapon _x ) in KRON_UPS_MG_WEAPONS) || (vehicle _x == _x && _x iskindof "Man" && (random 100) < 50) ) then { _x suppressFor 20; }; } foreach units _npc; }; }; _gothit=false; //moving //if (KRON_UPS_Debug>0) then {player sidechat format["%1: %2 %3 %4 %5 %6 %7 %8 %9 %10",_grpidx, _wptype, _targettext,_dist, _speedmode, _unitpos, _Behaviour, _wpformation,_fightmode,count waypoints _grp];}; };//if ((_waiting<=0) && _newpos) then { if (_track=="TRACK") then { switch (_fm) do { case 1: {_destname setmarkerSize [.4,.4]}; case 2: {_destname setmarkerSize [.6,.6]}; default {_destname setmarkerSize [.5,.5]}; }; _destname setMarkerPos _targetPos; }; //If in hely calculations must done faster if (_isplane || _inheli) then {_currcycle = _cycle/2}; if ((_exit) || (isNil("_npc"))) then { _loop=false; } else { // slowly increase the cycle duration after an incident sleep _currcycle; }; };//while {_loop} if (KRON_UPS_Debug>0) then {hint format["%1 exiting mainloop",_grpidx]}; //Limpiamos variables globales de este grupo KRON_targetsPos set [_grpid,[0,0]]; KRON_NPCs set [_grpid,objnull]; KRON_UPS_Exited=KRON_UPS_Exited+1; if (_track=="TRACK") then { //_trackername setMarkerType "Dot"; _trackername setMarkerType "Empty"; _destname setMarkerType "Empty"; }; //Gets dist from orinal pos if (!isnull _target) then { _dist = ([_orgpos,position _target] call KRON_distancePosSqr); }; if (KRON_UPS_Debug>0) then {player sidechat format["%1 _dist=%2 _closeenough=%3",_grpidx,_dist,_closeenough]}; //does respawn of group if (_respawn && _respawnmax > 0 && !_surrended && _dist > _closeenough) then { if (KRON_UPS_Debug>0) then {player sidechat format["%1 doing respawn",_grpidx]}; // copy group leader _unittype = _membertypes select 0; // make the clones civilians // use random Civilian models for single unit groups if ((_unittype=="Civilian") && (count _members==1)) then {_rnd=1+round(random 20); if (_rnd>1) then {_unittype=format["Civilian%1",_rnd]}}; _grp=createGroup _side; _lead = _grp createUnit [_unittype, _orgpos, [], 0, "form"]; _lead setVehicleInit _initstr; [_lead] join _grp; _grp selectLeader _lead; //sleep 1; // copy team members (skip the leader) _c=0; { _c=_c+1; if (_c>1) then { _newunit = _grp createUnit [_x, _orgpos, [],0,"form"]; _newunit setVehicleInit _initstr; [_newunit] join _grp; }; } foreach _membertypes; { _targetpos = _orgpos findEmptyPosition [10, 200]; sleep .4; if (count _newpos <= 0) then {_targetpos = _orgpos}; //if (KRON_UPS_Debug>0) then {player globalchat format["%1 create vehicle _newpos %2 ",_x,_targetpos]}; _newunit = _x createvehicle (_targetpos); } foreach _vehicletypes; //Set new parameters if (!_spawned) then {_UCthis = _UCthis + ["SPAWNED"]}; _UCthis set [0,_lead]; _respawnmax = _respawnmax - 1; _UCthis = ["RESPAWN:",_respawnmax,_UCthis] call KRON_UPSsetArg; //Exec UPSMON script _UCthis SPAWN UPSMON; processInitCommands; }; _friends=nil; _enemies=nil; _enemytanks = nil; _friendlytanks = nil; _roads = nil; _targets = nil; _members = nil; _membertypes = nil; _UCthis = nil; if (!alive _npc) then { deleteGroup _grp; }; if(true) exitWith {}; ࡱ>  Root Entry`>Zom256_d72a262e8a374d07*  !"#$%&'()*+,-./0123456789:;XtJFIFC  !"$"$C" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ʊ(((((|1I4 19ڨֽx@GـinAqsy|"t:߈{U0î~SӷkyZWĿ }­{J)# նÒs:f>[65_HL"LI̍7]d9MSEX$h|9,s|֮4]NZ1@d%ـ\޷n|]1ktg6&mEAܜt+;|SEutoX m,^(!M_fU@'_dkM 6 os^h!rtW_|K5冱6᷐}9N+5=/RWP.7']gS((((((((((?d;]Ii5\735cʷqӹx]%KIeöY\S(ڼE@SP\1[.mn7f$'e0x fmŭ-tZJHFWn38WEk7tu޵}5]Lo3 O9u]s[ՒuB-#>qtEj_x7fv]}[yr?GB?)-Qmz"բY U8r g=J:V5<@ mBy5A0R6.?Hw-ƛMGPfiۘ%nVure[^{ZBӯ4+ Csi3XD)M&lA<fv(((((((((((((+46gS+fA(%$|@u`q~ i}V5.# 8'<~2˴^UPoAHq=*`0}1j6xYa<O?+ 099py8"m`?^v'ioKDX4UC`cԞ泖i=s1T64ijv6oow)( ~T,1(l=- 2== LLIS@kryk.Lq]imqMʹ8eBrOyVG;EVaEPEPEPEPEPEPEPEPEPEjZ%棧[Ǔ{4hnf׊H5Ú)-1f <|$˕\Ex'Mq1&cʗC<k7A_ݏҕm Bd^U/hǐ+$WG<5`VfNTs+4x7[o i8sϽ}H2;r3ҬRB&d#\ZZ[9w*!Ag {RLH(G 秿#q¿($pc=iίB,^|nA7Y ;+5J|Ȳs=TI3 F$L읤$9yDU\Ƣ+AQ@Q@Q@Q@Q@Q@Q@Q@ikLյ\jp˰X#@PNqfTNyG `Z˫}+QPP4f$1,sc iGpp2v=z7e zgv37r*^rr*֐O(p?ιq!I#L:+_za?F%~pcC>dI(Bwa@=9N)u)LdrNͼ`XJlE>}{0+y@I=I8zס@$Fh9t91u\Zc f7F"FTŽJ[0\ZZ4'}} XԴ;Y{ .f35L]@w(Wܲ\ǀ'2>x{VV9omX[Jq |awEUQEQEQEQEQEQEQEQEQEQEQ[V5ޞKjY&HԃqXQԫPh(O)%};z@ 8#Ғ'Krk3IcԳjz"[Z>?._:((((((((((((|Ng>'ǫeح]&f8 J0'#'ArWA59<+b$:)aip!  g^? Q&x]2a(KI^wG 5 f/{s'p4Pt=7I?6Z_C?#ߟPEPEPEPEPEPQ@Q@Q@Q@Q@Q@Q@*3#nF*}A%ỹu(FN7 :ZxOv ZZdH89~ɋ^0SxylAd UU;-~h.g KJ,oG.%P v5y9p̬:ph'űhv6Zwyo8ږ~`k B+cI9U"5MoZWPu Eו}E~u4g~b'zf{휶e|]