Files
CTI34-KPLIB-Ruha/scripts/client/tutorial/fn_tutorial.fsm

1023 lines
56 KiB
Plaintext

/*%FSM<COMPILE "C:\Games\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, KPLIB Tutorial">*/
/*%FSM<HEAD>*/
/*
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</HEAD>*/
class FSM
{
fsmName = "KPLIB Tutorial";
class States
{
/*%FSM<STATE "Attack_one_of_the">*/
class Attack_one_of_the
{
name = "Attack_one_of_the";
itemno = 1;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Sector_activated">*/
class Sector_activated
{
itemno = 46;
priority = 0.000000;
to="Capture_the_sect";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(" \n
" (_sectors select {_x in active_sectors}) isEqualTo []" \n
")"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Author__KPLIB_Dev">*/
class Author__KPLIB_Dev
{
name = "Author__KPLIB_Dev";
itemno = 2;
init = /*%FSM<STATEINIT""">*/"// This FSM is part of KP Liberation" \n
"// https://github.com/KillahPotatoes/KP-Liberation" \n
"// MIT License - http://www.opensource.org/licenses/MIT"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "not_commander_">*/
class not_commander_
{
itemno = 5;
priority = 1.000000;
to="Exit";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"isDedicated" \n
"||" \n
"{!(player isEqualTo ([] call KPLIB_fnc_getCommander))}"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "save_loaded_">*/
class save_loaded_
{
itemno = 3;
priority = 0.000000;
to="Set_all_completion";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!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</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Show_dialog_to_start">*/
class Show_dialog_to_start
{
name = "Show_dialog_to_start";
itemno = 4;
init = /*%FSM<STATEINIT""">*/"[" \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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "declined_">*/
class declined_
{
itemno = 10;
priority = 1.000000;
to="Exit_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!isNil ""KPLIB_playTutorial""" \n
"&&" \n
"{!KPLIB_playTutorial}"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "accepted_">*/
class accepted_
{
itemno = 9;
priority = 0.000000;
to="Init";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!isNil ""KPLIB_playTutorial""" \n
"&&" \n
"{KPLIB_playTutorial}"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Exit">*/
class Exit
{
name = "Exit";
itemno = 6;
init = /*%FSM<STATEINIT""">*/"[" \n
" format [""FSM started by non-commander: %1"", debug_source]," \n
" ""TUTORIAL""" \n
"] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Set_all_completion">*/
class Set_all_completion
{
name = "Set_all_completion";
itemno = 7;
init = /*%FSM<STATEINIT""">*/"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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "tutorial_already">*/
class tutorial_already
{
itemno = 25;
priority = 2.000000;
to="Exit_2";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((_allConditions apply {[] call _x}) arrayIntersect [false]) isEqualTo []"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "delay_passed_">*/
class delay_passed_
{
itemno = 8;
priority = 0.000000;
to="Show_dialog_to_start";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"diag_tickTime >= _nextState"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Exit_1">*/
class Exit_1
{
name = "Exit_1";
itemno = 11;
init = /*%FSM<STATEINIT""">*/"[" \n
" format [""FSM on %1 aborted due to declining the tutorial"", debug_source]," \n
" ""TUTORIAL""" \n
"] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Init">*/
class Init
{
name = "Init";
itemno = 12;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
itemno = 13;
priority = 0.000000;
to="Check_for_next_s";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Check_for_next_s">*/
class Check_for_next_s
{
name = "Check_for_next_s";
itemno = 14;
init = /*%FSM<STATEINIT""">*/"[" \n
" format [""%1 at hub"", debug_source]," \n
" ""TUTORIAL""" \n
"] remoteExecCall [""KPLIB_fnc_log"", 2];"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "tutorial_already">*/
class tutorial_already
{
itemno = 25;
priority = 2.000000;
to="Exit_2";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((_allConditions apply {[] call _x}) arrayIntersect [false]) isEqualTo []"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "Deploy_first_FOB">*/
class Deploy_first_FOB
{
itemno = 16;
priority = 1.000000;
to="Init_path";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(" \n
" [""KPLIB_tutorialTask_Fob""] call BIS_fnc_taskCompleted" \n
" ||" \n
" {[] call _fobComplete}" \n
")"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "Capture_first_fa">*/
class Capture_first_fa
{
itemno = 43;
priority = 0.000000;
to="Init_path_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(" \n
" [""KPLIB_tutorialTask_Sector""] call BIS_fnc_taskCompleted" \n
" ||" \n
" {[] call _sectorComplete}" \n
")"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Init_path">*/
class Init_path
{
name = "Init_path";
itemno = 17;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "FOB_crate_">*/
class FOB_crate_
{
itemno = 18;
priority = 1.000000;
to="Slingload_crate";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!KP_liberation_fob_vehicle"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "FOB_truck_">*/
class FOB_truck_
{
itemno = 22;
priority = 0.000000;
to="Drive_the_truck";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"KP_liberation_fob_vehicle"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Slingload_crate">*/
class Slingload_crate
{
name = "Slingload_crate";
itemno = 19;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "FOB_deployed_">*/
class FOB_deployed_
{
itemno = 27;
priority = 0.000000;
to="Build_storage_ar";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(GRLIB_all_fobs isEqualTo [])"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Drive_the_truck">*/
class Drive_the_truck
{
name = "Drive_the_truck";
itemno = 23;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "FOB_deployed_">*/
class FOB_deployed_
{
itemno = 27;
priority = 0.000000;
to="Build_storage_ar";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(GRLIB_all_fobs isEqualTo [])"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Exit_2">*/
class Exit_2
{
name = "Exit_2";
itemno = 26;
init = /*%FSM<STATEINIT""">*/"[" \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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Build_storage_ar">*/
class Build_storage_ar
{
name = "Build_storage_ar";
itemno = 31;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "built_">*/
class built_
{
itemno = 40;
priority = 0.000000;
to="Complete_task";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(" \n
" (((GRLIB_all_fobs select 0) nearObjects GRLIB_fob_range) select {" \n
" (_x getVariable [""KP_liberation_storage_type"", -1]) == 0" \n
" }) isEqualTo []" \n
")"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Create_tasks_for">*/
class Create_tasks_for
{
name = "Create_tasks_for";
itemno = 33;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Crates_stored_">*/
class Crates_stored_
{
itemno = 34;
priority = 0.000000;
to="Complete_tasks";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(" \n
" (_crateTasks apply {[_x] call BIS_fnc_taskCompleted}) arrayIntersect [false]" \n
") isEqualTo []"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Complete_tasks">*/
class Complete_tasks
{
name = "Complete_tasks";
itemno = 35;
init = /*%FSM<STATEINIT""">*/"[""KPLIB_Tasks_Tutorial_Fob_03"", ""SUCCEEDED"", false] call BIS_fnc_taskSetState;" \n
"[""KPLIB_Tasks_Tutorial_Fob"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
itemno = 37;
priority = 0.000000;
to="Check_for_next_s";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Complete_task">*/
class Complete_task
{
name = "Complete_task";
itemno = 41;
init = /*%FSM<STATEINIT""">*/"// Complete tasks" \n
"[""KPLIB_Tasks_Tutorial_Fob_02"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "start_crates_spawned">*/
class start_crates_spawned
{
itemno = 32;
priority = 0.000000;
to="Create_tasks_for";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!isNil ""KPLIB_startCrates""" \n
"&& {(count KPLIB_startCrates) >= 6}"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Init_path_1">*/
class Init_path_1
{
name = "Init_path_1";
itemno = 45;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
itemno = 0;
priority = 0.000000;
to="Attack_one_of_the";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Capture_the_sect">*/
class Capture_the_sect
{
name = "Capture_the_sect";
itemno = 47;
init = /*%FSM<STATEINIT""">*/"{" \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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Sector_captured">*/
class Sector_captured
{
itemno = 48;
priority = 0.000000;
to="Complete_task_and";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"_factory in blufor_sectors"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "POWs_and_wounded">*/
class POWs_and_wounded
{
name = "POWs_and_wounded";
itemno = 49;
init = /*%FSM<STATEINIT""">*/"// 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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "taken_care_of_">*/
class taken_care_of_
{
itemno = 50;
priority = 0.000000;
to="Build_storage";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(" \n
" (_careTasks apply {[_x] call BIS_fnc_taskCompleted}) arrayIntersect [false]" \n
") isEqualTo []"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Build_storage">*/
class Build_storage
{
name = "Build_storage";
itemno = 51;
init = /*%FSM<STATEINIT""">*/"[""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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "built_">*/
class built_
{
itemno = 52;
priority = 0.000000;
to="Start_production";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(" \n
" (((markerPos _factory) nearObjects GRLIB_fob_range) select {" \n
" (_x getVariable [""KP_liberation_storage_type"", -1]) == 1" \n
" }) isEqualTo []" \n
")"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Start_production">*/
class Start_production
{
name = "Start_production";
itemno = 53;
init = /*%FSM<STATEINIT""">*/"[""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</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "started_">*/
class started_
{
itemno = 54;
priority = 0.000000;
to="Complete_tasks_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(((KP_liberation_production select {(_x select 1) isEqualTo _factory}) select 0) select 7) < 3"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Complete_tasks_1">*/
class Complete_tasks_1
{
name = "Complete_tasks_1";
itemno = 55;
init = /*%FSM<STATEINIT""">*/"[""KPLIB_Tasks_Tutorial_Sector_05"", ""SUCCEEDED"", false] call BIS_fnc_taskSetState;" \n
"[""KPLIB_Tasks_Tutorial_Sector"", ""SUCCEEDED""] call BIS_fnc_taskSetState;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
itemno = 37;
priority = 0.000000;
to="Check_for_next_s";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Complete_task_and">*/
class Complete_task_and
{
name = "Complete_task_and";
itemno = 57;
init = /*%FSM<STATEINIT""">*/"[""KPLIB_Tasks_Tutorial_Sector_02"", ""SUCCEEDED""] call BIS_fnc_taskSetState;" \n
"_nextState = diag_tickTime + 15;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "delay_passed_">*/
class delay_passed_
{
itemno = 58;
priority = 0.000000;
to="POWs_and_wounded";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"diag_tickTime >= _nextState"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
};
initState="Author__KPLIB_Dev";
finalStates[] =
{
"Exit",
"Exit_1",
"Exit_2",
};
};
/*%FSM</COMPILE>*/