/*%FSM*/ /*%FSM*/ /* item0[] = {"_",8,218,-375.000000,900.000000,-275.000000,950.000000,0.000000,""}; item1[] = {"Attack_one_of_the",2,250,-375.000000,975.000000,-275.000000,1025.000000,0.000000,"Attack one" \n "of the near" \n "factories"}; item2[] = {"Author__KPLIB_Dev",0,250,0.000000,0.000000,100.000000,50.000000,0.000000,"Author:" \n "KPLIB Dev Team"}; item3[] = {"save_loaded_",4,218,0.000000,75.000000,100.000000,125.000000,0.000000,"save loaded?"}; item4[] = {"Show_dialog_to_start",2,250,0.000000,300.000000,100.000000,350.000000,0.000000,"Show dialog" \n "to start" \n "Tutorial"}; item5[] = {"not_commander_",4,218,125.000000,0.000000,225.000000,50.000000,1.000000,"not" \n "commander?"}; item6[] = {"Exit",1,250,250.000000,0.000000,350.000000,50.000000,0.000000,"Exit"}; item7[] = {"Set_all_completion",2,250,0.000000,150.000000,100.000000,200.000000,0.000000,"Set all" \n "completion" \n "conditions"}; item8[] = {"delay_passed_",4,218,0.000000,225.000000,100.000000,275.000000,0.000000,"delay passed?"}; item9[] = {"accepted_",4,218,0.000000,375.000000,100.000000,425.000000,0.000000,"accepted?"}; item10[] = {"declined_",4,218,125.000000,300.000000,225.000000,350.000000,1.000000,"declined?"}; item11[] = {"Exit_1",1,250,250.000000,300.000000,350.000000,350.000000,0.000000,"Exit"}; item12[] = {"Init",2,250,0.000000,450.000000,100.000000,500.000000,0.000000,"Init"}; item13[] = {"_",8,218,0.000000,525.000000,100.000000,575.000000,0.000000,""}; item14[] = {"Check_for_next_s",2,250,0.000000,600.000000,100.000000,650.000000,0.000000,"Check for" \n "next step"}; item15[] = {"",7,210,46.000000,696.000000,54.000000,704.000000,0.000000,""}; item16[] = {"Deploy_first_FOB",4,218,0.000000,750.000000,100.000000,800.000000,1.000000,"Deploy" \n "first" \n "FOB"}; item17[] = {"Init_path",2,250,0.000000,825.000000,100.000000,875.000000,0.000000,"Init" \n "path"}; item18[] = {"FOB_crate_",4,218,-125.000000,975.000000,-25.000000,1025.000000,1.000000,"FOB crate?"}; item19[] = {"Slingload_crate",2,250,-125.000000,1050.000000,-25.000000,1100.000000,0.000000,"Slingload" \n "crate to a" \n "suitable position"}; item20[] = {"",7,210,46.000000,921.000000,54.000000,929.000000,0.000000,""}; item21[] = {"",7,210,-79.000000,920.999939,-71.000000,929.000061,0.000000,""}; item22[] = {"FOB_truck_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"FOB truck?"}; item23[] = {"Drive_the_truck",2,250,125.000000,1050.000000,225.000000,1100.000000,0.000000,"Drive the truck" \n "to a suitable" \n "position"}; item24[] = {"",7,210,171.000000,921.000000,179.000000,929.000061,0.000000,""}; item25[] = {"tutorial_already",4,218,-125.000000,150.000000,-25.000000,200.000000,2.000000,"tutorial" \n "already done?"}; item26[] = {"Exit_2",1,250,-250.000000,150.000000,-150.000000,200.000000,0.000000,"Exit"}; item27[] = {"FOB_deployed_",4,218,0.000000,1200.000000,100.000000,1250.000000,0.000000,"FOB" \n "deployed?"}; item28[] = {"",7,210,46.000000,1146.000000,54.000000,1154.000000,0.000000,""}; item29[] = {"",7,210,-79.000008,1146.000000,-70.999992,1154.000000,0.000000,""}; item30[] = {"",7,210,171.000000,1145.999878,179.000000,1154.000122,0.000000,""}; item31[] = {"Build_storage_ar",2,250,0.000000,1275.000000,100.000000,1325.000000,0.000000,"Build" \n "storage area"}; item32[] = {"start_crates_spawned",4,218,0.000000,1500.000000,100.000000,1550.000000,0.000000,"start crates" \n "spawned?"}; item33[] = {"Create_tasks_for",2,250,0.000000,1575.000000,100.000000,1625.000000,0.000000,"Create tasks" \n "for start resources"}; item34[] = {"Crates_stored_",4,218,0.000000,1650.000000,100.000000,1700.000000,0.000000,"Crates stored?"}; item35[] = {"Complete_tasks",2,250,0.000000,1725.000000,100.000000,1775.000000,0.000000,"Complete tasks"}; item36[] = {"",7,210,-79.000008,621.000000,-70.999992,629.000000,0.000000,""}; item37[] = {"_",8,218,125.000000,600.000000,225.000000,650.000000,0.000000,""}; item38[] = {"",7,210,296.000000,621.000000,304.000000,629.000000,0.000000,""}; item39[] = {"",7,210,296.000000,1971.000000,304.000000,1979.000000,0.000000,""}; item40[] = {"built_",4,218,0.000000,1350.000000,100.000000,1400.000000,0.000000,"built?"}; item41[] = {"Complete_task",2,250,0.000000,1425.000000,100.000000,1475.000000,0.000000,"Complete task"}; item42[] = {"",7,210,46.000000,1971.000000,54.000000,1979.000000,0.000000,""}; item43[] = {"Capture_first_fa",4,218,-375.000000,750.000000,-275.000000,800.000000,0.000000,"Capture" \n "first" \n "factory"}; item44[] = {"",7,210,-329.000000,696.000000,-321.000000,704.000000,0.000000,""}; item45[] = {"Init_path_1",2,250,-375.000000,825.000000,-275.000000,875.000000,0.000000,"Init" \n "path"}; item46[] = {"Sector_activated",4,218,-375.000000,1050.000000,-275.000000,1100.000000,0.000000,"Sector activated?"}; item47[] = {"Capture_the_sect",2,250,-375.000000,1125.000000,-275.000000,1175.000000,0.000000,"Capture the" \n "sector"}; item48[] = {"Sector_captured",4,218,-375.000000,1200.000000,-275.000000,1250.000000,0.000000,"Sector captured?"}; item49[] = {"POWs_and_wounded",2,250,-375.000000,1425.000000,-275.000000,1475.000000,0.000000,"POWs and" \n "wounded civs"}; item50[] = {"taken_care_of_",4,218,-375.000000,1500.000000,-275.000000,1550.000000,0.000000,"taken care" \n "of?"}; item51[] = {"Build_storage",2,250,-375.000000,1575.000000,-275.000000,1625.000000,0.000000,"Build storage"}; item52[] = {"built_",4,218,-375.000000,1650.000000,-275.000000,1700.000000,0.000000,"built?"}; item53[] = {"Start_production",2,250,-375.000000,1725.000000,-275.000000,1775.000000,0.000000,"Start production"}; item54[] = {"started_",4,218,-375.000000,1800.000000,-275.000000,1850.000000,0.000000,"started?"}; item55[] = {"Complete_tasks_1",2,250,-375.000000,1875.000000,-275.000000,1925.000000,0.000000,"Complete tasks"}; item56[] = {"",7,210,-329.000000,1971.000000,-321.000000,1979.000000,0.000000,""}; item57[] = {"Complete_task_and",3,250,-375.000000,1275.000000,-275.000000,1325.000000,0.000000,"Complete task" \n "and wait for" \n "processing"}; item58[] = {"delay_passed_",4,218,-375.000000,1350.000000,-275.000000,1400.000000,0.000000,"delay passed?"}; link0[] = {0,1}; link1[] = {1,46}; link2[] = {2,3}; link3[] = {2,5}; link4[] = {3,7}; link5[] = {4,9}; link6[] = {4,10}; link7[] = {5,6}; link8[] = {7,8}; link9[] = {7,25}; link10[] = {8,4}; link11[] = {9,12}; link12[] = {10,11}; link13[] = {12,13}; link14[] = {13,14}; link15[] = {14,15}; link16[] = {14,36}; link17[] = {15,16}; link18[] = {15,44}; link19[] = {16,17}; link20[] = {17,20}; link21[] = {18,19}; link22[] = {19,29}; link23[] = {20,21}; link24[] = {20,24}; link25[] = {21,18}; link26[] = {22,23}; link27[] = {23,30}; link28[] = {24,22}; link29[] = {25,26}; link30[] = {27,31}; link31[] = {28,27}; link32[] = {29,28}; link33[] = {30,28}; link34[] = {31,40}; link35[] = {32,33}; link36[] = {33,34}; link37[] = {34,35}; link38[] = {35,42}; link39[] = {36,25}; link40[] = {37,14}; link41[] = {38,37}; link42[] = {39,38}; link43[] = {40,41}; link44[] = {41,32}; link45[] = {42,39}; link46[] = {43,45}; link47[] = {44,43}; link48[] = {45,0}; link49[] = {46,47}; link50[] = {47,48}; link51[] = {48,57}; link52[] = {49,50}; link53[] = {50,51}; link54[] = {51,52}; link55[] = {52,53}; link56[] = {53,54}; link57[] = {54,55}; link58[] = {55,56}; link59[] = {56,42}; link60[] = {57,58}; link61[] = {58,49}; globals[] = {0.000000,0,0,0,0,640,480,1,87,6316128,1,-872.324036,426.382813,2058.735596,1126.872803,1232,884,1}; window[] = {2,-1,-1,-1,-1,941,182,1622,182,3,1250}; *//*%FSM*/ class FSM { fsmName = "KPLIB Tutorial"; class States { /*%FSM*/ class Attack_one_of_the { name = "Attack_one_of_the"; itemno = 1; init = /*%FSM*/"// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector_01"", ""KPLIB_Tasks_Tutorial_Sector""]," \n " """"," \n " objNull," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""map""," \n " true" \n "] call BIS_fnc_taskCreate;" \n "" \n "// Get up to 3 nearest factory sectors" \n "private _sectors = (" \n " sectors_factory select {((markerPos _x) distance2d player) < 10000}" \n ") apply {" \n " [(markerPos _x) distance2d player, _x]" \n "};" \n "_sectors sort true;" \n "_sectors resize 3;" \n "_sectors = _sectors select {!isNil ""_x""};" \n "_sectors = _sectors apply {_x select 1};" \n "" \n "// Create task markers for near factories" \n "{" \n " [" \n " allPlayers," \n " [" \n " [""KPLIB_Tasks_Tutorial_Sector_01_"", _forEachIndex] joinString """"," \n " ""KPLIB_Tasks_Tutorial_Sector_01""" \n " ]," \n " ["""", localize ""STR_PRODUCTION_FACTORY""]," \n " markerPos _x," \n " ""CREATED""," \n " -1," \n " false," \n " ""default""," \n " true" \n " ] call BIS_fnc_taskCreate;" \n "} forEach _sectors;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Sector_activated { itemno = 46; priority = 0.000000; to="Capture_the_sect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(" \n " (_sectors select {_x in active_sectors}) isEqualTo []" \n ")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Author__KPLIB_Dev { name = "Author__KPLIB_Dev"; itemno = 2; init = /*%FSM*/"// This FSM is part of KP Liberation" \n "// https://github.com/KillahPotatoes/KP-Liberation" \n "// MIT License - http://www.opensource.org/licenses/MIT"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class not_commander_ { itemno = 5; priority = 1.000000; to="Exit"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"isDedicated" \n "||" \n "{!(player isEqualTo ([] call KPLIB_fnc_getCommander))}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class save_loaded_ { itemno = 3; priority = 0.000000; to="Set_all_completion"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""save_is_loaded""" \n "&& {save_is_loaded}" \n "&& {alive player}" \n "&& {" \n " private _locations = [startbase];" \n " _locations append GRLIB_all_fobs;" \n " !((_locations select {(_x distance2d player) < GRLIB_fob_range}) isEqualTo [])" \n "}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Show_dialog_to_start { name = "Show_dialog_to_start"; itemno = 4; init = /*%FSM*/"[" \n " format [""FSM started on: %1"", debug_source]," \n " ""TUTORIAL""" \n "] remoteExecCall [""KPLIB_fnc_log"", 2];" \n "" \n "// Show dialog to offer the tutorial" \n "[] spawn {" \n " KPLIB_playTutorial = [" \n " localize ""STR_TUTORIAL_DIALOG_TEXT_START""," \n " localize ""STR_TUTORIAL_DIALOG_TITLE""," \n " true," \n " true," \n " nil," \n " false," \n " false" \n " ] call BIS_fnc_guiMessage;" \n "};" \n "" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class declined_ { itemno = 10; priority = 1.000000; to="Exit_1"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""KPLIB_playTutorial""" \n "&&" \n "{!KPLIB_playTutorial}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class accepted_ { itemno = 9; priority = 0.000000; to="Init"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""KPLIB_playTutorial""" \n "&&" \n "{KPLIB_playTutorial}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Exit { name = "Exit"; itemno = 6; init = /*%FSM*/"[" \n " format [""FSM started by non-commander: %1"", debug_source]," \n " ""TUTORIAL""" \n "] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class Set_all_completion { name = "Set_all_completion"; itemno = 7; init = /*%FSM*/"private _fobComplete = {" \n " !(GRLIB_all_fobs isEqualTo [])" \n " ||" \n " {!(blufor_sectors isEqualTo [])}" \n "};" \n "private _sectorComplete = {" \n " !((blufor_sectors arrayIntersect sectors_factory) isEqualTo [])" \n "};" \n "" \n "private _allConditions = [" \n " _fobComplete," \n " _sectorComplete" \n "];" \n "" \n "private _nextState = diag_tickTime + ([4, 10] select GRLIB_deployment_cinematic);"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class tutorial_already { itemno = 25; priority = 2.000000; to="Exit_2"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((_allConditions apply {[] call _x}) arrayIntersect [false]) isEqualTo []"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class delay_passed_ { itemno = 8; priority = 0.000000; to="Show_dialog_to_start"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"diag_tickTime >= _nextState"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Exit_1 { name = "Exit_1"; itemno = 11; init = /*%FSM*/"[" \n " format [""FSM on %1 aborted due to declining the tutorial"", debug_source]," \n " ""TUTORIAL""" \n "] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class Init { name = "Init"; itemno = 12; init = /*%FSM*/"// Create tutorial parent task" \n "[" \n " allPlayers," \n " ""KPLIB_Tasks_Tutorial_Main""," \n " """"," \n " objNull," \n " ""CREATED""," \n " -1," \n " false," \n " ""whiteboard""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class _ { itemno = 13; priority = 0.000000; to="Check_for_next_s"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Check_for_next_s { name = "Check_for_next_s"; itemno = 14; init = /*%FSM*/"[" \n " format [""%1 at hub"", debug_source]," \n " ""TUTORIAL""" \n "] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class tutorial_already { itemno = 25; priority = 2.000000; to="Exit_2"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((_allConditions apply {[] call _x}) arrayIntersect [false]) isEqualTo []"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Deploy_first_FOB { itemno = 16; priority = 1.000000; to="Init_path"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(" \n " [""KPLIB_tutorialTask_Fob""] call BIS_fnc_taskCompleted" \n " ||" \n " {[] call _fobComplete}" \n ")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Capture_first_fa { itemno = 43; priority = 0.000000; to="Init_path_1"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(" \n " [""KPLIB_tutorialTask_Sector""] call BIS_fnc_taskCompleted" \n " ||" \n " {[] call _sectorComplete}" \n ")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Init_path { name = "Init_path"; itemno = 17; init = /*%FSM*/"// Create tutorial path parent task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Fob"", ""KPLIB_Tasks_Tutorial_Main""]," \n " """"," \n " objNull," \n " ""CREATED""," \n " -1," \n " false," \n " ""whiteboard""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class FOB_crate_ { itemno = 18; priority = 1.000000; to="Slingload_crate"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!KP_liberation_fob_vehicle"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class FOB_truck_ { itemno = 22; priority = 0.000000; to="Drive_the_truck"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"KP_liberation_fob_vehicle"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Slingload_crate { name = "Slingload_crate"; itemno = 19; init = /*%FSM*/"// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Fob_01a"", ""KPLIB_Tasks_Tutorial_Fob""]," \n " """"," \n " [(base_boxspawn nearObjects [FOB_box_typename, 10]) select 0, true]," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""container""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class FOB_deployed_ { itemno = 27; priority = 0.000000; to="Build_storage_ar"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(GRLIB_all_fobs isEqualTo [])"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Drive_the_truck { name = "Drive_the_truck"; itemno = 23; init = /*%FSM*/"// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Fob_01b"", ""KPLIB_Tasks_Tutorial_Fob""]," \n " """"," \n " [(base_boxspawn nearObjects [FOB_box_typename, 10]) select 0, true]," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""car""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class FOB_deployed_ { itemno = 27; priority = 0.000000; to="Build_storage_ar"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(GRLIB_all_fobs isEqualTo [])"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Exit_2 { name = "Exit_2"; itemno = 26; init = /*%FSM*/"[" \n " format [""FSM on %1 aborted due to all tutorials completed"", debug_source]," \n " ""TUTORIAL""" \n "] remoteExecCall [""KPLIB_fnc_log"", 2];" \n "" \n "if ([""KPLIB_Tasks_Tutorial_Main""] call BIS_fnc_taskExists) then {" \n " [] spawn {" \n " sleep 5;" \n " [" \n " localize ""STR_TUTORIAL_DIALOG_TEXT_END""," \n " localize ""STR_TUTORIAL_DIALOG_TITLE""," \n " true," \n " false," \n " nil," \n " false," \n " false" \n " ] call BIS_fnc_guiMessage;" \n " };" \n "" \n " [""KPLIB_Tasks_Tutorial_Main"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class Build_storage_ar { name = "Build_storage_ar"; itemno = 31; init = /*%FSM*/"// Complete tasks" \n "[""KPLIB_Tasks_Tutorial_Fob_01a"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "[""KPLIB_Tasks_Tutorial_Fob_01b"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "" \n "// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Fob_02"", ""KPLIB_Tasks_Tutorial_Fob""]," \n " """"," \n " objNull," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""box""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class built_ { itemno = 40; priority = 0.000000; to="Complete_task"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(" \n " (((GRLIB_all_fobs select 0) nearObjects GRLIB_fob_range) select {" \n " (_x getVariable [""KP_liberation_storage_type"", -1]) == 0" \n " }) isEqualTo []" \n ")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Create_tasks_for { name = "Create_tasks_for"; itemno = 33; init = /*%FSM*/"// Create tasks" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Fob_03"", ""KPLIB_Tasks_Tutorial_Fob""]," \n " """"," \n " objNull," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""download""," \n " true" \n "] call BIS_fnc_taskCreate;" \n "" \n "private _crateTasks = [];" \n "private _taskId = """";" \n "{" \n " _taskId = [""KPLIB_Tasks_Tutorial_Fob_03_"", _forEachIndex] joinString """";" \n " _crateTasks pushBack _taskId;" \n " [_taskId, _x] call KPLIB_fnc_handleCrateStorageTask;" \n "} forEach KPLIB_startCrates;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Crates_stored_ { itemno = 34; priority = 0.000000; to="Complete_tasks"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(" \n " (_crateTasks apply {[_x] call BIS_fnc_taskCompleted}) arrayIntersect [false]" \n ") isEqualTo []"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Complete_tasks { name = "Complete_tasks"; itemno = 35; init = /*%FSM*/"[""KPLIB_Tasks_Tutorial_Fob_03"", ""SUCCEEDED"", false] call BIS_fnc_taskSetState;" \n "[""KPLIB_Tasks_Tutorial_Fob"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class _ { itemno = 37; priority = 0.000000; to="Check_for_next_s"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Complete_task { name = "Complete_task"; itemno = 41; init = /*%FSM*/"// Complete tasks" \n "[""KPLIB_Tasks_Tutorial_Fob_02"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class start_crates_spawned { itemno = 32; priority = 0.000000; to="Create_tasks_for"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""KPLIB_startCrates""" \n "&& {(count KPLIB_startCrates) >= 6}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Init_path_1 { name = "Init_path_1"; itemno = 45; init = /*%FSM*/"// Create tutorial path parent task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector"", ""KPLIB_Tasks_Tutorial_Main""]," \n " """"," \n " objNull," \n " ""CREATED""," \n " -1," \n " false," \n " ""whiteboard""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class _ { itemno = 0; priority = 0.000000; to="Attack_one_of_the"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Capture_the_sect { name = "Capture_the_sect"; itemno = 47; init = /*%FSM*/"{" \n " [" \n " [""KPLIB_Tasks_Tutorial_Sector_01_"", _forEachIndex] joinString """"," \n " ""SUCCEEDED""," \n " false" \n " ] call BIS_fnc_taskSetState;" \n "} forEach _sectors;" \n "[""KPLIB_Tasks_Tutorial_Sector_01"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "" \n "// Create task" \n "private _factory = (_sectors select {_x in active_sectors}) select 0;" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector_02"", ""KPLIB_Tasks_Tutorial_Sector""]," \n " """"," \n " markerPos _factory," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""attack""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Sector_captured { itemno = 48; priority = 0.000000; to="Complete_task_and"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_factory in blufor_sectors"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class POWs_and_wounded { name = "POWs_and_wounded"; itemno = 49; init = /*%FSM*/"// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector_03"", ""KPLIB_Tasks_Tutorial_Sector""]," \n " """"," \n " objNull," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""search""," \n " true" \n "] call BIS_fnc_taskCreate;" \n "" \n "// Get all POWs and wounded civs" \n "private _pows = allUnits select {" \n " captive _x" \n " && {((markerPos _factory) distance2d _x) < 250}" \n "};" \n "" \n "private _civs = [];" \n "private _wounded_markers = allMapMarkers select {_x find ""wounded_marker_"" == 0};" \n "{" \n " _civs append (" \n " ((markerPos _x) nearEntities [""Man"", 25]) select {(damage _x) > 0.4}" \n " );" \n "} forEach _wounded_markers;" \n "" \n "// Create tasks for near POWs and wounded civs" \n "private _careTasks = [];" \n "private _taskId = """";" \n "{" \n " _taskId = [""KPLIB_Tasks_Tutorial_Sector_03_pow_"", _forEachIndex] joinString """";" \n " _careTasks pushBack _taskId;" \n " [_taskId, _x] call KPLIB_fnc_handleTakePowTask;" \n "} forEach _pows;" \n "" \n "{" \n " _taskId = [""KPLIB_Tasks_Tutorial_Sector_03_civ_"", _forEachIndex] joinString """";" \n " _careTasks pushBack _taskId;" \n " [_taskId, _x] call KPLIB_fnc_handleHealCivTask;" \n "} forEach _civs;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class taken_care_of_ { itemno = 50; priority = 0.000000; to="Build_storage"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(" \n " (_careTasks apply {[_x] call BIS_fnc_taskCompleted}) arrayIntersect [false]" \n ") isEqualTo []"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Build_storage { name = "Build_storage"; itemno = 51; init = /*%FSM*/"[""KPLIB_Tasks_Tutorial_Sector_03"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "" \n "// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector_04"", ""KPLIB_Tasks_Tutorial_Sector""]," \n " """"," \n " markerPos _factory," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""box""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class built_ { itemno = 52; priority = 0.000000; to="Start_production"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(" \n " (((markerPos _factory) nearObjects GRLIB_fob_range) select {" \n " (_x getVariable [""KP_liberation_storage_type"", -1]) == 1" \n " }) isEqualTo []" \n ")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Start_production { name = "Start_production"; itemno = 53; init = /*%FSM*/"[""KPLIB_Tasks_Tutorial_Sector_04"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "" \n "// Create task" \n "[" \n " allPlayers," \n " [""KPLIB_Tasks_Tutorial_Sector_05"", ""KPLIB_Tasks_Tutorial_Sector""]," \n " """"," \n " markerPos _factory," \n " ""ASSIGNED""," \n " 0," \n " true," \n " ""use""," \n " true" \n "] call BIS_fnc_taskCreate;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class started_ { itemno = 54; priority = 0.000000; to="Complete_tasks_1"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(((KP_liberation_production select {(_x select 1) isEqualTo _factory}) select 0) select 7) < 3"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Complete_tasks_1 { name = "Complete_tasks_1"; itemno = 55; init = /*%FSM*/"[""KPLIB_Tasks_Tutorial_Sector_05"", ""SUCCEEDED"", false] call BIS_fnc_taskSetState;" \n "[""KPLIB_Tasks_Tutorial_Sector"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class _ { itemno = 37; priority = 0.000000; to="Check_for_next_s"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Complete_task_and { name = "Complete_task_and"; itemno = 57; init = /*%FSM*/"[""KPLIB_Tasks_Tutorial_Sector_02"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n "_nextState = diag_tickTime + 15;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class delay_passed_ { itemno = 58; priority = 0.000000; to="POWs_and_wounded"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"diag_tickTime >= _nextState"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ }; initState="Author__KPLIB_Dev"; finalStates[] = { "Exit", "Exit_1", "Exit_2", }; }; /*%FSM*/