| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Letter requirements in OR logic (which is the main thing OR logic is
used for) is simplified now. Any requirement within the OR logic that is
redundant with the top level requirement now has the redundant letters
removed. If a clause in a disjunction becomes empty due to this, the
disjunction can be removed. Additionally, if all of the clauses in a
disjunction are identical, then they can be merged into the top level
requirement.
I manually verified that every requirement that is affected by this
simplification looks correct.
Region objects are also now used in access checking instead of looking
up the regions by name during access checking. This is a little faster
for access checks that involve a lot of rooms, such as the Maze
Gravestone.
Finally, locations no longer check for access to the region the location
is in, and connections no longer check for access to the source region,
because these are both implied by how the graph works.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also fixed unlocked letters + any double letter cyan doors, and tweaked
some logic related to important panels with symbols on them.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This allows the generated Python file to be compatible with the frozen Archipelago install.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It now has the correct logic, and also no location will be created for
it.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
STANDARD type doors with at most four panels in the same map area and no
other trigger objects will have their location names generated from the
names of the panels used to open the door, similar to Lingo 1. Other
door types will use the door's name. In either case, the name can be
overridden using the new location_name field.
Rooms can also set a panel_display_name field, which will be used in
location names for doors, and is used to group panels into areas.
Panels themselves can set display names, which differentiates their
locations from other panels in the same area.
Many maps were updated for this, but note that the_symbolic and
the_unyielding have validator failures because of duplicate panel names.
This won't matter until panelsanity is implemented.
|
| |
|
|
|
|
| |
Also fixed or logic so everything actually works now.
|
| |
|
| |
|
|
|
|
| |
Also added endings to the apworld.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
If a door is shuffled, the door's item should be used in connections and
in requirements specified by panels, ports, paintings, and other doors.
However, the original requirements still need to be used for locations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will let us use an older version of protobuf in Python, and allows
us to use the Godot protobuf implementation at all. Scalar fields with
custom defaults in data.proto were changed to not have a default,
because Godot doesn't handle it properly. The equivalent fields in
human.proto still have the defaults, and datapacker copies the default
value in if necessary. The Panel message in data.proto was also renamed
to PanelData because otherwise it conflicts with the native Godot class
named Panel. The double field in Letter was renamed to level2, because
Godot couldn't handle it well. Finally, common.proto was removed and
its contents were moved into data.proto, which allows us to generate
code for Python without needing to edit it.
NOTE: I had to slightly modify the Godot protobuf code generator. I'll
need to upload that somewhere.
|
| |
|
|
|
|
|
| |
Also assigned IDs for the_butterfly, as well as already configured
letters.
|
| |
|
| |
|
| |
|
|
vcpkg's libprotobuf is older than what PIP has, but neither are
completely up to date either. Ugh.
Doors have a room now because that's where the location will go.
|