mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
0.3.4 part 1
This commit is contained in:
parent
7941e165d5
commit
175e4844b9
@ -1,5 +1,12 @@
|
||||
Client:
|
||||
[Fixed] Client fps lag when first joining the server.
|
||||
[Added] New secure storage device: Safe
|
||||
[Added] New crafting UI and system by Raymix.
|
||||
[Added] Epoch variant of the unarmed Strider vehicle. (I_MRAP_03_EPOCH)
|
||||
[Added] Melee weapons: a Broad Sword and Fishing Pole.
|
||||
[Added] Halloween Clown mask.
|
||||
[Fixed] Reduce client fps lag when first joining the server.
|
||||
[Changed] Wolf/Pumpkin masks and Meeps Candy re-added to loot tables for Halloween.
|
||||
|
||||
|
||||
Server:
|
||||
[Fixed] Error Generic error in expression in EPOCH_server_repairVehicle.
|
||||
|
Binary file not shown.
Binary file not shown.
@ -49,6 +49,7 @@ allowedVehiclesList[] = {
|
||||
{"B_Heli_Light_01_EPOCH",2},
|
||||
{"B_SDV_01_EPOCH",2},
|
||||
{"B_MRAP_01_EPOCH",3},
|
||||
{"I_MRAP_03_EPOCH", 3},
|
||||
{"B_Truck_01_transport_EPOCH",1},
|
||||
{"B_Truck_01_covered_EPOCH",2},
|
||||
{"B_Truck_01_mover_EPOCH",1},
|
||||
|
@ -1 +1 @@
|
||||
5 "" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F"
|
||||
5 "" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul|Rod|Sword)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F"
|
@ -1 +1 @@
|
||||
5 "" !WeaponHolderSimulated !Shot !"(LockBox|FirePlace|PlotPole|Jack|SolarGen)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|StorageShelf|Wood(Floor|LargeWall|Stairs|Ramp|Ladder|Tower)_Ghost_EPOCH" !"Foundation_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F"
|
||||
5 "" !WeaponHolderSimulated !Shot !"(Safe|LockBox|FirePlace|PlotPole|Jack|SolarGen)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|StorageShelf|Wood(Floor|LargeWall|Stairs|Ramp|Ladder|Tower)_Ghost_EPOCH" !"Foundation_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F"
|
||||
|
@ -1,3 +1,3 @@
|
||||
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|SapperB|Cloak)_F" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F"
|
||||
5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|Safe|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(Safe|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
5 SeaGull
|
||||
|
@ -1 +1 @@
|
||||
1 "" !="Land_MPS_EPOCH" !="SapperHead_SIM_EPOCH" !="Epoch_Sapper_F" !="Epoch_Cloak_F" !="LockBox_EPOCH" !="Rabbit_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock)_random_EPOCH" !="LockBox_(Ghost|SIM)_EPOCH" !="CinderWallHalf_(Ghost|SIM)_EPOCH" !="CinderWall_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_(Ghost|SIM)_EPOCH" !="Foundation_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
1 "" !="Land_MPS_EPOCH" !="SapperHead_SIM_EPOCH" !="Epoch_Sapper_F" !="Epoch_Cloak_F" !="(Safe|LockBox)_EPOCH" !="Rabbit_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock)_random_EPOCH" !="LockBox_(Ghost|SIM)_EPOCH" !="CinderWallHalf_(Ghost|SIM)_EPOCH" !="CinderWall_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_(Ghost|SIM)_EPOCH" !="Foundation_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
|
@ -1 +1 @@
|
||||
5 "" !="Epoch_(Male|Female)_F" !="SapperHead_SIM_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWallHalf|CinderWall|Fireplace|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(Foundation|Wood(Foundation|Ladder|Tower))_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
5 "" !="Epoch_(Male|Female)_F" !="SapperHead_SIM_EPOCH" !="(Tipi|StorageShelf|Safe|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(Safe|LockBox|CinderWallHalf|CinderWall|Fireplace|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(Foundation|Wood(Foundation|Ladder|Tower))_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
|
||||
|
702
Sources/epoch_code/System/Construct_Brain.fsm
Normal file
702
Sources/epoch_code/System/Construct_Brain.fsm
Normal file
@ -0,0 +1,702 @@
|
||||
/*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, construct">*/
|
||||
/*%FSM<HEAD>*/
|
||||
/*
|
||||
item0[] = {"construct",0,250,-316.429199,-195.383255,-226.429291,-145.383362,0.000000,"construct"};
|
||||
item1[] = {"_",8,218,62.332706,-185.990021,114.284866,-157.584717,0.000000,""};
|
||||
item2[] = {"instinct",2,250,165.295456,-196.723892,255.295410,-146.723892,0.000000,"instinct"};
|
||||
item3[] = {"no_decision",4,218,366.525970,-123.699348,456.525940,-73.699387,10.000000,"no decision"};
|
||||
item4[] = {"action",2,250,164.446381,121.731827,254.446365,171.731903,0.000000,"action"};
|
||||
item5[] = {"dispose",4,218,37.004036,-291.823761,127.004257,-241.823792,90.000000,"dispose"};
|
||||
item6[] = {"_",8,218,182.964218,311.201538,234.916306,339.606750,0.000000,""};
|
||||
item7[] = {"reset_vars",2,250,-57.248745,-196.860123,32.751255,-146.860138,0.000000,"reset vars"};
|
||||
item8[] = {"_",8,218,-150.031967,-184.788101,-98.079796,-156.382797,0.000000,""};
|
||||
item9[] = {"complete",4,218,-57.972878,-94.263466,32.027390,-44.263451,100.000000,"complete"};
|
||||
item10[] = {"move",4,218,286.028778,192.150543,376.028778,242.150604,20.000000,"move"};
|
||||
item11[] = {"end",1,250,-241.719803,14.907898,-151.719772,64.907913,0.000000,"end"};
|
||||
item12[] = {"dispose",4,218,-59.072083,14.028580,30.927921,64.028580,95.000000,"dispose"};
|
||||
item13[] = {"do_move",2,250,286.331848,300.982452,376.331848,350.982452,0.000000,"do move"};
|
||||
item14[] = {"near_building",4,218,674.880554,-143.328430,764.880676,-93.328377,80.000000,"near building"};
|
||||
item15[] = {"instinct_done",4,218,165.528030,-96.910675,255.527969,-46.910683,100.000000,"instinct done"};
|
||||
item16[] = {"move",4,218,266.138367,-295.030945,356.138367,-245.030884,50.000000,"move"};
|
||||
item17[] = {"wait_action",4,218,373.527924,50.001488,463.527740,100.001457,110.000000,"wait action"};
|
||||
item18[] = {"checking_status",2,250,611.751343,-31.961807,701.751221,18.038223,0.000000,"checking status"};
|
||||
item19[] = {"see_target",4,4314,553.701416,-144.674866,643.701538,-94.674820,90.000000,"see target"};
|
||||
item20[] = {"checked",4,218,612.020508,61.020790,702.020386,111.020844,10.000000,"checked"};
|
||||
item21[] = {"done",4,218,476.283447,-31.286667,566.283386,18.713348,100.000000,"done"};
|
||||
item22[] = {"construct_smash",4,218,165.596268,-331.217682,255.596191,-281.217590,60.000000,"construct smash"};
|
||||
item23[] = {"return",2,250,360.850586,-30.593140,450.850647,19.406860,0.000000,"return"};
|
||||
item24[] = {"to_action",4,218,277.703308,21.529037,367.703308,71.529037,10.000000,"to action"};
|
||||
item25[] = {"to_instinct",4,218,287.631317,-100.089363,377.631317,-50.089355,5.000000,"to instinct"};
|
||||
item26[] = {"smash",4,218,-81.683311,146.820755,8.316697,196.820755,30.000000,"smash"};
|
||||
item27[] = {"interrupt",4,218,58.118843,-94.064064,148.118866,-44.064060,90.000000,"interrupt"};
|
||||
item28[] = {"construct_smash",2,250,-82.893753,370.386627,7.106274,420.386658,0.000000,"construct smash"};
|
||||
item29[] = {"wander",4,218,320.950836,-243.494019,410.950836,-193.494019,40.000000,"wander"};
|
||||
item30[] = {"wander",4,218,370.444092,167.573929,460.444061,217.573975,30.000000,"wander"};
|
||||
item31[] = {"do_wander",2,250,370.747131,376.849396,460.747131,426.849396,0.000000,"do wander"};
|
||||
item32[] = {"health_check",4,218,726.020203,-74.284813,816.020264,-24.284767,70.000000,"health check"};
|
||||
item33[] = {"____FAKE____",9,1320,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"};
|
||||
link0[] = {0,8};
|
||||
link1[] = {1,2};
|
||||
link2[] = {2,3};
|
||||
link3[] = {2,5};
|
||||
link4[] = {2,15};
|
||||
link5[] = {2,16};
|
||||
link6[] = {2,29};
|
||||
link7[] = {3,18};
|
||||
link8[] = {4,9};
|
||||
link9[] = {4,10};
|
||||
link10[] = {4,12};
|
||||
link11[] = {4,17};
|
||||
link12[] = {4,26};
|
||||
link13[] = {4,27};
|
||||
link14[] = {4,30};
|
||||
link15[] = {5,2};
|
||||
link16[] = {6,4};
|
||||
link17[] = {7,1};
|
||||
link18[] = {8,7};
|
||||
link19[] = {9,7};
|
||||
link20[] = {10,13};
|
||||
link21[] = {12,11};
|
||||
link22[] = {13,6};
|
||||
link23[] = {14,18};
|
||||
link24[] = {15,4};
|
||||
link25[] = {16,2};
|
||||
link26[] = {17,18};
|
||||
link27[] = {18,14};
|
||||
link28[] = {18,19};
|
||||
link29[] = {18,20};
|
||||
link30[] = {18,21};
|
||||
link31[] = {18,32};
|
||||
link32[] = {19,18};
|
||||
link33[] = {20,18};
|
||||
link34[] = {21,23};
|
||||
link35[] = {22,2};
|
||||
link36[] = {23,24};
|
||||
link37[] = {23,25};
|
||||
link38[] = {24,4};
|
||||
link39[] = {25,2};
|
||||
link40[] = {26,28};
|
||||
link41[] = {27,7};
|
||||
link42[] = {28,6};
|
||||
link43[] = {29,2};
|
||||
link44[] = {30,31};
|
||||
link45[] = {31,6};
|
||||
link46[] = {32,18};
|
||||
link47[] = {33,22};
|
||||
globals[] = {0.000000,0,0,0,16777215,640,480,1,169,6316128,1,73.118919,857.202637,468.231750,-240.399475,1008,911,1};
|
||||
window[] = {2,-1,-1,-1,-1,725,200,1225,200,3,1026};
|
||||
*//*%FSM</HEAD>*/
|
||||
class FSM
|
||||
{
|
||||
fsmName = "construct";
|
||||
class States
|
||||
{
|
||||
/*%FSM<STATE "construct">*/
|
||||
class construct
|
||||
{
|
||||
name = "construct";
|
||||
init = /*%FSM<STATEINIT""">*/"_construct = _this select 0;" \n
|
||||
"_trgt = player;" \n
|
||||
"" \n
|
||||
"//_construct setBehaviour ""COMBAT"";" \n
|
||||
"" \n
|
||||
"_constructNames=[""Rocky"",""Miner"",""Plate""];" \n
|
||||
"_constructName = _constructNames select (floor(random count _constructNames));" \n
|
||||
"" \n
|
||||
"_entsArr = [""Epoch_Male_F"",""Epoch_Female_F"",""Epoch_Sapper_F"",""Fin_random_EPOCH"",""Alsatian_Random_EPOCH"",""Epoch_cloak_F"",""b_survivor_F"",""Epoch_Female_Camo_F""];" \n
|
||||
"_plyArr = [""Epoch_Male_F"",""Epoch_Female_F"",""b_survivor_F"",""Epoch_Female_Camo_F""];" \n
|
||||
"_trgtArr = [""Epoch_Male_F"",""Epoch_Female_F"",""b_survivor_F"",""Epoch_Female_Camo_F""];" \n
|
||||
"_vehArray = [""Car""];" \n
|
||||
"_tRange = 20;" \n
|
||||
"_sRange = 150;" \n
|
||||
"_vRange = 50;" \n
|
||||
"_maxTravelTime = 480;" \n
|
||||
"_trgtZ = 0;" \n
|
||||
"_t = diag_tickTime;" \n
|
||||
"_u = _t;" \n
|
||||
"" \n
|
||||
"_dirTo = 0;" \n
|
||||
"_lDist = 0;" \n
|
||||
"_checkEntry = """";" \n
|
||||
"" \n
|
||||
"_constructPos=[0,0,0];" \n
|
||||
"_trgtPos=[0,0,0];" \n
|
||||
"_hidePos = [0,0,0];" \n
|
||||
"_nrPlyrs = [];" \n
|
||||
"" \n
|
||||
"_nrBuild = nearestBuilding _construct;" \n
|
||||
"_buildBash = false;" \n
|
||||
"_doSmash = false;" \n
|
||||
"_doWander = false;" \n
|
||||
"" \n
|
||||
"//Behaviour" \n
|
||||
"_fearTrigger = 12;" \n
|
||||
"_angerTrigger = 24;" \n
|
||||
"_lAnger = 0;" \n
|
||||
"_lFear = 0;" \n
|
||||
"_lBrave = 0;" \n
|
||||
"" \n
|
||||
"//construct Vars" \n
|
||||
"" \n
|
||||
"_doMove = false;" \n
|
||||
"_sanityCheckDone = false;" \n
|
||||
"_canSee = false;" \n
|
||||
"_nrTrgts = [];" \n
|
||||
"" \n
|
||||
"_sanityCheck = 0;" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"_doHide = false;" \n
|
||||
"_doAttack = false;" \n
|
||||
"_firedNear = 0;" \n
|
||||
"" \n
|
||||
"_lootVar = 0;" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"//DEBUG" \n
|
||||
"_doDebug = false;" \n
|
||||
"_count = 0;" \n
|
||||
"_debugDo = ""INIT"";" \n
|
||||
"_mkrName = """";" \n
|
||||
"_dWait = 0;" \n
|
||||
"_strDebug = """";" \n
|
||||
"_constructFeels = ""STARTING"";" \n
|
||||
"axeCount = 0;" \n
|
||||
"_strMoveTo = """";" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="reset_vars";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "instinct">*/
|
||||
class instinct
|
||||
{
|
||||
name = "instinct";
|
||||
init = /*%FSM<STATEINIT""">*/"_t = diag_tickTime;" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"systemChat format [""Instinct:%1 | D:%2 | M:%3 | S:%4"",diag_tickTime,_decisionMade,_doMove,_canSee];" \n
|
||||
"};" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "instinct_done">*/
|
||||
class instinct_done
|
||||
{
|
||||
priority = 100.000000;
|
||||
to="action";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_decisionMade;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_t = diag_tickTime;" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "dispose">*/
|
||||
class dispose
|
||||
{
|
||||
priority = 90.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"((_trgt distance _construct) > (_sRange * 4)) || !(alive _construct);"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doDispose = true;" \n
|
||||
"_decisionMade = true;" \n
|
||||
"_actionDone = false;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "move">*/
|
||||
class move
|
||||
{
|
||||
priority = 50.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_canSee"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doMove = true;" \n
|
||||
"_decisionMade = true;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "wander">*/
|
||||
class wander
|
||||
{
|
||||
priority = 40.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_canSee"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doWander = true;" \n
|
||||
"_decisionMade = true;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "no_decision">*/
|
||||
class no_decision
|
||||
{
|
||||
priority = 10.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_decisionMade && diag_tickTime - _t > 3;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_checkEntry = ""instinct"";" \n
|
||||
"_sanityCheck = 100;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "action">*/
|
||||
class action
|
||||
{
|
||||
name = "action";
|
||||
init = /*%FSM<STATEINIT""">*/"" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"systemChat format [""Action:%1 | %2"",diag_tickTime,_debugDo];" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "wait_action">*/
|
||||
class wait_action
|
||||
{
|
||||
priority = 110.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"diag_tickTime > _u + 4;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_checkEntry = ""action"";" \n
|
||||
"_sanityCheck = 100;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "complete">*/
|
||||
class complete
|
||||
{
|
||||
priority = 100.000000;
|
||||
to="reset_vars";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/"if(_doDebug)then{" \n
|
||||
"" \n
|
||||
"hint format [""CONSTRUCT\n%1\nMove:%2\nSmash:%3\nWait:%4"",_debugDo,_doMove,_doSmash,_sWait];" \n
|
||||
"};"/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_actionDone && ((call compile _criteria) || (diag_tickTime > (_t + _sWait)));"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"" \n
|
||||
"if(!isNil ""_criteriaMetAction"")then{" \n
|
||||
"call _criteriaMetAction;" \n
|
||||
"};" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"hint format [""CONSTRUCT\n%1\nMove:%2\nSmash:%3\nWait:%4"",_debugDo,_doMove,_doSmash,_sWait];" \n
|
||||
"systemChat format [""Complete:%1"",diag_tickTime];" \n
|
||||
"};" \n
|
||||
"" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "dispose">*/
|
||||
class dispose
|
||||
{
|
||||
priority = 95.000000;
|
||||
to="end";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(_doDispose || !(alive _construct)) && (diag_tickTime - _t) > 120;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"if(_doDebug)then{" \n
|
||||
"_debugDo = ""Dispose"";" \n
|
||||
"hint format [""CONSTRUCT\n%1\nAlive: %2"",_debugDo, alive _construct];" \n
|
||||
"};"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "interrupt">*/
|
||||
class interrupt
|
||||
{
|
||||
priority = 90.000000;
|
||||
to="reset_vars";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(_allowInterrupt && (call compile _interruptReason));"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "smash">*/
|
||||
class smash
|
||||
{
|
||||
priority = 30.000000;
|
||||
to="construct_smash";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_doSmash;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doSmash = false;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "wander">*/
|
||||
class wander
|
||||
{
|
||||
priority = 30.000000;
|
||||
to="do_wander";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_doWander;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doWander = false;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "move">*/
|
||||
class move
|
||||
{
|
||||
priority = 20.000000;
|
||||
to="do_move";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_doMove;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doMove = false;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "reset_vars">*/
|
||||
class reset_vars
|
||||
{
|
||||
name = "reset_vars";
|
||||
init = /*%FSM<STATEINIT""">*/"//Default Vars" \n
|
||||
"_rnd = 0;" \n
|
||||
"_actionDone = false;" \n
|
||||
"_decisionMade = false;" \n
|
||||
"_sWait = 0;" \n
|
||||
"_doDispose = false;" \n
|
||||
"_chooseTarget = false;" \n
|
||||
"_criteria = Nil;" \n
|
||||
"_criteriaMet = false;" \n
|
||||
"_allowInterrupt = false;" \n
|
||||
"_interruptReason = ""(false)"";" \n
|
||||
"" \n
|
||||
"_moveTo = [0,0,0];" \n
|
||||
"" \n
|
||||
"//Brain Vars" \n
|
||||
"_override = false;" \n
|
||||
"_criteria =""(false)"";" \n
|
||||
"_criteriaMetAction = nil;" \n
|
||||
"" \n
|
||||
"//Feeling Vars" \n
|
||||
"_nrTrgts = [];" \n
|
||||
"_isThreatened = false;" \n
|
||||
"_isSafe = false;" \n
|
||||
"_feelingDone = false;" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"//construct Vars" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "end">*/
|
||||
class end
|
||||
{
|
||||
name = "end";
|
||||
init = /*%FSM<STATEINIT""">*/"deleteVehicle _construct;" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"axeDo = Format[""Dispose | Alive:%1 | Distance: %2"",alive _construct,player distance _construct];" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "do_move">*/
|
||||
class do_move
|
||||
{
|
||||
name = "do_move";
|
||||
init = /*%FSM<STATEINIT""">*/"_construct forceSpeed 5;" \n
|
||||
"_constructPos = getPos _construct;" \n
|
||||
"" \n
|
||||
"_moveTo = getPos _trgt;" \n
|
||||
"_construct doMove _moveTo;" \n
|
||||
"" \n
|
||||
"_sWait = ((_construct distance _moveTo) / 2) min 18;" \n
|
||||
"_actionDone = true;" \n
|
||||
"_t = diag_tickTime;" \n
|
||||
"_criteria = ""((_construct distance _moveTo)< 6)"";" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"//Session Vars" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"_debugDo = ""Move"";" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="action";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "checking_status">*/
|
||||
class checking_status
|
||||
{
|
||||
name = "checking_status";
|
||||
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "done">*/
|
||||
class done
|
||||
{
|
||||
priority = 100.000000;
|
||||
to="return";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_sanityCheck < 1;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "see_target">*/
|
||||
class see_target
|
||||
{
|
||||
priority = 90.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_sanityCheck > 90;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_canSee = false;" \n
|
||||
"_nrTrgts = (getPosATL _construct) nearEntities [_trgtArr, _sRange];" \n
|
||||
"if(count _nrTrgts >0)then{" \n
|
||||
"{" \n
|
||||
"if(alive _x)then{" \n
|
||||
"if(!lineIntersects [aimPos _construct, aimPos _x, _construct, _x]) exitWith {_canSee = true;_trgt = _x};" \n
|
||||
"};" \n
|
||||
"}forEach _nrTrgts;" \n
|
||||
"};" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"systemChat format [""SEE:%1 | %2"",_canSee,_trgt];" \n
|
||||
"};" \n
|
||||
"_sanityCheck = 90;" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "near_building">*/
|
||||
class near_building
|
||||
{
|
||||
priority = 80.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_sanityCheck > 80;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_buildBash = false;" \n
|
||||
"_nrBuild = nearestBuilding _construct;" \n
|
||||
"" \n
|
||||
"if((_nrBuild distance _construct)< 16)then{" \n
|
||||
"_buildBash = true;" \n
|
||||
"_nrBuild setdamage 1;" \n
|
||||
"};" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"_sanityCheck = 80;" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "health_check">*/
|
||||
class health_check
|
||||
{
|
||||
priority = 70.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_sanityCheck > 70;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"if(damage _construct > 0.4)then{" \n
|
||||
"_construct setDamage 0;" \n
|
||||
"};" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"_sanityCheck = 70;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "checked">*/
|
||||
class checked
|
||||
{
|
||||
priority = 10.000000;
|
||||
to="checking_status";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_sanityCheck > 10;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_sanityCheck = 0 ;" \n
|
||||
"" \n
|
||||
"" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "return">*/
|
||||
class return
|
||||
{
|
||||
name = "return";
|
||||
init = /*%FSM<STATEINIT""">*/"" \n
|
||||
"_u = diag_tickTime;" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"systemChat format [""RETURN:%1 | %2"",diag_tickTime,_checkEntry];" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "to_action">*/
|
||||
class to_action
|
||||
{
|
||||
priority = 10.000000;
|
||||
to="action";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_checkEntry == ""action"";"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_checkEntry = """";" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "to_instinct">*/
|
||||
class to_instinct
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_checkEntry == ""instinct"";"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_checkEntry = """";" \n
|
||||
""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "construct_smash">*/
|
||||
class construct_smash
|
||||
{
|
||||
name = "construct_smash";
|
||||
init = /*%FSM<STATEINIT""">*/"_nrBuild setdamage 1;" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"_sWait = 1.5;" \n
|
||||
"_actionDone = true;" \n
|
||||
"_t = diag_tickTime;" \n
|
||||
"_criteria = ""(false)"";" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"_debugDo = format[""Smash | Dir:%1"",_nrBuild];" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="action";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "do_wander">*/
|
||||
class do_wander
|
||||
{
|
||||
name = "do_wander";
|
||||
init = /*%FSM<STATEINIT""">*/"_constructPos = getPos _construct;" \n
|
||||
"_constructMoveTo = [_constructPos,18,80,5,0,5,0] call BIS_fnc_findSafePos;" \n
|
||||
"_construct doMove _constructMoveTo;" \n
|
||||
"_construct forceSpeed 3;" \n
|
||||
"" \n
|
||||
"_sWait = ((_construct distance _moveTo) / 2) min 18;" \n
|
||||
"_actionDone = true;" \n
|
||||
"_t = diag_tickTime;" \n
|
||||
"_criteria = ""((_construct distance _moveTo)< 6)"";" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"//Session Vars" \n
|
||||
"" \n
|
||||
"" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"_debugDo = ""Wander"";" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="action";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "____FAKE____">*/
|
||||
class ____FAKE____
|
||||
{
|
||||
name = "____FAKE____";
|
||||
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "construct_smash">*/
|
||||
class construct_smash
|
||||
{
|
||||
priority = 60.000000;
|
||||
to="instinct";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_buildBash;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_doSmash = true;" \n
|
||||
"_decisionMade = true;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
};
|
||||
initState="construct";
|
||||
finalStates[] =
|
||||
{
|
||||
"end"
|
||||
};
|
||||
};
|
||||
/*%FSM</COMPILE>*/
|
@ -72,12 +72,12 @@ if (_class in ["Hatchet","CrudeHatchet"]) then {
|
||||
player addMagazine "Hatchet_swing";
|
||||
};
|
||||
};
|
||||
if (_class in ["MeleeSledge", "MeleeMaul"]) then {
|
||||
if (_class in ["MeleeSledge","MeleeMaul","MeleeSword"]) then {
|
||||
if !("sledge_swing" in _mags) then {
|
||||
player addMagazine "sledge_swing";
|
||||
};
|
||||
};
|
||||
if (_class in ["WoodClub","Plunger"]) then {
|
||||
if (_class in ["WoodClub","Plunger","MeleeRod"]) then {
|
||||
if !("stick_swing" in _mags) then {
|
||||
player addMagazine "stick_swing";
|
||||
};
|
||||
|
@ -96,7 +96,7 @@ switch _interactOption do {
|
||||
|
||||
_isOk = if (_isStorage == 1) then { EPOCH_StorageSlotsCount > 0 } else { EPOCH_BuildingSlotCount > 0 };
|
||||
|
||||
if (_buildClass == "LockBox_SIM_EPOCH") then {
|
||||
if (_buildClass isKindOf "Secure_Storage_Temp") then {
|
||||
_isOk = (EPOCH_StorageSlotsCount > 0 && EPOCH_BuildingSlotCount > 0);
|
||||
};
|
||||
if (isNil "EPOCH_simulSwap_Lock") then {
|
||||
|
@ -58,6 +58,22 @@ class CfgMagazines
|
||||
interactText = "BUILD";
|
||||
buildClass = "LockBox_SIM_EPOCH";
|
||||
};
|
||||
class ItemSafe : CA_Magazine
|
||||
{
|
||||
scope = 2;
|
||||
count = 1;
|
||||
type = 256;
|
||||
displayName = "Safe";
|
||||
model = "\x\addons\a3_epoch_assets_1\models\safe_onside.p3d";
|
||||
picture = "\x\addons\a3_epoch_assets_1\pictures\equip_safe_CA.paa";
|
||||
descriptionShort = "Secure Safe";
|
||||
mass = 50;
|
||||
interactAction = 3;
|
||||
interactText = "BUILD";
|
||||
buildClass = "Safe_SIM_EPOCH";
|
||||
};
|
||||
|
||||
|
||||
class PartPlankPack: CA_Magazine
|
||||
{
|
||||
scope = 2;
|
||||
|
@ -5,6 +5,7 @@ class CfgPricing
|
||||
class ItemCoolerE {price = 50;};
|
||||
class JackKit {price = 25;};
|
||||
class ItemLockbox {price = 250; tax = 0.5;};
|
||||
class ItemSafe { price = 1250; tax = 0.5; };
|
||||
class ItemCompass {price = 3;};
|
||||
class ItemGPS {price = 20;};
|
||||
|
||||
@ -632,6 +633,7 @@ class CfgPricing
|
||||
class H_104_EPOCH {price = 3;};
|
||||
class wolf_mask_epoch {price = 30;};
|
||||
class pkin_mask_epoch {price = 30;};
|
||||
class clown_mask_epoch {price = 30;};
|
||||
|
||||
class C_Offroad_01_EPOCH {price = 750;};
|
||||
class C_Quadbike_01_EPOCH {price = 500;};
|
||||
@ -650,6 +652,7 @@ class CfgPricing
|
||||
class B_Heli_Light_01_EPOCH {price = 2500;};
|
||||
class B_SDV_01_EPOCH {price = 1000;};
|
||||
class B_MRAP_01_EPOCH {price = 2500;};
|
||||
class I_MRAP_03_EPOCH { price = 2500; };
|
||||
class B_G_Offroad_01_armed_EPOCH {price = 2500;};
|
||||
class B_Truck_01_transport_EPOCH {price = 1000;};
|
||||
class B_Truck_01_covered_EPOCH {price = 1000;};
|
||||
|
@ -1927,6 +1927,21 @@ class CfgVehicles
|
||||
class TransportItems{};
|
||||
class Eventhandlers{};
|
||||
};
|
||||
|
||||
class I_MRAP_03_F;
|
||||
class I_MRAP_03_EPOCH : I_MRAP_03_F
|
||||
{
|
||||
scope = 2;
|
||||
crew = "";
|
||||
side = 3;
|
||||
armor = 75;
|
||||
faction = "CIV_F";
|
||||
maximumLoad = 3500;
|
||||
typicalCargo[] = {};
|
||||
class TransportItems{};
|
||||
class Eventhandlers{};
|
||||
};
|
||||
|
||||
class B_Truck_01_transport_F;
|
||||
class B_Truck_01_transport_EPOCH: B_Truck_01_transport_F
|
||||
{
|
||||
@ -2339,8 +2354,8 @@ class CfgVehicles
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\Sapper_corpse.p3d";
|
||||
displayName = "Sapper Corpse";
|
||||
};
|
||||
|
||||
class LockBox_SIM_EPOCH : Constructions_modular_F
|
||||
class Secure_Storage_Temp : Constructions_modular_F {};
|
||||
class LockBox_SIM_EPOCH : Secure_Storage_Temp
|
||||
{
|
||||
scope = 2;
|
||||
model = "\x\addons\a3_epoch_assets_1\models\lockbox.p3d";
|
||||
@ -2351,6 +2366,17 @@ class CfgVehicles
|
||||
limitNearby = 2;
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class Safe_SIM_EPOCH : Secure_Storage_Temp
|
||||
{
|
||||
scope = 2;
|
||||
model = "\x\addons\a3_epoch_assets_1\models\safe.p3d";
|
||||
displayName = "Safe";
|
||||
simulClass = "Safe_SIM_EPOCH";
|
||||
staticClass = "Safe_EPOCH";
|
||||
GhostPreview = "Safe_EPOCH";
|
||||
limitNearby = 2;
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class Fireplace_SIM_EPOCH : Constructions_modular_F
|
||||
{
|
||||
scope = 2;
|
||||
@ -3560,6 +3586,46 @@ class CfgVehicles
|
||||
armor = 5000;
|
||||
bypassJammer = 1;
|
||||
limitNearby = 2;
|
||||
isSecureStorage = 1;
|
||||
returnOnPack[] = { { "ItemLockbox", 1 } };
|
||||
class UserActions
|
||||
{
|
||||
class Unlock
|
||||
{
|
||||
displayName = "Unlock";
|
||||
onlyforplayer = 1;
|
||||
position = "Door_knopf";
|
||||
radius = 3;
|
||||
condition = "this getVariable [""EPOCH_Locked"",true]";
|
||||
statement = "EPOCH_lockStorage_PVS = [this,false,player,Epoch_personalToken]; publicVariableServer ""EPOCH_lockStorage_PVS"";";
|
||||
};
|
||||
class Pack
|
||||
{
|
||||
displayName = "Pack";
|
||||
onlyforplayer = 1;
|
||||
position = "Door_knopf";
|
||||
radius = 3;
|
||||
condition = "this getVariable [""EPOCH_Locked"",true]";
|
||||
statement = "EPOCH_packStorage_PVS = [this,player,Epoch_personalToken]; publicVariableServer ""EPOCH_packStorage_PVS"";";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class Safe_EPOCH : Constructions_lockedstatic_F
|
||||
{
|
||||
scope = 2;
|
||||
model = "\x\addons\a3_epoch_assets_1\models\safe.p3d";
|
||||
displayName = "Lockbox";
|
||||
simulClass = "Safe_SIM_EPOCH";
|
||||
staticClass = "Safe_EPOCH";
|
||||
weaponHolderProxy = "SafeProxy_EPOCH";
|
||||
GhostPreview = "Safe_EPOCH";
|
||||
armor = 15000;
|
||||
bypassJammer = 1;
|
||||
limitNearby = 2;
|
||||
isSecureStorage = 1;
|
||||
returnOnPack[] = { { "ItemSafe", 1 } };
|
||||
class UserActions
|
||||
{
|
||||
class Unlock
|
||||
@ -4866,7 +4932,8 @@ class CfgVehicles
|
||||
};
|
||||
};
|
||||
|
||||
class LockBoxProxy_EPOCH : WeaponHolder
|
||||
class Secure_Storage_Proxy : WeaponHolder {};
|
||||
class LockBoxProxy_EPOCH : Secure_Storage_Proxy
|
||||
{
|
||||
scope = 2;
|
||||
model = "\A3\Weapons_f\dummyweapon.p3d";
|
||||
@ -4875,6 +4942,32 @@ class CfgVehicles
|
||||
showWeaponCargo = 0;
|
||||
forceSupply = 0;
|
||||
maximumLoad = 600;
|
||||
isSecureStorage = 1;
|
||||
|
||||
class UserActions
|
||||
{
|
||||
class Lock
|
||||
{
|
||||
displayName = "Lock";
|
||||
onlyforplayer = 1;
|
||||
position = "Door_knopf";
|
||||
radius = 3;
|
||||
condition = "this == this";
|
||||
statement = "EPOCH_lockStorage_PVS = [this,true,player,Epoch_personalToken]; publicVariableServer ""EPOCH_lockStorage_PVS"";";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class SafeProxy_EPOCH : Secure_Storage_Proxy
|
||||
{
|
||||
scope = 2;
|
||||
model = "\A3\Weapons_f\dummyweapon.p3d";
|
||||
displayName = "Safe WH";
|
||||
isGround = 0;
|
||||
showWeaponCargo = 0;
|
||||
forceSupply = 0;
|
||||
maximumLoad = 3600;
|
||||
isSecureStorage = 1;
|
||||
|
||||
class UserActions
|
||||
{
|
||||
|
@ -1116,7 +1116,7 @@ class CfgWeapons
|
||||
scope = 2;
|
||||
weaponPoolAvailable = 1;
|
||||
displayName = "Clown Mask";
|
||||
picture = "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\gear_wolfmask_x_ca.paa";
|
||||
picture = "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\gear_clownmask_ca.paa";
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\clown.p3d";
|
||||
class ItemInfo : HeadgearItem
|
||||
{
|
||||
@ -2217,6 +2217,24 @@ class CfgWeapons
|
||||
descriptionShort = "Sledge Hammer";
|
||||
|
||||
};
|
||||
class MeleeSword : MeleeWeapon
|
||||
{
|
||||
scope = 2;
|
||||
type = 4;
|
||||
primary = 0;
|
||||
reloadAction = "ReloadRPG";
|
||||
autoreload = 1;
|
||||
magazineReloadTime = 0;
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgWeapons\sword_weaponized.p3d";
|
||||
//TODO ICON
|
||||
picture = "\x\addons\a3_epoch_assets\textures\Sledge\equip_sledge_CA.paa";
|
||||
displayName = "Sword";
|
||||
magazines[] = { "sledge_swing" };
|
||||
handAnim[] = { "OFP2_ManSkeleton", "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\Sledge_hold.rtm" };
|
||||
descriptionShort = "Sword";
|
||||
|
||||
};
|
||||
|
||||
class MeleeMaul : MeleeWeapon
|
||||
{
|
||||
scope = 2;
|
||||
@ -2248,6 +2266,22 @@ class CfgWeapons
|
||||
handAnim[] = { "OFP2_ManSkeleton", "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\Sledge_hold.rtm" };
|
||||
descriptionShort = "Wood Club";
|
||||
};
|
||||
class MeleeRod : MeleeWeapon
|
||||
{
|
||||
scope = 2;
|
||||
type = 4;
|
||||
primary = 0;
|
||||
reloadAction = "ReloadRPG";
|
||||
autoreload = 1;
|
||||
magazineReloadTime = 0;
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgWeapons\fishingpole_weaponized.p3d";
|
||||
// TODO
|
||||
picture = "\x\addons\a3_epoch_assets\textures\improv_weapon\gear_stick_ca.paa";
|
||||
displayName = "Fishing Rod";
|
||||
magazines[] = { "stick_swing" };
|
||||
handAnim[] = { "OFP2_ManSkeleton", "\x\addons\a3_epoch_assets_3\CfgVehicles\Characters\Sledge_hold.rtm" };
|
||||
descriptionShort = "Fishing Rod";
|
||||
};
|
||||
class Plunger : MeleeWeapon
|
||||
{
|
||||
scope = 2;
|
||||
|
@ -82,7 +82,8 @@ for "_i" from 0 to _this do {
|
||||
_marker setMarkerColor "ColorBlue";
|
||||
};
|
||||
};
|
||||
if (_class == "LockBox_EPOCH") then {
|
||||
|
||||
if (_class isKindOf 'Constructions_lockedstatic_F') then{
|
||||
if ((_location select 2) < 0) then {
|
||||
_location set [2, 0];
|
||||
_baseObj setposATL _location;
|
||||
|
@ -85,12 +85,11 @@ if (isText _config) then {
|
||||
_newVehicle setVariable["BUILD_OWNER", _plyrUID, true];
|
||||
|
||||
_slot = "-1";
|
||||
// TODO change to config based classes
|
||||
if (_oemType == "LockBox_SIM_EPOCH") then {
|
||||
if (getNumber(configFile >> "CfgVehicles" >> _staticClass >> "isSecureStorage") == 1) then{
|
||||
|
||||
//diag_log format["building lockbox %1", _oemType];
|
||||
|
||||
_buildClass = "LockBoxProxy_EPOCH";
|
||||
_buildClass = getText(configFile >> "CfgVehicles" >> _staticClass >> "weaponHolderProxy");
|
||||
|
||||
if (!isNull _newVehicle) then {
|
||||
|
||||
@ -99,32 +98,34 @@ if (isText _config) then {
|
||||
if !(EPOCH_StorageSlots isEqualTo []) then {
|
||||
|
||||
//diag_log format["building lockbox findslot %1", _newVehicle];
|
||||
if (_buildClass != "") then{
|
||||
|
||||
// TODO need some sanity checks here
|
||||
_storageObj = createVehicle[_buildClass, _vehiclePos, [], 0.0, "CAN_COLLIDE"];
|
||||
// TODO need some sanity checks here
|
||||
_storageObj = createVehicle[_buildClass, _vehiclePos, [], 0.0, "CAN_COLLIDE"];
|
||||
|
||||
_slot = EPOCH_StorageSlots select 0;
|
||||
EPOCH_StorageSlots = EPOCH_StorageSlots - [_slot];
|
||||
_slot = EPOCH_StorageSlots select 0;
|
||||
EPOCH_StorageSlots = EPOCH_StorageSlots - [_slot];
|
||||
|
||||
//diag_log format["building lockbox found slot %1", _slot];
|
||||
//diag_log format["building lockbox found slot %1", _slot];
|
||||
|
||||
missionNamespace setVariable[format["EPOCH_STORAGE_%1", _slot], _storageObj];
|
||||
missionNamespace setVariable[format["EPOCH_STORAGE_%1", _slot], _storageObj];
|
||||
|
||||
_newVehicle setVariable["EPOCH_secureStorage", _slot];
|
||||
_newVehicle setVariable["EPOCH_Locked", false, true];
|
||||
_newVehicle setVariable["EPOCH_secureStorage", _slot];
|
||||
_newVehicle setVariable["EPOCH_Locked", false, true];
|
||||
|
||||
_storageObj setVariable["STORAGE_OWNERS", [_plyrUID]];
|
||||
_storageObj setVariable["EPOCH_secStorParent", _objSlot];
|
||||
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
||||
_storageObj setVariable["STORAGE_OWNERS", [_plyrUID]];
|
||||
_storageObj setVariable["EPOCH_secStorParent", _objSlot];
|
||||
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
||||
|
||||
_storageObj call EPOCH_server_save_storage;
|
||||
_storageObj call EPOCH_server_save_storage;
|
||||
|
||||
_storageObj call EPOCH_server_storageInit;
|
||||
_storageObj call EPOCH_server_storageInit;
|
||||
|
||||
diag_log format["STORAGE: %1 created storage %2 at %3", _plyrUID, _buildClass, _pos];
|
||||
diag_log format["STORAGE: %1 created storage %2 at %3", _plyrUID, _buildClass, _pos];
|
||||
|
||||
EPOCH_StorageSlotsCount = count EPOCH_StorageSlots;
|
||||
publicVariable "EPOCH_StorageSlotsCount";
|
||||
EPOCH_StorageSlotsCount = count EPOCH_StorageSlots;
|
||||
publicVariable "EPOCH_StorageSlotsCount";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -185,9 +185,9 @@ if (_slot != -1) then {
|
||||
};
|
||||
};
|
||||
// select available slot
|
||||
_slot = EPOCH_VehicleSlots select 0;
|
||||
_vehslot = EPOCH_VehicleSlots select 0;
|
||||
// Remove from available slots
|
||||
EPOCH_VehicleSlots = EPOCH_VehicleSlots - [_slot];
|
||||
EPOCH_VehicleSlots = EPOCH_VehicleSlots - [_vehslot];
|
||||
EPOCH_VehicleSlotCount = count EPOCH_VehicleSlots;
|
||||
publicVariable "EPOCH_VehicleSlotCount";
|
||||
|
||||
@ -203,7 +203,7 @@ if (_slot != -1) then {
|
||||
_lockOwner = _plyrGroup;
|
||||
};
|
||||
|
||||
_vehObj = [_item,_position,random 360,true,_slot,_lockOwner,"NONE",false] call EPOCH_fnc_spawn_vehicle;
|
||||
_vehObj = [_item,_position,random 360,true,_vehslot,_lockOwner,"NONE",false] call EPOCH_fnc_spawn_vehicle;
|
||||
|
||||
|
||||
_returnOut pushBack _item;
|
||||
|
@ -76,9 +76,7 @@ for "_i" from 1 to _this do {
|
||||
|
||||
if (count _arr >= 6) then {
|
||||
_vehicle setVariable ["STORAGE_OWNERS", _arr select 5];
|
||||
|
||||
if (_class == "LockBoxProxy_EPOCH") then {
|
||||
|
||||
if (_class isKindOf 'Secure_Storage_Proxy') then{
|
||||
if ((_arr select 6) != -1) then {
|
||||
_vehicle setVariable ["EPOCH_secStorParent", _arr select 6];
|
||||
_location set [2, -10];
|
||||
|
@ -29,7 +29,7 @@ for "_i" from 1 to _this do {
|
||||
_class = _arr select 0;
|
||||
_worldspace = _arr select 1;
|
||||
_damage = _arr select 2;
|
||||
|
||||
|
||||
if (_class != "" && _damage < 1) then {
|
||||
_location = _worldspace deleteAt 0;
|
||||
|
||||
@ -41,7 +41,7 @@ for "_i" from 1 to _this do {
|
||||
};
|
||||
|
||||
EPOCH_VehicleSlots deleteAt _vehicleSlotIndex;
|
||||
|
||||
|
||||
// temp for changes in class names
|
||||
_found = ["O_Heli_Transport_04_F","O_Heli_Transport_04_bench_F","O_Heli_Transport_04_box_F","O_Heli_Transport_04_covered_F","B_Heli_Transport_03_unarmed_F","O_Truck_03_covered_F"] find _class;
|
||||
if (_found != -1) then {
|
||||
@ -49,13 +49,13 @@ for "_i" from 1 to _this do {
|
||||
};
|
||||
|
||||
_vehicle = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"];
|
||||
|
||||
|
||||
|
||||
_allVehicles pushBack _vehicle;
|
||||
|
||||
_vehicle call EPOCH_server_setVToken;
|
||||
|
||||
_vehicle setposATL _location;
|
||||
|
||||
_vehicle setVectorDirAndUp _worldspace;
|
||||
|
||||
_vehicle setDamage _damage;
|
||||
@ -80,7 +80,7 @@ for "_i" from 1 to _this do {
|
||||
};
|
||||
|
||||
_vehicle setFuel (_arr select 4);
|
||||
|
||||
|
||||
_vehicle call EPOCH_server_vehicleInit;
|
||||
|
||||
_config = configFile >> "CfgVehicles" >> _class >> "availableColors";
|
||||
@ -129,7 +129,7 @@ for "_i" from 1 to _this do {
|
||||
case 0: {
|
||||
if (typeName _x == "ARRAY") then {
|
||||
if ((count _x) >= 4) then {
|
||||
|
||||
|
||||
_vehicle addWeaponCargoGlobal[_x deleteAt 0, 1];
|
||||
|
||||
_attachments = [];
|
||||
@ -150,7 +150,7 @@ for "_i" from 1 to _this do {
|
||||
};
|
||||
} forEach _x;
|
||||
|
||||
// add all attachments to vehicle
|
||||
// add all attachments to vehicle
|
||||
// TODO replace with adding attachments directly to gun (Arma feature dependant)
|
||||
{
|
||||
_vehicle addItemCargoGlobal[_x, 1];
|
||||
@ -161,7 +161,7 @@ for "_i" from 1 to _this do {
|
||||
_vehicle addMagazineAmmoCargo[_wMagsArray select 0, 1, _wMagsArray select 1];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -229,8 +229,8 @@ for "_i" from 1 to _this do {
|
||||
_vehicle enableSimulationGlobal false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -7,7 +7,7 @@ if (isNull _unit) exitWith{};
|
||||
if (_plyr distance _unit > 20) exitWith{};
|
||||
|
||||
_type = typeOf _unit;
|
||||
if (_type in ["LockBox_EPOCH","LockBoxProxy_EPOCH"]) then {
|
||||
if (getNumber(configFile >> "CfgVehicles" >> _type >> "isSecureStorage") == 1) then{
|
||||
|
||||
_parentID = _unit getVariable ["EPOCH_secureStorage", "-1"];
|
||||
_weaponHolder = missionNamespace getVariable [format ["EPOCH_STORAGE_%1",_parentID], objNull];
|
||||
|
@ -5,7 +5,8 @@ if !([_plyr, _this select 2] call EPOCH_server_getPToken) exitWith{};
|
||||
if (isNull _unit) exitWith{};
|
||||
if (_plyr distance _unit > 20) exitWith{};
|
||||
|
||||
if (typeOf _unit == "LockBox_EPOCH") then {
|
||||
_class = typeOf _unit;
|
||||
if (_class isKindOf 'Constructions_lockedstatic_F') then{
|
||||
_parentID = _unit getVariable["EPOCH_secureStorage", "-1"];
|
||||
_weaponHolder = missionNamespace getVariable[format["EPOCH_STORAGE_%1", _parentID], objNull];
|
||||
if (!isNull _weaponHolder) then {
|
||||
@ -40,7 +41,11 @@ if (typeOf _unit == "LockBox_EPOCH") then {
|
||||
|
||||
_gwh = createVehicle["groundWeaponHolder", _posWH, [], 0, "CAN_COLLIDE"];
|
||||
_gwh setPosATL _posWH;
|
||||
_gwh addMagazineCargoGlobal["ItemLockbox", 1];
|
||||
|
||||
_returnItems = getArray(configFile >> "CfgVehicles" >> _class >> "returnOnPack");
|
||||
{
|
||||
_gwh addMagazineCargoGlobal _x;
|
||||
} forEach _returnItems;
|
||||
|
||||
{
|
||||
_objType = _forEachIndex;
|
||||
|
@ -1108,7 +1108,7 @@ call compile ("'"+_skn_doAdminRequest+"' addPublicVariableEventHandler {
|
||||
if ((_content isKindOf 'LandVehicle') || (_content isKindOf 'Air') || (_content isKindOf 'Ship') || (_content isKindOf 'Tank')) then {
|
||||
[_content, _admin] call EPOCH_server_save_killedVehicle;
|
||||
} else {
|
||||
if (typeOf _content in ['LockBoxProxy_EPOCH'] || (_content isKindOf 'Buildable_Storage')) then {
|
||||
if (_content isKindOf 'Secure_Storage_Proxy' || (_content isKindOf 'Buildable_Storage')) then{
|
||||
[_content, _admin] call EPOCH_server_save_killedStorage;
|
||||
} else {
|
||||
[_content, _admin] call EPOCH_server_save_killedBuilding;
|
||||
@ -2077,7 +2077,7 @@ _skn_admincode = compileFinal ("
|
||||
}forEach _attachments;
|
||||
};
|
||||
if (_this == 70) then {
|
||||
_headgear = ['wolf_mask_epoch','pkin_mask_epoch'];
|
||||
_headgear = ['wolf_mask_epoch','pkin_mask_epoch','clown_mask_epoch'];
|
||||
for '_h' from 1 to 104 do
|
||||
{
|
||||
_headgear pushBack format['H_%1_EPOCH',_h];
|
||||
|
@ -45,6 +45,7 @@ _configArray = [
|
||||
["B_Heli_Light_01_EPOCH", 2],
|
||||
["B_SDV_01_EPOCH", 2],
|
||||
["B_MRAP_01_EPOCH", 3],
|
||||
["I_MRAP_03_EPOCH", 3],
|
||||
["B_Truck_01_transport_EPOCH", 1],
|
||||
["B_Truck_01_covered_EPOCH", 2],
|
||||
["B_Truck_01_mover_EPOCH", 1],
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Server Monitor">*/
|
||||
/*%FSM<HEAD>*/
|
||||
/*
|
||||
item0[] = {"Init",0,250,600.000000,-575.000000,700.000000,-525.000000,0.000000,"Init"};
|
||||
item0[] = {"Init",0,4346,600.000000,-575.000000,700.000000,-525.000000,0.000000,"Init"};
|
||||
item1[] = {"_",8,218,600.000000,-500.000000,700.000000,-450.000000,0.000000,""};
|
||||
item2[] = {"Process",2,250,600.000000,-350.000000,700.000000,-300.000000,0.000000,"Process"};
|
||||
item3[] = {"De_simulate_Vehicle",4,218,750.000000,-225.000000,850.000000,-175.000000,2.000000,"De-simulate" \n "Vehicle Check"};
|
||||
@ -33,8 +33,8 @@ link16[] = {8,2};
|
||||
link17[] = {9,2};
|
||||
link18[] = {10,2};
|
||||
link19[] = {11,2};
|
||||
globals[] = {25.000000,1,0,0,0,640,480,1,2,6316128,1,323.926788,885.320923,-53.358742,-574.484070,948,880,1};
|
||||
window[] = {2,-1,-1,-1,-1,968,208,1646,208,3,966};
|
||||
globals[] = {25.000000,1,0,0,0,640,480,1,2,6316128,1,323.926788,885.320923,-295.501770,-668.580139,948,630,1};
|
||||
window[] = {2,-1,-1,-1,-1,942,182,1474,182,3,966};
|
||||
*//*%FSM</HEAD>*/
|
||||
class FSM
|
||||
{
|
||||
@ -126,7 +126,9 @@ class FSM
|
||||
" _list = _this nearEntities[[""Epoch_Male_F"", ""Epoch_Female_F"", ""LandVehicle"", ""Ship"", ""Air"", ""Tank""], 45];" \n
|
||||
" if ({ isPlayer _x }count _list == 0) then {" \n
|
||||
" _this setVariable [""LAST_CHECK"",nil];" \n
|
||||
" diag_log format[""DEBUG: _cleanIT del %1"", _this];" \n
|
||||
" deleteVehicle _this;" \n
|
||||
"" \n
|
||||
" };" \n
|
||||
" };" \n
|
||||
" };" \n
|
||||
@ -147,6 +149,7 @@ class FSM
|
||||
" deleteVehicle _x;" \n
|
||||
" }forEach nearestObjects[_this, [""WeaponHolder""], 2];" \n
|
||||
" _this setVariable [""LAST_CHECK"",nil];" \n
|
||||
" diag_log format[""DEBUG: _cleanIT2 del %1"", _this];" \n
|
||||
" deleteVehicle _this;" \n
|
||||
" _removed = true;" \n
|
||||
" };" \n
|
||||
@ -325,6 +328,7 @@ class FSM
|
||||
" _activeVehicles pushBack _x;" \n
|
||||
" };" \n
|
||||
" } else {" \n
|
||||
" diag_log format[""DEBUG: vtoken del %1"",_x];" \n
|
||||
" deleteVehicle _x;" \n
|
||||
" };" \n
|
||||
" };" \n
|
||||
|
@ -790,7 +790,9 @@ class CfgLootTable
|
||||
{ { "scam_epoch", "magazine" }, 15 },
|
||||
{ { "sweetcorn_epoch", "magazine" }, 15 },
|
||||
{ { "FoodSnooter", "magazine" }, 9 },
|
||||
{ { "TacticalBacon", "magazine" }, 5 }
|
||||
{ { "TacticalBacon", "magazine" }, 5 },
|
||||
{ { "FoodMeeps", "magazine" }, 1 }
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
@ -831,25 +833,28 @@ class CfgLootTable
|
||||
class GenericLarge
|
||||
{
|
||||
items[] = {
|
||||
{ { "MortarBucket", "magazine" }, 17 },
|
||||
{ { "MortarBucket", "magazine" }, 16 },
|
||||
{ { "CinderBlocks", "magazine" }, 17 },
|
||||
{ { "VehicleRepair", "magazine" }, 17 },
|
||||
{ { "CircuitParts", "magazine" }, 17 },
|
||||
{ { "ItemCorrugated", "magazine" }, 17 },
|
||||
{ { "ItemSolar", "magazine" }, 5 },
|
||||
{ { "ItemBattery", "magazine" }, 5 },
|
||||
{ { "ItemCables", "magazine" }, 5 }
|
||||
{ { "ItemCables", "magazine" }, 5 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
class GenericAuto
|
||||
{
|
||||
items[] = {
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "jerrycan_epoch", "magazine" }, 5 },
|
||||
{ { "CircuitParts", "magazine" }, 6 },
|
||||
{ { "MortarBucket", "magazine" }, 9 },
|
||||
{ { "VehicleRepair", "magazine" }, 11 },
|
||||
{ { "VehicleRepair", "magazine" }, 10 },
|
||||
{ { "ItemCorrugated", "magazine" }, 11 },
|
||||
{ { "CinderBlocks", "magazine" }, 12 },
|
||||
{ { "JackKit", "magazine" }, 9 },
|
||||
@ -1148,10 +1153,12 @@ class CfgLootTable
|
||||
class Tools
|
||||
{
|
||||
items[] = {
|
||||
{ { "Hatchet", "weapon" }, 65 },
|
||||
{ { "Hatchet", "weapon" }, 62 },
|
||||
{ { "MeleeSledge", "weapon" }, 20 },
|
||||
{ { "ChainSaw", "weapon" }, 10 },
|
||||
{ { "Plunger", "weapon" }, 4 },
|
||||
{ { "MeleeSword", "weapon" }, 1 },
|
||||
{ { "MeleeRod", "weapon" }, 2 },
|
||||
{ { "lighter_epoch", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
@ -1358,7 +1365,8 @@ class CfgLootTable
|
||||
{ { "KitFirePlace", "magazine" }, 8 },
|
||||
{ { "KitCinderWall", "magazine" }, 5 },
|
||||
{ { "KitFoundation", "magazine" }, 5 },
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 }
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
|
||||
@ -1369,8 +1377,9 @@ class CfgLootTable
|
||||
{ { "Sodas", "CfgLootTable" }, 6 },
|
||||
{ { "CanFood", "CfgLootTable" }, 8 },
|
||||
{ { "BaseBuilding", "CfgLootTable" }, 20 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 25 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 24 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Generic", "CfgLootTable" }, 10 },
|
||||
{ { "Tools", "CfgLootTable" }, 19 }
|
||||
};
|
||||
@ -1834,9 +1843,11 @@ class CfgLootTable
|
||||
{ { "H_90_EPOCH", "item" }, 1 },
|
||||
{ { "H_91_EPOCH", "item" }, 1 },
|
||||
{ { "H_92_EPOCH", "item" }, 1 },
|
||||
{ { "H_104_EPOCH", "item" }, 1 }
|
||||
// { { "wolf_mask_epoch", "item" }, 1 },
|
||||
// { { "pkin_mask_epoch", "item" }, 1 }
|
||||
{ { "H_104_EPOCH", "item" }, 1 },
|
||||
{ { "wolf_mask_epoch", "item" }, 1 },
|
||||
{ { "pkin_mask_epoch", "item" }, 1 },
|
||||
{ { "clown_mask_epoch", "item" }, 1 }
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user