/*%FSM*/ /*%FSM*/ /* item0[] = {"init",0,250,-150.000000,75.000000,-50.000000,125.000000,0.000000,"init"}; item1[] = {"wait",2,250,-25.000000,300.000000,75.000000,350.000000,0.000000,"wait"}; item2[] = {"End",1,250,100.000000,225.000000,200.000000,275.000000,0.000000,"End"}; item3[] = {"Not_Alive",4,218,-150.000000,300.000000,-50.000000,350.000000,4.000000,"Not" \n "Alive"}; item4[] = {"Loiter",2,250,-150.000000,225.000000,-50.000000,275.000000,0.000000,"Loiter"}; item5[] = {"In_Position",4,218,-350.000000,225.000000,-250.000000,275.000000,2.000000,"In Position"}; item6[] = {"preloaded",4,218,-150.000000,150.000000,-50.000000,200.000000,0.000000,"preloaded"}; item7[] = {"time_up",4,218,-25.000000,225.000000,75.000000,275.000000,0.000000,"time" \n "up"}; item8[] = {"player_check",4,218,-250.000000,175.000000,-150.000000,225.000000,1.000000,"player" \n "check"}; item9[] = {"player_check",4,218,100.000000,300.000000,200.000000,350.000000,1.000000,"player" \n "check"}; item10[] = {"tamed",4,218,-25.000000,150.000000,75.000000,200.000000,3.000000,"tamed"}; item11[] = {"moveToCompleted",4,218,-250.000000,275.000000,-150.000000,325.000000,0.000000,"moveToCompleted "}; item12[] = {"Failed_to_move",4,4314,-300.000000,250.000000,-200.000000,300.000000,0.000000,"Failed to move"}; link0[] = {0,6}; link1[] = {1,7}; link2[] = {1,9}; link3[] = {3,1}; link4[] = {4,3}; link5[] = {4,5}; link6[] = {4,7}; link7[] = {4,8}; link8[] = {4,10}; link9[] = {4,11}; link10[] = {4,12}; link11[] = {5,4}; link12[] = {6,4}; link13[] = {7,2}; link14[] = {8,4}; link15[] = {9,1}; link16[] = {10,2}; link17[] = {11,4}; link18[] = {12,4}; globals[] = {25.000000,1,0,0,0,640,480,1,91,6316128,1,-478.843109,117.327553,583.704590,115.127663,813,1030,1}; window[] = {2,-1,-1,-1,-1,806,26,1234,26,3,831}; *//*%FSM*/ class FSM { fsmName = "DayZ Animal Agent"; class States { /*%FSM*/ class init { name = "init"; init = /*%FSM*/"_pos = _this select 0;" \n "_agent = _this select 1;" \n "" \n "_isSomeone = true;" \n "_timeA = diag_tickTime;" \n "_isTamed = false;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class preloaded { priority = 0.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"dayz_clientPreload"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class wait { name = "wait"; init = /*%FSM*/"_entityTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class player_check { priority = 1.000000; to="wait"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _entityTime) > 30"/*%FSM*/; action=/*%FSM*/"_entityTime = diag_tickTime;" \n "" \n "_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n "_isSomeone = ({isPlayer _x} count _list) > 0;" \n "" \n "if (_isSomeone) then {" \n " _timeA = diag_tickTime;" \n "};"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class time_up { priority = 0.000000; to="End"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _timeA) > 120 and !_isSomeone"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class End { name = "End"; init = /*%FSM*/"if (!_isTamed) then {" \n " if (!_isSomeone) then {" \n " deleteVehicle _agent;" \n " };" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class Loiter { name = "Loiter"; init = /*%FSM*/"_isAlive = alive _agent;" \n "" \n "//_agent forceSpeed 2;" \n "_entityTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Not_Alive { priority = 4.000000; to="wait"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!_isAlive"/*%FSM*/; action=/*%FSM*/"_timeA = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class tamed { priority = 3.000000; to="End"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_isTamed"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class In_Position { priority = 2.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_agent distance _pos < 3"/*%FSM*/; action=/*%FSM*/"//_pos = [_pos,10,90,4,0,5,0] call BIS_fnc_findSafePos;" \n "_pos = [_pos,10,90,1] call fn_selectRandomLocation;" \n "_agent moveTo _pos;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class player_check { priority = 1.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _entityTime) > 30"/*%FSM*/; action=/*%FSM*/"_entityTime = diag_tickTime;" \n "" \n "_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n "_isSomeone = ({isPlayer _x} count _list) > 0;" \n "" \n "if (_isSomeone) then {" \n " _timeA = diag_tickTime;" \n "};"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class moveToCompleted { priority = 0.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"moveToCompleted _agent;" \n ""/*%FSM*/; action=/*%FSM*/"_pos = [_pos,10,90,1] call fn_selectRandomLocation;" \n "_agent moveTo _pos;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Failed_to_move { priority = 0.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"moveToFailed _agent;"/*%FSM*/; action=/*%FSM*/"_pos = [_pos,10,90,1] call fn_selectRandomLocation;" \n "_agent moveTo _pos;" \n ""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class time_up { priority = 0.000000; to="End"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _timeA) > 120 and !_isSomeone"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ }; initState="init"; finalStates[] = { "End" }; }; /*%FSM*/