1// Collision configuration for the pixel portfolio world 2// This replaces the hardcoded collision logic with a data-driven approach 3 4var COLLISION_CONFIG = { 5 // Global conditions that block all movement 6 globalBlocks: [ 7 { 8 condition: function() { return typeof onLog !== "undefined" && onLog; }, 9 description: "Block movement when on log" 10 } 11 ], 12 13 // Main map collisions (legacy line-based system still used by script.js) 14 mainMap: { 15 // Distance per iteration based on element type 16 distancePerIteration: { 17 "body-top": -12, 18 "body-left": -12, 19 "dylan-top": 4, 20 "dylan-left": 4, 21 "dylan-bottom": 4, 22 "dylan-right": 4 23 }, 24 25 // Window/viewport boundaries 26 viewport: [ 27 { 28 element: "body-top", 29 condition: { top: { max: 204 } }, 30 description: "Top viewport boundary" 31 } 32 ], 33 34 // Vertical collisions (up/down movement) 35 vertical: [ 36 // Tent 1 37 { 38 position: { top: { exact: 680 }, left: { min: 200, max: 288 } },
39 blockKey: "keyCode1", // blocks up 40 description: "Tent 1 front collision" 41 }, 42 { 43 position: { top: { exact: 680 }, left: { min: 296, max: 384 } }, 44 blockKey: "keyCode1", 45 description: "Tent 1 front collision (right side)" 46 }, 47 { 48 zIndex: { 49 selector: ".tent.t1", 50 whenAbove: { top: { max: 680 }, zIndex: 51 }, 51 whenBelow: { top: { min: 680 }, zIndex: 48 } 52 } 53 }, 54 55 // Fences 56 { 57 position: { top: { max: 348 }, left: { or: [{ max: 948 }, { min: 1016 }] } }, 58 blockKey: "keyCode1", 59 description: "Top fence" 60 }, 61 { 62 position: { top: { exact: 1272 }, left: { or: [{ max: 952 }, { min: 1020 }] } }, 63 blockKey: "keyCode2", 64 description: "Bottom fence" 65 }, 66 { 67 position: { top: { exact: 796 }, left: { max: 484 } }, 68 blockKey: "keyCode2", 69 description: "Fence opposite tent 1" 70 }, 71 { 72 position: { top: { exact: 648 }, left: { max: 452 } }, 73 blockKey: "keyCode1", 74 description: "Fence on tent 1" 75 }, 76 { 77 position: { top: { exact: 616 }, left: { max: 412 } }, 78 blockKey: "keyCode2", 79 description: "Backyard fence tent 1" 80 }, 81 { 82 zIndex: { 83 selector: ".fence.tent1", 84 whenAbove: { top: { max: 628 }, zIndex: 50 }, 85 whenBelow: { top: { min: 628 }, zIndex: 10 } 86 } 87 }, 88 89 // Dock 90 { 91 position: { top: { min: 1444 } }, 92 blockKey: "keyCode2", 93 description: "Dock bottom boundary" 94 }, 95 96 // Doors 97 { 98 position: { top: { max: 160 }, left: { or: [{ max: 968 }, { min: 992 }] } }, 99 blockKey: "keyCode1", 100 description: "Cave door" 101 }, 102 { 103 position: { top: { exact: 108 } }, 104 blockKey: "keyCode1", 105 action: function() { 106 if (typeof openTutorial === "function") openTutorial(); 107 }, 108 description: "Tutorial trigger" 109 }, 110 111 // Incline/Stairs 112 { 113 position: { top: { exact: 740 }
113, left: { min: 1412, max: 1576 } }, 114 blockKey: "keyCode1", 115 description: "Bottom of incline" 116 }, 117 { 118 position: { top: { exact: 756 }, left: { min: 1640, max: 1716 } }, 119 blockKey: "keyCode1", 120 description: "Right side staircase bottom" 121 }, 122 { 123 position: { top: { exact: 756 }, left: { min: 1572, max: 1608 } }, 124 blockKey: "keyCode1", 125 description: "Left side staircase bottom" 126 }, 127 { 128 position: { top: { exact: 396 }, left: { min: 1472, max: 1688 } }, 129 blockKey: "keyCode1", 130 description: "Top of cliff" 131 }, 132 { 133 position: { top: { exact: 680 }, left: { or: [{ min: 1472, max: 1608 }, { min: 1636, max: 1688 }] } }, 134 blockKey: "keyCode2", 135 description: "Bottom of top cliff" 136 }, 137 { 138 position: { top: { min: 680, max: 756 }, left: { min: 1608, max: 1636 } }, 139 distanceModifier: { "dylan-top": 8, "body-top": -24 }, 140 description: "Staircase speed modifier" 141 }, 142 { 143 zIndex: { 144 selector: ".curved-tree", 145 whenAbove: { top: { max: 716 }, zIndex: 48 }, 146 whenBelow: { top: { min: 716 }, zIndex: 51 } 147 } 148 }, 149 150 // Soccer area 151 { 152 zIndex: { 153 selector: ".soccer-goal", 154 whenAbove: { top: { max: 456 }, zIndex: 48 }, 155 whenBelow: { top: { min: 456 }, zIndex: 51 } 156 } 157 }, 158 { 159 zIndex: { 160 selector: ".soccer-goal.back", 161 whenAbove: { top: { max: 456 }, zIndex: 48 }, 162 whenBelow: { top: { min: 456 }, zIndex: 51 } 163 } 164 }, 165 { 166 zIndex: { 167 selector: ".soccer-ball", 168 whenAbove: { top: { max: 560 }, zIndex: 48 }, 169 whenBelow: { top: { min: 560 }, zIndex: 51 } 170 } 171 }, 172 173 // Pond/Island 174 { 175 position: { top: { exact: 828 }, left: { min: 1412, max: 1716 } }, 176 blockKey: "keyCode2", 177 description: "Pond outer top" 178 }, 179 { 180 position: { top: { exact: 1212 }, left: { min: 1412, max: 1804 } }, 181 blockKey: "keyCode1", 182 description: "Pond outer bottom" 183 }, 184 { 185 position: { top: { exact: 972 }, left: { min: 1396, max: 1412 } }, 186 blockKey: "keyCode2", 187 description: "Bridge outside bottom" 188 }, 189 { 190 position: { top: { exact: 1040 }, left: { min: 1396, max: 1412 } }, 191 blockKey: "keyCode1", 192 description: "Bridge outside top" 193 }, 194 { 195 position: { top: { exact: 952 }, left: { min: 1548, max: 1684 } }, 196 blockKey: "keyCode1", 197 description: "Island top" 198 }, 199 { 200 position: { top: { exact: 1100 }, left: { min: 1548, max: 1684 } }, 201 blockKey: "keyCode2", 202 description: "Island bottom" 203 }, 204 { 205 zIndex: { 206 selector: ".fountain", 207 whenAbove: { top: { max: 1028 }, zIndex: 100 }, 208 whenBelow: { top: { min: 1028 }, zIndex: 10 } 209 } 210 }, 211 { 212 zIndex: { 213 selector: ".paper", 214 whenAbove: { top: { max: 1028 }, zIndex: 101 }, 215 whenBelow: { top: { min: 1028 }, zIndex: 11 } 216 } 217 }, 218 { 219 position: { top: { exact: 1044 }, left: { min: 1572, max: 1652 } }, 220 blockKey: "keyCode1", 221 description: "Fountain top" 222 }, 223 { 224 position: { top: { exact: 992 }, left: { min: 1572, max: 1652 } }, 225 blockKey: "keyCode2", 226 description: "Fountain bottom" 227 }, 228 229 // Fire Pit area 230 { 231 zIndex: { 232 selector: ".tall-tree.bottom", 233 whenAbove: { top: { max: 1064 }, zIndex: 100 }, 234 whenBelow: { top: { min: 1064 }, zIndex: 5 } 235 } 236 }, 237 { 238 zIndex: { 239 selector: ".tall-tree.right", 240 whenAbove: { top: { max: 1064 }, zIndex: 100 }, 241 whenBelow: { top: { min: 1064 }, zIndex: 5 } 242 } 243 }, 244 { 245 zIndex: { 246 selector: ".characters", 247 whenAbove: { top: { max: 1064 }, zIndex: 101 }, 248 whenBelow: { top: { min: 1064 }, zIndex: 6 } 249 } 250 }, 251 { 252 zIndex: { 253 selector: ".special-thanks-sign", 254 whenAbove: { top: { max: 1064 }, zIndex: 101 }, 255 whenBelow: { top: { min: 1064 }, zIndex: 6 } 256 } 257 }, 258 { 259 position: { top: { min: 548, max: 624 }, left: { min: 972, max: 1004 } }, 260 distanceModifier: { "dylan-top": 8, "body-top": -24 }, 261 description: "Fire pit staircase speed modifier" 262 }, 263 { 264 position: { top: { exact: 552 }, left: { or: [{ min: 680, max: 972 }, { min: 1004, max: 1292 }] } }, 265 blockKey: "keyCode2", 266 description: "Bottom cliff" 267 }, 268 { 269 position: { top: { exact: 984 }, left: { min: 788, max: 1180 } }, 270 blockKey: "keyCode2", 271 description: "Bottom cliff 2" 272 }, 273 { 274 position: { top: { exact: 628 }, left: { or: [{ min: 1004, max: 1180 }, { min: 784, max: 968 }] } }, 275 blockKey: "keyCode1", 276 description: "Top cliff" 277 }, 278 { 279 position: { top: { exact: 1068 }, left: { min: 680, max: 1292 } }, 280 blockKey: "keyCode1", 281 description: "Bottom trees" 282 }, 283 { 284 position: { top: { exact: 876 }
284, left: { min: 684, max: 724 } }, 285 blockKey: "keyCode1", 286 description: "Trees between stairs" 287 }, 288 { 289 position: { top: { exact: 1016 }, left: { min: 684, max: 724 } }, 290 blockKey: "keyCode2", 291 description: "Trees between stairs bottom" 292 }, 293 { 294 zIndex: { 295 selector: "#bonfire", 296 whenAbove: { top: { max: 804 }, zIndex: 100 }, 297 whenBelow: { top: { min: 804 }, zIndex: 10 } 298 } 299 }, 300 { 301 position: { top: { exact: 780 }, left: { min: 936, max: 1032 } }, 302 blockKey: "keyCode2", 303 description: "Bonfire top" 304 }, 305 { 306 position: { top: { exact: 824 }, left: { min: 936, max: 1032 } }, 307 blockKey: "keyCode1", 308 description: "Bonfire bottom" 309 }, 310 { 311 position: { top: { exact: 900 }, left: { min: 788, max: 820 } }, 312 blockKey: "keyCode2", 313 description: "Fire pit left staircase bottom" 314 }, 315 { 316 position: { top: { exact: 972 }, left: { min: 788, max: 820 } }, 317 blockKey: "keyCode1", 318 description: "Fire pit left staircase top" 319 }, 320 321 // Nature elements 322 { 323 zIndex: { 324 selector: ".shrub.pathway.topShrubs", 325 whenAbove: { top: { max: 448 }, zIndex: 100 }, 326 whenBelow: { top: { min: 448 }, zIndex: 11 } 327 } 328 }, 329 { 330 position: { top: { exact: 320 }, left: { or: [{ min: 896, max: 968 }, { min: 1008, max: 1068 }] } }, 331 blockKey: "keyCode2", 332 description: "Bushes by bridge top" 333 }, 334 { 335 position: { top: { exact: 448 }, left: { or: [{ min: 896, max: 968 }, { min: 1008, max: 1068 }] } }, 336 blockKey: "keyCode1", 337 description: "Bushes by bridge bottom" 338 }, 339 { 340 zIndex: { 341 selector: ".bench", 342 whenAbove: { top: { max: 740 }, zIndex: 100 }, 343 whenBelow: { top: { min: 844, max: 900 }, zIndex: 100 }, 344 default: { zIndex: 10 } 345 } 346 }, 347 { 348 position: { top: { or: [{ exact: 740 }, { exact: 900 }] }, left: { min: 900, max: 1064 } }, 349 blockKey: "keyCode1", 350 description: "Log bench top" 351 }, 352 { 353 position: { top: { or: [{ exact: 704 }, { exact: 868 }] }
353, left: { min: 900, max: 1064 } }, 354 blockKey: "keyCode2", 355 description: "Log bench bottom" 356 }, 357 { 358 zIndex: { 359 selector: ".tree-stump", 360 whenAbove: { top: { max: 796 }, zIndex: 100 }, 361 whenBelow: { top: { min: 796 }, zIndex: 10 } 362 } 363 }, 364 { 365 position: { top: { exact: 796 }, left: { or: [{ min: 1064, max: 1160 }, { min: 808, max: 904 }] } }, 366 blockKey: "keyCode2", 367 description: "Wood stumps top" 368 }, 369 { 370 position: { top: { exact: 836 }, left: { or: [{ min: 1064, max: 1160 }, { min: 808, max: 904 }] } }, 371 blockKey: "keyCode1", 372 description: "Wood stumps bottom" 373 }, 374 { 375 zIndex: { 376 selector: "#stump", 377 whenAbove: { top: { max: 376 }, zIndex: 100 }, 378 whenBelow: { top: { min: 376 }, zIndex: 10 } 379 } 380 }, 381 { 382 position: { top: { exact: 376 }, left: { min: 324, max: 412 } }, 383 blockKey: "keyCode2", 384 description: "Stump with axe top" 385 }, 386 { 387 position: { top: { exact: 412 }, left: { min: 324, max: 412 } }, 388 blockKey: "keyCode1", 389 description: "Stump with axe bottom" 390 }, 391 { 392 zIndex: { 393 selector: "#falling-tree", 394 whenAbove: { top: { max: 448 }, zIndex: 100 }, 395 whenBelow: { top: { min: 448 }, zIndex: 10 } 396 } 397 }, 398 // Tree collision (standing vs fallen) 399 { 400 condition: function() { return typeof hitCount !== "undefined" && hitCount < 7; }, 401 position: { top: { exact: 464 }, left: { min: 212, max: 272 } }, 402 blockKey: "keyCode1", 403 description: "Tree standing top" 404 }, 405 { 406 condition: function() { return typeof hitCount !== "undefined" && hitCount < 7; }, 407 position: { top: { exact: 448 }, left: { min: 212, max: 272 } }, 408 blockKey: "keyCode2", 409 description: "Tree standing bottom" 410 }, 411 { 412 condition: function() { return typeof hitCount !== "undefined" && hitCount >= 7; }, 413 position: { top: { exact: 464 }, left: { min: 184, max: 376 } }, 414 blockKey: "keyCode1", 415 description: "Tree fallen top" 416 }, 417 { 418 condition: function() { return typeof hitCount !== "undefined" && hitCount >= 7; }, 419 position: { top: { exact: 448 }, left: { min: 184, max: 376 } }, 420 blockKey: "keyCode2", 421 description: "Tree fallen bottom" 422 }, 423 { 424 zIndex: { 425 selector: "#wood-log", 426 whenAbove: { top: { max: 472 }, zIndex: 100 }, 427 whenBelow: { top: { min: 472 }, zIndex: 10 } 428 } 429 }, 430 { 431 zIndex: { 432 selector: ".s4", 433 whenAbove: { top: { min: 668 }, zIndex: 40 }, 434 whenBelow: { top: { max: 668 }, zIndex: 51 } 435 } 436 }, 437 { 438 zIndex: { 439 selector: ".s2, .s3", 440 whenAbove: { top: { min: 436 }, zIndex: 40 }, 441 whenBelow: { top: { max: 436 }, zIndex: 51 } 442 } 443 }, 444 { 445 zIndex: { 446 selector: ".s8", 447 whenAbove: { top: { min: 956 }, zIndex: 40 }, 448 whenBelow: { top: { max: 956 }, zIndex: 51 } 449 } 450 } 451 ], 452 453 // Horizontal collisions (left/right movement) 454 horizontal: [ 455 // Fences 456 { 457 position: { left: { max: 168 }, top: { min: 344 } }, 458 blockKey: "keyCode1", 459 description: "Left fence" 460 }, 461 { 462 position: { left: { min: 1800 } }, 463 blockKey: "keyCode2", 464 description: "Right fence" 465 }, 466 { 467 position: { left: { exact: 452 }, top: { max: 640 } }, 468 blockKey: "keyCode1", 469 description: "Backyard fence" 470 }, 471 { 472 position: { left: { exact: 412 }, top: { max: 630 } }, 473 blockKey: "keyCode2", 474 description: "Backyard fence 2" 475 }, 476 { 477 position: { left: { exact: 484 }, top: { min: 800 } }, 478 blockKey: "keyCode1", 479 description: "Bottom left fence by trees" 480 }, 481 482 // Dock 483 { 484 position: { top: { min: 1272 }, left: { max: 952 } }, 485 blockKey: "keyCode1", 486 description: "Dock left" 487 }, 488 { 489 position: { top: { min: 1272 }, left: { min: 1020 } }, 490 blockKey: "keyCode2", 491 description: "Dock right" 492 }, 493 494 // Tent 1 495 { 496 position: { top: { min: 584, max: 676 }
496, left: { or: [{ exact: 384 }, { exact: 288 }] } }, 497 blockKey: "keyCode1", 498 description: "Tent 1 left wall" 499 }, 500 { 501 position: { top: { min: 584, max: 676 }, left: { or: [{ exact: 200 }, { exact: 296 }] } }, 502 blockKey: "keyCode2", 503 description: "Tent 1 right wall" 504 }, 505 506 // Resume Island / Pond 507 { 508 position: { left: { exact: 1412 }, top: { or: [{ min: 828, max: 972 }, { min: 1040, max: 1212 }] } }, 509 blockKey: "keyCode2", 510 description: "Resume island left outside" 511 }, 512 { 513 position: { top: { or: [{ min: 1020, max: 1040 }, { min: 972, max: 1000 }] }, left: { exact: 1392 } }, 514 blockKey: "keyCode2", 515 description: "Bridge outside left" 516 }, 517 { 518 position: { top: { or: [{ min: 1020, max: 1040 }, { min: 972, max: 1000 }] }, left: { exact: 1548 } }, 519 blockKey: "keyCode1", 520 description: "Bridge outside right" 521 }, 522 { 523 position: { left: { exact: 1548 }, top: { or: [{ min: 1020, max: 1212 }, { min: 944, max: 996 }] } }, 524 blockKey: "keyCode1", 525 description: "Pond left side inside" 526 }, 527 { 528 position: { left: { exact: 1684 }, top: { min: 944, max: 1548 } }, 529 blockKey: "keyCode2", 530 description: "Pond right side inside" 531 }, 532 { 533 position: { top: { min: 992, max: 1044 }, left: { exact: 1652 } }, 534 blockKey: "keyCode1", 535 description: "Fountain left" 536 }, 537 { 538 position: { top: { min: 992, max: 1044 }, left: { exact: 1572 } }, 539 blockKey: "keyCode2", 540 description: "Fountain right" 541 }, 542 543 // Fire Pit 544 { 545 position: { left: { exact: 936 }, top: { min: 780, max: 824 } }, 546 blockKey: "keyCode2", 547 description: "Bonfire left" 548 }, 549 { 550 position: { left: { exact: 1032 }, top: { min: 780, max: 824 } }, 551 blockKey: "keyCode1", 552 description: "Bonfire right" 553 }, 554 { 555 zIndex: { 556 selector: ".tall-tree.walls.left", 557 whenAbove: { top: { max: 856 }, zIndex: 100 }, 558 whenBelow: { top: { min: 856 }, zIndex: 10 } 559 } 560 }, 561 { 562 zIndex: { 563 selector: ".intro-portfolio.s5", 564 whenAbove: { top: { max: 856 }, zIndex: 101 }, 565 whenBelow: { top: { min: 856 }, zIndex: 11 } 566 } 567 }, 568 { 569 position: { top: { min: 552, max: 1068 }, left: { exact: 1292 } }, 570 blockKey: "keyCode1", 571 description: "Left trees right side" 572 }, 573 { 574 position: { top: { or: [{ min: 556, max: 876 }, { min: 1012, max: 1068 }] }
574, left: { exact: 680 } }, 575 blockKey: "keyCode2", 576 description: "Right trees left side" 577 }, 578 { 579 position: { top: { min: 552, max: 624 }, left: { exact: 972 } }, 580 blockKey: "keyCode1", 581 description: "Staircase left" 582 }, 583 { 584 position: { top: { min: 552, max: 624 }, left: { exact: 1004 } }, 585 blockKey: "keyCode2", 586 description: "Staircase right" 587 }, 588 { 589 position: { top: { min: 628, max: 984 }, left: { exact: 1176 } }, 590 blockKey: "keyCode2", 591 description: "Right cliff" 592 }, 593 { 594 position: { top: { or: [{ min: 628, max: 904 }, { min: 936, max: 1012 }] }, left: { exact: 788 } }, 595 blockKey: "keyCode1", 596 description: "Left cliff" 597 }, 598 { 599 position: { top: { or: [{ min: 684, max: 904 }, { min: 936, max: 1016 }] }, left: { exact: 724 } }, 600 blockKey: "keyCode2", 601 description: "Left cliff outside" 602 }, 603 { 604 position: { top: { or: [{ min: 904, max: 924 }, { min: 952, max: 968 }] }
604, left: { exact: 820 } }, 605 blockKey: "keyCode1", 606 description: "Staircase left 2" 607 }, 608 609 // Inclined Surface 610 { 611 position: { left: { exact: 1412 }, top: { min: 344, max: 736 } }, 612 blockKey: "keyCode2", 613 description: "Incline left cliff" 614 }, 615 { 616 position: { left: { exact: 1572 }, top: { min: 740, max: 752 } }, 617 blockKey: "keyCode2", 618 description: "Outside left staircase" 619 }, 620 { 621 position: { left: { exact: 1688 }, top: { min: 360, max: 680 } }, 622 blockKey: "keyCode2", 623 description: "Right side top" 624 }, 625 { 626 position: { left: { exact: 1472 }, top: { min: 360, max: 680 } }, 627 blockKey: "keyCode1", 628 description: "Left side top" 629 }, 630 { 631 position: { left: { exact: 1608 }, top: { min: 680, max: 756 } }, 632 blockKey: "keyCode1", 633 description: "Inside staircase left" 634 }, 635 { 636 position: { left: { exact: 1636 }, top: { min: 680, max: 756 } }, 637 blockKey: "keyCode2", 638 description: "Inside staircase right" 639 }, 640 641 // Pond 642 { 643 position: { left: { exact: 1716 }, top: { min: 752, max: 832 } }, 644 blockKey: "keyCode2", 645 description: "Pond right side" 646 }, 647 648 // Nature 649 { 650 position: { top: { min: 320, max: 448 }, left: { exact: 960 } }, 651 blockKey: "keyCode1", 652 description: "Top bushes" 653 }, 654 { 655 position: { top: { min: 320, max: 448 }, left: { exact: 1008 } }, 656 blockKey: "keyCode2", 657 description: "Top bushes 2" 658 }, 659 { 660 position: { top: { min: 320, max: 448 }, left: { exact: 1068 } }, 661 blockKey: "keyCode1", 662 description: "Top bushes 3" 663 }, 664 { 665 position: { top: { min: 320, max: 448 }, left: { exact: 896 } }, 666 blockKey: "keyCode2", 667 description: "Top bushes 4" 668 }, 669 { 670 zIndex: { 671 selector: "#arch", 672 whenAbove: { top: { max: 344 }, zIndex: 100 }, 673 whenBelow: { top: { min: 344 }, zIndex: 11 } 674 } 675 }, 676 { 677 position: { top: { max: 344 }, left: { max: 952 } }, 678 blockKey: "keyCode1", 679 description: "Top bridge left" 680 }, 681 { 682 position: { top: { max: 344 }, left: { min: 1012 } }, 683 blockKey: "keyCode2", 684 description: "Top bridge right" 685 }, 686 { 687 position: { top: { max: 160 }, left: { max: 968 } }, 688 blockKey: "keyCode1", 689 description: "Cave door left" 690 }, 691 { 692 position: { top: { max: 160 }, left: { min: 992 } }, 693 blockKey: "keyCode2", 694 description: "Cave door right" 695 }, 696 { 697 position: { top: { or: [{ min: 704, max: 740 }, { min: 864, max: 900 }] }, left: { exact: 900 } }, 698 blockKey: "keyCode2", 699 description: "Log in fireplace left" 700 }, 701 { 702 position: { top: { or: [{ min: 704, max: 740 }, { min: 864, max: 900 }] }, left: { exact: 1064 } }, 703 blockKey: "keyCode1", 704 description: "Log in fireplace right" 705 }, 706 { 707 position: { top: { min: 796, max: 836 }, left: { or: [{ exact: 808 }, { exact: 1064 }] } }, 708 blockKey: "keyCode2", 709 description: "Tree stumps left" 710 }, 711 { 712 position: { top: { min: 796, max: 836 }, left: { or: [{ exact: 904 }, { exact: 1160 }] } }, 713 blockKey: "keyCode1", 714 description: "Tree stumps right" 715 }, 716 { 717 position: { top: { min: 376, max: 412 }, left: { exact: 324 } }, 718 blockKey: "keyCode2", 719 description: "Stump with axe left" 720 }, 721 { 722 position: { top: { min: 376, max: 412 }, left: { exact: 412 } }, 723 blockKey: "keyCode1", 724 description: "Stump with axe right" 725 }, 726 { 727 condition: function() { return typeof hitCount !== "undefined" && hitCount < 7; }, 728 position: { top: { min: 448, max: 464 }, left: { exact: 212 } }, 729 blockKey: "keyCode2", 730 description: "Tree standing left" 731 }, 732 { 733 condition: function() { return typeof hitCount !== "undefined" && hitCount < 7; }, 734 position: { top: { min: 448, max: 464 }, left: { exact: 272 } },
735 blockKey: "keyCode1", 736 description: "Tree standing right" 737 }, 738 { 739 condition: function() { return typeof hitCount !== "undefined" && hitCount >= 7; }, 740 position: { top: { min: 448, max: 464 }, left: { exact: 184 } }, 741 blockKey: "keyCode2", 742 description: "Tree fallen left" 743 }, 744 { 745 condition: function() { return typeof hitCount !== "undefined" && hitCount >= 7; }, 746 position: { top: { min: 448, max: 464 }, left: { exact: 376 } }, 747 blockKey: "keyCode1", 748 description: "Tree fallen right" 749 }, 750 { 751 position: { top: { min: 356, max: 384 }, left: { exact: 652 } }, 752 blockKey: "keyCode2", 753 description: "Moss log left" 754 }, 755 { 756 position: { top: { min: 356, max: 384 }, left: { exact: 780 } }, 757 blockKey: "keyCode1", 758 description: "Moss log right" 759 } 760 ] 761 }, 762 763 // Tent 1 interior collisions (legacy) 764 tent1: { 765 globalBlocks: [ 766 { 767 condition: function() { return typeof sitting !== "undefined" && sitting; }, 768 description: "Block movement when sitting" 769 } 770 ], 771 distancePerIteration: { 772 "body-top": -12, 773 "body-left": -12, 774 "dylan-top": 4, 775 "dylan-left": 4 776 }, 777 vertical: [ 778 { 779 position: { top: { exact: 176 } }, 780 blockKey: "keyCode2", 781 description: "Tent 1 bottom border" 782 }, 783 { 784 position: { top: { exact: 132 }, left: { or: [{ max: 152 }, { min: 232 }] } }, 785 blockKey: "keyCode2", 786 description: "Tent 1 bottom border 2" 787 }, 788 { 789 position: { top: { exact: -44 } }, 790 blockKey: "keyCode1", 791 description: "Tent 1 top border" 792 }, 793 { 794 position: { top: { exact: 52 }, left: { min: 168, max: 264 } }, 795 blockKey: "keyCode1", 796 description: "Tent 1 border wall" 797 }, 798 { 799 position: { top: { exact: -32 }, left: { max: 100 } }, 800 blockKey: "keyCode1", 801 description: "Kitchenware" 802 }, 803 { 804 zIndex: { 805 selector: ".kitchen-table", 806 whenAbove: { top: { max: -12 }, zIndex: 10000 }, 807 whenBelow: { top: { min: -12 }, zIndex: 9996 } 808 } 809 }, 810 { 811 zIndex: { 812 selector: ".matchbox", 813 whenAbove: { top: { max: -12 }, zIndex: 10001 }, 814 whenBelow: { top: { min: -12 }, zIndex: 9997 } 815 } 816 }, 817 { 818 position: { top: { exact: 32 }, left: { min: 8, max: 120 } }, 819 blockKey: "keyCode1", 820 description: "Kitchen table top" 821 }, 822 { 823 position: { top: { exact: -12 }, left: { min: 8, max: 120 } }, 824 blockKey: "keyCode2", 825 description: "Kitchen table bottom" 826 }, 827 { 828 zIndex: { 829 selector: ".couch", 830 whenAbove: { top: { max: -4 }, zIndex: 10000 }, 831 whenBelow: { top: { min: -4 }, zIndex: 9996 } 832 } 833 }, 834 { 835 position: { top: { exact: 20 }, left: { min: 268, max: 384 } }, 836 blockKey: "keyCode1", 837 description: "Couch top" 838 }, 839 { 840 position: { top: { exact: -4 }, left: { min: 268, max: 384 } }, 841 blockKey: "keyCode2", 842 description: "Couch bottom" 843 } 844 ], 845 horizontal: [ 846 { 847 position: { left: { exact: 384 } }, 848 blockKey: "keyCode2", 849 description: "Tent 1 right border" 850 }, 851 { 852 position: { left: { exact: 0 } }, 853 blockKey: "keyCode1", 854 description: "Tent 1 left border" 855 }, 856 { 857 position: { top: { max: 52 }, left: { exact: 168 } }, 858 blockKey: "keyCode2", 859 description: "Border wall left" 860 }, 861 { 862 position: { top: { max: 52 }, left: { exact: 264 } }, 863 blockKey: "keyCode1", 864 description: "Border wall right" 865 }, 866 { 867 position: { top: { min: 132 }, left: { exact: 160 } }, 868 blockKey: "keyCode1", 869 description: "Entrance wall left" 870 }, 871 { 872 position: { top: { min: 132 }, left: { exact: 224 } }, 873 blockKey: "keyCode2", 874 description: "Entrance wall right" 875 }, 876 { 877 position: { top: { max: -32 }, left: { exact: 96 } }, 878 blockKey: "keyCode1", 879 description: "Kitchenware left" 880 }, 881 { 882 position: { top: { min: -12, max: 32 }, left: { exact: 120 } }, 883 blockKey: "keyCode1", 884 description: "Kitchen table left" 885 }, 886 { 887 position: { top: { min: -12, max: 32 }, left: { exact: 8 } }, 888 blockKey: "keyCode2", 889 description: "Kitchen table right" 890 }, 891 { 892 position: { top: { min: -4, max: 20 }
892, left: { exact: 264 } }, 893 blockKey: "keyCode2", 894 description: "Couch left" 895 }, 896 { 897 position: { top: { min: -4, max: 20 }, left: { exact: 384 } }, 898 blockKey: "keyCode1", 899 description: "Couch right" 900 } 901 ] 902 } 903};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.