From ffc1c5d6ad1da3d646d3774019807e30aa17a57f Mon Sep 17 00:00:00 2001 From: FlightControl_Master Date: Thu, 5 Oct 2017 18:31:39 +0200 Subject: [PATCH] Progress --- .../Documentation/Scoring/Scoring Sample.csv | 190 +++++++++++ .../Documentation/Scoring/Scoring Sample.xlsx | Bin 0 -> 43013 bytes Moose Development/Moose/Core/Base.lua | 22 +- Moose Development/Moose/Tasking/Task.lua | 72 +---- .../Moose/Tasking/TaskZoneCapture.lua | 41 ++- Moose Development/Moose/Tasking/Task_A2A.lua | 35 +- Moose Development/Moose/Tasking/Task_A2G.lua | 52 ++- .../Moose/Tasking/Task_Protect.lua | 299 ------------------ Moose Mission Setup/Moose.lua | 2 +- Moose Mission Setup/Moose_.lua | 2 +- 10 files changed, 335 insertions(+), 380 deletions(-) create mode 100644 Moose Development/Documentation/Scoring/Scoring Sample.csv create mode 100644 Moose Development/Documentation/Scoring/Scoring Sample.xlsx delete mode 100644 Moose Development/Moose/Tasking/Task_Protect.lua diff --git a/Moose Development/Documentation/Scoring/Scoring Sample.csv b/Moose Development/Documentation/Scoring/Scoring Sample.csv new file mode 100644 index 000000000..49c85640d --- /dev/null +++ b/Moose Development/Documentation/Scoring/Scoring Sample.csv @@ -0,0 +1,190 @@ +Game;Date;Time;Source Player Name;Target Player Name;Event;Source Coalition;Source Category;Source Type;Source Unit;Target Coalition;Target Category;Target Type;Target Name;Nr;Score +TAW_CSARz_PALACE_3.6136;7/05/2017;12:19:37;PL8;;DESTROY_SCORE;Red;Plane;Su-25T;Pilot #058;Blue;Vehicle;Hawk cwar;Unit #114;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M249;Unit #453;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:14:30;PL1;PL2;DESTROY_PENALTY;Blue;Plane;F-15C;Pilot #069;Blue;Plane;F-15C;Pilot #071;1;-15 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:40:14;PL3;PL4;HIT_SCORE;Blue;Plane;F-15C;Pilot #018;Red;Plane;AJS37;Pilot #112;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:25:22;PL5;;HIT_PENALTY;Red;Helicopter;Ka-50;MEDEVAC RED #13;Red;Vehicle;Infantry AK;Wounded Pilot #1143;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:18:34;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:21:35;PL7;PL2;HIT_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Plane;F-15C;Pilot #071;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL8;;HIT_SCORE;Red;Plane;Su-25T;Pilot #058;Blue;Vehicle;Strela-1 9P31;Unit #429;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:30:09;PL9;PL10;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #039;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:46;PL11;;HIT_SCORE;Red;;;;;Scenery;Infantry AK;Wounded Pilot #1129;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:11:46;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;MLRS;Unit #011;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:10;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;MLRS;Unit #510;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:10:54;PL12;;HIT_SCORE;Red;;;;;Scenery;UKRYTIE;280468;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:09:28;PL13;PL9;HIT_SCORE;Red;Plane;Su-27;Pilot #086;Blue;Plane;F-15C;Pilot #017;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:52:59;PL13;PL14;HIT_SCORE;Red;Plane;Su-27;Pilot #086;Blue;Plane;M-2000C;Pilot #030;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:27;PL12;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier stinger;Unit #454;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:21;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;MLRS;Unit #510;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:51:37;PL15;PL9;HIT_SCORE;Red;Plane;Su-27;Pilot #041;Blue;Plane;F-15C;Pilot #017;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:22:05;PL16;PL2;DESTROY_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #071;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:28;PL6;PL3;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #018;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:38:21;PL17;PL18;HIT_SCORE;Blue;Plane;M-2000C;Pilot #029;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:14:34;PL7;PL17;DESTROY_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Plane;M-2000C;Pilot #029;1;2,5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:22;PL19;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:24:21;PL5;PL21;HIT_PENALTY;Red;Helicopter;Mi-8MT;MEDEVAC RED #10;Red;Helicopter;SA342Mistral;helicargo4;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:36;PL6;PL19;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #024;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:51;PL6;PL19;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #024;1;6 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:14;PL19;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:13:59;PL2;;HIT_SCORE;Blue;;;;;Scenery;F-15C;Pilot #069;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:55;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M-1 Abrams;Unit #514;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:48;PL6;PL3;DESTROY_SCORE;Red;;;;Blue;Plane;F-15C;Pilot #018;1;6 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:18:19;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:25:19;PL5;;HIT_PENALTY;Red;Helicopter;Ka-50;MEDEVAC RED #13;Red;Vehicle;Infantry AK;Wounded Pilot #1143;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:12;PL9;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:51:35;PL15;PL9;HIT_SCORE;Red;Plane;Su-27;Pilot #041;Blue;Plane;F-15C;Pilot #017;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:19:18;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-113;Unit #006;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:54:22;PL1;PL13;HIT_SCORE;Blue;Plane;F-15C;Pilot #069;Red;Plane;Su-27;Pilot #086;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:37:18;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Osa 9A33 ln;Unit #218;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:21:14;PL16;PL1;DESTROY_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #069;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:00;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M1128 Stryker MGS;Unit #010;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:13;PL9;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:19:55;PL2;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #071;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:14:34;PL16;PL17;DESTROY_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;M-2000C;Pilot #029;1;2,5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Soldier M4;Unit #470;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:11:46;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;MLRS;Unit #011;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:20;PL19;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:10:01;PL6;PL3;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #018;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:38:22;PL18;PL17;DESTROY_SCORE;Red;Plane;Su-25T;Pilot #059;Blue;Plane;M-2000C;Pilot #029;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:25;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:19:53;PL24;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #033;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:51:55;PL15;PL9;DESTROY_SCORE;Red;Plane;Su-27;Pilot #041;Blue;Plane;F-15C;Pilot #017;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:11;PL2;PL10;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #071;Red;Plane;Su-27;Pilot #039;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M249;X33;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:13:13;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-1 Abrams;Unit #009;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:17:07;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:18:29;PL19;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:22:05;PL16;PL2;HIT_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #071;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:26;PL19;PL20;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #057;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:13;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M1128 Stryker MGS;Unit #010;1;1,5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:54;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;AAV7;Unit #005;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:26;PL6;PL19;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #024;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:09:27;PL3;PL13;HIT_SCORE;Blue;Plane;F-15C;Pilot #018;Red;Plane;Su-27;Pilot #086;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:57:05;PL15;PL1;DESTROY_SCORE;Red;Plane;Su-27;Pilot #041;Blue;Plane;F-15C;Pilot #069;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:23;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;MLRS;Unit #511;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:44;PL16;PL26;HIT_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #068;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:40:04;PL19;PL12;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;AJS37;Pilot #110;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:24;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M4;X36;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:07:56;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-109;Unit #512;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:24;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M249;Unit #310;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M4;Unit #450;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:45;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Soldier M4;Unit #469;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:54:26;PL1;PL13;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #069;Red;Plane;Su-27;Pilot #086;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:13:29;PL4;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #112;Blue;Structure;Warehouse;AMMO SENAKI;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:56:32;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M-109;Unit #014;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:49;PL16;PL2;HIT_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #071;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:17:00;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;Vulcan;Unit #004;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:55;PL10;PL19;HIT_SCORE;Red;Plane;Su-27;Pilot #039;Blue;Plane;F-15C;Pilot #024;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:29:20;PL9;PL10;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #039;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:45;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Soldier M4;Unit #470;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:54:58;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;AAV7;Unit #005;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:15;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #503;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:22:05;PL7;PL2;DESTROY_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Plane;F-15C;Pilot #071;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:19:55;PL24;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #033;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:45:32;PL7;;DESTROY_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Structure;Windsock;logistic10;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:22;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M4;Unit #308;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:30;;;CAPTURE KOBULETI;Red;;;;NA;NA;NA;NA;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:13;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M1128 Stryker MGS;Unit #010;1;1,5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:20:05;PL17;PL18;DESTROY_SCORE;Blue;;;;Red;Plane;Su-25T;Pilot #059;1;1,67 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:22:42;PL23;PL22;HIT_SCORE;Red;Plane;M-2000C;Pilot #038;Blue;Plane;F-15C;Pilot #070;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Soldier M4;Unit #469;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:37:08;PL18;;DESTROY_SCORE;Red;Plane;Su-25T;Pilot #059;Blue;Vehicle;Hawk sr;Unit #118;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:40:12;PL19;PL12;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;AJS37;Pilot #110;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:50:48;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Vulcan;Unit #095;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:45:31;PL7;;HIT_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Vehicle;outpost;outpost1;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:25:15;PL5;;HIT_PENALTY;Red;Helicopter;Ka-50;MEDEVAC RED #13;Red;Vehicle;Infantry AK;Wounded Pilot #1143;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:13:29;PL4;;HIT_SCORE;Red;;;;;Scenery;Warehouse;AMMO SENAKI;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:20:05;PL2;PL18;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #071;Red;Plane;Su-25T;Pilot #059;1;1,67 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:45:32;PL7;;HIT_SCORE;Red;;;;;Scenery;Windsock;logistic10;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M249;X33;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:52:37;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #508;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:58;PL2;PL10;HIT_SCORE;Blue;Plane;F-15C;Pilot #071;Red;Plane;Su-27;Pilot #039;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:56:35;PL15;PL1;HIT_SCORE;Red;Plane;Su-27;Pilot #041;Blue;Plane;F-15C;Pilot #069;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:25;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M4;Unit #308;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:32:57;PL9;PL25;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #043;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:18:23;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:21:14;PL16;PL1;HIT_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;F-15C;Pilot #069;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:47;PL9;PL6;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #056;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:23:16;PL5;PL5;HIT_PENALTY;Red;Helicopter;Mi-8MT;MEDEVAC RED #10;Red;Helicopter;Mi-8MT;MEDEVAC RED #10;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:03;PL19;PL6;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #056;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:24;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:17;PL11;PL27;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Plane;F-15C;Pilot #025;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:18:22;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #007;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:52:37;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #508;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:19:30;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-113;Unit #006;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:22;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M249;Unit #310;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:46;PL9;PL11;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #054;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:36:57;PL18;;HIT_SCORE;Red;Plane;Su-25T;Pilot #059;Blue;Vehicle;Hawk sr;Unit #118;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:22;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M249;Unit #311;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:26;PL11;;HIT_SCORE;Red;;;;;Scenery;KAZARMA2;270090725;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:37:07;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Osa 9A33 ln;Unit #218;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:18:46;;;CAPTURE KUTAISI;Red;;;;NA;NA;NA;NA;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:33:20;PL9;PL15;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #041;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:10:10;PL6;PL3;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Plane;F-15C;Pilot #018;1;6 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:13:23;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #008;1;3 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:56:08;PL11;PL26;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Plane;F-15C;Pilot #025;1;6 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:14:23;PL7;PL17;HIT_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Plane;M-2000C;Pilot #029;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:47;PL19;PL6;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #056;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:50:37;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Vulcan;Unit #015;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:26;PL9;PL20;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #057;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:57:05;PL2;PL1;DESTROY_PENALTY;Blue;Plane;F-15C;Pilot #071;Blue;Plane;F-15C;Pilot #069;1;-15 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:56:44;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M-109;Unit #014;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:36;PL9;PL6;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #056;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:12;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;MLRS;Unit #511;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:56;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;M-109;Unit #013;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:22:37;PL9;PL6;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #056;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:04;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M-113;Unit #505;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:13:23;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-2 Bradley;Unit #008;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #515;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:38:22;PL18;;HIT_SCORE;Red;;;;;Scenery;M-2000C;Pilot #029;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:09:28;PL13;PL9;DESTROY_SCORE;Red;Plane;Su-27;Pilot #086;Blue;Plane;F-15C;Pilot #017;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:13:29;PL4;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #112;Blue;Structure;Warehouse;AMMO SENAKI;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:49;PL28;;HIT_SCORE;;;;;;Scenery;Ural-4320T;Unit #150;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:40:22;PL3;PL4;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #018;Red;Plane;AJS37;Pilot #112;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M4;Unit #450;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:14:24;PL16;PL17;HIT_SCORE;Red;Plane;Su-27;Pilot #044;Blue;Plane;M-2000C;Pilot #029;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:04;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #503;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:00:00;;;CAPTURE GUDAUTA;Blue;;;;NA;NA;NA;NA;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier stinger;Unit #454;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:13:13;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-1 Abrams;Unit #009;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL8;;DESTROY_SCORE;Red;Plane;Su-25T;Pilot #058;Blue;Vehicle;Strela-1 9P31;Unit #429;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:56:06;PL11;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;AAV7;Unit #005;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:55;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M-1 Abrams;Unit #514;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:06;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;MLRS;Unit #012;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:13:59;PL1;;HIT_SCORE;Blue;;;;;Scenery;F-15C;Pilot #071;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:25:17;PL5;;HIT_PENALTY;Red;Helicopter;Ka-50;MEDEVAC RED #13;Red;Vehicle;Infantry AK;Wounded Pilot #1143;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M4;Unit #451;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:25:20;PL5;;HIT_PENALTY;Red;Helicopter;Ka-50;MEDEVAC RED #13;Red;Vehicle;Infantry AK;Wounded Pilot #1143;1;-10 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:14;PL13;PL14;DESTROY_SCORE;Red;Plane;Su-27;Pilot #086;Blue;Plane;M-2000C;Pilot #030;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:50:48;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Vulcan;Unit #095;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:45:31;PL7;;DESTROY_SCORE;Red;Plane;M-2000C;Pilot #037;Blue;Vehicle;outpost;outpost1;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;HIT_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;outpost;outpost2;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:19:37;PL8;;HIT_SCORE;Red;Plane;Su-25T;Pilot #058;Blue;Vehicle;Hawk cwar;Unit #114;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:18:36;PL19;PL18;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;Su-25T;Pilot #059;1;4 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:07:56;PL6;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M-109;Unit #512;1;2 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;;;SEALS 4;Blue;;;;NA;NA;NA;NA;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:19;PL12;;HIT_SCORE;Red;;;;;Scenery;BLK_LIGHT_POLE;269633408;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:24;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M249;Unit #311;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:20:05;PL24;PL18;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #033;Red;Plane;Su-25T;Pilot #059;1;1,67 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:46:42;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;Vulcan;Unit #515;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:09:37;PL3;PL13;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #018;Red;Plane;Su-27;Pilot #086;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:48:04;PL11;;HIT_SCORE;Red;;;;;Scenery;BLK_LIGHT_POLE;269963637;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:24;;;SEALS 1;Blue;;;;NA;NA;NA;NA;1;50 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:11:14;PL4;;HIT_SCORE;Red;;;;;Scenery;UKRYTIE;280476;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:53:06;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;MLRS;Unit #012;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:32:54;PL9;PL25;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #043;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:55:01;PL11;;HIT_SCORE;Red;Plane;A-10C;Pilot #054;Blue;Vehicle;M1128 Stryker MGS;Unit #010;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:25;PL12;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M4;Unit #451;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:47:56;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;M-109;Unit #013;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:18:25;PL19;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:41:22;PL20;;HIT_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Soldier M4;X36;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:18:24;PL19;PL18;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;Su-25T;Pilot #059;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:17;PL19;PL20;HIT_SCORE;Blue;Plane;F-15C;Pilot #024;Red;Plane;A-10C;Pilot #057;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:23:03;PL23;PL22;DESTROY_SCORE;Red;Plane;M-2000C;Pilot #038;Blue;Plane;F-15C;Pilot #070;1;6 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:17:00;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;Vulcan;Unit #004;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:45:40;PL6;;HIT_SCORE;Red;Plane;A-10C;Pilot #056;Blue;Vehicle;M1128 Stryker MGS;Unit #010;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:09:18;PL13;;HIT_SCORE;Red;;;;;Scenery;KORPUS_B1;269962308;1;0 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:33:24;PL9;PL15;DESTROY_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;Su-27;Pilot #041;1;5 +TAW_CSARz_PALACE_3.6136;7/05/2017;1:39:27;PL12;;DESTROY_SCORE;Red;Plane;AJS37;Pilot #110;Blue;Vehicle;Soldier M249;Unit #453;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:21:53;PL9;PL11;HIT_SCORE;Blue;Plane;F-15C;Pilot #017;Red;Plane;A-10C;Pilot #054;1;1 +TAW_CSARz_PALACE_3.6136;7/05/2017;12:50:37;PL20;;DESTROY_SCORE;Red;Plane;A-10C;Pilot #057;Blue;Vehicle;Vulcan;Unit #015;1;4 diff --git a/Moose Development/Documentation/Scoring/Scoring Sample.xlsx b/Moose Development/Documentation/Scoring/Scoring Sample.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4aca4870c9ee339e6e6fe0c111ba563000d67608 GIT binary patch literal 43013 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 literal 0 HcmV?d00001 diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index d2047524e..4519a61f3 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -273,11 +273,15 @@ end local function getParent( Child ) local Parent = nil - if rawget( Child, "__" ) then - Parent = getmetatable( Child.__ ).__index + if Child.ClassName == 'BASE' then + Parent = nil else - Parent = getmetatable( Child ).__index - end + if rawget( Child, "__" ) then + Parent = getmetatable( Child.__ ).__index + else + Parent = getmetatable( Child ).__index + end + end return Parent end @@ -303,12 +307,16 @@ function BASE:GetParent( Child, FromClass ) self:E({FromClass = FromClass}) self:E({Child = Child.ClassName}) if FromClass then - while( Child.ClassName ~= FromClass.ClassName ) do + while( Child.ClassName ~= "BASE" and Child.ClassName ~= FromClass.ClassName ) do Child = getParent( Child ) self:E({Child.ClassName}) end end - Parent = getParent( Child ) + if Child.ClassName == 'BASE' then + Parent = nil + else + Parent = getParent( Child ) + end end self:E({Parent.ClassName}) return Parent @@ -365,7 +373,7 @@ function BASE:IsInstanceOf( ClassName ) return true end - Parent = getParent(Parent) + Parent = getParent( Parent ) end diff --git a/Moose Development/Moose/Tasking/Task.lua b/Moose Development/Moose/Tasking/Task.lua index 856ab08c8..9bd94eaff 100644 --- a/Moose Development/Moose/Tasking/Task.lua +++ b/Moose Development/Moose/Tasking/Task.lua @@ -878,42 +878,20 @@ function TASK:MenuMarkToGroup( TaskGroup ) -- List the name of the Task. local Name = self:GetName() - Report:Add( Name .. ": " .. self:GetTaskBriefing() ) + Report:Add( "Task " .. Name .. ": " .. self:GetTaskBriefing() .. "\n" ) for TaskInfoID, TaskInfo in pairs( self.TaskInfo, function( t, a, b ) return t[a].TaskInfoOrder < t[b].TaskInfoOrder end ) do - - local TaskInfoIDText = "" --string.format( "%s: ", TaskInfoID ) - if type( TaskInfo.TaskInfoText ) == "string" then - if TaskInfoID == "Targets" then - else - Report:Add( TaskInfoIDText .. TaskInfo.TaskInfoText ) - end - elseif type( TaskInfo ) == "table" then - if TaskInfoID == "Coordinates" then - --local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE - --Report:Add( TaskInfoIDText .. ToCoordinate:ToString() ) - else - end + local ReportText = self:GetMarkInfo( TaskInfoID, TaskInfo ) + if ReportText then + Report:Add( ReportText ) end - end - local Coordinate = self:GetInfo( "Coordinates" ) -- Core.Point#COORDINATE - - local Velocity = self.TargetSetUnit:GetVelocity() - local Heading = self.TargetSetUnit:GetHeading() - - Coordinate:SetHeading( Heading ) - Coordinate:SetVelocity( Velocity ) - - Report:Add( "Targets are" .. Coordinate:GetMovingText() .. "." ) - + local TargetCoordinate = self:GetInfo( "Coordinate" ) -- Core.Point#COORDINATE local MarkText = Report:Text( ", " ) - - self:F( { Coordinate = Coordinate, MarkText = MarkText } ) - - Coordinate:MarkToGroup( MarkText, TaskGroup ) + self:F( { Coordinate = TargetCoordinate, MarkText = MarkText } ) + TargetCoordinate:MarkToGroup( MarkText, TaskGroup ) --Coordinate:MarkToAll( Briefing ) end @@ -1449,14 +1427,14 @@ function TASK:ReportSummary( ReportGroup ) local Report = REPORT:New() -- List the name of the Task. - Report:Add( self:GetName() ) + Report:Add( "Task " .. self:GetName() ) -- Determine the status of the Task. Report:Add( "State: <" .. self:GetState() .. ">" ) - if self.TaskInfo["Coordinates"] then + if self.TaskInfo["Coordinate"] then local TaskInfoIDText = string.format( "%s: ", "Coordinate" ) - local TaskCoord = self.TaskInfo["Coordinates"].TaskInfoText -- Core.Point#COORDINATE + local TaskCoord = self.TaskInfo["Coordinate"].TaskInfoText -- Core.Point#COORDINATE Report:Add( TaskInfoIDText .. TaskCoord:ToString( ReportGroup, nil, self ) ) end @@ -1486,7 +1464,7 @@ function TASK:ReportOverview( ReportGroup ) if Line ~= 0 then Report:AddIndent( LineReport:Text( ", " ) ) else - Report:Add( TaskName .. ", " .. LineReport:Text( ", " ) ) + Report:Add( "Task " .. TaskName .. ", " .. LineReport:Text( ", " ) ) end LineReport = REPORT:New() Line = math.floor( TaskInfo.TaskInfoOrder / 10 ) @@ -1497,7 +1475,7 @@ function TASK:ReportOverview( ReportGroup ) if type( TaskInfo.TaskInfoText ) == "string" then LineReport:Add( TaskInfoIDText .. TaskInfo.TaskInfoText ) elseif type(TaskInfo) == "table" then - if TaskInfoID == "Coordinates" then + if TaskInfoID == "Coordinate" then local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE --Report:Add( TaskInfoIDText ) LineReport:Add( TaskInfoIDText .. ToCoordinate:ToString( ReportGroup, nil, self ) ) @@ -1571,7 +1549,7 @@ function TASK:ReportDetails( ReportGroup ) -- Determine the status of the Task. local Status = "<" .. self:GetState() .. ">" - Report:Add( "Task: " .. Name .. " - " .. Status .. " - Detailed Report" ) + Report:Add( "Task " .. Name .. " - " .. Status .. " - Detailed Report" ) -- Loop each Unit active in the Task, and find Player Names. local PlayerNames = self:GetPlayerNames() @@ -1589,31 +1567,13 @@ function TASK:ReportDetails( ReportGroup ) for TaskInfoID, TaskInfo in pairs( self.TaskInfo, function( t, a, b ) return t[a].TaskInfoOrder < t[b].TaskInfoOrder end ) do - local TaskInfoIDText = string.format( " - %s: ", TaskInfoID ) - - if type( TaskInfo.TaskInfoText ) == "string" then - Report:Add( TaskInfoIDText .. TaskInfo.TaskInfoText ) - elseif type(TaskInfo) == "table" then - if TaskInfoID == "Coordinates" then - local FromCoordinate = ReportGroup:GetUnit(1):GetCoordinate() - local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE - Report:Add( TaskInfoIDText .. ToCoordinate:ToString( ReportGroup:GetUnit(1), nil, self ) ) - else - end + local ReportText = self:GetReportDetail( ReportGroup, TaskInfoID, TaskInfo ) + if ReportText then + Report:Add( ReportText ) end end - local Coordinate = self:GetInfo( "Coordinates" ) -- Core.Point#COORDINATE - - local Velocity = self.TargetSetUnit:GetVelocity() - local Heading = self.TargetSetUnit:GetHeading() - - Coordinate:SetHeading( Heading ) - Coordinate:SetVelocity( Velocity ) - - Report:Add( "Targets are" .. Coordinate:GetMovingText() .. "." ) - return Report:Text() end diff --git a/Moose Development/Moose/Tasking/TaskZoneCapture.lua b/Moose Development/Moose/Tasking/TaskZoneCapture.lua index 30ca460c0..accb1eaa9 100644 --- a/Moose Development/Moose/Tasking/TaskZoneCapture.lua +++ b/Moose Development/Moose/Tasking/TaskZoneCapture.lua @@ -103,7 +103,7 @@ do -- TASK_ZONE_GOAL self:__RouteTo( 0.1 ) end end - + return self end @@ -156,6 +156,33 @@ do -- TASK_ZONE_GOAL return self.GoalTotal end + function TASK_ZONE_GOAL:GetMarkInfo( TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + return string.format( "%s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + elseif type( TaskInfo ) == "table" then + if TaskInfoID == "Coordinate" then + end + end + + return nil + end + + function TASK_ZONE_GOAL:GetReportDetail( ReportGroup, TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + return string.format( " - %s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + elseif type(TaskInfo) == "table" then + if TaskInfoID == "Coordinate" then + local FromCoordinate = ReportGroup:GetUnit(1):GetCoordinate() + local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE + return string.format( " - %s: %s", TaskInfoID, ToCoordinate:ToString( ReportGroup:GetUnit(1), nil, self ) ) + else + end + end + end + + end @@ -163,7 +190,7 @@ do -- TASK_ZONE_CAPTURE --- The TASK_ZONE_CAPTURE class -- @type TASK_ZONE_CAPTURE - -- @field Set#SET_UNIT TargetSetUnit + -- @field Core.ZoneGoalCoalition#ZONE_GOAL_COALITION ZoneGoal -- @extends #TASK_ZONE_GOAL --- # TASK_ZONE_CAPTURE class, extends @{TaskZoneGoal#TASK_ZONE_GOAL} @@ -201,7 +228,7 @@ do -- TASK_ZONE_CAPTURE self:SetBriefing( TaskBriefing or - "Capture zone " .. self.TaskZoneName .. "." + "Capture Zone " .. self.TaskZoneName ) self:UpdateTaskInfo() @@ -215,13 +242,13 @@ do -- TASK_ZONE_CAPTURE local ZoneCoordinate = self.ZoneGoal:GetZone():GetCoordinate() - self:SetInfo( "Coordinates", ZoneCoordinate, 0 ) - self:SetInfo( "Zone Name", self.TaskZoneName, 10 ) - self:SetInfo( "Zone Coalition", self.TaskCoalitionName, 11 ) + self:SetInfo( "Coordinate", ZoneCoordinate, 0 ) + self:SetInfo( "Zone Name", self.ZoneGoal:GetZoneName(), 10 ) + self:SetInfo( "Zone Coalition", self.ZoneGoal:GetCoalitionName(), 11 ) end function TASK_ZONE_CAPTURE:ReportOrder( ReportGroup ) - local Coordinate = self:GetInfo( "Coordinates" ) + local Coordinate = self:GetInfo( "Coordinate" ) --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) diff --git a/Moose Development/Moose/Tasking/Task_A2A.lua b/Moose Development/Moose/Tasking/Task_A2A.lua index a40424276..44687a2fb 100644 --- a/Moose Development/Moose/Tasking/Task_A2A.lua +++ b/Moose Development/Moose/Tasking/Task_A2A.lua @@ -277,6 +277,35 @@ do -- TASK_A2A return self.GoalTotal end + function TASK_A2A:GetMarkInfo( TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + if TaskInfoID == "Targets" then + else + return string.format( "%s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + end + elseif type( TaskInfo ) == "table" then + if TaskInfoID == "Coordinate" then + end + end + + return nil + end + + function TASK_A2A:GetReportDetail( ReportGroup, TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + return string.format( "%s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + elseif type(TaskInfo) == "table" then + if TaskInfoID == "Coordinate" then + local FromCoordinate = ReportGroup:GetUnit(1):GetCoordinate() + local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE + return string.format( " - %s: %s", TaskInfoID, ToCoordinate:ToString( ReportGroup:GetUnit(1), nil, self ) ) + else + end + end + end + end @@ -336,7 +365,7 @@ do -- TASK_A2A_INTERCEPT function TASK_A2A_INTERCEPT:UpdateTaskInfo() local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) self:SetInfo( "Threat", "[" .. string.rep( "■", self.Detection and self.Detection:GetDetectedItemThreatLevel( self.DetectedItemIndex ) or self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) @@ -492,7 +521,7 @@ do -- TASK_A2A_SWEEP function TASK_A2A_SWEEP:UpdateTaskInfo() local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) self:SetInfo( "Assumed Threat", "[" .. string.rep( "■", self.Detection and self.Detection:GetDetectedItemThreatLevel( self.DetectedItemIndex ) or self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) @@ -641,7 +670,7 @@ do -- TASK_A2A_ENGAGE function TASK_A2A_ENGAGE:UpdateTaskInfo() local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) self:SetInfo( "Threat", "[" .. string.rep( "■", self.Detection and self.Detection:GetDetectedItemThreatLevel( self.DetectedItemIndex ) or self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index cc4a21797..e07579827 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -285,6 +285,36 @@ do -- TASK_A2G return self.GoalTotal end + + function TASK_A2G:GetMarkInfo( TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + if TaskInfoID == "Targets" then + else + return string.format( "%s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + end + elseif type( TaskInfo ) == "table" then + if TaskInfoID == "Coordinate" then + end + end + + return nil + end + + + function TASK_A2G:GetReportDetail( ReportGroup, TaskInfoID, TaskInfo ) + + if type( TaskInfo.TaskInfoText ) == "string" then + return string.format( "%s: %s", TaskInfoID, TaskInfo.TaskInfoText ) + elseif type(TaskInfo) == "table" then + if TaskInfoID == "Coordinate" then + local FromCoordinate = ReportGroup:GetUnit(1):GetCoordinate() + local ToCoordinate = TaskInfo.TaskInfoText -- Core.Point#COORDINATE + return string.format( " - %s: %s", TaskInfoID, ToCoordinate:ToString( ReportGroup:GetUnit(1), nil, self ) ) + else + end + end + end end @@ -335,7 +365,7 @@ do -- TASK_A2G_SEAD local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) local ThreatLevel, ThreatText if self.Detection then @@ -366,7 +396,7 @@ do -- TASK_A2G_SEAD end function TASK_A2G_SEAD:ReportOrder( ReportGroup ) - local Coordinate = self:GetInfo( "Coordinates" ) + local Coordinate = self:GetInfo( "Coordinate" ) --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) @@ -484,7 +514,7 @@ do -- TASK_A2G_BAI self:E({self.Detection, self.DetectedItemIndex}) local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) local ThreatLevel, ThreatText if self.Detection then @@ -512,11 +542,21 @@ do -- TASK_A2G_BAI self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 10 ) end + local TargetCoordinate = self:GetInfo( "Coordinate" ) -- Core.Point#COORDINATE + + local Velocity = self.TargetSetUnit:GetVelocity() + local Heading = self.TargetSetUnit:GetHeading() + + TargetCoordinate:SetHeading( Heading ) + TargetCoordinate:SetVelocity( Velocity ) + + self:SetInfo( "Position", "Targets are" .. TargetCoordinate:GetMovingText() .. ".", 12 ) + end function TASK_A2G_BAI:ReportOrder( ReportGroup ) - local Coordinate = self:GetInfo( "Coordinates" ) + local Coordinate = self:GetInfo( "Coordinate" ) --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) @@ -633,7 +673,7 @@ do -- TASK_A2G_CAS function TASK_A2G_CAS:UpdateTaskInfo() local TargetCoordinate = ( self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) ) or self.TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 0 ) + self:SetInfo( "Coordinate", TargetCoordinate, 0 ) local ThreatLevel, ThreatText if self.Detection then @@ -666,7 +706,7 @@ do -- TASK_A2G_CAS --- @param #TASK_A2G_CAS self function TASK_A2G_CAS:ReportOrder( ReportGroup ) - local Coordinate = self:GetInfo( "Coordinates" ) + local Coordinate = self:GetInfo( "Coordinate" ) local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) return Distance diff --git a/Moose Development/Moose/Tasking/Task_Protect.lua b/Moose Development/Moose/Tasking/Task_Protect.lua deleted file mode 100644 index c70a5b144..000000000 --- a/Moose Development/Moose/Tasking/Task_Protect.lua +++ /dev/null @@ -1,299 +0,0 @@ ---- **Tasking** - The TASK_Protect models tasks for players to protect or capture specific zones. --- --- ==== --- --- ### Author: **Sven Van de Velde (FlightControl)** --- --- ### Contributions: MillerTime --- --- ==== --- --- @module Task_Protect - -do -- TASK_PROTECT - - --- The TASK_PROTECT class - -- @type TASK_PROTECT - -- @field Functional.Protect#PROTECT Protect - -- @extends Tasking.Task#TASK - - --- # TASK_PROTECT class, extends @{Task#TASK} - -- - -- The TASK_PROTECT class defines the task to protect or capture a protection zone. - -- The TASK_PROTECT is implemented using a @{Fsm#FSM_TASK}, and has the following statuses: - -- - -- * **None**: Start of the process - -- * **Planned**: The A2G task is planned. - -- * **Assigned**: The A2G task is assigned to a @{Group#GROUP}. - -- * **Success**: The A2G task is successfully completed. - -- * **Failed**: The A2G task has failed. This will happen if the player exists the task early, without communicating a possible cancellation to HQ. - -- - -- ## Set the scoring of achievements in an A2G attack. - -- - -- Scoring or penalties can be given in the following circumstances: - -- - -- * @{#TASK_PROTECT.SetScoreOnDestroy}(): Set a score when a target in scope of the A2G attack, has been destroyed. - -- * @{#TASK_PROTECT.SetScoreOnSuccess}(): Set a score when all the targets in scope of the A2G attack, have been destroyed. - -- * @{#TASK_PROTECT.SetPenaltyOnFailed}(): Set a penalty when the A2G attack has failed. - -- - -- @field #TASK_PROTECT - TASK_PROTECT = { - ClassName = "TASK_PROTECT", - } - - --- Instantiates a new TASK_PROTECT. - -- @param #TASK_PROTECT self - -- @param Tasking.Mission#MISSION Mission - -- @param Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Functional.Protect#PROTECT Protect - -- @return #TASK_PROTECT self - function TASK_PROTECT:New( Mission, SetGroup, TaskName, Protect, TaskType, TaskBriefing ) - local self = BASE:Inherit( self, TASK:New( Mission, SetGroup, TaskName, TaskType, TaskBriefing ) ) -- #TASK_PROTECT - self:F() - - self.Protect = Protect - self.TaskType = TaskType - - local Fsm = self:GetUnitProcess() - - - Fsm:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( self.TaskBriefing ), { Assigned = "ProtectZone", Rejected = "Reject" } ) - - Fsm:AddTransition( "Assigned", "ProtectZone", "Protecting" ) - Fsm:AddTransition( "Protecting", "Protect", "Protecting", {} ) - Fsm:AddTransition( "Protecting", "RouteToTarget", "Protecting" ) - Fsm:AddProcess( "Protecting", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} ) - - --Fsm:AddTransition( "Accounted", "DestroyedAll", "Accounted" ) - --Fsm:AddTransition( "Accounted", "Success", "Success" ) - Fsm:AddTransition( "Rejected", "Reject", "Aborted" ) - Fsm:AddTransition( "Failed", "Fail", "Failed" ) - - self:SetTargetZone( self.Protect:GetProtectZone() ) - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task#TASK_PROTECT Task - function Fsm:onafterProtectZone( TaskUnit, Task ) - self:E( { self } ) - self:__Protect( 0.1 ) - self:__RouteToTarget( 0.1 ) - end - - --- Protect Loop - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task#TASK_PROTECT Task - function Fsm:onafterProtect( TaskUnit, Task ) - self:E( { self } ) - self:__Protect( 15 ) - end - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task_A2G#TASK_PROTECT Task - function Fsm:onafterRouteToTarget( TaskUnit, Task ) - self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) - -- Determine the first Unit from the self.TargetSetUnit - - if Task:GetTargetZone( TaskUnit ) then - self:__RouteToTargetZone( 0.1 ) - end - end - - return self - - end - - --- @param #TASK_PROTECT self - -- @param Functional.Protect#PROTECT Protect The Protect Engine. - function TASK_PROTECT:SetProtect( Protect ) - - self.Protect = Protect -- Functional.Protect#PROTECT - end - - - - --- @param #TASK_PROTECT self - function TASK_PROTECT:GetPlannedMenuText() - return self:GetStateString() .. " - " .. self:GetTaskName() .. " ( " .. self.Protect:GetProtectZoneName() .. " )" - end - - - --- @param #TASK_PROTECT self - -- @param Core.Zone#ZONE_BASE TargetZone The Zone object where the Target is located on the map. - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_PROTECT:SetTargetZone( TargetZone, TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteProtectZone = ProcessUnit:GetProcess( "Protecting", "RouteToTargetZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - ActRouteProtectZone:SetZone( TargetZone ) - end - - - --- @param #TASK_PROTECT self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Zone#ZONE_BASE The Zone object where the Target is located on the map. - function TASK_PROTECT:GetTargetZone( TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteProtectZone = ProcessUnit:GetProcess( "Protecting", "RouteToTargetZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - return ActRouteProtectZone:GetZone() - end - - function TASK_PROTECT:SetGoalTotal() - - self.GoalTotal = 1 - end - - function TASK_PROTECT:GetGoalTotal() - - return self.GoalTotal - end - -end - - -do -- TASK_CAPTURE_ZONE - - --- The TASK_CAPTURE_ZONE class - -- @type TASK_CAPTURE_ZONE - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Tasking.Task_Protect#TASK_PROTECT - - --- # TASK_CAPTURE_ZONE class, extends @{Task_A2G#TASK_PROTECT} - -- - -- The TASK_CAPTURE_ZONE class defines an Suppression or Extermination of Air Defenses task for a human player to be executed. - -- These tasks are important to be executed as they will help to achieve air superiority at the vicinity. - -- - -- The TASK_CAPTURE_ZONE is used by the @{Task_A2G_Dispatcher#TASK_A2G_DISPATCHER} to automatically create SEAD tasks - -- based on detected enemy ground targets. - -- - -- @field #TASK_CAPTURE_ZONE - TASK_CAPTURE_ZONE = { - ClassName = "TASK_CAPTURE_ZONE", - } - - --- Instantiates a new TASK_CAPTURE_ZONE. - -- @param #TASK_CAPTURE_ZONE self - -- @param Tasking.Mission#MISSION Mission - -- @param Core.Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Functional.Protect#PROTECT Protect - -- @param #string TaskBriefing The briefing of the task. - -- @return #TASK_CAPTURE_ZONE self - function TASK_CAPTURE_ZONE:New( Mission, SetGroup, TaskName, Protect, TaskBriefing) - local self = BASE:Inherit( self, TASK_PROTECT:New( Mission, SetGroup, TaskName, Protect, "CAPTURE", TaskBriefing ) ) -- #TASK_CAPTURE_ZONE - self:F() - - Mission:AddTask( self ) - - self.TaskCoalition = Protect:GetCoalition() - self.TaskCoalitionName = Protect:GetCoalitionName() - self.TaskZoneName = self.Protect:GetProtectZoneName() - - self:SetBriefing( - TaskBriefing or - "Capture zone " .. self.TaskZoneName .. "." - ) - - self:UpdateTaskInfo() - - return self - end - - --- Instantiates a new TASK_CAPTURE_ZONE. - -- @param #TASK_CAPTURE_ZONE self - function TASK_CAPTURE_ZONE:UpdateTaskInfo() - - - local ZoneCoordinate = self.Protect:GetProtectZone():GetCoordinate() - self:SetInfo( "Coordinates", ZoneCoordinate, 0 ) - self:SetInfo( "Zone Name", self.TaskZoneName, 10 ) - self:SetInfo( "Zone Coalition", self.TaskCoalitionName, 11 ) - end - - function TASK_CAPTURE_ZONE:ReportOrder( ReportGroup ) - local Coordinate = self:GetInfo( "Coordinates" ) - --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText - local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) - - return Distance - end - - - --- @param #TASK_CAPTURE_ZONE self - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_CAPTURE_ZONE:OnAfterGoal( From, Event, To, PlayerUnit, PlayerName ) - - self:E( { PlayerUnit = PlayerUnit } ) - - if self.Protect then - local ProtectCoalition = self.Protect:GetCoalition() - local TaskCoalition = self.Coalition - - self:E( { ProtectCoalition = ProtectCoalition, TaskCoalition = TaskCoalition } ) - - if ProtectCoalition ~= TaskCoalition then - self:Success() - end - end - - self:__Goal( -10, PlayerUnit, PlayerName ) - end - - --- Set a score when a target in scope of the A2G attack, has been destroyed . - -- @param #TASK_CAPTURE_ZONE self - -- @param #string PlayerName The name of the player. - -- @param #number Score The score in points to be granted when task process has been achieved. - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_CAPTURE_ZONE - function TASK_CAPTURE_ZONE:SetScoreOnProgress( PlayerName, Score, TaskUnit ) - self:F( { PlayerName, Score, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - --ProcessUnit:AddScoreProcess( "Protecting", "Protect", "Captured", "Player " .. PlayerName .. " has SEADed a target.", Score ) - - return self - end - - --- Set a score when all the targets in scope of the A2G attack, have been destroyed. - -- @param #TASK_CAPTURE_ZONE self - -- @param #string PlayerName The name of the player. - -- @param #number Score The score in points. - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_CAPTURE_ZONE - function TASK_CAPTURE_ZONE:SetScoreOnSuccess( PlayerName, Score, TaskUnit ) - self:F( { PlayerName, Score, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - ProcessUnit:AddScore( "Success", "The zone has been captured!", Score ) - - return self - end - - --- Set a penalty when the A2G attack has failed. - -- @param #TASK_CAPTURE_ZONE self - -- @param #string PlayerName The name of the player. - -- @param #number Penalty The penalty in points, must be a negative value! - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_CAPTURE_ZONE - function TASK_CAPTURE_ZONE:SetScoreOnFail( PlayerName, Penalty, TaskUnit ) - self:F( { PlayerName, Penalty, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - ProcessUnit:AddScore( "Failed", "The zone has been lost!", Penalty ) - - return self - end - -end - diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index a6cf3b9ca..e390e9e67 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20171005_1213' ) +env.info( 'Moose Generation Timestamp: 20171005_1714' ) local base = _G diff --git a/Moose Mission Setup/Moose_.lua b/Moose Mission Setup/Moose_.lua index f962c7a64..497702a58 100644 --- a/Moose Mission Setup/Moose_.lua +++ b/Moose Mission Setup/Moose_.lua @@ -1,5 +1,5 @@ env.info('*** MOOSE DYNAMIC INCLUDE START *** ') -env.info('Moose Generation Timestamp: 20171005_1213') +env.info('Moose Generation Timestamp: 20171005_1714') local base=_G __Moose={} __Moose.Include=function(IncludeFile)