mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
1655 lines
99 KiB
Plaintext
1655 lines
99 KiB
Plaintext
/*%FSM<COMPILE "C:\Program Files (x86)\PoseidonTools\Data\Packages\Bin\fsmEditor\scriptedFSM.cfg, task control client">*/
|
|
/*%FSM<HEAD>*/
|
|
/*
|
|
item0[] = {"task_control",0,250,-225.000000,-625.000000,-125.000000,-575.000000,0.000000,"task control"};
|
|
item1[] = {"delay",4,218,-500.000000,-250.000000,-400.000000,-200.000000,0.000000,"delay"};
|
|
item2[] = {"setup",2,250,-650.000000,-625.000000,-550.000000,-575.000000,0.000000,"setup"};
|
|
item3[] = {"_",8,218,-500.000000,-625.000000,-400.000000,-575.000000,0.000000,""};
|
|
item4[] = {"items_and_vars",2,250,-500.000000,-175.000000,-400.000000,-125.000000,0.000000,"items" \n "and" \n "vars"};
|
|
item5[] = {"task_completed",4,218,300.000000,75.000000,400.000000,125.000000,15.000000,"task" \n "completed"};
|
|
item6[] = {"end",1,250,-775.000000,350.000000,-675.000000,400.000000,0.000000,"end"};
|
|
item7[] = {"no_item_spawn",4,218,-350.000000,-175.000000,-250.000000,-125.000000,0.000000,"no item spawn"};
|
|
item8[] = {"do_monitor",2,250,-75.000000,-25.000000,25.000000,25.000000,0.000000," do monitor"};
|
|
item9[] = {"next",2,250,300.000000,-25.000000,400.000000,25.000000,0.000000,"next"};
|
|
item10[] = {"loop",4,218,75.000000,-25.000000,175.000000,25.000000,5.000000,"loop"};
|
|
item11[] = {"_",8,218,-75.000000,-100.000000,25.000000,-50.000000,0.000000,""};
|
|
item12[] = {"_",8,218,75.000000,-325.000000,175.000000,-275.000000,0.000000,""};
|
|
item13[] = {"chat_conditions",2,250,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"chat conditions"};
|
|
item14[] = {"event_conditions",2,250,300.000000,-325.000000,400.000000,-275.000000,0.000000,"event" \n "conditions"};
|
|
item15[] = {"_",8,218,300.000000,-250.000000,400.000000,-200.000000,0.000000,""};
|
|
item16[] = {"comms",2,250,-500.000000,-350.000000,-400.000000,-300.000000,0.000000,"comms"};
|
|
item17[] = {"_",8,218,300.000000,-100.000000,400.000000,-50.000000,0.000000,""};
|
|
item18[] = {"task_conditions",2,250,300.000000,-175.000000,400.000000,-125.000000,0.000000,"task" \n "conditions"};
|
|
item19[] = {"chat_1",4,218,75.000000,-100.000000,175.000000,-50.000000,5.000000,"chat 1"};
|
|
item20[] = {"chat_2",4,218,75.000000,-175.000000,175.000000,-125.000000,10.000000,"chat 2"};
|
|
item21[] = {"chat_3",4,218,75.000000,-250.000000,175.000000,-200.000000,15.000000,"chat 3"};
|
|
item22[] = {"item_spawn",4,218,-650.000000,-175.000000,-550.000000,-125.000000,5.000000,"item spawn"};
|
|
item23[] = {"actions",2,250,-350.000000,-25.000000,-250.000000,25.000000,0.000000,"actions"};
|
|
item24[] = {"point",4,218,-150.000000,350.000000,-50.000000,400.000000,0.000000,"point"};
|
|
item25[] = {"spawn_item",2,250,-650.000000,-25.000000,-550.000000,25.000000,0.000000,"spawn item"};
|
|
item26[] = {"ready",4,218,-500.000000,-25.000000,-400.000000,25.000000,0.000000,"ready"};
|
|
item27[] = {"in_house",4,218,-775.000000,50.000000,-675.000000,100.000000,10.000000,"in house"};
|
|
item28[] = {"hidden_nearby",4,218,-775.000000,-175.000000,-675.000000,-125.000000,5.000000,"hidden nearby"};
|
|
item29[] = {"near_player",4,218,-775.000000,-25.000000,-675.000000,25.000000,15.000000,"near player"};
|
|
item30[] = {"event_1",4,218,425.000000,-400.000000,525.000000,-350.000000,10.000000,"event 1"};
|
|
item31[] = {"event_2",4,218,300.000000,-400.000000,400.000000,-350.000000,15.000000,"event 2"};
|
|
item32[] = {"event_3",4,218,175.000000,-400.000000,275.000000,-350.000000,20.000000,"event 3"};
|
|
item33[] = {"_",8,218,-650.000000,-400.000000,-550.000000,-350.000000,0.000000,""};
|
|
item34[] = {"completed",2,250,175.000000,75.000000,275.000000,125.000000,0.000000,"completed"};
|
|
item35[] = {"diag_1",4,218,300.000000,150.000000,400.000000,200.000000,15.000000,"diag 1"};
|
|
item36[] = {"diag_2",4,218,175.000122,210.091980,275.000122,260.091980,10.000000,"diag 2"};
|
|
item37[] = {"pause",4,218,300.000000,275.000000,400.000000,325.000000,0.000000,"pause"};
|
|
item38[] = {"reward",2,250,25.000000,275.000000,125.000000,325.000000,0.000000,"reward"};
|
|
item39[] = {"comms_1",2,4346,-150.000000,425.000000,-50.000000,475.000000,0.000000,"comms"};
|
|
item40[] = {"mission_complete",4,218,-650.000000,350.000000,-550.000000,400.000000,10.000000,"mission complete"};
|
|
item41[] = {"_",8,218,25.000000,75.000000,125.000000,125.000000,0.000000,""};
|
|
item42[] = {"_",8,218,-350.000000,100.000000,-250.000000,150.000000,0.000000,""};
|
|
item43[] = {"markers",2,250,-225.000000,175.000000,-125.000000,225.000000,0.000000,"markers"};
|
|
item44[] = {"continue",4,218,-75.000000,175.000000,25.000000,225.000000,100.000000,"continue"};
|
|
item45[] = {"radius",4,218,-300.000000,350.000000,-200.000000,400.000000,0.000000,"radius"};
|
|
item46[] = {"marker_pos",4,218,-350.000000,225.000000,-250.000000,275.000000,0.000000,"marker pos"};
|
|
item47[] = {"do_markers",2,250,-225.000000,275.000000,-125.000000,325.000000,0.000000,"do markers"};
|
|
item48[] = {"find_spot",2,250,-900.000000,-175.000000,-800.000000,-125.000000,0.000000,"find spot"};
|
|
item49[] = {"task_failed",4,218,450.000000,-25.000000,550.000000,25.000000,10.000000,"task" \n "failed"};
|
|
item50[] = {"failed",2,250,450.000000,75.000000,550.000000,125.000000,0.000000,"failed"};
|
|
item51[] = {"diag",4,218,575.000000,-25.000000,675.000000,25.000000,5.000000,"diag"};
|
|
item52[] = {"fsm",4,218,575.000000,75.000000,675.000000,125.000000,10.000000,"fsm"};
|
|
item53[] = {"sqf",4,218,575.000000,150.000000,675.000000,200.000000,15.000000,"sqf"};
|
|
item54[] = {"call",4,218,575.000000,225.000000,675.000000,275.000000,20.000000,"call"};
|
|
item55[] = {"clean_up",2,250,300.000000,425.000000,400.000000,475.000000,0.000000,"clean up"};
|
|
item56[] = {"_",8,218,25.000000,425.000000,125.000000,475.000000,0.000000,""};
|
|
item57[] = {"markers",4,218,525.000000,350.000000,625.000000,400.000000,5.000000,"markers"};
|
|
item58[] = {"fsm",4,218,-225.000000,-100.000000,-125.000000,-50.000000,15.000000,"fsm"};
|
|
item59[] = {"sqf",4,218,-225.000000,-25.000000,-125.000000,25.000000,10.000000,"sqf"};
|
|
item60[] = {"call",4,218,-225.000000,50.000000,-125.000000,100.000000,20.000000,"call"};
|
|
item61[] = {"not_hidden",4,218,-900.000000,-100.000000,-800.000000,-50.000000,10.000000,"not hidden"};
|
|
item62[] = {"is_hidden",4,218,-775.000000,-100.000000,-675.000000,-50.000000,5.000000,"is hidden"};
|
|
item63[] = {"gui",2,250,-775.000000,-250.000000,-675.000000,-200.000000,0.000000,"gui"};
|
|
item64[] = {"no_dialogoue",4,218,-650.000000,-250.000000,-550.000000,-200.000000,10.000000,"no dialogoue"};
|
|
item65[] = {"dialogue",4,218,-900.000000,-250.000000,-800.000000,-200.000000,5.000000,"dialogue"};
|
|
item66[] = {"remind_dialogue",4,218,200.000000,350.000000,300.000000,400.000000,10.000000,"remind" \n "dialogue"};
|
|
item67[] = {"_",8,218,-300.000000,425.000000,-200.000000,475.000000,0.000000,""};
|
|
item68[] = {"next_task",2,250,-500.000000,425.000000,-400.000000,475.000000,0.000000,"next task"};
|
|
item69[] = {"clean_up",4,218,400.000000,350.000000,500.000000,400.000000,15.000000,"clean up"};
|
|
item70[] = {"comms_2",2,250,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"comms"};
|
|
item71[] = {"server",4,218,-75.000000,-250.000000,25.000000,-200.000000,10.000000,"server"};
|
|
item72[] = {"simple_task",4,218,-225.000000,-450.000000,-125.000000,-400.000000,10.000000,"simple" \n "task"};
|
|
item73[] = {"skip",4,218,-500.000000,225.000000,-400.000000,275.000000,5.000000,"skip"};
|
|
item74[] = {"run_test",4,218,-500.000000,-525.000000,-400.000000,-475.000000,20.000000,"run test"};
|
|
item75[] = {"override_for_task",2,250,-500.000000,-450.000000,-400.000000,-400.000000,0.000000,"override for" \n "task Editor"};
|
|
item76[] = {"bin_it",4,218,425.000000,-325.000000,525.000000,-275.000000,5.000000,"bin it"};
|
|
item77[] = {"",7,210,708.500000,-141.500000,716.500000,-133.500000,0.000000,""};
|
|
item78[] = {"",7,210,708.500000,446.000000,716.500000,454.000000,0.000000,""};
|
|
item79[] = {"next_task",4,218,-650.000000,425.000000,-550.000000,475.000000,5.000000,"next task"};
|
|
item80[] = {"",7,210,-929.000000,446.000000,-921.000000,454.000000,0.000000,""};
|
|
item81[] = {"",7,210,-929.000000,-604.000000,-921.000000,-596.000000,0.000000,""};
|
|
item82[] = {"call",4,218,103.990662,149.799805,193.990662,199.799805,5.000000,"call"};
|
|
link0[] = {0,3};
|
|
link1[] = {1,4};
|
|
link2[] = {2,33};
|
|
link3[] = {2,72};
|
|
link4[] = {2,74};
|
|
link5[] = {3,2};
|
|
link6[] = {4,7};
|
|
link7[] = {4,22};
|
|
link8[] = {5,34};
|
|
link9[] = {7,23};
|
|
link10[] = {8,11};
|
|
link11[] = {9,5};
|
|
link12[] = {9,10};
|
|
link13[] = {9,49};
|
|
link14[] = {10,8};
|
|
link15[] = {11,13};
|
|
link16[] = {12,14};
|
|
link17[] = {13,12};
|
|
link18[] = {13,19};
|
|
link19[] = {13,20};
|
|
link20[] = {13,21};
|
|
link21[] = {13,71};
|
|
link22[] = {14,15};
|
|
link23[] = {14,30};
|
|
link24[] = {14,31};
|
|
link25[] = {14,32};
|
|
link26[] = {14,76};
|
|
link27[] = {15,18};
|
|
link28[] = {16,1};
|
|
link29[] = {17,9};
|
|
link30[] = {18,17};
|
|
link31[] = {19,13};
|
|
link32[] = {20,13};
|
|
link33[] = {21,13};
|
|
link34[] = {22,25};
|
|
link35[] = {23,42};
|
|
link36[] = {23,58};
|
|
link37[] = {23,59};
|
|
link38[] = {23,60};
|
|
link39[] = {23,73};
|
|
link40[] = {24,47};
|
|
link41[] = {25,26};
|
|
link42[] = {25,27};
|
|
link43[] = {25,28};
|
|
link44[] = {25,29};
|
|
link45[] = {26,23};
|
|
link46[] = {27,25};
|
|
link47[] = {28,48};
|
|
link48[] = {29,25};
|
|
link49[] = {30,14};
|
|
link50[] = {31,14};
|
|
link51[] = {32,14};
|
|
link52[] = {33,16};
|
|
link53[] = {34,35};
|
|
link54[] = {34,36};
|
|
link55[] = {34,41};
|
|
link56[] = {34,82};
|
|
link57[] = {35,34};
|
|
link58[] = {36,34};
|
|
link59[] = {37,55};
|
|
link60[] = {38,37};
|
|
link61[] = {39,67};
|
|
link62[] = {40,6};
|
|
link63[] = {41,38};
|
|
link64[] = {42,43};
|
|
link65[] = {43,44};
|
|
link66[] = {43,46};
|
|
link67[] = {44,8};
|
|
link68[] = {45,47};
|
|
link69[] = {46,47};
|
|
link70[] = {47,24};
|
|
link71[] = {47,44};
|
|
link72[] = {47,45};
|
|
link73[] = {48,61};
|
|
link74[] = {48,62};
|
|
link75[] = {49,50};
|
|
link76[] = {50,37};
|
|
link77[] = {50,51};
|
|
link78[] = {50,52};
|
|
link79[] = {50,53};
|
|
link80[] = {50,54};
|
|
link81[] = {51,50};
|
|
link82[] = {52,50};
|
|
link83[] = {53,50};
|
|
link84[] = {54,50};
|
|
link85[] = {55,56};
|
|
link86[] = {55,57};
|
|
link87[] = {55,66};
|
|
link88[] = {55,69};
|
|
link89[] = {56,39};
|
|
link90[] = {57,55};
|
|
link91[] = {58,23};
|
|
link92[] = {59,23};
|
|
link93[] = {60,23};
|
|
link94[] = {61,48};
|
|
link95[] = {62,25};
|
|
link96[] = {63,64};
|
|
link97[] = {63,65};
|
|
link98[] = {64,4};
|
|
link99[] = {65,63};
|
|
link100[] = {66,55};
|
|
link101[] = {67,68};
|
|
link102[] = {68,40};
|
|
link103[] = {68,79};
|
|
link104[] = {69,55};
|
|
link105[] = {70,12};
|
|
link106[] = {71,70};
|
|
link107[] = {72,23};
|
|
link108[] = {73,68};
|
|
link109[] = {74,75};
|
|
link110[] = {75,33};
|
|
link111[] = {75,72};
|
|
link112[] = {76,77};
|
|
link113[] = {77,78};
|
|
link114[] = {78,55};
|
|
link115[] = {79,80};
|
|
link116[] = {80,81};
|
|
link117[] = {81,2};
|
|
link118[] = {82,34};
|
|
globals[] = {0.000000,0,0,0,0,640,480,1,402,6316128,1,-1036.249023,990.485596,688.632874,-753.906189,1242,884,1};
|
|
window[] = {2,-1,-1,-1,-1,642,365,1390,117,3,1260};
|
|
*//*%FSM</HEAD>*/
|
|
class FSM
|
|
{
|
|
fsmName = "task control client";
|
|
class States
|
|
{
|
|
/*%FSM<STATE "task_control">*/
|
|
class task_control
|
|
{
|
|
name = "task_control";
|
|
itemno = 0;
|
|
init = /*%FSM<STATEINIT""">*/"_plyr = player;" \n
|
|
"_taskName = _this select 0;" \n
|
|
"_unit = objNull;" \n
|
|
"_taskItem = objNull;" \n
|
|
"_taskID = 0;" \n
|
|
"_editorTest = false;" \n
|
|
"if(count _this > 1)then{" \n
|
|
"_editorTest = _this select 1;" \n
|
|
"};" \n
|
|
"if(count _this > 2)then{" \n
|
|
"_taskID = _this select 2;" \n
|
|
"};" \n
|
|
"if(count _this > 3)then{" \n
|
|
"_unit = _this select 3;" \n
|
|
"};" \n
|
|
"if(count _this >4)then{" \n
|
|
"_plyr = _this select 4;" \n
|
|
"};" \n
|
|
"_trgt = _plyr;" \n
|
|
"if(count _this > 5)then{" \n
|
|
"_trgt = _this select 5;" \n
|
|
"};" \n
|
|
"" \n
|
|
"//Common Vars" \n
|
|
"_plyrArr = [""Epoch_Man_Base_F"",""Epoch_Female_base_F""];" \n
|
|
"_config = 'inGameTasks' call EPOCH_returnConfig;" \n
|
|
"_scriptPath = getText ( _config >> ""file"");" \n
|
|
"_fsmPath = ""epoch_code\system"";" \n
|
|
"_filterBuilds = getArray ( _config >> ""filterBuilds"");" \n
|
|
"" \n
|
|
"//DECLARE" \n
|
|
"_taskCall = """";" \n
|
|
"" \n
|
|
"" \n
|
|
"" \n
|
|
""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 3;
|
|
priority = 0.000000;
|
|
to="setup";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "setup">*/
|
|
class setup
|
|
{
|
|
name = "setup";
|
|
itemno = 2;
|
|
init = /*%FSM<STATEINIT""">*/"" \n
|
|
"//_config = missionConfigFile;" \n
|
|
"" \n
|
|
"//Mission Control - WIP. TODO: Move to serverside mission control UINamespace not secure." \n
|
|
"//uiNameSpace setVariable [""axeTask"",_taskName];" \n
|
|
"_plyrVar = missionNamespace getVariable [""EPOCH_playerMissionArray"",[]];" \n
|
|
"_taskIndex = ((_plyrVar apply {_x find ""axeTask"" > -1;}) find true);" \n
|
|
"if(_taskIndex > -1)then{" \n
|
|
"_plyrVar deleteAt _taskIndex;" \n
|
|
"};" \n
|
|
"_plyrVar pushBack [""axeTask"",_taskName];" \n
|
|
"missionNamespace setVariable [""EPOCH_playerMissionArray"",_plyrVar];" \n
|
|
"" \n
|
|
"missionNameSpace setVariable [""axeTask"",_taskName];" \n
|
|
"" \n
|
|
"//Built in Vars" \n
|
|
"_startTime = diag_tickTime;" \n
|
|
"EPOCH_task_startTime = _startTime;" \n
|
|
"EPOCH_taskLastLoop = EPOCH_task_startTime;" \n
|
|
"EPOCH_taskItem = objNull;" \n
|
|
"if(isNil ""EPOCH_taskMarkerName"")then{EPOCH_taskMarkerName = """";};" \n
|
|
"" \n
|
|
"//Task Vars from Config with relevant local vars" \n
|
|
"//TODO - Move relevant ones into FSM so only called if required." \n
|
|
"_taskTitle = getText ( _config >> _taskName >> ""title"");" \n
|
|
"EPOCH_taskTitle = _taskTitle;" \n
|
|
"_taskDesc = getText ( _config >> _taskName >> ""desc"");" \n
|
|
"_taskImg = getText ( _config >> _taskName >> ""img"");" \n
|
|
"_taskSimple = getNumber ( _config >> _taskName >> ""simpleTask"");" \n
|
|
"_taskDelay = getNumber ( _config >> _taskName >> ""triggerDelay"");" \n
|
|
"_taskTrigger = getText ( _config >> _taskName >> ""triggerCondition"");" \n
|
|
"_taskFSM = getText ( _config >> _taskName >> ""initfsm"");" \n
|
|
"_taskSQF = getText ( _config >> _taskName >> ""initsqf"");" \n
|
|
"_taskCall = getText ( _config >> _taskName >> ""initcall"");" \n
|
|
"_binTask = getNumber ( _config >> _taskName >> ""callEventBinTask"");" \n
|
|
"_taskEventCond1 = compile getText ( _config >> _taskName >> ""callEventCondition1"");" \n
|
|
"_taskEventCond2 = compile getText ( _config >> _taskName >> ""callEventCondition2"");" \n
|
|
"_taskEventCond3 = compile getText ( _config >> _taskName >> ""callEventCondition3"");" \n
|
|
"_taskEventSQF1 = getText ( _config >> _taskName >> ""callEventSQF1"");" \n
|
|
"_taskEventSQF2 = getText ( _config >> _taskName >> ""callEventSQF2"");" \n
|
|
"_taskEventSQF3 = getText ( _config >> _taskName >> ""callEventSQF3"");" \n
|
|
"_taskEventFSM1 = getText ( _config >> _taskName >> ""callEventFSM1"");" \n
|
|
"_taskEventFSM2 = getText ( _config >> _taskName >> ""callEventFSM2"");" \n
|
|
"_taskEventFSM3 = getText ( _config >> _taskName >> ""callEventFSM3"");" \n
|
|
"_taskEventCALL1 = compile getText ( _config >> _taskName >> ""callEventCALL1"");" \n
|
|
"_taskEventCALL2 = compile getText ( _config >> _taskName >> ""callEventCALL2"");" \n
|
|
"_taskEventCALL3 = compile getText ( _config >> _taskName >> ""callEventCALL3"");" \n
|
|
"_taskEventTask1 = getText ( _config >> _taskName >> ""callEventTask1"");" \n
|
|
"_taskEventTask2 = getText ( _config >> _taskName >> ""callEventTask2"");" \n
|
|
"_taskEventTask3 = getText ( _config >> _taskName >> ""callEventTask3"");" \n
|
|
"_event1Done = false;" \n
|
|
"_event2Done = false;" \n
|
|
"_event3Done = false;" \n
|
|
"_taskItems = getArray ( _config >> _taskName >> ""items"");" \n
|
|
"_taskItemSpawn = getNumber ( _config >> _taskName >> ""itemSpawn"");" \n
|
|
"_taskMarkerType = getNumber ( _config >> _taskName >> ""markerType"");" \n
|
|
"_taskMarkerRad = getNumber ( _config >> _taskName >> ""markerRadius"");" \n
|
|
"_taskMarkerText = getText ( _config >> _taskName >> ""markerText"");" \n
|
|
"_taskMarkerVis = getNumber ( _config >> _taskName >> ""markerVisible"");" \n
|
|
"_taskDiagSquelch = getNumber ( _config >> _taskName >> ""diagSquelch"");" \n
|
|
"_lastChat = diag_tickTime;" \n
|
|
"_taskDiagCond1 = compile getText ( _config >> _taskName >> ""diag1Condition"");" \n
|
|
"_taskDiagCond2 = compile getText ( _config >> _taskName >> ""diag2Condition"");" \n
|
|
"_taskDiagCond3 = compile getText ( _config >> _taskName >> ""diag3Condition"");" \n
|
|
"_taskDiag1 = getArray ( _config >> _taskName >> ""dialogue1"");" \n
|
|
"_taskDiag2 = getArray ( _config >> _taskName >> ""dialogue2"");" \n
|
|
"_taskDiag3 = getArray ( _config >> _taskName >> ""dialogue3"");" \n
|
|
"_chat1Done = false;" \n
|
|
"_chat2Done = false;" \n
|
|
"_chat3Done = false;" \n
|
|
"" \n
|
|
"//Failed" \n
|
|
"_taskFailedCond = compile getText ( _config >> _taskName >> ""failedCondition"");" \n
|
|
"_taskFailDist = getNumber ( _config >> _taskName >> ""abandonDist"");" \n
|
|
"if(_taskFailDist < 1)then{_taskFailDist=999999;};" \n
|
|
"_taskFailTime = getNumber ( _config >> _taskName >> ""abandonTime"");" \n
|
|
"if(_taskFailTime < 1)then{_taskFailTime=999999;};" \n
|
|
"_taskFailed = false;" \n
|
|
"//Failed Calls and Diag done in task failed." \n
|
|
"_taskFailedCall = compile """";" \n
|
|
"" \n
|
|
"//Completed" \n
|
|
"_taskCompleteCond = compile getText ( _config >> _taskName >> ""completeCondition"");" \n
|
|
"_taskReward = getArray ( _config >> _taskName >> ""reward"");" \n
|
|
"_taskCompleteDiag1 = getArray ( _config >> _taskName >> ""completed1"");" \n
|
|
"_taskCompleteDiag2 = getArray ( _config >> _taskName >> ""completed2"");" \n
|
|
"_taskCompleteCall = compile getText ( _config >> _taskName >> ""completedCALL"");" \n
|
|
"_diag1Done = false;" \n
|
|
"_diag2Done = false;" \n
|
|
"_taskReminder = getArray ( _config >> _taskName >> ""reminder"");" \n
|
|
"_taskCheckTime = getNumber ( _config >> _taskName >> ""taskCheckTime"");" \n
|
|
"" \n
|
|
"" \n
|
|
"_taskNextTrigger = getArray ( _config >> _taskName >> ""nextTask"");" \n
|
|
"_taskCleanup = getNumber ( _config >> _taskName >> ""cleanUp"");" \n
|
|
"_missionCleanUp = getArray ( _config >> _taskName >> ""cleanUpCalls"");" \n
|
|
"" \n
|
|
"_completed = false;" \n
|
|
"" \n
|
|
"//Custom Vars" \n
|
|
"_customVars = [];" \n
|
|
"_varNames = getArray ( _config >> ""varName"");" \n
|
|
"_varDatas = getArray ( _config >> ""varData"");" \n
|
|
"_serverCmd = [];" \n
|
|
"_doSkip = false;" \n
|
|
"_taskFailed = false;" \n
|
|
"_doBin = false;" \n
|
|
"" \n
|
|
"if(count _varNames > 0)then{" \n
|
|
"" \n
|
|
"{" \n
|
|
"call compile format [""missionNamespace setVariable%3""""%1"""", %2%4;"",parseText _x,_varDatas select _forEachIndex,parseText ""["",parseText ""]""];" \n
|
|
"//systemChat format [""%1 = %2"",parseText (_x),(_varDatas select _forEachIndex)];" \n
|
|
"//_customVars pushBack (_varDatas select _forEachIndex);" \n
|
|
"}forEach _varNames;" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"//Functions" \n
|
|
"_execFSM = {" \n
|
|
"//systemChat format[""execing FSM %1"",_this];" \n
|
|
"call compile format [""[_taskName,_plyr,_unit,_taskItem] execFSM """"%1"""""",_this];" \n
|
|
"};" \n
|
|
"" \n
|
|
"_execSQF = {" \n
|
|
"//systemChat format[""execing SQF %1"",_this];" \n
|
|
"call compile format [""[_taskName,_plyr,_unit,_taskItem] execVM """"%1"""""",_this];" \n
|
|
"};" \n
|
|
"" \n
|
|
"_spawnWH = {" \n
|
|
"_retTaskWH = objNull;" \n
|
|
"_retTaskWH = createVehicle[""GroundWeaponHolder"",_this select 0,[],0,""CAN_COLLIDE""];" \n
|
|
"_retTaskWH" \n
|
|
"};" \n
|
|
"" \n
|
|
"//SystemChat format [""INIT: %1"",_taskTitle];" \n
|
|
"_debugDo = ""INIT"";" \n
|
|
"_showDebug = {" \n
|
|
"//hint format [""%4\n%1\nStage: %2\nMsg: %3\nTask: %4"", _debugDo,_missionStage,_msg1,_missionName,_taskTitle];" \n
|
|
"};"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "run_test">*/
|
|
class run_test
|
|
{
|
|
itemno = 74;
|
|
priority = 20.000000;
|
|
to="override_for_task";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_editorTest"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "simple_task">*/
|
|
class simple_task
|
|
{
|
|
itemno = 72;
|
|
priority = 10.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskSimple > 0;"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_doSkip = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 33;
|
|
priority = 0.000000;
|
|
to="comms";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "items_and_vars">*/
|
|
class items_and_vars
|
|
{
|
|
name = "items_and_vars";
|
|
itemno = 4;
|
|
init = /*%FSM<STATEINIT""">*/"//SystemChat format [""START: Do Spawn: %1"",_taskItemSpawn];" \n
|
|
"_taskStartPos = getPosATL _plyr;" \n
|
|
"_startTime = diag_tickTime;"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "item_spawn">*/
|
|
class item_spawn
|
|
{
|
|
itemno = 22;
|
|
priority = 5.000000;
|
|
to="spawn_item";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskItemSpawn > 0 && count _taskItems > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskItem = objNull;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "no_item_spawn">*/
|
|
class no_item_spawn
|
|
{
|
|
itemno = 7;
|
|
priority = 0.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskItemSpawn < 1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "end">*/
|
|
class end
|
|
{
|
|
name = "end";
|
|
itemno = 6;
|
|
init = /*%FSM<STATEINIT""">*/"//uiNameSpace setVariable [""axeTask"",nil];" \n
|
|
"if!(_doBin)then{" \n
|
|
"_plyrVar = missionNamespace getVariable [""EPOCH_playerMissionArray"",[]];" \n
|
|
"_taskIndex = ((_plyrVar apply {_x find ""axeTask"" > -1;}) find true);" \n
|
|
"if(_taskIndex > -1)then{" \n
|
|
"_plyrVar deleteAt _taskIndex;" \n
|
|
"};" \n
|
|
"missionNamespace setVariable [""EPOCH_playerMissionArray"",_plyrVar];" \n
|
|
"};" \n
|
|
"if(count _missionCleanUp > 0)then{" \n
|
|
"{" \n
|
|
"call compile _x;" \n
|
|
"} forEach _missionCleanUp;" \n
|
|
"};" \n
|
|
"_debugDo = ""DISPOSE"";" \n
|
|
"diag_log format [""Task Failed: %1"",_taskName];"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "do_monitor">*/
|
|
class do_monitor
|
|
{
|
|
name = "do_monitor";
|
|
itemno = 8;
|
|
init = /*%FSM<STATEINIT""">*/"_lastLoop = diag_tickTime;" \n
|
|
"EPOCH_taskLastLoop = _lastLoop;" \n
|
|
"_plyPos = getPosATL _plyr;"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 11;
|
|
priority = 0.000000;
|
|
to="chat_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "next">*/
|
|
class next
|
|
{
|
|
name = "next";
|
|
itemno = 9;
|
|
init = /*%FSM<STATEINIT""">*/"//Clean Up / Other Options here"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "task_completed">*/
|
|
class task_completed
|
|
{
|
|
itemno = 5;
|
|
priority = 15.000000;
|
|
to="completed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_completed && diag_tickTime - _lastLoop > _taskCheckTime"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_lastLoop = diag_tickTime;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "task_failed">*/
|
|
class task_failed
|
|
{
|
|
itemno = 49;
|
|
priority = 10.000000;
|
|
to="failed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskFailed"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskFailedDiag = [];" \n
|
|
"_taskFailedFSM = """";" \n
|
|
"_taskFailedSQF = """";" \n
|
|
"_taskFailedCall = compile """";" \n
|
|
"" \n
|
|
"if!(_editorTest)then{" \n
|
|
"_taskFailedDiag = getArray ( _config >> _taskName >> ""failed"");" \n
|
|
"_taskFailedFSM = getText ( _config >> _taskName >> ""failedFSM"");" \n
|
|
"_taskFailedSQF = getText ( _config >> _taskName >> ""failedSQF"");" \n
|
|
"_taskFailedCall = compile getText ( _config >> _taskName >> ""failedCall"");" \n
|
|
"_nextTask = getArray ( _config >> _taskName >> ""failedTask"");" \n
|
|
"}else{" \n
|
|
"_taskFailedDiag = parseText axeValCacheList select 41;" \n
|
|
"_taskFailedFSM = axeValCacheList select 42;" \n
|
|
"_taskFailedSQF = axeValCacheList select 43;" \n
|
|
"_taskFailedCall = axeValCacheList select 44;" \n
|
|
"_nextTask = parseText axeValCacheList select 45;" \n
|
|
"};" \n
|
|
"" \n
|
|
"_taskReminder = [];"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "loop">*/
|
|
class loop
|
|
{
|
|
itemno = 10;
|
|
priority = 5.000000;
|
|
to="do_monitor";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"((!_completed) || (!_taskFailed)) && diag_tickTime - _lastLoop > _taskCheckTime"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "chat_conditions">*/
|
|
class chat_conditions
|
|
{
|
|
name = "chat_conditions";
|
|
itemno = 13;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "chat_3">*/
|
|
class chat_3
|
|
{
|
|
itemno = 21;
|
|
priority = 15.000000;
|
|
to="chat_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"diag_tickTime - _lastChat > _taskDiagSquelch && call _taskDiagCond3 && count _taskDiag3 > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskDiag3;" \n
|
|
"" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"" \n
|
|
"" \n
|
|
"_chat3Done = true;" \n
|
|
"_lastChat = diag_tickTime;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "chat_2">*/
|
|
class chat_2
|
|
{
|
|
itemno = 20;
|
|
priority = 10.000000;
|
|
to="chat_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"diag_tickTime - _lastChat > _taskDiagSquelch && call _taskDiagCond2 && count _taskDiag2 > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskDiag2;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_chat2Done = true;" \n
|
|
"_lastChat = diag_tickTime;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "server">*/
|
|
class server
|
|
{
|
|
itemno = 71;
|
|
priority = 10.000000;
|
|
to="comms_2";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"count _serverCmd > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "chat_1">*/
|
|
class chat_1
|
|
{
|
|
itemno = 19;
|
|
priority = 5.000000;
|
|
to="chat_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"(!_chat1Done) && call _taskDiagCond1 && count _taskDiag1 > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskDiag1;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_chat1Done = true;" \n
|
|
"_lastChat = diag_tickTime;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 12;
|
|
priority = 0.000000;
|
|
to="event_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "event_conditions">*/
|
|
class event_conditions
|
|
{
|
|
name = "event_conditions";
|
|
itemno = 14;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "event_3">*/
|
|
class event_3
|
|
{
|
|
itemno = 32;
|
|
priority = 20.000000;
|
|
to="event_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"(!_event3Done) && call _taskEventCond3"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"if!(_taskEventFSM3 == """")then{" \n
|
|
"_taskEventFSM3 call _execFSM;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventSQF3 == """")then{" \n
|
|
"_taskEventSQF3 call _execSQF;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(str(_taskEventCALL3) == ""{}"")then{" \n
|
|
"call _taskEventCALL3;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventTask3 == """")then{" \n
|
|
"call compile format[""epochTaskHandle = [""""%2""""] execFSM """"%1\task_control.fsm"""";"",_fsmPath,_taskEventTask3];" \n
|
|
"" \n
|
|
"if(_binTask > 0)then{" \n
|
|
"_doBin = true;" \n
|
|
"};" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"_event3Done = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "event_2">*/
|
|
class event_2
|
|
{
|
|
itemno = 31;
|
|
priority = 15.000000;
|
|
to="event_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"(!_event2Done) && call _taskEventCond2"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"if!(_taskEventFSM2 == """")then{" \n
|
|
"_taskEventFSM2 call _execFSM;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventSQF2 == """")then{" \n
|
|
"_taskEventSQF2 call _execSQF;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(str(_taskEventCALL2) == ""{}"")then{" \n
|
|
"call _taskEventCALL2;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventTask2 == """")then{" \n
|
|
"call compile format[""epochTaskHandle = [""""%2""""] execFSM """"%1\task_control.fsm"""";"",_fsmPath,_taskEventTask2];" \n
|
|
"" \n
|
|
"if(_binTask > 0)then{" \n
|
|
"_doBin = true;" \n
|
|
"};" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"_event2Done = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "event_1">*/
|
|
class event_1
|
|
{
|
|
itemno = 30;
|
|
priority = 10.000000;
|
|
to="event_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"(!_event1Done) && call _taskEventCond1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"if!(_taskEventFSM1 == """")then{" \n
|
|
"_taskEventFSM1 call _execFSM;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventSQF1 == """")then{" \n
|
|
"_taskEventSQF1 call _execSQF;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(str(_taskEventCALL1) == ""{}"")then{" \n
|
|
"call _taskEventCALL1;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(_taskEventTask1 == """")then{" \n
|
|
"//TODO: Allow new separate mission from here." \n
|
|
"call compile format[""epochTaskHandle = [""""%2""""] execFSM """"%1\task_control.fsm"""";"",_fsmPath,_taskEventTask1];" \n
|
|
"" \n
|
|
"if(_binTask > 0)then{" \n
|
|
"_doBin = true;" \n
|
|
"};" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"_event1Done = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "bin_it">*/
|
|
class bin_it
|
|
{
|
|
itemno = 76;
|
|
priority = 5.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_doBin"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 15;
|
|
priority = 0.000000;
|
|
to="task_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "comms">*/
|
|
class comms
|
|
{
|
|
name = "comms";
|
|
itemno = 16;
|
|
init = /*%FSM<STATEINIT""">*/"//[_plyr,0,_taskID] remoteExec [""EPOCH_Server_missionComms"",3];"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "delay">*/
|
|
class delay
|
|
{
|
|
itemno = 1;
|
|
priority = 0.000000;
|
|
to="items_and_vars";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"diag_tickTime > _startTime + _taskDelay"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "task_conditions">*/
|
|
class task_conditions
|
|
{
|
|
name = "task_conditions";
|
|
itemno = 18;
|
|
init = /*%FSM<STATEINIT""">*/"if((_plyPos distance _taskStartPos > _taskFailDist) || (diag_tickTIme - _startTime > _taskFailTime) || (call _taskFailedCond))then{" \n
|
|
"_taskFailed = true;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if(call _taskCompleteCond)then{" \n
|
|
"_completed = true;" \n
|
|
"};"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 17;
|
|
priority = 0.000000;
|
|
to="next";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "actions">*/
|
|
class actions
|
|
{
|
|
name = "actions";
|
|
itemno = 23;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "call">*/
|
|
class call
|
|
{
|
|
itemno = 60;
|
|
priority = 20.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskCall == """")" \n
|
|
"//USE isNill NOT == """""/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"call compile _taskCall;" \n
|
|
"_taskCall = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "fsm">*/
|
|
class fsm
|
|
{
|
|
itemno = 58;
|
|
priority = 15.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskFSM == """")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskFSM call _execFSM;" \n
|
|
"_taskFSM = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "sqf">*/
|
|
class sqf
|
|
{
|
|
itemno = 59;
|
|
priority = 10.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskSQF == """")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"systemChat ""SQF NOT NIL"";" \n
|
|
"_taskSQF call _execSQF;" \n
|
|
"_taskSQF = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "skip">*/
|
|
class skip
|
|
{
|
|
itemno = 73;
|
|
priority = 5.000000;
|
|
to="next_task";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_doSkip"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 42;
|
|
priority = 0.000000;
|
|
to="markers";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "spawn_item">*/
|
|
class spawn_item
|
|
{
|
|
name = "spawn_item";
|
|
itemno = 25;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "near_player">*/
|
|
class near_player
|
|
{
|
|
itemno = 29;
|
|
priority = 15.000000;
|
|
to="spawn_item";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskItemSpawn == 3"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_pos = getPosATL player;" \n
|
|
"_taskItem = [_pos] call _spawnWH;" \n
|
|
"_taskItemSpawn = -1;" \n
|
|
""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "in_house">*/
|
|
class in_house
|
|
{
|
|
itemno = 27;
|
|
priority = 10.000000;
|
|
to="spawn_item";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskItemSpawn == 1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_nrBuilds = nearestObjects [_plyr,[""house""],50];" \n
|
|
"_arrGarr = [];" \n
|
|
"_bldMap = [];" \n
|
|
"_pos = getPosATL _plyr;" \n
|
|
"" \n
|
|
"{" \n
|
|
"" \n
|
|
"if(!((typeOf _x) in _filterBuilds))then{" \n
|
|
"" \n
|
|
" _garrCount = 0;" \n
|
|
"" \n
|
|
" while {format [""%1"", _x buildingPos (_garrCount)] != ""[0,0,0]"" } do {" \n
|
|
" _garrCount = _garrCount + 1;" \n
|
|
" };" \n
|
|
"" \n
|
|
" if(_garrCount > 0)then{" \n
|
|
" _arrGarr pushBack [_x,_garrCount];" \n
|
|
" };" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"}forEach _nrBuilds;" \n
|
|
"" \n
|
|
"if(count _arrGarr > 0)then{" \n
|
|
"" \n
|
|
" {" \n
|
|
" _garrPos = (_x select 0) buildingPos (floor random (_x select 1));" \n
|
|
" _bldMap pushBack _garrPos;" \n
|
|
"" \n
|
|
" }forEach _arrGarr;" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"if(count _bldMap > 0)then{" \n
|
|
"_pos = _bldMap select (floor random (count _bldMap));" \n
|
|
"};" \n
|
|
"" \n
|
|
"" \n
|
|
"//_taskItem = createVehicle[""WeaponHolderSimulated"",_pos,[],0,""CAN_COLLIDE""];" \n
|
|
"_taskItem = [_pos] call _spawnWH;" \n
|
|
"" \n
|
|
"" \n
|
|
"_taskItemSpawn = -1;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "hidden_nearby">*/
|
|
class hidden_nearby
|
|
{
|
|
itemno = 28;
|
|
priority = 5.000000;
|
|
to="find_spot";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskItemSpawn == 2"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskItemSpawn = -1;" \n
|
|
"_posSafe = false;" \n
|
|
"_done = false;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "ready">*/
|
|
class ready
|
|
{
|
|
itemno = 26;
|
|
priority = 0.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!isNull _taskItem"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"[player,Epoch_personalToken,_taskItems,[],_taskItem,false] remoteExec [""EPOCH_Server_createObject"",2];" \n
|
|
"EPOCH_taskItem = _taskItem;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "completed">*/
|
|
class completed
|
|
{
|
|
name = "completed";
|
|
itemno = 34;
|
|
init = /*%FSM<STATEINIT""">*/"//Put more checks in for empty dialogue array so as not just waiting a set time"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "diag_1">*/
|
|
class diag_1
|
|
{
|
|
itemno = 35;
|
|
priority = 15.000000;
|
|
to="completed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!_diag1Done && count _taskCompleteDiag1 > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskCompleteDiag1;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_diag1Done = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "diag_2">*/
|
|
class diag_2
|
|
{
|
|
itemno = 36;
|
|
priority = 10.000000;
|
|
to="completed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_diag1Done && (!_diag2Done) && diag_tickTime - _lastLoop > 20 && count _taskCompleteDiag2 > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskCompleteDiag2;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_diag2Done = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "call">*/
|
|
class call
|
|
{
|
|
itemno = 82;
|
|
priority = 5.000000;
|
|
to="completed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(str(_taskCompleteCall) == ""{}"")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"call _taskCompleteCall;" \n
|
|
"_taskCompleteCall = compile """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 41;
|
|
priority = 0.000000;
|
|
to="reward";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "reward">*/
|
|
class reward
|
|
{
|
|
name = "reward";
|
|
itemno = 38;
|
|
init = /*%FSM<STATEINIT""">*/"if(count _taskReward > 0)then{" \n
|
|
"" \n
|
|
"diag_log format [""spawn reward: %1"",_taskReward];" \n
|
|
"" \n
|
|
"_rewardHolder = [getPosATL player] call _spawnWH;" \n
|
|
"" \n
|
|
"[player,Epoch_personalToken,_taskReward,[],_rewardHolder,false] remoteExec [""EPOCH_Server_createObject"",2];" \n
|
|
"" \n
|
|
"};" \n
|
|
"" \n
|
|
"_debugDo = ""REWARD"";"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "pause">*/
|
|
class pause
|
|
{
|
|
itemno = 37;
|
|
priority = 0.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"diag_tickTime - _lastLoop > _taskCheckTime"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "comms_1">*/
|
|
class comms_1
|
|
{
|
|
name = "comms_1";
|
|
itemno = 39;
|
|
init = /*%FSM<STATEINIT""">*/"//[_plyr,1,_taskID] remoteExec [""EPOCH_Server_missionComms"",3];"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 67;
|
|
priority = 0.000000;
|
|
to="next_task";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "markers">*/
|
|
class markers
|
|
{
|
|
name = "markers";
|
|
itemno = 43;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "continue">*/
|
|
class continue
|
|
{
|
|
itemno = 44;
|
|
priority = 100.000000;
|
|
to="do_monitor";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"//no marker" \n
|
|
"_taskMarkerType < 1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "marker_pos">*/
|
|
class marker_pos
|
|
{
|
|
itemno = 46;
|
|
priority = 0.000000;
|
|
to="do_markers";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskMarkerType > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_markerPos = [];" \n
|
|
"if(isNil ""EPOCH_taskMarkerPos"")then{" \n
|
|
"if!(isNull _trgt)then{" \n
|
|
"_markerPos = getPos _trgt;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(isNull _unit)then{" \n
|
|
"_markerPos = getPos _unit;" \n
|
|
"};" \n
|
|
"" \n
|
|
"if!(isNull _taskItem)then{" \n
|
|
"_markerPos = getPos _taskItem;" \n
|
|
"};" \n
|
|
"" \n
|
|
"}else{" \n
|
|
"_markerPos = EPOCH_taskMarkerPos;" \n
|
|
"};" \n
|
|
"" \n
|
|
"_mkrName = format[""EPOCHTaskMark%1%2"", _taskName,diag_tickTime];" \n
|
|
"EPOCH_taskMarkerName = _mkrName;" \n
|
|
"_markerText = getText ( _config >> _taskName >> ""markerText"");" \n
|
|
"_markerRad = getNumber ( _config >> _taskName >> ""markerRadius"");" \n
|
|
"" \n
|
|
"if(_taskMarkerType == 2)then{" \n
|
|
"_markerPos set [0, (_markerPos select 0) + (floor (random _markerRad) - (_markerRad / 2))];" \n
|
|
"_markerPos set [1, (_markerPos select 1) + (floor (random _markerRad) - (_markerRad / 2))];" \n
|
|
"};" \n
|
|
"" \n
|
|
"" \n
|
|
""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "do_markers">*/
|
|
class do_markers
|
|
{
|
|
name = "do_markers";
|
|
itemno = 47;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "continue">*/
|
|
class continue
|
|
{
|
|
itemno = 44;
|
|
priority = 100.000000;
|
|
to="do_monitor";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"//no marker" \n
|
|
"_taskMarkerType < 1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "radius">*/
|
|
class radius
|
|
{
|
|
itemno = 45;
|
|
priority = 0.000000;
|
|
to="do_markers";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskMarkerType == 2"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"[[_taskMarkerVis,player],_markerPos,""ELLIPSE"",""mil_dot"",_markerText,""ColorYellow"",[_taskMarkerRad,_taskMarkerRad], ""SolidBorder"", 42, 0.6,_taskTitle] remoteExec [""EPOCH_server_makeMarker"",2];" \n
|
|
"_taskMarkerType = -1;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "point">*/
|
|
class point
|
|
{
|
|
itemno = 24;
|
|
priority = 0.000000;
|
|
to="do_markers";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskMarkerType == 1"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"[[_taskMarkerVis,player],_markerPos,""ICON"",""mil_dot"",_markerText,""ColorYellow"",[0.8,0.8], ""SolidBorder"", 42, 0.6,_taskTitle] remoteExec [""EPOCH_server_makeMarker"",2];" \n
|
|
"_taskMarkerType = -1;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "find_spot">*/
|
|
class find_spot
|
|
{
|
|
name = "find_spot";
|
|
itemno = 48;
|
|
init = /*%FSM<STATEINIT""">*/"//TODO: try catch used incorrectly here" \n
|
|
"try{" \n
|
|
"_pos = [(getPosATL _plyr), (floor (random 80) + 42), floor random 360] call BIS_fnc_relPos;" \n
|
|
"" \n
|
|
"if (!lineIntersects [eyePos _plyr, _pos, _plyr, _unit]) then {_posSafe = true;};" \n
|
|
"" \n
|
|
"if(_posSafe)then{" \n
|
|
"//_taskItem = createVehicle[""GroundWeaponHolder"",_pos,[],0,""CAN_COLLIDE""];" \n
|
|
"_taskItem = [_pos] call _spawnWH;" \n
|
|
"_taskItemSpawn = -1;" \n
|
|
"_done = true;" \n
|
|
"};" \n
|
|
"" \n
|
|
"}catch{" \n
|
|
"systemchat format[""CATCH:%1"",_exception];" \n
|
|
"done = true;" \n
|
|
"_taskItemSpawn = 1;" \n
|
|
"};"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "not_hidden">*/
|
|
class not_hidden
|
|
{
|
|
itemno = 61;
|
|
priority = 10.000000;
|
|
to="find_spot";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!_posSafe;"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "is_hidden">*/
|
|
class is_hidden
|
|
{
|
|
itemno = 62;
|
|
priority = 5.000000;
|
|
to="spawn_item";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_done;"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "failed">*/
|
|
class failed
|
|
{
|
|
name = "failed";
|
|
itemno = 50;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "call">*/
|
|
class call
|
|
{
|
|
itemno = 54;
|
|
priority = 20.000000;
|
|
to="failed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(str(_taskFailedCall) == ""{}"")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"call _taskFailedCall;" \n
|
|
"_taskFailedCall = compile """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "sqf">*/
|
|
class sqf
|
|
{
|
|
itemno = 53;
|
|
priority = 15.000000;
|
|
to="failed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskFailedSQF == """")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskFailedSQF call _execSQF;" \n
|
|
"_taskFailedSQF = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "fsm">*/
|
|
class fsm
|
|
{
|
|
itemno = 52;
|
|
priority = 10.000000;
|
|
to="failed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskFailedFSM == """")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskFailedFSM call _execFSM;" \n
|
|
"_taskFailedFSM = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "diag">*/
|
|
class diag
|
|
{
|
|
itemno = 51;
|
|
priority = 5.000000;
|
|
to="failed";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"count _taskFailedDiag > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskFailedDiag;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_taskFailedDiag = [];"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "pause">*/
|
|
class pause
|
|
{
|
|
itemno = 37;
|
|
priority = 0.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"diag_tickTime - _lastLoop > _taskCheckTime"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "clean_up">*/
|
|
class clean_up
|
|
{
|
|
name = "clean_up";
|
|
itemno = 55;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "clean_up">*/
|
|
class clean_up
|
|
{
|
|
itemno = 69;
|
|
priority = 15.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskCleanup > 0"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"//deleteVehicle _taskItem;" \n
|
|
"//[_plyr,0,_taskID,_taskItem] remoteExec [""EPOCH_Server_missionComms"",3];" \n
|
|
"_taskCleanup = -1;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "remind_dialogue">*/
|
|
class remind_dialogue
|
|
{
|
|
itemno = 66;
|
|
priority = 10.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"count _taskReminder > 0 && !_taskFailed"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_diag = selectRandom _taskReminder;" \n
|
|
"[format [""%1"",_diag], 5] call Epoch_message;" \n
|
|
"_taskReminder = [];"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "markers">*/
|
|
class markers
|
|
{
|
|
itemno = 57;
|
|
priority = 5.000000;
|
|
to="clean_up";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(isNil ""EPOCH_taskMarkerName"") && (_taskCleanup > 0 || _taskFailed)"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"[player,_taskMarkerVis,EPOCH_taskMarkerName] remoteExec [""EPOCH_server_removeMarker"",2];" \n
|
|
"_mkrName = nil;" \n
|
|
"EPOCH_taskMarkerName = nil;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 56;
|
|
priority = 0.000000;
|
|
to="comms_1";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "gui">*/
|
|
class gui
|
|
{
|
|
name = "gui";
|
|
itemno = 63;
|
|
init = /*%FSM<STATEINIT""">*/"//GUI dialogue Options for Raymix :)"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "no_dialogoue">*/
|
|
class no_dialogoue
|
|
{
|
|
itemno = 64;
|
|
priority = 10.000000;
|
|
to="items_and_vars";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskTitle == """""/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "dialogue">*/
|
|
class dialogue
|
|
{
|
|
itemno = 65;
|
|
priority = 5.000000;
|
|
to="gui";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"!(_taskTitle == """")"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"" \n
|
|
"axeTaskTitle = _taskTitle;" \n
|
|
"axeTaskDesc = _taskDesc;" \n
|
|
"axeTaskImg = _taskImg;" \n
|
|
"createDialog ""taskAccept"";" \n
|
|
"" \n
|
|
"_taskTitle = """";"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "next_task">*/
|
|
class next_task
|
|
{
|
|
name = "next_task";
|
|
itemno = 68;
|
|
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "mission_complete">*/
|
|
class mission_complete
|
|
{
|
|
itemno = 40;
|
|
priority = 10.000000;
|
|
to="end";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"count _taskNextTrigger < 1 || !alive _plyr || _taskFailed || _doBin"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "next_task">*/
|
|
class next_task
|
|
{
|
|
itemno = 79;
|
|
priority = 5.000000;
|
|
to="setup";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"count _taskNextTrigger > 0 && !_taskFailed"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_taskName = selectRandom _taskNextTrigger;" \n
|
|
"diag_log format [""Trigger Next Task: %1"",_taskName];" \n
|
|
"_taskNextTrigger = [];"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "comms_2">*/
|
|
class comms_2
|
|
{
|
|
name = "comms_2";
|
|
itemno = 70;
|
|
init = /*%FSM<STATEINIT""">*/"" \n
|
|
"systemChat format [""SERVER CMD: %1"",_serverCmd];" \n
|
|
"" \n
|
|
"_serverCmd = [];"/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 12;
|
|
priority = 0.000000;
|
|
to="event_conditions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
/*%FSM<STATE "override_for_task">*/
|
|
class override_for_task
|
|
{
|
|
name = "override_for_task";
|
|
itemno = 75;
|
|
init = /*%FSM<STATEINIT""">*/"_taskAuthor = axeValCacheList select 0;" \n
|
|
"_taskTitle = axeValCacheList select 1;" \n
|
|
"_taskSimple = parseNumber (axeValCacheList select 2);" \n
|
|
"_taskDesc = ""Test Task"";" \n
|
|
"_taskImg = ""NOIMG"";" \n
|
|
"_taskTrigger = axeValCacheList select 3;" \n
|
|
"_taskLimit = parseNumber (axeValCacheList select 4);" \n
|
|
"_taskCheckTime = parseNumber (axeValCacheList select 5);" \n
|
|
"_taskDelay = parseNumber (axeValCacheList select 6);" \n
|
|
"_taskItems = parseText axeValCacheList select 7;" \n
|
|
"_taskItemSpawn = parseNumber (axeValCacheList select 8);" \n
|
|
"_taskMarkerType = parseNumber (axeValCacheList select 9);" \n
|
|
"_taskMarkerRad = parseNumber (axeValCacheList select 10);" \n
|
|
"_taskMarkerText = axeValCacheList select 11;" \n
|
|
"_taskFSM = axeValCacheList select 12;" \n
|
|
"_taskSQF = axeValCacheList select 13;" \n
|
|
"_taskCall = axeValCacheList select 14;" \n
|
|
"_binTask = parseNumber (axeValCacheList select 15);" \n
|
|
"_taskEventCond1 = axeValCacheList select 16;" \n
|
|
"_taskEventCond2 = axeValCacheList select 17;" \n
|
|
"_taskEventCond3 = axeValCacheList select 18;" \n
|
|
"_taskEventCALL1 = axeValCacheList select 19;" \n
|
|
"_taskEventFSM1 = axeValCacheList select 20;" \n
|
|
"_taskEventSQF1 = axeValCacheList select 21;" \n
|
|
"_taskEventTask1 = axeValCacheList select 22;" \n
|
|
"_taskEventCALL2 = axeValCacheList select 23;" \n
|
|
"_taskEventFSM2 = axeValCacheList select 24;" \n
|
|
"_taskEventSQF2 = axeValCacheList select 25;" \n
|
|
"_taskEventTask2 = axeValCacheList select 26;" \n
|
|
"_taskEventCALL3 = axeValCacheList select 27;" \n
|
|
"_taskEventFSM3 = axeValCacheList select 28;" \n
|
|
"_taskEventSQF3 = axeValCacheList select 29;" \n
|
|
"_taskEventTask3 = axeValCacheList select 30;" \n
|
|
"_taskDiagCond1 = axeValCacheList select 31;" \n
|
|
"_taskDiag1 = parseText axeValCacheList select 32;" \n
|
|
"_taskDiagSquelch = parseNumber (axeValCacheList select 33);" \n
|
|
"_taskDiagCond2 = axeValCacheList select 34;" \n
|
|
"_taskDiag2 = parseText axeValCacheList select 35;" \n
|
|
"_taskDiagCond3 = axeValCacheList select 36;" \n
|
|
"_taskDiag3 = parseText axeValCacheList select 37;" \n
|
|
"_taskFailedCond = axeValCacheList select 38;" \n
|
|
"_taskFailDist = parseNumber (axeValCacheList select 39);" \n
|
|
"_taskFailTime = parseNumber (axeValCacheList select 40);" \n
|
|
"//See task failed for this bit" \n
|
|
"_taskCleanup = parseNumber (axeValCacheList select 46);" \n
|
|
"_taskCompleteCond = axeValCacheList select 47;" \n
|
|
"_taskReward = parseText axeValCacheList select 48;" \n
|
|
"_taskCompleteDiag1 = parseText axeValCacheList select 49;" \n
|
|
"_taskCompleteDiag2 = parseText axeValCacheList select 50;" \n
|
|
"_taskReminder = axeValCacheList select 51;" \n
|
|
"_taskNextTrigger = parseText axeValCacheList select 52;" \n
|
|
""/*%FSM</STATEINIT""">*/;
|
|
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
|
class Links
|
|
{
|
|
/*%FSM<LINK "simple_task">*/
|
|
class simple_task
|
|
{
|
|
itemno = 72;
|
|
priority = 10.000000;
|
|
to="actions";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"_taskSimple > 0;"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/"_doSkip = true;"/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
/*%FSM<LINK "_">*/
|
|
class _
|
|
{
|
|
itemno = 33;
|
|
priority = 0.000000;
|
|
to="comms";
|
|
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
|
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
|
|
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
|
};
|
|
/*%FSM</LINK>*/
|
|
};
|
|
};
|
|
/*%FSM</STATE>*/
|
|
};
|
|
initState="task_control";
|
|
finalStates[] =
|
|
{
|
|
"end",
|
|
};
|
|
};
|
|
/*%FSM</COMPILE>*/
|