api.md: fix more stuff based on comments
This commit is contained in:
parent
0376705e47
commit
2fd87f703e
25
docs/api.md
25
docs/api.md
|
@ -215,7 +215,8 @@ By convention options are defined in `Options.py` and will be used when parsing
|
||||||
the players' yaml files.
|
the players' yaml files.
|
||||||
|
|
||||||
Each option has its own class, inherits from a base option type, has a docstring
|
Each option has its own class, inherits from a base option type, has a docstring
|
||||||
to describe it and a `displayname` property for display on the website.
|
to describe it and a `displayname` property for display on the website and in
|
||||||
|
spoiler logs.
|
||||||
|
|
||||||
The actual name as used in the yaml is defined in a `dict[str, Option]`, that is
|
The actual name as used in the yaml is defined in a `dict[str, Option]`, that is
|
||||||
assigned to the world under `self.options`.
|
assigned to the world under `self.options`.
|
||||||
|
@ -332,8 +333,9 @@ class MyGameWorld(World):
|
||||||
"""Insert description of the world/game here."""
|
"""Insert description of the world/game here."""
|
||||||
game: str = "My Game" # name of the game/world
|
game: str = "My Game" # name of the game/world
|
||||||
options = mygame_options # options the player can set
|
options = mygame_options # options the player can set
|
||||||
topology_present: bool = True # show path to victory in spoiler
|
topology_present: bool = True # show path to required location checks in spoiler
|
||||||
remote_items: bool = False # True if all items come from the server
|
remote_items: bool = False # True if all items come from the server
|
||||||
|
remote_start_inventory: bool = False # True if start inventory comes from the server
|
||||||
|
|
||||||
# ID of first item and location, can be hard-coded but code may be easier
|
# ID of first item and location, can be hard-coded but code may be easier
|
||||||
# to read with this as a propery
|
# to read with this as a propery
|
||||||
|
@ -346,6 +348,12 @@ class MyGameWorld(World):
|
||||||
id, name in enumerate(mygame_items, start_id)}
|
id, name in enumerate(mygame_items, start_id)}
|
||||||
location_name_to_id = {name: id for
|
location_name_to_id = {name: id for
|
||||||
id, name in enumerate(mygame_locations, start_id)}
|
id, name in enumerate(mygame_locations, start_id)}
|
||||||
|
|
||||||
|
# Items can be grouped using their names to allow easy checking if any item
|
||||||
|
# from that group has been collected. Group names can also be used for !hint
|
||||||
|
item_name_groups = {
|
||||||
|
"weapons": {"sword", "lance"}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Generation
|
### Generation
|
||||||
|
@ -358,7 +366,9 @@ The world has to provide the following things for generation
|
||||||
* locations placed inside those regions
|
* locations placed inside those regions
|
||||||
* a `def create_item(self, item: str) -> MyGameItem` for plando/manual placing
|
* a `def create_item(self, item: str) -> MyGameItem` for plando/manual placing
|
||||||
* a `def generate_output(self, output_directory: str)` that creates the output
|
* a `def generate_output(self, output_directory: str)` that creates the output
|
||||||
if there is output to be generated (i.e. `remote_items = False`). When this is
|
if there is output to be generated. If only items are randomized and
|
||||||
|
`remote_items = True` it is possible to have a generic mod and output
|
||||||
|
generation can be skipped. In all other cases this is required. When this is
|
||||||
called, `self.world.get_locations()` has all locations for all players, with
|
called, `self.world.get_locations()` has all locations for all players, with
|
||||||
properties `item` pointing to the item and `player` identifying the player.
|
properties `item` pointing to the item and `player` identifying the player.
|
||||||
`self.world.get_filled_locations(self.player)` will filter for this world.
|
`self.world.get_filled_locations(self.player)` will filter for this world.
|
||||||
|
@ -401,7 +411,7 @@ def generate_early(self):
|
||||||
```python
|
```python
|
||||||
# we need a way to know if an item provides progress in the game ("key item")
|
# we need a way to know if an item provides progress in the game ("key item")
|
||||||
# this can be part of the items definition, or depend on recipe randomization
|
# this can be part of the items definition, or depend on recipe randomization
|
||||||
from .Items import is_pregression # this is just a dummy
|
from .Items import is_progression # this is just a dummy
|
||||||
|
|
||||||
def create_item(self, item: str):
|
def create_item(self, item: str):
|
||||||
# This is called when AP wants to create an item by name (for plando) or
|
# This is called when AP wants to create an item by name (for plando) or
|
||||||
|
@ -424,13 +434,6 @@ def create_items(self):
|
||||||
# e.g. custom win condition like triforce hunt.
|
# e.g. custom win condition like triforce hunt.
|
||||||
for item in mygame_items:
|
for item in mygame_items:
|
||||||
self.world.itempool += self.create_item(item)
|
self.world.itempool += self.create_item(item)
|
||||||
|
|
||||||
# items can be grouped by name to allow easy checking if any item from that
|
|
||||||
# group has been collected. if item groups are used extensively it may be
|
|
||||||
# better to define them in generate_early instead
|
|
||||||
self.item_name_groups = {
|
|
||||||
"weapons": {"sword", "lance"}
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### create_regions
|
#### create_regions
|
||||||
|
|
Loading…
Reference in New Issue