From 0da569acad64b670ce777c4a35aa6c62791114f8 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Fri, 14 Oct 2016 16:14:43 -0400 Subject: [PATCH] Update zombie_agent.fsm Vanilla commit: https://github.com/DayZMod/DayZ/commit/402bb4e109abe7fb52b70edc2752b10c1ead19ee --- SQF/dayz_code/system/zombie_agent.fsm | 256 ++++++++++++++++---------- 1 file changed, 157 insertions(+), 99 deletions(-) diff --git a/SQF/dayz_code/system/zombie_agent.fsm b/SQF/dayz_code/system/zombie_agent.fsm index 01756309f..8ed1cff9e 100644 --- a/SQF/dayz_code/system/zombie_agent.fsm +++ b/SQF/dayz_code/system/zombie_agent.fsm @@ -6,20 +6,20 @@ item1[] = {"End",1,250,175.000000,-250.000000,275.000000,-200.000000,0.000000,"E item2[] = {"wait",4,218,-75.000000,0.000000,25.000000,50.000000,0.000000,"wait"}; item3[] = {"Looking_for_Targ",2,250,-75.000000,75.000000,25.000000,125.000000,0.000000,"Looking for" \n "Target"}; item4[] = {"Not_Alive",4,218,25.000000,375.000000,125.000000,425.000000,5.000000,"Not" \n "Alive"}; -item5[] = {"Nobody_Near",4,218,25.000000,450.000000,125.000000,500.000000,6.000000,"Nobody" \n "Near"}; +item5[] = {"Nobody_Near",4,218,25.000000,525.000000,125.000000,575.000000,6.000000,"Nobody" \n "Near"}; item6[] = {"loiter",4,218,-400.000000,0.000000,-300.000000,50.000000,0.000000,"loiter"}; item7[] = {"Loiter",2,250,-400.000000,75.000000,-300.000000,125.000000,0.000000,"Loiter"}; item8[] = {"",7,210,-29.000042,396.000000,-20.999958,404.000000,0.000000,""}; -item9[] = {"",7,210,-29.000042,470.999939,-20.999958,479.000061,0.000000,""}; +item9[] = {"",7,210,-29.000040,470.999939,-20.999960,479.000061,0.000000,""}; item10[] = {"true",8,218,-75.000000,-400.000000,25.000000,-350.000000,0.000000,"true"}; item11[] = {"Begin",2,250,-75.000000,-150.000000,25.000000,-100.000000,0.000000,"Begin"}; item12[] = {"",7,210,-29.000006,-29.000004,-20.999996,-20.999996,0.000000,""}; item13[] = {"",7,210,-354.000092,-29.000004,-345.999908,-20.999996,0.000000,""}; item14[] = {"",7,210,-329.000031,208.500000,-321.000000,216.500000,0.000000,""}; item15[] = {"Has_Target",4,218,-150.000000,275.000000,-50.000000,325.000000,5.000000,"Has" \n "Target"}; -item16[] = {"Chase",2,4346,-150.000000,375.000000,-50.000000,425.000000,0.000000,"Chase"}; +item16[] = {"Chase",2,250,-150.000000,375.000000,-50.000000,425.000000,0.000000,"Chase"}; item17[] = {"Time_Check",4,218,50.000000,75.000000,150.000000,125.000000,1.000000,"Time" \n "Check"}; -item18[] = {"",7,210,-29.000006,208.500000,-20.999996,216.500000,0.000000,""}; +item18[] = {"",7,210,-29.000006,208.500000,-20.999994,216.500000,0.000000,""}; item19[] = {"",7,210,-29.000006,296.000000,-20.999996,304.000031,0.000000,""}; item20[] = {"Time_Check",4,218,-275.000000,75.000000,-175.000000,125.000000,0.000000,"Time" \n "Check"}; item21[] = {"Check",8,218,-300.000000,300.000000,-200.000000,350.000000,1.000000,"Check"}; @@ -63,10 +63,14 @@ item58[] = {"Target_Dead",4,218,-275.000000,500.000000,-175.000000,550.000000,3. item59[] = {"",7,210,-479.000000,521.000000,-471.000000,529.000000,0.000000,""}; item60[] = {"Start_Attack",4,218,-725.000000,175.000000,-625.000000,225.000000,0.000000,"Start Attack"}; item61[] = {"End_Attack",4,218,-725.000000,100.000000,-625.000000,150.000000,0.000000,"End Attack"}; -item62[] = {"TargetMoved",4,218,50.000000,300.000000,150.000000,350.000000,3.000000,"TargetMoved"}; -item63[] = {"Not_moving",4,218,-300.000000,150.000000,-200.000000,200.000000,1.000000,"Not moving"}; +item62[] = {"TargetMoved",4,218,-600.000000,0.000000,-500.000000,50.000000,3.000000,"TargetMoved"}; +item63[] = {"Not_moving",4,218,-700.000000,0.000000,-600.000000,50.000000,1.000000,"Not moving"}; item64[] = {"TimeOut",8,218,-300.000000,375.000000,-200.000000,425.000000,2.000000,"TimeOut"}; -item65[] = {"____FAKE____",9,2600,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"}; +item65[] = {"No_Agent",4,218,25.000000,450.000000,125.000000,500.000000,5.000000,"No Agent"}; +item66[] = {"",7,210,221.000015,546.000061,229.000000,553.999939,0.000000,""}; +item67[] = {"",7,210,-29.000042,545.999939,-20.999958,554.000061,0.000000,""}; +item68[] = {"No_Agent",4,218,25.000000,225.000000,125.000000,275.000000,5.000000,"No Agent"}; +item69[] = {"____FAKE____",9,2760,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"}; link0[] = {0,10}; link1[] = {0,55}; link2[] = {2,3}; @@ -74,89 +78,95 @@ link3[] = {3,17}; link4[] = {3,18}; link5[] = {3,54}; link6[] = {4,25}; -link7[] = {5,26}; +link7[] = {5,66}; link8[] = {6,7}; link9[] = {7,14}; link10[] = {7,20}; link11[] = {7,53}; link12[] = {8,4}; link13[] = {8,9}; -link14[] = {9,5}; -link15[] = {10,11}; -link16[] = {11,12}; -link17[] = {12,2}; -link18[] = {12,13}; -link19[] = {13,6}; -link20[] = {14,18}; -link21[] = {15,16}; -link22[] = {16,8}; -link23[] = {16,29}; -link24[] = {16,64}; -link25[] = {17,3}; -link26[] = {18,19}; -link27[] = {19,8}; -link28[] = {19,15}; -link29[] = {20,7}; -link30[] = {22,23}; -link31[] = {23,47}; -link32[] = {24,35}; -link33[] = {25,27}; -link34[] = {26,25}; -link35[] = {27,36}; -link36[] = {27,40}; -link37[] = {28,43}; -link38[] = {29,22}; -link39[] = {29,52}; -link40[] = {29,58}; -link41[] = {30,31}; -link42[] = {31,32}; -link43[] = {31,34}; -link44[] = {31,45}; -link45[] = {32,33}; -link46[] = {33,59}; -link47[] = {34,9}; -link48[] = {35,7}; -link49[] = {36,37}; -link50[] = {37,39}; -link51[] = {37,41}; -link52[] = {38,42}; -link53[] = {39,38}; -link54[] = {39,40}; -link55[] = {39,51}; -link56[] = {40,28}; -link57[] = {41,37}; -link58[] = {42,43}; -link59[] = {43,1}; -link60[] = {44,46}; -link61[] = {45,44}; -link62[] = {46,33}; -link63[] = {47,48}; -link64[] = {48,24}; -link65[] = {49,50}; -link66[] = {50,42}; -link67[] = {51,49}; -link68[] = {52,30}; -link69[] = {53,7}; -link70[] = {54,3}; -link71[] = {55,1}; -link72[] = {58,59}; -link73[] = {59,23}; -link74[] = {64,16}; -link75[] = {21,65}; -link76[] = {65,21}; -link77[] = {56,65}; -link78[] = {65,56}; -link79[] = {57,65}; -link80[] = {65,57}; -link81[] = {60,65}; -link82[] = {65,60}; -link83[] = {61,65}; -link84[] = {65,61}; -link85[] = {62,65}; -link86[] = {65,62}; -link87[] = {63,65}; -link88[] = {65,63}; -globals[] = {25.000000,1,0,0,0,640,480,1,157,6316128,1,-640.890259,559.593506,704.095276,-186.586182,806,598,1}; +link14[] = {9,65}; +link15[] = {9,67}; +link16[] = {10,11}; +link17[] = {11,12}; +link18[] = {12,2}; +link19[] = {12,13}; +link20[] = {13,6}; +link21[] = {14,18}; +link22[] = {15,16}; +link23[] = {16,8}; +link24[] = {16,29}; +link25[] = {16,64}; +link26[] = {17,3}; +link27[] = {18,19}; +link28[] = {18,68}; +link29[] = {19,8}; +link30[] = {19,15}; +link31[] = {20,7}; +link32[] = {22,23}; +link33[] = {23,47}; +link34[] = {24,35}; +link35[] = {25,27}; +link36[] = {26,25}; +link37[] = {27,36}; +link38[] = {27,40}; +link39[] = {28,43}; +link40[] = {29,22}; +link41[] = {29,52}; +link42[] = {29,58}; +link43[] = {30,31}; +link44[] = {31,32}; +link45[] = {31,34}; +link46[] = {31,45}; +link47[] = {32,33}; +link48[] = {33,59}; +link49[] = {34,67}; +link50[] = {35,7}; +link51[] = {36,37}; +link52[] = {37,39}; +link53[] = {37,41}; +link54[] = {38,42}; +link55[] = {39,38}; +link56[] = {39,40}; +link57[] = {39,51}; +link58[] = {40,28}; +link59[] = {41,37}; +link60[] = {42,43}; +link61[] = {43,1}; +link62[] = {44,46}; +link63[] = {45,44}; +link64[] = {46,33}; +link65[] = {47,48}; +link66[] = {48,24}; +link67[] = {49,50}; +link68[] = {50,42}; +link69[] = {51,49}; +link70[] = {52,30}; +link71[] = {53,7}; +link72[] = {54,3}; +link73[] = {55,1}; +link74[] = {58,59}; +link75[] = {59,23}; +link76[] = {64,16}; +link77[] = {65,26}; +link78[] = {66,26}; +link79[] = {67,5}; +link80[] = {68,27}; +link81[] = {21,69}; +link82[] = {69,21}; +link83[] = {56,69}; +link84[] = {69,56}; +link85[] = {57,69}; +link86[] = {69,57}; +link87[] = {60,69}; +link88[] = {69,60}; +link89[] = {61,69}; +link90[] = {69,61}; +link91[] = {62,69}; +link92[] = {69,62}; +link93[] = {63,69}; +link94[] = {69,63}; +globals[] = {25.000000,1,0,0,0,640,480,1,164,6316128,1,-544.672852,535.761841,853.890503,52.277908,806,598,1}; window[] = {2,-1,-1,-1,-1,727,26,1234,26,3,824}; *//*%FSM*/ class FSM @@ -251,6 +261,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Agent + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class Has_Target { @@ -290,6 +310,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Agent_1 + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class player_check { @@ -370,6 +400,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Agent + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class Has_Target { @@ -409,6 +449,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Agent_1 + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class player_check { @@ -515,8 +565,7 @@ class FSM name = "Chase"; init = /*%FSM*/"_timeN = diag_tickTime;" \n "" \n - "if (isNull _agent) exitWith {}; //Prevent errors if zombie is suddenly deleted" \n - "_adjustSpeed = if (DZE_slowZombies) then {2} else {_agent getVariable [""speedLimit"", 3]};" \n + "_adjustSpeed = if (DZE_slowZombies) then {2} else {_agent getVariable [""speedLimit"", 3]};" \n "_agent forceSpeed _adjustSpeed;" \n "" \n "_target = _agent call zombie_findTargetAgent;" \n @@ -533,7 +582,6 @@ class FSM "};" \n "" \n "" \n - "" \n "//Check if LOS" \n "if ((_agroCheck % 8) == 0) then {" \n " _agroCheck = 0;" \n @@ -556,6 +604,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Agent + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class Not_Alive { @@ -566,16 +624,6 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class No_Target - { - priority = 3.000000; - to="Reset_Targeting"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(isNull _target)"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ /*%FSM*/ class Target_Dead { @@ -586,6 +634,16 @@ class FSM action=/*%FSM*/"_timeN = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class No_Target + { + priority = 3.000000; + to="Reset_Targeting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _target)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ /*%FSM*/ class cant_see { @@ -602,7 +660,7 @@ class FSM priority = 2.000000; to="Chase"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _timeN) > 1" \n + condition=/*%FSM*/"(diag_tickTime - _timeN) > 2" \n ""/*%FSM*/; action=/*%FSM*/"_agroCheck= _agroCheck + 1;"/*%FSM*/; }; @@ -760,7 +818,7 @@ class FSM "_remotetargets = _agent getVariable [""remotetargets"",[]];" \n "" \n "//Clear remote on reset" \n - "if (isNull _agent) then {_remotetargets = [];};" \n + "if (isNull _agent) then {_remotetargets = [];};" \n "if (count _remotetargets > 0) then {" \n " _agent setVariable [""remotetargets"",[],true];" \n "};" \n