about summary refs log tree commit diff stats
path: root/apworld/player_logic.py
Commit message (Collapse)AuthorAgeFilesLines
* Added button to get logical pathStar Rauchenberger2025-10-041-0/+2
|
* Minor import tweaksStar Rauchenberger2025-10-021-1/+1
|
* Don't create a location for your endingStar Rauchenberger2025-09-291-6/+3
|
* Treat local letters as items for trackerStar Rauchenberger2025-09-271-6/+7
| | | | Local letters are now synced with datastorage, so they transfer to other computers like regular items would, and the tracker also now waits until you collect local letters before showing what they give you in logic.
* [Apworld] Added worldport shuffleStar Rauchenberger2025-09-221-2/+2
|
* [Apworld] Fix indirect conditions for deep reqsStar Rauchenberger2025-09-161-0/+23
|
* [Apworld] Fixed reqs simplification mutating common objectsStar Rauchenberger2025-09-161-4/+9
|
* [Apworld] Added compatability for python 3.11Star Rauchenberger2025-09-131-1/+1
|
* [Apworld] Some access checking optimizationsStar Rauchenberger2025-09-121-1/+52
| | | | | | | | | | | | | | | | | | | | | | Letter requirements in OR logic (which is the main thing OR logic is used for) i
syntax = "proto2";

package com.fourisland.lingo2_archipelago;

message Proxy {
  optional string answer = 1;
  optional string path = 2;
}

enum DoorType {
  DOOR_TYPE_UNKNOWN = 0;

  // This door is a location unless panelsanity is on, and it is an item as long as door shuffle is on.
  STANDARD = 1;

  // This door is never an item or a location.
  EVENT = 2;

  // This door is never a location, and is an item as long as door shuffle is on.
  ITEM_ONLY = 3;

  // This door is never a location, and is an item as long as control center color shuffle is on.
  CONTROL_CENTER_COLOR = 4;

  // This door is never an item, and is a location as long as panelsanity is not on.
  LOCATION_ONLY = 5;

  // This door is an item if gravestone shuffle is enabled, and is a location as long as panelsanity is not on.
  GRAVESTONE = 6;
}

enum AxisDirection {
  AXIS_DIRECTION_UNKNOWN = 0;

  X_PLUS = 1;
  X_MINUS = 2;
  Y_PLUS = 3;
  Y_MINUS = 4;
  Z_PLUS = 5;
  Z_MINUS = 6;
}

message ProxyIdentifier {
  optional uint64 panel =* 
Letter requirements in apworldStar Rauchenberger2025-08-271-4/+42
| | | | Also fixed or logic so everything actually works now.
* Set apworld victory conditionStar Rauchenberger2025-08-271-25/+35
|
* Implemented complete_at=1 in the apworldStar Rauchenberger2025-08-201-3/+11
|
* Maps have display names nowStar Rauchenberger2025-08-201-0/+4
| | | | Also added endings to the apworld.
* Assigned IDs for the_gold, the_graveyard, and the_greatStar Rauchenberger2025-08-141-1/+1
|
* Fixed some issues with door logicStar Rauchenberger2025-08-141-5/+25
| | | | | | 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.
* Assigned IDs for the_galleryStar Rauchenberger2025-08-131-0/+4
|
* Converted to proto2Star Rauchenberger2025-08-121-4/+4
| | | | | | | | | | | | | | | | | 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.
* Items and connections in the apworldStar Rauchenberger2025-08-121-3/+140
|
* Added support for masteriesStar Rauchenberger2025-08-091-0/+6
| | | | | Also assigned IDs for the_butterfly, as well as already configured letters.
* Added the_betweenStar Rauchenberger2025-08-091-1/+1
|
* Assign AP IDs to doors and panelsStar Rauchenberger2025-08-071-7/+3
|
* Started apworldStar Rauchenberger2025-08-071-0/+24
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.
> symbols = 7; repeated Proxy proxies = 8; optional uint64 required_door = 9; optional uint64 required_room = 11; } message Painting { optional uint64 id = 1; optional uint64 room_id = 2; optional string name = 9; optional string path = 10; optional string display_name = 4; optional string orientation = 3; optional bool move = 6; optional bool enter_only = 7; optional AxisDirection gravity = 8; optional bool exit_only = 11; optional uint64 required_door = 5; } message Port { optional uint64 id = 1; optional uint64 room_id = 2; optional string name = 3; optional string path = 4; optional string orientation = 5; optional AxisDirection gravity = 7; optional uint64 required_door = 6; } message Keyholder { optional uint64 id = 1; optional uint64 room_id = 2; optional string name = 3; optional string path = 4; } message Letter { optional uint64 id = 3; optional uint64 ap_id = 5; optional uint64 room_id = 4; optional string key = 1; optional bool level2 = 2; optional string path = 6; } message Mastery { optional uint64 id = 1; optional uint64 ap_id = 2; optional uint64 room_id = 3; optional string name = 4; optional string path = 5; } message Room { optional uint64 id = 1; optional uint64 map_id = 8; optional string name = 2; optional string display_name = 3; repeated uint64 panels = 4; repeated uint64 paintings = 5; repeated uint64 letters = 6; repeated uint64 ports = 7; repeated uint64 doors = 9; repeated uint64 masteries = 10; repeated uint64 keyholders = 11; } message Map { optional uint64 id = 1; optional string name = 2; } message AllObjects { repeated Map maps = 7; repeated Room rooms = 1; repeated Door doors = 2; repeated PanelData panels = 3; repeated Painting paintings = 4; repeated Port ports = 5; repeated Keyholder keyholders = 11; repeated Letter letters = 9; repeated Mastery masteries = 10; repeated Connection connections = 6; map<string, uint64> special_ids = 8; }