Skip to content

Commit

Permalink
Docs update to 0.2.0, and added deathlink and recipe shuffle options
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryguy-9999 committed Jun 27, 2024
1 parent 7a5314d commit df7d41d
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 32 deletions.
22 changes: 15 additions & 7 deletions worlds/against_the_storm/Options.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
from dataclasses import dataclass
from Options import Toggle, PerGameCommonOptions
from Options import Choice, PerGameCommonOptions

class LogicDifficulty(Toggle):
"""How minimal the logic should be."""
display_name = "Logic Difficulty"
class RecipeShuffle(Choice):
"""Enable production building recipe shuffle. Can skip Crude WS for less frustrating seeds."""
display_name = "Recipe Shuffle"
option_vanilla = 0
option_exclude_crude_ws = 1
option_full_shuffle = 2
default = 0

class Deathlink(Toggle):
"""Enable death link."""
class Deathlink(Choice):
"""Enable death link. Can send on villager leaving and/or death."""
display_name = "Death Link"
option_off = 0
option_death_only = 1
option_leave_and_death = 2
default = 0

@dataclass
class AgainstTheStormOptions(PerGameCommonOptions):
# logic_difficulty: LogicDifficulty
recipe_shuffle: RecipeShuffle
deathlink: Deathlink
14 changes: 11 additions & 3 deletions worlds/against_the_storm/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import string
from typing import Any, Dict
from worlds.AutoWorld import World
from worlds.generic.Rules import set_rule
from BaseClasses import Region
Expand All @@ -9,10 +11,10 @@

class AgainstTheStormWorld(World):
"""
Against The Storm is a roguelite city builder
Against the Storm is a roguelite city builder
"""

game = "Against The Storm"
game = "Against the Storm"
options_dataclass = AgainstTheStormOptions
options: AgainstTheStormOptions
topology_present = True
Expand Down Expand Up @@ -42,6 +44,12 @@ def set_rules(self) -> None:
self.multiworld.completion_condition[self.player] = lambda state: satisfies_recipe(state, self.player,
['Jerky,Porridge,Skewers,Biscuits,Pie,Pickled Goods', 'Ale,Training Gear,Incense,Scrolls,Wine,Tea', 'Coal,Oil,Sea Marrow', 'Amber', 'Tools', 'Purging Fire', 'Planks', 'Bricks', 'Fabric'])
for location, logic in location_dict.items():
print(f"Loc: {location}|{logic}") # DELETEME
set_rule(self.multiworld.get_location(location, self.player), lambda state, logic=logic: satisfies_recipe(state, self.player, logic))

def fill_slot_data(self) -> Dict[str, Any]:
return {
"deathlink": self.options.deathlink.value,
"recipe_shuffle": self.options.recipe_shuffle.value,
"seed": self.random.randint(0, 2147483647)
}

8 changes: 5 additions & 3 deletions worlds/against_the_storm/docs/en_Against_The_Storm.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Against The Storm

## What does randomization do to this game?
All resources are blocked from being acquired until their Item is received from Archipelago. TODO: enable dev console even in non-experimental branch.
All resources are blocked from being acquired until their Item is received from Archipelago.
Optionally, all production recipes can be shuffled.

## What Against The Storm items are randomized?
"Items" in this case are the ability to acquire the blocked resources. The resource exceptions to this are only Wood and the Waters, and the acquistion exceptions are embarkation bonuses, and building deconstruction.
Expand Down Expand Up @@ -30,5 +31,6 @@ Locations are essentially just a list of custom deeds designed to cover many asp
## What is the goal of this game when randomized?
To reforge a seal in the sealed forest.

## Current Version (Alpha v0.1.0) Limitations and Issues
* Needing to use the experimental build to see the dev console is not ideal
## Current Version (Alpha v0.2.0) Limitations and Issues
* Need better UX around locked items, such as icons and automatically disabled recipes
* The ap.connect warning doesn't dismiss itself
36 changes: 17 additions & 19 deletions worlds/against_the_storm/docs/setup_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,37 @@
- Optional: Create a new modding profile and name, if you don't want to use the Default
4. Click the Get Mods tab.
5. Find the Against The Storm for Archipelago mod, and download it.
6. IMPORTANTLY: Before you click the run "Modded" button in the top right, first head over to steam and switch to the experimental beta branch. In order to use the mod, we need to use the developer console made available to us in this build.
1. Right click Against the Storm in your Steam library.
2. Properties...
3. Switch to Betas tab
4. Beta Participation: switch the dropdown from None to experimental - Experimental Branch

## Generating and Hosting a Seed
* If you are unfamiliar with Archipelago, I recommend reading through the [Archipelago Setup Guide](https://archipelago.gg/tutorial/Archipelago/setup/en) to gain an understanding of how Archipelago works and to better understand the steps below. This is *not* the kind of randomizer you might be expecting!
1. Download the `against_the_storm.apworld` and `AgainstTheStorm.yaml` files from the latest [Against The Storm for Archipelago](https://github.com/RyanCirincione/ArchipelagoATS/releases) release.
2. Put the `against_the_storm.apworld` file in the `/Archipelago/lib/worlds` folder where you installed Archipelago.
3. Edit the `AgainstTheStorm.yaml` to configure the slot name. Don't worry too much about this if you're just trying this out on your own. The slot name would be more relevant if you are playing an Archipelago Multiworld.
3. Edit the `AgainstTheStorm.yaml`.
1. Don't worry too much about the `name` if you're just trying this out on your own. The slot name would be more relevant if you are playing an Archipelago Multiworld.
2. The `deathlink` options are `off`, `death_only`, and `leave_and_death`. Again, don't worry about this if you're unfamiliar with Archipelago, the default is fine.
3. The `recipe_shuffle` options are `vanilla`, `exclude_crude_ws`, and `full_shuffle`. The non-vanilla options will rearrange all production recipes in the game!
4. Place the edited `AgainstTheStorm.yaml` in the `/Archipelago/Players` folder.
5. Run `ArchipelagoGenerate.exe` from the `/Archipelago` folder.
6. Upload the `AP_#######.zip` file from `/Archipelago/output` to [Archipelago website](https://archipelago.gg/uploads) to host the game.

## Joining an Archipelago Game in Against The Storm
* Optional: backup your save files located in `%userprofile%\AppData\LocalLow\Eremite Games\Against the Storm`
1. Go to Thunderstore Mod Manager, open your Against the Storm profile with BepInEx and ATS for AP mods, and click the blue Modded play button.
* Optional: from the main menu, start a separate profile in the top right if you already have data in your default experimental profile.
* Optional: especially if you started a new profile from above, you will almost certainly want to run `meta.addAll` from the dev console, as the mod will assume you have all meta progression unlocked. The dev console is opened with \` (backtick, to the left of 1 on keyboards) by default.
* If you run `meta.allAll` on a fresh profile, the Training Expedition still will appear locked. This is a bug in the game's UI. Just enter and leave the Smoldering Citadel, and you should now see the Training Expedition available.
2. In the game, start a settlement from the Training Expedition menu. (The mod should also work on any world settlements, you will just have more control over your game from the Training Expedition)
1. Go to Thunderstore Mod Manager, open your Against the Storm profile with the Against the Storm for Archipelago mod, and click the blue Modded play button.
* Optional: from the main menu, start a separate profile in the top right if you already have data in your default profile.
* Optional: especially if you started a new profile from above, you will almost certainly want to run `meta.addAll` from the dev console, as the mod will assume you have all meta progression unlocked. The dev console is opened with \` (backtick, to the left of 1 on keyboards) by default, and at least for me only opens in the world map or settlements.
* If you run `meta.allAll` on a fresh profile, the Training Expedition will still appear locked. This is a bug in the game's UI. Just enter and leave the Smoldering Citadel, and you should now see the Training Expedition available.
2. From the world map, open the dev console (default \` (backtick, to the left of 1 on keyboards)) and type `ap.connect <url>:<port> "<slotName>" [password]`.
* If you uploaded `AP_#######.zip` to archipelago, then the room you generated should have the url: `archipelago.gg:#####`
* slotName is the name from the `AgainstTheStorm.yaml`. The default was `ATSPlayer` if you didn't change it. The quotes are only necessary if the name you set has spaces.
* password is only necessary if you added a password to your yaml.
3. In the game, start a settlement from the Training Expedition menu. (The mod should also work on any world settlements, you will just have more control over your game from the Training Expedition)
* Optional: you will probably want to use the Templates option in the top left to set up your preferred Training Expedition only once. Note: all three of these columns can scroll!
* *Column 1*
* Don't forget to randomize your Seed each game! Or not, I won't stop you.
* Don't forget to randomize your Seed each game! Or don't, I won't stop you.
* Also don't forget to choose your Biome and Species, if you're looking to check certain locations in particular.
* Feel free to choose any difficulty. The order locations only go up to slot #9, so you can still reach everything from Viceroy.
* Set your Reputation to 18. Or, again, whatever you want, I won't stop you. Mod just is balanced around the expectation of 18.
* 4 min Storm duration is found here under Reputation/Impatience, rather than as a Prestige modifier.
* Set your Reputation to 18. Or, again, whatever you want, I won't stop you. Mod is just balanced around the expectation of 18.
* 4 minute Storm duration is found here under Reputation/Impatience, rather than as a Prestige modifier.
* *Column 2*
* Select 4 neighboring towns for a typical trade experience.
* Determine your embarkation goods. The default here is much more brutal than the usual embarkation. Here is what I tested with, designed as a mix of the base embarkation package, and some extra basic resources:
Expand All @@ -64,9 +66,5 @@
* *Column 3*
* The mod shouldn't be affected by any modifiers, so feel free to add them if you want to spice up your run.
* Below the map modifiers is where you will find the Prestige modifiers, which should roughly be in the order you get them from climbing Prestige. (Note the missing storm duration modifier, as mentioned above)
3. Click Embark.
4. When the settlement loads, open the dev console (default \` (backtick, to the left of 1 on keyboards)) and type `ap.connect <url>:<port> <slotName> [password]`.
* If you uploaded `AP_#######.zip` to archipelago, then the room you generated should have the url: `archipelago.gg:#####`
* slotName is the name from the `AgainstTheStorm.yaml`. The default was `ATSPlayer` if you didn't change it.
* password is only necessary if you added a password to your yaml.
4. Click Embark.
5. Lastly, you will probably want to be able to monitor which Locations you have checked, and which Items you have received. You can do that either from the tracker available in the room you generated on the archipelago website, or by opening the Archipelago Text Client which should have come with the Archipelago installation. Note that the website tracker can take a little while to update.

0 comments on commit df7d41d

Please sign in to comment.