diff options
Diffstat (limited to 'apworld/client')
| -rw-r--r-- | apworld/client/manager.gd | 39 |
1 files changed, 31 insertions, 8 deletions
| diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 381a779..1e0b549 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd | |||
| @@ -499,18 +499,31 @@ func _client_connected(slot_data): | |||
| 499 | # Set up item locks. | 499 | # Set up item locks. |
| 500 | _item_locks = {} | 500 | _item_locks = {} |
| 501 | 501 | ||
| 502 | if shuffle_doors: | 502 | if shuffle_doors or daedalus_only: |
| 503 | for door in gamedata.objects.get_doors(): | 503 | for door in gamedata.objects.get_doors(): |
| 504 | if ( | 504 | if ( |
| 505 | door.get_type() == gamedata.SCRIPT_proto.DoorType.STANDARD | 505 | door.get_type() != gamedata.SCRIPT_proto.DoorType.STANDARD |
| 506 | or door.get_type() == gamedata.SCRIPT_proto.DoorType.ITEM_ONLY | 506 | and door.get_type() != gamedata.SCRIPT_proto.DoorType.ITEM_ONLY |
| 507 | ): | 507 | ): |
| 508 | _item_locks[door.get_id()] = [door.get_ap_id(), 1] | 508 | continue |
| 509 | |||
| 510 | if ( | ||
| 511 | not shuffle_doors | ||
| 512 | and not ( | ||
| 513 | daedalus_only | ||
| 514 | and door.has_daedalus_only_always_item() | ||
| 515 | and door.get_daedalus_only_always_item() | ||
| 516 | ) | ||
| 517 | ): | ||
| 518 | continue | ||
| 509 | 519 | ||
| 510 | for progressive in gamedata.objects.get_progressives(): | 520 | _item_locks[door.get_id()] = [door.get_ap_id(), 1] |
| 511 | for i in range(0, progressive.get_doors().size()): | 521 | |
| 512 | var door = gamedata.objects.get_doors()[progressive.get_doors()[i]] | 522 | if shuffle_doors: |
| 513 | _item_locks[door.get_id()] = [progressive.get_ap_id(), i + 1] | 523 | for progressive in gamedata.objects.get_progressives(): |
| 524 | for i in range(0, progressive.get_doors().size()): | ||
| 525 | var door = gamedata.objects.get_doors()[progressive.get_doors()[i]] | ||
| 526 | _item_locks[door.get_id()] = [progressive.get_ap_id(), i + 1] | ||
| 514 | 527 | ||
| 515 | for door_group in gamedata.objects.get_door_groups(): | 528 | for door_group in gamedata.objects.get_door_groups(): |
| 516 | if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CONNECTOR: | 529 | if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CONNECTOR: |
| @@ -519,6 +532,16 @@ func _client_connected(slot_data): | |||
| 519 | elif door_group.get_type() != gamedata.SCRIPT_proto.DoorGroupType.SHUFFLE_GROUP: | 532 | elif door_group.get_type() != gamedata.SCRIPT_proto.DoorGroupType.SHUFFLE_GROUP: |
| 520 | continue | 533 | continue |
| 521 | 534 | ||
| 535 | if ( | ||
| 536 | not shuffle_doors | ||
| 537 | and not ( | ||
| 538 | daedalus_only | ||
| 539 | and door_group.has_daedalus_only_always_item() | ||
| 540 | and door_group.get_daedalus_only_always_item() | ||
| 541 | ) | ||
| 542 | ): | ||
| 543 | continue | ||
| 544 | |||
| 522 | for door in door_group.get_doors(): | 545 | for door in door_group.get_doors(): |
| 523 | _item_locks[door] = [door_group.get_ap_id(), 1] | 546 | _item_locks[door] = [door_group.get_ap_id(), 1] |
| 524 | 547 | ||
