Skip to content

Conversation

@daviscook477
Copy link

The main idea of this PR is to introduce a few more functionality to Communication Mod to make it more possible to fully recreate the game state from the JSON game state it sends to the child process.

The changes are:

  1. Introduce a new command "abandon" to immediately exit a run. This is useful if an AI agent gets itself into a state it cannot determine how to proceed by allowing it to completely discard that run and move on to the next one.
  2. Introduce some console commands to pause/play Communication Mod in order to allow for some additional debugging. Some examples of uses are to pause Communication Mod, modify the deck/relics or other things in the run, and then play Communication Mod in order to see how an AI agent reacts to a specific set of manufactured circumstances.
  3. Add the additional information to the JSON game state, specifically:
    a. always send intents even with runic dome - honestly this might be a bad change. I personally was having trouble figuring out what to do in recreating the game state without intents so I wanted to allow AI agent to just know them anyways and potentially discard any runs containing runic dome as invalid afterwards from any analysis. But I can understand objection to this change.
    b. isEscaping boolean on monsters
    c. a bunch of misc int and bool fields for monsters - very similar to how there are some misc fields that need to be provided to fully describe powers on the player/monsters, some monsters have additional data about themself that is needed to describe their behavior. this is all information that the player would have access to so it's not providing extra information (except for maybe nipDmg and biteDmp since the player only knows about those the first time the louse/darkling uses those move intents). these are quite important for some fights like time eater where it's important to know whether his heal to half-hp has been used or how many times the book of stabbing has used its multiattack so far (since that dictates how many multihits it does).

@ForgottenArbiter
Copy link
Owner

Hi, thanks for doing all this! While I haven't looked at all of the changes too carefully yet, I do have some initial concerns about two changes that modify existing behavior:

  1. Interpreting seeds that only contain numbers as longs can cause it to be impossible to enter certain seeds unless you know their numeric equivalent, and would probably surprise many users in the admittedly rare case that it becomes relevant. I think interpreting seeds as numeric would probably be better left to an option (defaulting off).
  2. As for revealing Runic Dome intents, I'm wary of breaking functionality for mods that may currently depend on the hidden intent, especially when providing some sort of alternative interface to use when playing Slay the Spire. It's true that Communication Mod does already show hidden information in some other situations and the user can choose whether to make use of it, but for this specific piece of information, again, I think again it would be good to add a toggle, either to show all hidden information (even if it just applies to Runic Dome for now) or to show Runic Dome intents.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants