1 1 2 2 /*%FSM*/ 3 3 /*%FSM*/ 4 4 /*%FSM*/ 5 5 /* 6 6 item0[] = {"init",0,250,-75.000000,-400.000000,25.000000,-350.000000,0.000000,"init"}; 7 7 item1[] = {"true",8,218,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"true"}; 8 8 item2[] = {"waiting",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"waiting"}; 9 9 item3[] = {"too_many_dead",4,218,-150.000000,-25.000000,-50.000000,25.000000,2.000000,"too many" \n "dead"}; 10 10 item4[] = {"cleanup_dead",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"cleanup" \n "dead"}; 11 11 item5[] = {"too_many_objects",4,218,-25.000000,-25.000000,75.000000,25.000000,0.000000,"too many" \n "objects"}; 12 12 item6[] = {"cleanup_objects",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"cleanup" \n "objects"}; 13 13 item7[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"}; 14 14 item8[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"}; 15 15 item9[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"}; 16 16 item10[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup"}; 17 17 item11[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""}; 18 18 item12[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""}; 19 19 item13[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; 20 20 item14[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""}; 21 21 item15[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; 22 22 item16[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; 23 23 item17[] = {"update_objects",2,250,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"}; 24 24 item18[] = {"need_update",4,218,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"}; 25 25 item19[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; 26 26 item20[] = {"zeds",4,218,-275.000000,-100.000000,-175.000000,-50.000000,5.000000,"zeds"}; 27 27 item21[] = {"zeds_2",2,4346,-275.000000,-225.000000,-175.000000,-175.000000,0.000000,"zeds 2"}; 28 28 item21[] = {"zeds_2",2,250,-275.000000,-250.000000,-175.000000,-200.000000,0.000000,"zeds 2"}; 29 29 link0[] = {0,15}; 30 30 link1[] = {1,2}; 31 31 link2[] = {2,3}; 32 32 link3[] = {2,5}; 33 33 link4[] = {2,7}; 34 34 link5[] = {2,13}; 35 35 link6[] = {2,18}; 36 36 link7[] = {2,20}; 37 37 link8[] = {3,4}; 38 38 link9[] = {4,9}; 39 39 link10[] = {5,6}; 40 40 link11[] = {6,9}; 41 41 link12[] = {7,8}; 42 42 link13[] = {8,9}; 43 43 link14[] = {9,10}; 44 44 link15[] = {10,11}; 45 45 link16[] = {11,12}; 46 46 link17[] = {12,1}; 47 47 link18[] = {13,14}; 48 48 link19[] = {13,19}; 49 49 link20[] = {14,9}; 50 50 link21[] = {15,16}; 51 51 link22[] = {16,1}; 52 52 link23[] = {17,9}; 53 53 link24[] = {18,17}; 54 54 link25[] = {20,21}; 55 55 link26[] = {21,1}; 56 56 globals[] = {25.000000,1,0,0,0,640,480,1,27,6316128,1,-386.425232,364.427612,247.440155,-429.820587,704,635,1}; 57 57 window[] = {0,-1,-1,-1,-1,780,726,1659,0,1,722}; 58 58 globals[] = {25.000000,1,0,0,0,640,480,1,26,6316128,1,-396.580658,354.272186,396.133423,-517.674316,834,1015,1}; 59 59 window[] = {0,-1,-1,-1,-1,1284,1161,2490,124,1,852}; 60 60 *//*%FSM*/ 61 61 class FSM 62 62 { 63 63 fsmName = "DayZ Server Cleanup"; 64 64 class States 65 65 { 66 66 /*%FSM*/ 67 67 class init 68 68 { 69 69 name = "init"; 70 70 init = /*%FSM*/""/*%FSM*/; 71 71 precondition = /*%FSM*/""/*%FSM*/; 72 72 class Links 73 73 { 74 74 /*%FSM*/ 75 75 class initialized 76 76 { 77 77 priority = 0.000000; 78 78 to="prepare"; 79 79 precondition = /*%FSM*/""/*%FSM*/; 80 80 condition=/*%FSM*/"!isnil ""bis_fnc_init"""/*%FSM*/; 81 81 action=/*%FSM*/""/*%FSM*/; 82 82 }; 83 83 /*%FSM*/ 84 84 }; 85 85 }; 86 86 /*%FSM*/ 87 87 /*%FSM*/ 88 88 class waiting 89 89 { 90 90 name = "waiting"; 91 91 init = /*%FSM*/"//diag_log ""CLEANUP: Waiting for next task"";" \n 92 92 "_numDead = {local _x} count allDead;" \n 93 93 ""/*%FSM*/; 94 94 "" \n 95 95 "private [""_payload"", ""_interval"",""_delay""];" \n 96 96 "{" \n 97 97 " _payload = _x select 0;" \n 98 98 " _interval = _x select 1;" \n 99 99 " _delay = _x select 2;" \n 100 100 " if (time - _delay > _interval && _interval != -1) then {" \n 101 101 " [nil, nil, rSPAWN, [_crier, _payload], { (_this select 0) globalChat (_this select 1) }] call RE;" \n 102 102 " if (_interval == 0) then {" \n 103 103 " _msgList set [_forEachIndex, [_payload, -1, time]];" \n 104 104 " } else {" \n 105 105 " _msgList set [_forEachIndex, [_payload, _interval, time]];" \n 106 106 " };" \n 107 107 " };" \n 108 108 "} forEach _msgList;"/*%FSM*/; 109 109 precondition = /*%FSM*/""/*%FSM*/; 110 110 class Links 111 111 { 112 112 /*%FSM*/ 113 113 class zeds 114 114 { 115 115 priority = 5.000000; 116 116 to="zeds_2"; 117 117 precondition = /*%FSM*/""/*%FSM*/; 118 118 condition=/*%FSM*/"(time - _lastZombieCheck) > 60"/*%FSM*/; 119 119 action=/*%FSM*/"_lastZombieCheck = time;"/*%FSM*/; 120 120 }; 121 121 /*%FSM*/ 122 122 /*%FSM*/ 123 123 class too_many_dead 124 124 { 125 125 priority = 2.000000; 126 126 to="cleanup_dead"; 127 127 precondition = /*%FSM*/""/*%FSM*/; 128 128 condition=/*%FSM*/"(_numDead > 300)"/*%FSM*/; 129 129 action=/*%FSM*/""/*%FSM*/; 130 130 }; 131 131 /*%FSM*/ 132 132 /*%FSM*/ 133 133 class need_update 134 134 { 135 135 priority = 1.000000; 136 136 to="update_objects"; 137 137 precondition = /*%FSM*/""/*%FSM*/; 138 138 condition=/*%FSM*/"( (count needUpdate_objects) > 0 && (time-_lastNeedUpdate>20) )"/*%FSM*/; 139 139 action=/*%FSM*/"_lastNeedUpdate = time;"/*%FSM*/; 140 140 }; 141 141 /*%FSM*/ 142 142 /*%FSM*/ 143 143 class time_sync 144 144 { 145 145 priority = 1.000000; 146 146 to="sync_the_time"; 147 147 precondition = /*%FSM*/""/*%FSM*/; 148 148 condition=/*%FSM*/"((time - _lastUpdate) > 300)"/*%FSM*/; 149 149 action=/*%FSM*/"_lastUpdate = time;"/*%FSM*/; 150 150 }; 151 151 /*%FSM*/ 152 152 /*%FSM*/ 153 153 class true 154 154 { 155 155 priority = 0.000000; 156 156 to="general_cleanup"; 157 157 precondition = /*%FSM*/""/*%FSM*/; 158 158 condition=/*%FSM*/"true"/*%FSM*/; 159 159 action=/*%FSM*/""/*%FSM*/; 160 160 }; 161 161 /*%FSM*/ 162 162 /*%FSM*/ 163 163 class too_many_objects 164 164 { 165 165 priority = 0.000000; 166 166 to="cleanup_objects"; 167 167 precondition = /*%FSM*/""/*%FSM*/; 168 168 condition=/*%FSM*/"((time - _timeNem) > 60)"/*%FSM*/; 169 169 action=/*%FSM*/"_timeNem = time;"/*%FSM*/; 170 170 }; 171 171 /*%FSM*/ 172 172 }; 173 173 }; 174 174 /*%FSM*/ 175 175 /*%FSM*/ 176 176 class cleanup_dead 177 177 { 178 178 name = "cleanup_dead"; 179 179 init = /*%FSM*/"diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n 180 180 "" \n 181 181 "diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n 182 182 "" \n 183 183 "_delQtyZ = 0;" \n 184 184 "_numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n 185 185 "{" \n 186 186 " if (local _x) then {" \n 187 187 " if (_x isKindOf ""zZombie_Base"") then {" \n 188 188 " deleteVehicle _x;" \n 189 189 " _delQtyZ = _delQtyZ + 1;" \n 190 190 " } else {" \n 191 191 " _exists = _x in _deadBodies;" \n 192 192 " if(!_exists) then {" \n 193 193 " _deadBodies set [count _deadBodies,_x];" \n 194 194 " };" \n 195 195 " };" \n 196 196 " };" \n 197 197 "} forEach allDead;" \n 198 198 "" \n 199 199 "//Cleanup players" \n 200 200 "_body = objNull;" \n 201 201 "_delQtyP = 0;" \n 202 202 "_delDo = _numDead - _numZombie;" \n 203 203 "_delDo = ((_delDo min (count _deadBodies)) -1);" \n 204 204 "if (_delDo<1) then {_delDo=1};" \n 205 205 "for ""_i"" from 0 to _delDo do {" \n 206 206 " _body = _deadBodies select _i;" \n 207 207 " if(!isNil ""_body"") then {" \n 208 208 " _pos = getPosATL _body;" \n 209 209 " _sfx = nearestObject [_pos,""Sound_Flies""];" \n 210 210 " if (!(isNull _sfx)) then {" \n 211 211 " deleteVehicle _sfx;" \n 212 212 " };" \n 213 213 " deleteVehicle _body;" \n 214 214 " _delQtyP = _delQtyP + 1;" \n 215 215 " };" \n 216 216 " _deadBodies set [_i,""DEL""];" \n 217 217 "" \n 218 218 "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n 219 219 "//Check Flies" \n 220 220 "_isOK=-1;" \n 221 221 "_dwUSOFC=0;" \n 222 222 "{" \n 223 223 " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n 224 224 " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n 225 225 " if (_isOk>-1) then {" \n 226 226 " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n 227 227 " };" \n 228 228 " if ((_isOk>-1) AND (_isOK<1)) then {" \n 229 229 " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n 230 230 "_dwUSOFC=_dwUSOFC+1;" \n 231 231 " deleteVehicle _x;" \n 232 232 " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n 233 233 " };" \n 234 234 "} forEach allMissionObjects ""Sound_Flies"";" \n 235 235 "" \n 236 236 "" \n 237 237 "//Let's move this into the body removal sequence so uncontrolled fireplaces are removed only if corpses are cleaned" \n 238 238 "//clean fireplaces" \n 239 239 "_dwUFPC=0;" \n 240 240 "{" \n 241 241 " if (local _x) then {" \n 242 242 " //diag_log (""CLEANUP: DELETING A UNCONTROLLED FIREPLACE"");" \n 243 243 " deleteVehicle _x;" \n 244 244 "_dwUFPC=_dwUFPC+1;" \n 245 245 " diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n 246 246 " };" \n 247 247 "} forEach allMissionObjects ""Land_Fire_DZ"";" \n 248 248 "" \n 249 249 "};" \n 250 250 "_deadBodies = _deadBodies - [""DEL""];" \n 251 251 "" \n 252 252 "diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n 253 253 ""/*%FSM*/; 254 254 precondition = /*%FSM*/""/*%FSM*/; 255 255 class Links 256 256 { 257 257 /*%FSM*/ 258 258 class true 259 259 { 260 260 priority = 0.000000; 261 261 to="general_cleanup"; 262 262 precondition = /*%FSM*/""/*%FSM*/; 263 263 condition=/*%FSM*/"true"/*%FSM*/; 264 264 action=/*%FSM*/""/*%FSM*/; 265 265 }; 266 266 /*%FSM*/ 267 267 }; 268 268 }; 269 269 /*%FSM*/ 270 270 /*%FSM*/ 271 271 class cleanup_objects 272 272 { 273 273 name = "cleanup_objects"; 274 274 init = /*%FSM*/"_missionObjs = allMissionObjects ""WeaponHolder"";" \n 275 275 "_qty = count _missionObjs;" \n 276 276 "" \n 277 277 "//diag_log (""CLEANUP: PERFORMING ITEM CLEANUP: TOTAL "" + str(_qty) + "" LOOT BAGS"");" \n 278 278 "_delQty = 0;" \n 279 279 "{" \n 280 280 " if (local _x) then {" \n 281 281 " _keep = _x getVariable [""permaLoot"",false];" \n 282 282 " _nearby = {isPlayer _x} count (_x nearEntities [[""CAManBase""], 100]);" \n 283 283 " if ( (!_keep) && (_nearby==0) ) then {" \n 284 284 " deleteVehicle _x;" \n 285 285 " _delQty = _delQty + 1;" \n 286 286 " };" \n 287 287 " };" \n 288 288 "} forEach _missionObjs;" \n 289 289 "if (_delQty > 0) then {" \n 290 290 " diag_log (""CLEANUP: DELETED "" + str(_delQty) + "" LOOT BAGS"");" \n 291 291 "};" \n 292 292 ""/*%FSM*/; 293 293 precondition = /*%FSM*/""/*%FSM*/; 294 294 class Links 295 295 { 296 296 /*%FSM*/ 297 297 class true 298 298 { 299 299 priority = 0.000000; 300 300 to="general_cleanup"; 301 301 precondition = /*%FSM*/""/*%FSM*/; 302 302 condition=/*%FSM*/"true"/*%FSM*/; 303 303 action=/*%FSM*/""/*%FSM*/; 304 304 }; 305 305 /*%FSM*/ 306 306 }; 307 307 }; 308 308 /*%FSM*/ 309 309 /*%FSM*/ 310 310 class sync_the_time 311 311 { 312 312 name = "sync_the_time"; 313 313 init = /*%FSM*/"//Send request" \n 314 314 "_key = ""CHILD:307:"";" \n 315 315 "_result = _key call server_hiveReadWrite;" \n 316 316 "_outcome = _result select 0;" \n 317 317 "if(_outcome == ""PASS"") then {" \n 318 318 " _date = _result select 1; " \n 319 319 " _dateNum = dateToNumber(_date); " \n 320 320 " _diff = ( _dateNum - dateToNumber (date) )*365*24*60;" \n 321 321 " if ( abs(_diff)>5 ) then {" \n 322 322 " setDate _date;" \n 323 323 " dayzSetDate = _date;" \n 324 324 " publicVariable ""dayzSetDate"";" \n 325 325 " diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n 326 326 " };" \n 327 327 "};" \n 328 328 ""/*%FSM*/; 329 329 precondition = /*%FSM*/""/*%FSM*/; 330 330 class Links 331 331 { 332 332 /*%FSM*/ 333 333 class true 334 334 { 335 335 priority = 0.000000; 336 336 to="general_cleanup"; 337 337 precondition = /*%FSM*/""/*%FSM*/; 338 338 condition=/*%FSM*/"true"/*%FSM*/; 339 339 action=/*%FSM*/""/*%FSM*/; 340 340 }; 341 341 /*%FSM*/ 342 342 }; 343 343 }; 344 344 /*%FSM*/ 345 345 /*%FSM*/ 346 346 class general_cleanup 347 347 { 348 348 name = "general_cleanup"; 349 349 init = /*%FSM*/"//Clean groups" \n 350 350 "{" \n 351 351 " //diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n 352 352 " if (count units _x==0) then {" \n 353 353 " deleteGroup _x;" \n 354 354 " //diag_log (""CLEANUP: DELETING A GROUP"");" \n 355 355 " };" \n 356 356 "} forEach allGroups;" \n 357 357 "" \n 358 358 "/*" \n 359 359 "//Check for Ammobox" \n 360 360 " {" \n 361 361 " if(!(_x isKindOf ""WeaponHolder"")) then {" \n 362 362 " diag_log (""CLEANUP: DELETING AN AMMOBOX "" + (typeOf _x));" \n 363 363 " deleteVehicle _x;" \n 364 364 " };" \n 365 365 " } forEach allMissionObjects ""ReammoBox"";" \n 366 366 "*/" \n 367 367 "" \n 368 368 "//Check for hackers" \n 369 369 " {" \n 370 - " if(vehicle _x != _x && !(vehicle _x in _safety) && (typeOf vehicle _x) != ""ParachuteWest"") then {" \n 370 + " if(vehicle _x != _x && !(vehicle _x in _safety) && (typeOf vehicle _x) != ""ParachuteWest"" && (vehicle _x getVariable [""Sarge"",0] != 1)) then {" \n 371 371 " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n 372 372 " (vehicle _x) setDamage 1;" \n 373 373 " _x setDamage 1;" \n 374 374 " };" \n 375 375 " } forEach allUnits;" \n 376 376 "" \n 377 377 "/*" \n 378 378 "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n 379 379 "//Check Flies" \n 380 380 "_isOK=-1;" \n 381 381 "_dwUSOFC=0;" \n 382 382 "{" \n 383 383 " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n 384 384 " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n 385 385 " if (_isOk>-1) then {" \n 386 386 " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n 387 387 " };" \n 388 388 " if ((_isOk>-1) AND (isOK<1)) then {" \n 389 389 " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n 390 390 "_dwUSOFC=_dwUSOFC+1;" \n 391 391 " deleteVehicle _x;" \n 392 392 " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n 393 393 " };" \n 394 394 "} forEach allMissionObjects ""Sound_Flies"";" \n 395 395 "*/" \n 396 396 "" \n 397 397 "dayz_serverObjectMonitor = _safety;"/*%FSM*/; 398 398 precondition = /*%FSM*/""/*%FSM*/; 399 399 class Links 400 400 { 401 401 /*%FSM*/ 402 402 class true 403 403 { 404 404 priority = 0.000000; 405 405 to="waiting"; 406 406 precondition = /*%FSM*/""/*%FSM*/; 407 407 condition=/*%FSM*/"true"/*%FSM*/; 408 408 action=/*%FSM*/""/*%FSM*/; 409 409 }; 410 410 /*%FSM*/ 411 411 }; 412 412 }; 413 413 /*%FSM*/ 414 414 /*%FSM*/ 415 415 class prepare 416 416 { 417 417 name = "prepare"; 418 418 init = /*%FSM*/"diag_log (""CLEANUP: INITIALIZING CLEANUP SCRIPT"");" \n 419 419 "" \n 420 420 "_safety = dayz_serverObjectMonitor;" \n 421 421 "" \n 422 422 "_msgList = msgList;" \n 423 423 "_crierGrp = createGroup sideLogic;" \n 424 424 "_crier = _crierGrp createUnit [""Survivor2_DZ"", [-2500, 0, 0], [], 0, ""NONE""];" \n 425 425 "" \n 426 426 "_lastUpdate = time;" \n 427 427 "_timeNem = time;" \n 428 428 "_lastZombieCheck = time;" \n 429 429 "_deadBodies = [];" \n 430 430 "_lastNeedUpdate = time;" \n 431 431 "_maxBodies = 15;" \n 432 432 ""/*%FSM*/; 433 433 precondition = /*%FSM*/""/*%FSM*/; 434 434 class Links 435 435 { 436 436 /*%FSM*/ 437 437 class true 438 438 { 439 439 priority = 0.000000; 440 440 to="waiting"; 441 441 precondition = /*%FSM*/""/*%FSM*/; 442 442 condition=/*%FSM*/"true"/*%FSM*/; 443 443 action=/*%FSM*/""/*%FSM*/; 444 444 }; 445 445 /*%FSM*/ 446 446 }; 447 447 }; 448 448 /*%FSM*/ 449 449 /*%FSM*/ 450 450 class update_objects 451 451 { 452 452 name = "update_objects"; 453 453 init = /*%FSM*/"diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n 454 454 "{" \n 455 455 "// _x setVariable [""needUpdate"",false,true];" \n 456 456 " needUpdate_objects = needUpdate_objects - [_x];" \n 457 457 " [_x,""all""] call server_updateObject;" \n 458 458 "" \n 459 459 "} forEach needUpdate_objects;" \n 460 460 ""/*%FSM*/; 461 461 precondition = /*%FSM*/""/*%FSM*/; 462 462 class Links 463 463 { 464 464 /*%FSM*/ 465 465 class true 466 466 { 467 467 priority = 0.000000; 468 468 to="general_cleanup"; 469 469 precondition = /*%FSM*/""/*%FSM*/; 470 470 condition=/*%FSM*/"true"/*%FSM*/; 471 471 action=/*%FSM*/""/*%FSM*/; 472 472 }; 473 473 /*%FSM*/ 474 474 }; 475 475 }; 476 476 /*%FSM*/ 477 477 /*%FSM*/ 478 478 class zeds_2 479 479 { 480 480 name = "zeds_2"; 481 481 init = /*%FSM*/"_tmr = time;" \n 482 482 "{" \n 483 483 " _x enableSimulation false;" \n 484 484 "} forEach entities ""zZombie_Base"";" \n 485 485 "diag_log format[""DISABLED SIMULATION FOR %1 ZOMBIES IN %2 SECONDS"", count entities ""zZombie_Base"", time - _tmr];" \n 486 486 ""/*%FSM*/; 487 487 precondition = /*%FSM*/""/*%FSM*/; 488 488 class Links 489 489 { 490 490 /*%FSM*/ 491 491 class true 492 492 { 493 493 priority = 0.000000; 494 494 to="waiting"; 495 495 precondition = /*%FSM*/""/*%FSM*/; 496 496 condition=/*%FSM*/"true"/*%FSM*/; 497 497 action=/*%FSM*/""/*%FSM*/; 498 498 }; 499 499 /*%FSM*/ 500 500 }; 501 501 }; 502 502 /*%FSM*/ 503 503 }; 504 504 initState="init"; 505 505 finalStates[] = 506 506 { 507 507 }; 508 508 }; 509 509 /*%FSM*/