Skip to content
The archive is in testingEverything you make here, accounts and runs included, will be wiped before launch on 1 October 2026.

Log

The agent's sanitised log, as published in the bundle. Images, reasoning, host context, machine paths and identifiers were removed by the tooling before publication.

81 messages316 tool calls493 harness eventsTimes are measured from the start of the recording.
Start
Recording started (obs)
Game ready, seed 23M
Run started · claude-sonnet-5 on claude-code
Prompt
You are playing Slay the Spire as the IRONCLAD at ascension 0; the run has been started. Read sts_documentation, then play until you defeat the Act 1 boss. Do not look up information about the game online.
Model
I'll start by loading the game tools and reading the documentation.
ToolSearch
query
select:mcp__slay_the_spire__slay_the_spire_documentation,mcp__slay_the_spire__slay_the_spire_exec,mcp__slay_the_spire__slay_the_spire_screenshot
max_results
5
1
type
tool_reference
tool_name
mcp__slay_the_spire__slay_the_spire_documentation
2
type
tool_reference
tool_name
mcp__slay_the_spire__slay_the_spire_exec
3
type
tool_reference
tool_name
mcp__slay_the_spire__slay_the_spire_screenshot
slay_the_spire_documentation
no arguments
# Slay the Spire API 3 122 characters
# Slay the Spire API `sts` is in scope in `sts_exec`. Slay the Spire is turn-based and waits for you: nothing happens between your commands. Every call returns the full game state after the game settled. ## State `await sts.state()` (alias `sts.observe()`) returns `{ available_commands, ready_for_command, in_game, game_state }`. `game_state` has `screen_type`, one of `EVENT`, `CHEST`, `SHOP_ROOM`, `REST`, `CARD_REWARD`, `COMBAT_REWARD`, `MAP`, `BOSS_REWARD`, `SHOP_SCREEN`, `GRID`, `HAND_SELECT`, `GAME_OVER`, `COMPLETE`, `NONE` (`NONE` during a fight: the combat itself is in `combat_state`), `screen_state` (the choices and details of that screen), `room_phase` (`COMBAT`, `EVENT`, `COMPLETE`, `INCOMPLETE`), `floor`, `act`, `act_boss`, `current_hp`, `max_hp`, `gold`, `deck`, `relics`, `potions`, `map`, `choice_list` and, in combat, `combat_state` with `hand`, `draw_pile`, `discard_pile`, `exhaust_pile`, `player` (`energy`, `block`, `powers`), `monsters` (`current_hp`, `block`, `intent`, `move_adjusted_damage`, `move_hits`, `powers`) and `turn`. `available_commands` lists what you may do right now. ## Commands - `await sts.play(cardIndex, targetIndex?)`: play the card at `cardIndex` (1-based, as in the hand) on monster `targetIndex` (0-based) when the card needs a target. - `await sts.end()`: end the turn. - `await sts.potion("use" | "discard", slot, targetIndex?)`. - `await sts.choose(indexOrName)`: pick from `choice_list` (0-based index or the choice's name) on map, reward, event, shop, rest and card screens. - `await sts.proceed()` / `await sts.confirm()`: the right-hand button (continue, confirm). - `await sts.cancel()` / `await sts.skip()` / `await sts.leave()` / `await sts.back()`: the left-hand button. - `await sts.key("Confirm" | "Cancel" | "Map" | "Deck" | "Draw_Pile" | "Discard_Pile" | "Exhaust_Pile" | "End_Turn" | "Up" | "Down" | "Left" | "Right" | "Drop_Card" | "Card_1".."Card_10")`: presses that key. - `await sts.click(x, y, "left" | "right")`: a mouse click at (x, y) in the game's own 1920x1080 space ((0,0) is the top left corner, (1920,1080) the bottom right, whatever the window resolution). It also moves the cursor. Everything on a screen is reachable with `choose`, `proceed` and `cancel`; a click is for what those do not offer. - `await sts.wait(frames)`: let the game run for that number of frames, or until the game state changes, whichever comes first. - `await sts.command("PLAY 1 0")`: any raw Communication Mod command. - `await sts.screenshot()`: the game window as an image (the state is the ground truth; the picture is for orientation). - `await sts.restart()`: only after a death (`screen_type` `GAME_OVER` without victory): a new run with the same seed (same map, encounters and rewards). Every other command is refused until you restart. `sts.choose()` refuses to enter the Secret Portal event (act 3): only "leave" is accepted there. Commands that are not in `available_commands` are rejected with an error; read the state first. The run has already been started for you (character, ascension and seed are fixed); do not start a new one yourself.
Model
Now let me check the current game state.
slay_the_spire_exec
return await sts.state();
What came back 15 986 characters
available_commands
choosekeyclickwaitstate
ready_for_command
yes
in_game
yes
game_state
choice_list
talk
screen_type
EVENT
screen_state
4 fields
event_id
Neow Event
body_text
empty
options
1 items
1
4 fields
choice_index
0
disabled
no
text
[Talk]
label
Talk
event_name
Neow
seed
2 577
deck
10 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
relics
1 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
max_hp
80
act_boss
The Guardian
gold
99
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
EVENT
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
0
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
NeowRoom
Floor 0
Model
We're at the Neow event (start of run). Let me talk to Neow to see the options.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
return await sts.choose(0);
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.0 in-game
What came back 16 906 characters
available_commands
choosekeyclickwaitstate
ready_for_command
yes
in_game
yes
game_state
choice_list
obtain a random rare cardenemies in your next three combats have 1 hptake 24 damage choose a rare colorless card to obtainlose your starting relic obtain a random boss relic
screen_type
EVENT
screen_state
4 fields
event_id
Neow Event
body_text
empty
options
4 items
1
4 fields
choice_index
0
disabled
no
text
[ Obtain a random rare Card ]
label
Obtain a random rare Card
2
4 fields
choice_index
1
disabled
no
text
[ Enemies in your next three combats have 1 HP ]
label
Enemies in your next three combats have 1 HP
3
4 fields
choice_index
2
disabled
no
text
[ Take 24 damage Choose a rare colorless Card to obtain ]
label
Take 24 damage Choose a rare colorless Card to obtain
4
4 fields
choice_index
3
disabled
no
text
[ Lose your starting Relic Obtain a random boss Relic ]
label
Lose your starting Relic Obtain a random boss Relic
event_name
Neow
seed
2 577
deck
10 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
relics
1 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
max_hp
80
act_boss
The Guardian
gold
99
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
EVENT
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
0
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
NeowRoom
Model
I'll pick the option that trivializes the next three combats — a strong, safe start with no downside.
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
const s = await sts.choose(1);
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, map_hint: 'ok' };
Inputs played
Played CHOOSE 1
Played CHOOSE 1 00:00:00.6 in-game
screen_type
EVENT
room_phase
EVENT
map_hint
ok
slay_the_spire_exec
const s = await sts.state();
return s.game_state.screen_state;
event_id
Neow Event
body_text
empty
options
1 items
1
4 fields
choice_index
0
disabled
no
text
[Leave]
label
Leave
event_name
Neow
slay_the_spire_exec2 inputs played · 00:00:00.1 in-game
const s = await sts.choose(0);
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type };
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.1 in-game
screen_type
MAP
room_phase
COMPLETE
room_type
NeowRoom
slay_the_spire_exec
const s = await sts.state();
return { choice_list: s.game_state.choice_list, floor: s.game_state.floor };
choice_list
x=0x=1x=5
floor
0
slay_the_spire_exec2 inputs played · 00:00:02.0 in-game
const s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:02.0 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoom
floor
1
Floor 1
Model
Combat started. Let's check the combat state.
slay_the_spire_exec
const s = await sts.state();
return s.game_state.combat_state;
What came back 3 693 characters
draw_pile
5 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
discard_pile
none
exhaust_pile
none
cards_discarded_this_turn
0
times_damaged
0
monsters
2 items
1
13 fields
is_gone
no
move_hits
1
move_base_damage
5
half_dead
no
move_adjusted_damage
-1
max_hp
14
intent
DEBUG
move_id
1
name
Spike Slime (S)
current_hp
1
block
0
id
SpikeSlime_S
powers
none
2
13 fields
is_gone
no
move_hits
1
move_base_damage
10
half_dead
no
move_adjusted_damage
-1
max_hp
29
intent
DEBUG
move_id
2
name
Acid Slime (M)
current_hp
1
block
0
id
AcidSlime_M
powers
none
turn
1
limbo
none
hand
5 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
player
orbs
none
current_hp
80
block
0
max_hp
80
powers
none
energy
3
Model
Both enemies have 1 HP thanks to Neow's buff. I'll strike each to kill them.
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(2, 0); // Strike on Spike Slime
return s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp}));
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.3 in-game
1
name
Spike Slime (S)
hp
0
2
name
Acid Slime (M)
hp
1
slay_the_spire_exec
let s = await sts.state();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, hand: s.game_state.combat_state ? s.game_state.combat_state.hand.map(c=>c.name) : null, monsters: s.game_state.combat_state ? s.game_state.combat_state.monsters : null };
What came back 812 characters
screen_type
NONE
room_phase
COMBAT
hand
DefendStrikeStrikeDefend
monsters
2 items
1
13 fields
is_gone
yes
move_hits
1
move_base_damage
5
half_dead
no
move_adjusted_damage
5
max_hp
14
intent
ATTACK
move_id
1
name
Spike Slime (S)
current_hp
0
block
0
id
SpikeSlime_S
powers
none
2
13 fields
is_gone
no
move_hits
1
move_base_damage
10
half_dead
no
move_adjusted_damage
10
max_hp
29
intent
ATTACK
move_id
2
name
Acid Slime (M)
current_hp
1
block
0
id
AcidSlime_M
powers
none
Model
Now finish off the Acid Slime.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.play(2, 0); // Strike on Acid Slime (index 1 in monsters, but target index 0 since slime slot 0 is gone)
return s;
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.0 in-game
Error: Slay the Spire refused "PLAY 2 0": Selected card cannot be played with the selected target.
slay_the_spire_exec2 inputs played · 00:00:01.4 in-game
let s = await sts.play(2, 1);
return s.game_state.combat_state ? s.game_state.combat_state.monsters : s.game_state;
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:01.4 in-game
What came back 14 295 characters
choice_list
goldcard
screen_type
COMBAT_REWARD
screen_state
rewards
2 items
1
2 fields
gold
15
reward_type
GOLD
2
1 fields
reward_type
CARD
seed
2 577
deck
10 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
2
max_hp
80
act_boss
The Guardian
gold
99
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
1
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoom
Model
First fight won without damage. Let's collect the rewards — gold first, then card.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, gold: s.game_state.gold };
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
screen_type
COMBAT_REWARD
choice_list
card
gold
114
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 909 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
0
name
Clash
id
Clash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Thunderclap
id
Thunderclap
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
bowl_available
no
skip_available
yes
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Shrug It Off");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase };
Inputs played
Played CHOOSE Shrug It Off
Played CHOOSE Shrug It Off 00:00:00.0 in-game
screen_type
COMBAT_REWARD
room_phase
COMPLETE
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, choice_list: s.game_state.choice_list };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
room_phase
COMPLETE
choice_list
x=0
slay_the_spire_exec2 inputs played · 00:00:02.1 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:02.1 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoom
floor
2
Floor 2
Model
This is our second buffed combat. Let's check the enemies.
slay_the_spire_exec
const s = await sts.state();
return { hand: s.game_state.combat_state.hand.map(c=>c.name), monsters: s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp, intent:m.intent})) };
hand
DefendDefendStrikeDefendStrike
monsters
2 items
1
3 fields
name
Louse
hp
1
intent
DEBUG
2
3 fields
name
Louse
hp
1
intent
DEBUG
Model
Both lice at 1 HP. Strike each once.
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 0);
return s.game_state.combat_state ? s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp, gone:m.is_gone})) : s.game_state;
Inputs played
Played PLAY 3 0
Played PLAY 3 0 00:00:00.3 in-game
1
name
Louse
hp
0
gone
yes
2
name
Louse
hp
1
gone
no
slay_the_spire_exec
let s = await sts.state();
return s.game_state.combat_state.hand.map(c=>c.name);
DefendDefendDefendStrike
slay_the_spire_exec2 inputs played · 00:00:01.5 in-game
let s = await sts.play(4, 1);
return s.game_state;
Inputs played
Played PLAY 4 1
Played PLAY 4 1 00:00:01.5 in-game
What came back 14 838 characters
choice_list
goldpotioncard
screen_type
COMBAT_REWARD
screen_state
rewards
3 items
1
2 fields
gold
14
reward_type
GOLD
2
2 fields
potion
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
reward_type
POTION
3
1 fields
reward_type
CARD
seed
2 577
deck
11 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
11
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
1
max_hp
80
act_boss
The Guardian
gold
114
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
2
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoom
Model
Let's collect gold, potion, and pick a card.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("potion");
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, potions: s.game_state.potions };
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE potion
Played CHOOSE potion 00:00:00.0 in-game
What came back 551 characters
screen_type
COMBAT_REWARD
choice_list
card
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 933 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Body Slam
id
Body Slam
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Sword Boomerang
id
Sword Boomerang
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
bowl_available
no
skip_available
yes
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Perfected Strike");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played CHOOSE Perfected Strike
Played CHOOSE Perfected Strike 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0x=1
floor
2
slay_the_spire_exec2 inputs played · 00:00:01.8 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:01.8 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoom
floor
3
Floor 3
slay_the_spire_exec
const s = await sts.state();
return { hand: s.game_state.combat_state.hand.map(c=>c.name), monsters: s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp, intent:m.intent})) };
hand
Shrug It OffStrikeBashStrikeDefend
monsters
1 items
1
3 fields
name
Cultist
hp
1
intent
DEBUG
Model
Single Cultist at 1 HP (last buffed fight). Kill it with a Strike.
slay_the_spire_exec2 inputs played · 00:00:01.4 in-game
let s = await sts.play(2, 0);
return s.game_state;
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:01.4 in-game
What came back 14 878 characters
choice_list
goldcard
screen_type
COMBAT_REWARD
screen_state
rewards
2 items
1
2 fields
gold
13
reward_type
GOLD
2
1 fields
reward_type
CARD
seed
2 577
deck
12 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
11
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
12
11 fields
exhausts
no
is_playable
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
80
act_boss
The Guardian
gold
128
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
3
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoom
Model
All three buffed combats used with zero damage taken. Let's collect rewards.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 898 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Evolve
id
Evolve
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Dual Wield
id
Dual Wield
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Havoc
id
Havoc
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
bowl_available
no
skip_available
yes
Model
None of these strongly fit yet — I'll skip to keep the deck lean.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.skip();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase };
Inputs played
Played SKIP
Played SKIP 00:00:00.0 in-game
screen_type
COMBAT_REWARD
room_phase
COMPLETE
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0x=1
floor
3
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:00.4 in-game
screen_type
SHOP_ROOM
room_phase
COMPLETE
room_type
ShopRoom
floor
4
Floor 4
slay_the_spire_exec
const s = await sts.state();
return s.game_state.screen_state;
none
slay_the_spire_exec
const s = await sts.state();
return s;
What came back 16 452 characters
available_commands
choosepotionproceedkeyclickwaitstate
ready_for_command
yes
in_game
yes
game_state
choice_list
shop
screen_type
SHOP_ROOM
screen_state
none
seed
2 577
deck
12 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
11
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
12
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
80
act_boss
The Guardian
gold
141
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
COMPLETE
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
80
floor
4
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
ShopRoom
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("shop");
return s.game_state.screen_state;
Inputs played
Played CHOOSE shop
Played CHOOSE shop 00:00:00.0 in-game
What came back 2 853 characters
cards
7 items
1
11 fields
exhausts
no
cost
1
price
52
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
2
11 fields
exhausts
no
cost
1
price
82
name
Dropkick
id
Dropkick
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
3
11 fields
exhausts
no
cost
1
price
40
name
Dual Wield
id
Dual Wield
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
4
11 fields
exhausts
no
cost
1
price
75
name
Ghostly Armor
id
Ghostly Armor
type
SKILL
ethereal
yes
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
5
11 fields
exhausts
no
cost
1
price
68
name
Fire Breathing
id
Fire Breathing
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
6
11 fields
exhausts
yes
cost
0
price
85
name
Bandage Up
id
Bandage Up
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
7
11 fields
exhausts
no
cost
0
price
189
name
Panache
id
Panache
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
purge_cost
75
potions
3 items
1
6 fields
requires_target
no
can_use
no
can_discard
yes
price
76
name
Essence of Steel
id
EssenceOfSteel
2
6 fields
requires_target
no
can_use
no
can_discard
yes
price
71
name
Liquid Memories
id
LiquidMemories
3
6 fields
requires_target
no
can_use
no
can_discard
yes
price
49
name
Swift Potion
id
Swift Potion
relics
3 items
1
4 fields
price
157
name
Pen Nib
id
Pen Nib
counter
0
2
4 fields
price
311
name
Girya
id
Girya
counter
0
3
4 fields
price
157
name
Strange Spoon
id
Strange Spoon
counter
-1
purge_available
yes
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Pommel Strike");
return { gold: s.game_state.gold, deck: s.game_state.deck.map(c=>c.name) };
Inputs played
Played CHOOSE Pommel Strike
Played CHOOSE Pommel Strike 00:00:00.0 in-game
gold
89
deck
StrikeStrikeStrikeStrikeStrikeDefendDefendDefendDefendBashShrug It OffPerfected StrikePommel Strike
slay_the_spire_exec
const s = await sts.state();
return s.available_commands;
choosepotionleavekeyclickwaitstate
slay_the_spire_exec
const s = await sts.state();
return { choice_list: s.game_state.choice_list, screen_state: s.game_state.screen_state };
What came back 3 054 characters
choice_list
purgedropkickdual wieldghostly armorfire breathingbandage upessence of steelliquid memoriesswift potion
screen_state
cards
6 items
1
11 fields
exhausts
no
cost
1
price
82
name
Dropkick
id
Dropkick
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
2
11 fields
exhausts
no
cost
1
price
40
name
Dual Wield
id
Dual Wield
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
3
11 fields
exhausts
no
cost
1
price
75
name
Ghostly Armor
id
Ghostly Armor
type
SKILL
ethereal
yes
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
4
11 fields
exhausts
no
cost
1
price
68
name
Fire Breathing
id
Fire Breathing
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
5
11 fields
exhausts
yes
cost
0
price
85
name
Bandage Up
id
Bandage Up
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
6
11 fields
exhausts
no
cost
0
price
189
name
Panache
id
Panache
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
purge_cost
75
potions
3 items
1
6 fields
requires_target
no
can_use
no
can_discard
yes
price
76
name
Essence of Steel
id
EssenceOfSteel
2
6 fields
requires_target
no
can_use
no
can_discard
yes
price
71
name
Liquid Memories
id
LiquidMemories
3
6 fields
requires_target
no
can_use
no
can_discard
yes
price
49
name
Swift Potion
id
Swift Potion
relics
3 items
1
4 fields
price
157
name
Pen Nib
id
Pen Nib
counter
0
2
4 fields
price
311
name
Girya
id
Girya
counter
0
3
4 fields
price
157
name
Strange Spoon
id
Strange Spoon
counter
-1
purge_available
yes
Model
I have 89 gold, purge costs 75. I'll purge a Strike to thin the deck.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("purge");
return s.game_state.screen_state ? s.game_state.screen_state : s.game_state.choice_list;
Inputs played
Played CHOOSE purge
Played CHOOSE purge 00:00:00.0 in-game
What came back 3 400 characters
cards
13 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
11
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
12
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
13
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
selected_cards
none
for_transform
no
confirm_up
no
any_number
no
for_upgrade
no
num_cards
1
for_purge
yes
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Defend");
return s.game_state.deck.map(c=>c.name);
Inputs played
Played CHOOSE Defend
Played CHOOSE Defend 00:00:00.0 in-game
StrikeStrikeStrikeStrikeStrikeDefendDefendDefendDefendBashShrug It OffPerfected StrikePommel Strike
slay_the_spire_exec
const s = await sts.state();
return { gold: s.game_state.gold, deckCount: s.game_state.deck.length, deck: s.game_state.deck.map(c=>c.name) };
gold
89
deckCount
13
deck
StrikeStrikeStrikeStrikeStrikeDefendDefendDefendDefendBashShrug It OffPerfected StrikePommel Strike
slay_the_spire_exec
const s = await sts.state();
return { available_commands: s.available_commands, screen_type: s.game_state.screen_type, screen_state: s.game_state.screen_state, choice_list: s.game_state.choice_list };
What came back 3 900 characters
available_commands
potionconfirmcancelkeyclickwaitstate
screen_type
GRID
screen_state
cards
13 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
11
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
12
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
13
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
selected_cards
none
for_transform
no
confirm_up
yes
any_number
no
for_upgrade
no
num_cards
1
for_purge
yes
Model
I need to select then confirm. Let me select a Defend card and confirm.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Defend");
return { available_commands: s.available_commands, selected: s.game_state.screen_state ? s.game_state.screen_state.selected_cards : null };
Inputs played
Played CHOOSE Defend
Played CHOOSE Defend 00:00:00.0 in-game
Error: Slay the Spire refused "CHOOSE Defend": Invalid command: choose. Possible commands: [potion, confirm, cancel, key, click, wait, state]
slay_the_spire_exec2 inputs played · 00:00:01.6 in-game
let s = await sts.key("Card_6");
return { selected: s.game_state.screen_state ? s.game_state.screen_state.selected_cards : null, available_commands: s.available_commands };
Inputs played
Played KEY Card_6
Played KEY Card_6 00:00:01.6 in-game
selected
none
available_commands
potionconfirmcancelkeyclickwaitstate
slay_the_spire_screenshot
no arguments
Model
The screenshot shows a Defend card highlighted/selected (index 6, top row). It appears already selected — let me click Confirm.
slay_the_spire_exec2 inputs played · 00:00:00.1 in-game
let s = await sts.confirm();
return { gold: s.game_state.gold, deckCount: s.game_state.deck.length, deck: s.game_state.deck.map(c=>c.name) };
Inputs played
Played CONFIRM
Played CONFIRM 00:00:00.1 in-game
gold
14
deckCount
12
deck
StrikeStrikeStrikeStrikeStrikeDefendDefendDefendBashShrug It OffPerfected StrikePommel Strike
Model
Purge successful — deck thinned to 12 cards, 14 gold left. Let's leave the shop and continue.
slay_the_spire_exec2 inputs played · 00:00:00.2 in-game
let s = await sts.leave();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, choice_list: s.game_state.choice_list };
Inputs played
Played LEAVE
Played LEAVE 00:00:00.2 in-game
screen_type
SHOP_ROOM
room_phase
COMPLETE
choice_list
shop
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
room_phase
COMPLETE
choice_list
x=0x=2
floor
4
slay_the_spire_exec2 inputs played · 00:00:00.9 in-game
let s = await sts.choose("x=2");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=2
Played CHOOSE x=2 00:00:00.9 in-game
screen_type
EVENT
room_phase
EVENT
room_type
EventRoom
floor
5
Floor 5
slay_the_spire_exec
const s = await sts.state();
return s.game_state.screen_state;
What came back 489 characters
event_id
Shining Light
body_text
You find a shimmering mass of light encompassing the center of the room. Its warm glow and enchanting patterns invite you in.
options
2 items
1
4 fields
choice_index
0
disabled
no
text
[Enter] Upgrade 2 random cards. Lose 16 HP.
label
Enter
2
4 fields
choice_index
1
disabled
no
text
[Leave]
label
Leave
event_name
Shining Light
Model
I'll take the upgrade — full HP gives good buffer for the cost.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(0);
return { hp: s.game_state.current_hp, deck: s.game_state.deck.map(c=>({name:c.name, upgrades:c.upgrades})) };
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.0 in-game
What came back 737 characters
hp
64
deck
12 items
1
2 fields
name
Strike
upgrades
0
2
2 fields
name
Strike+
upgrades
1
3
2 fields
name
Strike
upgrades
0
4
2 fields
name
Strike+
upgrades
1
5
2 fields
name
Strike
upgrades
0
6
2 fields
name
Defend
upgrades
0
7
2 fields
name
Defend
upgrades
0
8
2 fields
name
Defend
upgrades
0
9
2 fields
name
Bash
upgrades
0
10
2 fields
name
Shrug It Off
upgrades
0
11
2 fields
name
Perfected Strike
upgrades
0
12
2 fields
name
Pommel Strike
upgrades
0
Model
Two Strikes upgraded. HP at 64/80. Let's continue to the map.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
Error: Slay the Spire refused "PROCEED": Invalid command: proceed. Possible commands: [choose, potion, key, click, wait, state]
slay_the_spire_exec
const s = await sts.state();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list };
Error: Cannot read properties of undefined (reading 'screen_type')
slay_the_spire_exec
const s = await sts.state();
return s;
ready_for_command
yes
error
Invalid command: proceed. Possible commands: [choose, potion, key, click, wait, state]
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
await sts.wait(1);
const s = await sts.state();
return s;
Inputs played
Played WAIT 1
Played WAIT 1 00:00:00.0 in-game
What came back 16 910 characters
available_commands
choosepotionkeyclickwaitstate
ready_for_command
yes
in_game
yes
game_state
choice_list
leave
screen_type
EVENT
screen_state
4 fields
event_id
Shining Light
body_text
As you walk through the light, you notice that the light is absorbed into you. It's scorching hot ! However, the pain quickly recedes. You feel invigorated, as though you received a well deserved slap.
options
1 items
1
4 fields
choice_index
0
disabled
no
text
[Leave]
label
Leave
event_name
Shining Light
seed
2 577
deck
12 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
10
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
80
act_boss
The Guardian
gold
14
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
EVENT
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
64
floor
5
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
EventRoom
Model
Just needed to leave. Let's do that and continue mapping.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(0);
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.0 in-game
screen_type
MAP
choice_list
x=1
floor
5
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:00.7 in-game
screen_type
REST
room_phase
INCOMPLETE
room_type
RestRoom
floor
6
Floor 6
slay_the_spire_exec
const s = await sts.state();
return { choice_list: s.game_state.choice_list, current_hp: s.game_state.current_hp, max_hp: s.game_state.max_hp };
choice_list
restsmith
current_hp
64
max_hp
80
Model
I'm at 64/80 HP with more rest sites ahead — I'll smith a card now rather than rest.
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.choose("smith");
return s.game_state.screen_state;
Inputs played
Played CHOOSE smith
Played CHOOSE smith 00:00:00.5 in-game
What came back 2 665 characters
cards
10 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
5
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
2
name
Bash
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
8
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
9
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
10
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
selected_cards
none
for_transform
no
confirm_up
no
any_number
no
for_upgrade
yes
num_cards
1
for_purge
no
slay_the_spire_exec2 inputs played · 00:00:01.6 in-game
let s = await sts.key("Card_7");
return s.game_state.screen_state.selected_cards;
Inputs played
Played KEY Card_7
Played KEY Card_7 00:00:01.6 in-game
none
slay_the_spire_exec
const s = await sts.state();
return s.available_commands;
choosepotioncancelkeyclickwaitstate
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Bash");
return s.game_state.deck.map(c=>({name:c.name, upgrades:c.upgrades}));
Inputs played
Played CHOOSE Bash
Played CHOOSE Bash 00:00:00.0 in-game
What came back 613 characters
12 items
1
name
Strike
upgrades
0
2
name
Strike+
upgrades
1
3
name
Strike
upgrades
0
4
name
Strike+
upgrades
1
5
name
Strike
upgrades
0
6
name
Defend
upgrades
0
7
name
Defend
upgrades
0
8
name
Defend
upgrades
0
9
name
Bash
upgrades
0
10
name
Shrug It Off
upgrades
0
11
name
Perfected Strike
upgrades
0
12
name
Pommel Strike
upgrades
0
slay_the_spire_exec
const s = await sts.state();
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, available_commands: s.available_commands, choice_list: s.game_state.choice_list };
screen_type
GRID
room_phase
INCOMPLETE
available_commands
potionconfirmcancelkeyclickwaitstate
Model
Need to confirm the selection.
slay_the_spire_exec2 inputs played · 00:00:01.0 in-game
let s = await sts.confirm();
return s.game_state.deck.map(c=>({name:c.name, upgrades:c.upgrades}));
Inputs played
Played CONFIRM
Played CONFIRM 00:00:01.0 in-game
What came back 614 characters
12 items
1
name
Strike
upgrades
0
2
name
Strike+
upgrades
1
3
name
Strike
upgrades
0
4
name
Strike+
upgrades
1
5
name
Strike
upgrades
0
6
name
Defend
upgrades
0
7
name
Defend
upgrades
0
8
name
Defend
upgrades
0
9
name
Bash+
upgrades
1
10
name
Shrug It Off
upgrades
0
11
name
Perfected Strike
upgrades
0
12
name
Pommel Strike
upgrades
0
Model
Bash+ acquired. Now let's proceed to the map.
slay_the_spire_exec
const s = await sts.state();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, room_phase: s.game_state.room_phase };
screen_type
REST
room_phase
COMPLETE
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=1
floor
6
slay_the_spire_exec2 inputs played · 00:00:02.0 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:02.0 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoomElite
floor
7
Floor 7
Model
Elite fight — let's check the encounter details carefully.
slay_the_spire_exec
const s = await sts.state();
return s.game_state.combat_state;
What came back 4 898 characters
draw_pile
7 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
yes
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
discard_pile
none
exhaust_pile
none
cards_discarded_this_turn
0
times_damaged
0
monsters
3 items
1
13 fields
is_gone
no
move_hits
1
move_base_damage
-1
half_dead
no
move_adjusted_damage
-1
max_hp
41
intent
DEBUG
move_id
3
name
Sentry
current_hp
41
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
2
13 fields
is_gone
no
move_hits
1
move_base_damage
9
half_dead
no
move_adjusted_damage
9
max_hp
38
intent
DEBUG
move_id
4
name
Sentry
current_hp
38
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
3
13 fields
is_gone
no
move_hits
1
move_base_damage
-1
half_dead
no
move_adjusted_damage
-1
max_hp
40
intent
DEBUG
move_id
3
name
Sentry
current_hp
40
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
turn
1
limbo
none
hand
5 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
player
orbs
none
current_hp
64
block
0
max_hp
80
powers
none
energy
3
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2, 1); // Pommel Strike on Sentry index1
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.5 in-game
412940
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendStrike+Strike+DefendPerfected Strike
slay_the_spire_exec4 inputs played · 00:00:00.7 in-game
let s = await sts.play(2, 1); // Strike+ on Sentry index1
s = await sts.play(2, 1); // second Strike+
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
411140
Model
Energy spent, 11 HP left on the attacking Sentry. End turn.
slay_the_spire_exec2 inputs played · 00:00:05.0 in-game
let s = await sts.end();
return s.game_state;
Inputs played
Played END
Played END 00:00:05.0 in-game
What came back 21 352 characters
screen_type
NONE
screen_state
none
seed
2 577
combat_state
draw_pile
1 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
discard_pile
10 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
-2
name
Dazed
id
Dazed
type
STATUS
ethereal
yes
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
-2
name
Dazed
id
Dazed
type
STATUS
ethereal
yes
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
-2
name
Dazed
id
Dazed
type
STATUS
ethereal
yes
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
10
11 fields
exhausts
no
is_playable
no
cost
-2
name
Dazed
id
Dazed
type
STATUS
ethereal
yes
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
exhaust_pile
none
cards_discarded_this_turn
0
times_damaged
1
monsters
3 items
1
14 fields
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
3
half_dead
no
move_adjusted_damage
9
max_hp
41
intent
ATTACK
move_id
4
name
Sentry
current_hp
41
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
2
14 fields
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
4
half_dead
no
move_adjusted_damage
-1
max_hp
38
intent
DEBUFF
move_id
3
name
Sentry
current_hp
11
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
3
14 fields
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
3
half_dead
no
move_adjusted_damage
9
max_hp
40
intent
ATTACK
move_id
4
name
Sentry
current_hp
40
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
turn
2
limbo
none
hand
5 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
player
6 fields
orbs
none
current_hp
55
block
0
max_hp
80
powers
none
energy
3
deck
12 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
11 fields
exhausts
no
is_playable
yes
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
11 fields
exhausts
no
is_playable
yes
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
80
act_boss
The Guardian
gold
14
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
COMBAT
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
55
floor
7
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoomElite
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 1); // Strike on Sentry index1
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.3 in-game
41540
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendBash+StrikeShrug It Off
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 1); // Strike on Sentry index1, should kill it
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.3 in-game
1
hp
41
gone
no
2
hp
0
gone
yes
3
hp
40
gone
no
Model
Middle Sentry killed. Now use remaining energy to block.
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
DefendBash+Shrug It Off
energy
1
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(3); // Shrug It Off
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.6 in-game
orbs
none
current_hp
55
block
8
max_hp
80
powers
none
energy
0
slay_the_spire_exec2 inputs played · 00:00:04.4 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.4 in-game
player
orbs
none
current_hp
45
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
41
intent
DEBUFF
dmg
-1
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
DEBUFF
dmg
-1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDefendDazedBash+Defend
slay_the_spire_exec4 inputs played · 00:00:01.2 in-game
let s = await sts.play(4, 0); // Bash+ on index0
s = await sts.play(1, 0); // Strike on index0
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, powers:m.powers}));
Inputs played
Played PLAY 4 0
Played PLAY 4 0 00:00:00.9 in-game
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
1
hp
25
powers
none
2
hp
0
powers
none
3
hp
40
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
Model
Artifact consumed on index0, and it's now vulnerable at 25 HP. End turn.
slay_the_spire_exec2 inputs played · 00:00:04.6 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.6 in-game
player
orbs
none
current_hp
45
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
25
intent
ATTACK
dmg
9
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeShrug It OffDazedDazedDazed
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 0); // Strike on vulnerable index0
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
19040
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffDazedDazedDazed
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(1); // Shrug It Off
return s.game_state.combat_state.player;
Inputs played
Played PLAY 1
Played PLAY 1 00:00:00.6 in-game
orbs
none
current_hp
45
block
8
max_hp
80
powers
none
energy
1
slay_the_spire_exec2 inputs played · 00:00:04.4 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.4 in-game
player
orbs
none
current_hp
35
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
19
intent
DEBUFF
dmg
-1
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
DEBUFF
dmg
-1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikePerfected StrikeDefendPommel StrikeStrike+
slay_the_spire_exec4 inputs played · 00:00:00.6 in-game
let s = await sts.play(1, 0); // Strike
s = await sts.play(4, 0); // Pommel Strike (index shifts after each play, need recheck)
return s.game_state.combat_state.hand.map(c=>c.name);
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
Played PLAY 4 0
Played PLAY 4 0 00:00:00.3 in-game
Perfected StrikeDefendPommel Strike
slay_the_spire_exec
const st = await sts.state();
return { monsters: st.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,gone:m.is_gone})), energy: st.game_state.combat_state.player.energy };
monsters
3 items
1
2 fields
hp
4
gone
no
2
2 fields
hp
0
gone
yes
3
2 fields
hp
40
gone
no
energy
1
slay_the_spire_exec2 inputs played · 00:00:01.3 in-game
let s = await sts.play(3, 0); // Pommel Strike on index0 to finish it
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,gone:m.is_gone}));
Inputs played
Played PLAY 3 0
Played PLAY 3 0 00:00:01.3 in-game
1
hp
0
gone
yes
2
hp
0
gone
yes
3
hp
40
gone
no
Model
Two Sentries down. One remains at 40 HP. Let's check remaining energy/hand and finish the turn.
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Perfected StrikeDefendShrug It Off
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:02.8 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:02.8 in-game
player
orbs
none
current_hp
35
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
0
intent
DEBUFF
dmg
-1
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeStrikeDazedBash+Dazed
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.monsters[2].powers;
1
amount
1
name
Artifact
id
Artifact
Model
Still has Artifact. Play Bash+ to consume it and apply vulnerable, then Strike.
slay_the_spire_exec2 inputs played · 00:00:00.9 in-game
let s = await sts.play(4, 2); // Bash+ on remaining sentry (index2)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,powers:m.powers}));
Inputs played
Played PLAY 4 2
Played PLAY 4 2 00:00:00.9 in-game
1
hp
0
powers
none
2
hp
0
powers
none
3
hp
30
powers
none
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeStrikeDazedDazed
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 2); // Strike
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 2
Played PLAY 1 2 00:00:00.3 in-game
0024
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
StrikeDazedDazed
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.1 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:03.1 in-game
player
orbs
none
current_hp
26
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
0
intent
DEBUFF
dmg
-1
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
24
intent
DEBUFF
dmg
-1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDazedDefendDefendDazed
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 2); // Strike on last sentry
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 2
Played PLAY 1 2 00:00:00.3 in-game
0018
slay_the_spire_exec2 inputs played · 00:00:04.2 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.2 in-game
player
orbs
none
current_hp
26
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
0
intent
DEBUFF
dmg
-1
2
3 fields
hp
0
intent
DEBUFF
dmg
-1
3
3 fields
hp
18
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+Strike+Pommel StrikeBash+Defend
slay_the_spire_exec4 inputs played · 00:00:01.7 in-game
let s = await sts.play(1, 2); // Strike+
s = await sts.play(1, 2); // Strike+ again (index shifts)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 1 2
Played PLAY 1 2 00:00:00.3 in-game
Played PLAY 1 2
Played PLAY 1 2 00:00:01.4 in-game
Error: Cannot read properties of undefined (reading 'monsters')
slay_the_spire_exec
const st = await sts.state();
return st.game_state;
What came back 15 336 characters
choice_list
goldrelicpotioncard
screen_type
COMBAT_REWARD
screen_state
rewards
4 items
1
2 fields
gold
32
reward_type
GOLD
2
2 fields
reward_type
RELIC
relic
3 fields
name
Captain's Wheel
id
CaptainsWheel
counter
-1
3
2 fields
potion
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Skill Potion
id
SkillPotion
reward_type
POTION
4
1 fields
reward_type
CARD
seed
2 577
deck
12 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
11 fields
exhausts
no
is_playable
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
11 fields
exhausts
no
is_playable
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
80
act_boss
The Guardian
gold
14
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
32
floor
7
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoomElite
Model
Elite fight won! HP 32/80. Let's collect all rewards.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("relic");
return { gold: s.game_state.gold, relics: s.game_state.relics.map(r=>r.name), choice_list: s.game_state.choice_list };
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE relic
Played CHOOSE relic 00:00:00.0 in-game
gold
46
relics
Burning BloodNeow's LamentCaptain's Wheel
choice_list
potioncard
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("potion");
return { potions: s.game_state.potions, choice_list: s.game_state.choice_list };
Inputs played
Played CHOOSE potion
Played CHOOSE potion 00:00:00.0 in-game
What came back 517 characters
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
choice_list
card
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 910 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
True Grit
id
True Grit
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Combust
id
Combust
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
bowl_available
no
skip_available
yes
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Metallicize");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, hp: s.game_state.current_hp };
Inputs played
Played CHOOSE Metallicize
Played CHOOSE Metallicize 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0
floor
7
hp
32
slay_the_spire_exec2 inputs played · 00:00:01.6 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:01.6 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoom
floor
8
Floor 8
slay_the_spire_exec
const s = await sts.state();
return { hand: s.game_state.combat_state.hand.map(c=>c.name), monsters: s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})), player: s.game_state.combat_state.player };
What came back 443 characters
hand
Pommel StrikeStrikeMetallicizeDefendStrike+
monsters
2 items
1
4 fields
name
Acid Slime (M)
hp
30
intent
DEBUG
dmg
-1
2
4 fields
name
Cultist
hp
54
intent
DEBUG
dmg
-1
player
orbs
none
current_hp
32
block
0
max_hp
80
powers
none
energy
3
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(3); // Metallicize
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.5 in-game
orbs
none
current_hp
32
block
0
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Pommel StrikeStrikeDefendStrike+
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(1, 1); // Pommel Strike on Cultist (index1)
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 1
Played PLAY 1 1 00:00:00.5 in-game
3045
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
StrikeDefendStrike+Strike
energy
1
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 1); // Strike+ on Cultist
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.3 in-game
3036
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.5 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage, powers:m.powers})) } : s.game_state;
Inputs played
Played END
Played END 00:00:03.5 in-game
What came back 571 characters
player
orbs
none
current_hp
25
block
0
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
2 items
1
4 fields
hp
30
intent
ATTACK_DEBUFF
dmg
7
powers
none
2
4 fields
hp
36
intent
ATTACK
dmg
6
powers
1 items
1
4 fields
amount
3
just_applied
no
name
Ritual
id
Ritual
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Bash+Perfected StrikeShrug It OffDefendDefend
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(2, 1); // Perfected Strike on Cultist
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
3016
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Bash+Shrug It OffDefendDefend
energy
1
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(2); // Shrug It Off for block + draw
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.6 in-game
orbs
none
current_hp
25
block
8
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:05.6 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage, powers:m.powers})) } : s.game_state;
Inputs played
Played END
Played END 00:00:05.6 in-game
What came back 667 characters
player
orbs
none
current_hp
23
block
18
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
2 items
1
4 fields
hp
30
intent
ATTACK
dmg
10
powers
none
2
4 fields
hp
16
intent
ATTACK
dmg
9
powers
2 items
1
4 fields
amount
3
just_applied
no
name
Ritual
id
Ritual
2
3 fields
amount
3
name
Strength
id
Strength
slay_the_spire_exec
const st = await sts.state();
return { hp: st.game_state.current_hp, block: st.game_state.combat_state.player.block, turn: st.game_state.combat_state.turn, hand: st.game_state.combat_state.hand.map(c=>c.name) };
hp
23
block
18
turn
3
hand
Strike+Perfected StrikeStrikeDefendPommel Strike
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 1); // Strike+ on Cultist
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 1
Played PLAY 1 1 00:00:00.3 in-game
307
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Perfected StrikeStrikeDefendPommel Strike
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(2, 1); // Strike on Cultist to finish it (7hp)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
1
hp
30
gone
no
2
hp
1
gone
no
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Perfected StrikeDefendPommel Strike
energy
1
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(3, 1); // Pommel Strike to finish Cultist
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.5 in-game
1
hp
30
gone
no
2
hp
0
gone
yes
Model
Cultist down. Only Acid Slime remains (30 HP). End turn.
slay_the_spire_exec2 inputs played · 00:00:02.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:02.9 in-game
player
orbs
none
current_hp
23
block
0
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
2 items
1
3 fields
hp
30
intent
ATTACK_DEBUFF
dmg
7
2
3 fields
hp
0
intent
ATTACK
dmg
6
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+Bash+StrikeStrikeDefend
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2, 0); // Bash+ on Acid Slime
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.5 in-game
200
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+StrikeStrikeDefend
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 0); // Strike+ on Acid Slime, vulnerable applies 1.5x
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
70
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
StrikeStrikeDefend
energy
0
Model
No energy left. End turn — Acid Slime at 7 HP should die soon.
slay_the_spire_exec2 inputs played · 00:00:04.1 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.1 in-game
player
orbs
none
current_hp
19
block
0
max_hp
80
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
2 items
1
3 fields
hp
7
intent
ATTACK_DEBUFF
dmg
7
2
3 fields
hp
0
intent
ATTACK
dmg
6
Game saved (interval)
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendSlimedDefendSlimedPommel Strike
slay_the_spire_exec2 inputs played · 00:00:01.4 in-game
let s = await sts.play(5, 0); // Pommel Strike to finish Acid Slime
return s.game_state.combat_state.monsters ? s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,gone:m.is_gone})) : s.game_state;
Inputs played
Played PLAY 5 0
Played PLAY 5 0 00:00:01.4 in-game
Error: Cannot read properties of undefined (reading 'monsters')
Model
Combat ended — likely victory. Let's check state.
slay_the_spire_exec
const st = await sts.state();
return { screen_type: st.game_state.screen_type, choice_list: st.game_state.choice_list, hp: st.game_state.current_hp };
screen_type
COMBAT_REWARD
choice_list
goldcard
hp
25
Model
Fight won, HP settled at 25/80. Let's collect rewards.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 893 characters
cards
3 items
1
11 fields
exhausts
yes
is_playable
no
cost
1
name
Feed
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
True Grit
id
True Grit
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Armaments
id
Armaments
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
bowl_available
no
skip_available
yes
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Feed");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, hp: s.game_state.current_hp };
Inputs played
Played CHOOSE Feed
Played CHOOSE Feed 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0x=1
floor
8
hp
25
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:00.3 in-game
screen_type
CHEST
room_phase
COMPLETE
room_type
TreasureRoom
floor
9
Floor 9
slay_the_spire_exec
const s = await sts.state();
return { choice_list: s.game_state.choice_list, screen_state: s.game_state.screen_state };
choice_list
open
screen_state
chest_open
no
chest_type
LargeChest
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("open");
return s.game_state.screen_state;
Inputs played
Played CHOOSE open
Played CHOOSE open 00:00:00.0 in-game
rewards
2 items
1
2 fields
gold
81
reward_type
GOLD
2
2 fields
reward_type
RELIC
relic
3 fields
name
Ink Bottle
id
InkBottle
counter
0
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("relic");
return { gold: s.game_state.gold, relics: s.game_state.relics.map(r=>r.name) };
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE relic
Played CHOOSE relic 00:00:00.0 in-game
gold
139
relics
Burning BloodNeow's LamentCaptain's WheelInk Bottle
Model
139 gold now. Let's proceed to the map.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0x=1
floor
9
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:00.3 in-game
screen_type
SHOP_ROOM
room_phase
COMPLETE
room_type
ShopRoom
floor
10
Floor 10
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("shop");
return s.game_state.screen_state;
Inputs played
Played CHOOSE shop
Played CHOOSE shop 00:00:00.0 in-game
What came back 2 862 characters
cards
7 items
1
11 fields
exhausts
no
cost
2
price
73
name
Carnage
id
Carnage
type
ATTACK
ethereal
yes
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
2
11 fields
exhausts
no
cost
2
price
69
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
3
11 fields
exhausts
no
cost
0
price
71
name
Bloodletting
id
Bloodletting
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
4
11 fields
exhausts
no
cost
1
price
81
name
Ghostly Armor
id
Ghostly Armor
type
SKILL
ethereal
yes
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
5
11 fields
exhausts
no
cost
1
price
39
name
Evolve
id
Evolve
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
6
11 fields
exhausts
yes
cost
0
price
93
name
Panic Button
id
PanicButton
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
7
11 fields
exhausts
yes
cost
0
price
184
name
Master of Strategy
id
Master of Strategy
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
purge_cost
100
potions
3 items
1
6 fields
requires_target
yes
can_use
no
can_discard
yes
price
50
name
Fire Potion
id
Fire Potion
2
6 fields
requires_target
yes
can_use
no
can_discard
yes
price
52
name
Explosive Potion
id
Explosive Potion
3
6 fields
requires_target
no
can_use
no
can_discard
yes
price
52
name
Power Potion
id
PowerPotion
relics
3 items
1
4 fields
price
152
name
Dream Catcher
id
Dream Catcher
counter
-1
2
4 fields
price
256
name
Paper Phrog
id
Paper Frog
counter
-1
3
4 fields
price
149
name
Cauldron
id
Cauldron
counter
-1
purge_available
yes
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Uppercut");
return { gold: s.game_state.gold, deck: s.game_state.deck.map(c=>c.name) };
Inputs played
Played CHOOSE Uppercut
Played CHOOSE Uppercut 00:00:00.0 in-game
gold
70
deck
StrikeStrike+StrikeStrike+StrikeDefendDefendDefendBash+Shrug It OffPerfected StrikePommel StrikeMetallicizeFeedUppercut
Model
Let's leave the shop and find a rest site — HP is low at 25/80.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.leave();
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played LEAVE
Played LEAVE 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0
floor
10
slay_the_spire_exec2 inputs played · 00:00:02.0 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:02.0 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoom
floor
11
Floor 11
Model
Another combat at 25 HP — let's assess carefully.
slay_the_spire_exec
const s = await sts.state();
return { hand: s.game_state.combat_state.hand.map(c=>c.name), monsters: s.game_state.combat_state.monsters.map(m=>({name:m.name, hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})), player: s.game_state.combat_state.player };
What came back 519 characters
hand
Strike+StrikePerfected StrikeStrikeBash+
monsters
3 items
1
4 fields
name
Louse
hp
12
intent
DEBUG
dmg
6
2
4 fields
name
Louse
hp
11
intent
DEBUG
dmg
7
3
4 fields
name
Louse
hp
16
intent
DEBUG
dmg
7
player
orbs
none
current_hp
25
block
0
max_hp
80
powers
none
energy
3
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 2); // Perfected Strike on Louse index2
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 3 2
Played PLAY 3 2 00:00:00.3 in-game
1
hp
12
gone
no
2
hp
11
gone
no
3
hp
0
gone
yes
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+StrikeStrikeBash+
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(2, 1); // Strike on Louse index1 (11hp)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.7 in-game
1
hp
12
gone
no
2
hp
5
gone
no
3
hp
0
gone
yes
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.8 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:03.8 in-game
player
orbs
none
current_hp
12
block
0
max_hp
80
powers
none
energy
3
monsters
3 items
1
3 fields
hp
12
intent
BUFF
dmg
-1
2
3 fields
hp
5
intent
ATTACK
dmg
7
3
3 fields
hp
0
intent
ATTACK
dmg
7
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 569 characters
hand
MetallicizeStrikeFeedDefendDefend
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(3, 1); // Feed on Louse index1 (5hp) - lethal, grants max HP
return { monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone})), player: s.game_state.combat_state.player };
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.7 in-game
monsters
3 items
1
2 fields
hp
12
gone
no
2
2 fields
hp
0
gone
yes
3
2 fields
hp
0
gone
yes
player
orbs
none
current_hp
15
block
0
max_hp
83
powers
none
energy
2
Model
Excellent — Feed granted +3 max HP and healed. Now let's finish off the last Louse and set up defense.
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
MetallicizeStrikeDefendDefend
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(1); // Metallicize
return s.game_state.combat_state.player;
Inputs played
Played PLAY 1
Played PLAY 1 00:00:00.5 in-game
orbs
none
current_hp
15
block
0
max_hp
83
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDefendDefend
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
orbs
none
current_hp
15
block
5
max_hp
83
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
slay_the_spire_exec2 inputs played · 00:00:03.0 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, intent:m.intent, dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:03.0 in-game
What came back 457 characters
player
orbs
none
current_hp
15
block
18
max_hp
83
powers
1 items
1
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
3 items
1
3 fields
hp
12
intent
ATTACK
dmg
9
2
3 fields
hp
0
intent
ATTACK
dmg
7
3
3 fields
hp
0
intent
ATTACK
dmg
7
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffPommel StrikeDefendUppercutStrike+
slay_the_spire_exec2 inputs played · 00:00:01.5 in-game
let s = await sts.play(2, 0); // Pommel Strike on Louse index0 (12hp)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:01.5 in-game
1
hp
3
gone
no
2
hp
0
gone
yes
3
hp
0
gone
yes
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffDefendUppercutStrike+Strike
slay_the_spire_exec2 inputs played · 00:00:01.4 in-game
let s = await sts.play(5, 0); // Strike to finish Louse index0
return s.game_state.combat_state ? s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,gone:m.is_gone})) : s.game_state;
Inputs played
Played PLAY 5 0
Played PLAY 5 0 00:00:01.4 in-game
What came back 16 155 characters
choice_list
goldpotioncard
screen_type
COMBAT_REWARD
screen_state
rewards
3 items
1
2 fields
gold
19
reward_type
GOLD
2
2 fields
potion
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Block Potion
id
Block Potion
reward_type
POTION
3
1 fields
reward_type
CARD
seed
2 577
deck
15 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
11 fields
exhausts
no
is_playable
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
11 fields
exhausts
no
is_playable
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
13
11 fields
exhausts
no
is_playable
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
14
11 fields
exhausts
yes
is_playable
no
cost
1
name
Feed
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
15
11 fields
exhausts
no
is_playable
no
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
relics
4 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
3
3 fields
name
Captain's Wheel
id
CaptainsWheel
counter
-1
4
3 fields
name
Ink Bottle
id
InkBottle
counter
7
max_hp
83
act_boss
The Guardian
gold
70
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
21
floor
11
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoom
Model
Fight won, HP 21/83. Let's collect rewards — including a Block Potion, which will help.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("potion");
return { gold: s.game_state.gold, potions: s.game_state.potions, choice_list: s.game_state.choice_list };
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE potion
Played CHOOSE potion 00:00:00.0 in-game
What came back 532 characters
gold
89
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Block Potion
id
Block Potion
choice_list
card
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 891 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
2
11 fields
exhausts
yes
is_playable
no
cost
1
name
Pummel
id
Pummel
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
0
name
Clash
id
Clash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
bowl_available
no
skip_available
yes
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Inflame");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, hp: s.game_state.current_hp };
Inputs played
Played CHOOSE Inflame
Played CHOOSE Inflame 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=1
floor
11
hp
21
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:00.3 in-game
screen_type
EVENT
room_phase
EVENT
room_type
EventRoom
floor
12
Floor 12
slay_the_spire_exec
const s = await sts.state();
return s.game_state.screen_state;
What came back 815 characters
event_id
Living Wall
body_text
As you come to a dead-end and begin to turn around, walls slam down from the ceiling, trapping you! Three faces materialize from the walls and speak. "Forget what you know, and I'll let you go." "I require change to see a new space." "If you want to pass me, then you must grow."
options
3 items
1
4 fields
choice_index
0
disabled
no
text
[Forget] Remove a card from your deck.
label
Forget
2
4 fields
choice_index
1
disabled
no
text
[Change] Transform a card in your deck.
label
Change
3
4 fields
choice_index
2
disabled
no
text
[Grow] Upgrade a card in your deck.
label
Grow
event_name
Living Wall
Model
Free deck improvement, no HP cost — I'll upgrade a card.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(2);
return s.game_state.screen_state ? s.game_state.screen_state : s.game_state;
Inputs played
Played CHOOSE 2
Played CHOOSE 2 00:00:00.0 in-game
What came back 3 417 characters
cards
13 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
5
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
8
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
9
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
10
10 fields
exhausts
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
11
10 fields
exhausts
yes
cost
1
name
Feed
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
12
10 fields
exhausts
no
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
13
10 fields
exhausts
no
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
selected_cards
none
for_transform
no
confirm_up
no
any_number
no
for_upgrade
yes
num_cards
1
for_purge
no
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Feed");
return s.game_state;
Inputs played
Played CHOOSE Feed
Played CHOOSE Feed 00:00:00.0 in-game
What came back 19 267 characters
screen_type
GRID
screen_state
cards
13 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
5
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
8
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
9
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
10
10 fields
exhausts
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
11
10 fields
exhausts
yes
cost
1
name
Feed
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
12
10 fields
exhausts
no
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
13
10 fields
exhausts
no
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
selected_cards
none
for_transform
no
confirm_up
yes
any_number
no
for_upgrade
yes
num_cards
1
for_purge
no
seed
2 577
deck
16 items
1
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
10 fields
exhausts
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
10 fields
exhausts
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
10 fields
exhausts
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
10 fields
exhausts
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
10 fields
exhausts
no
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
10 fields
exhausts
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
10 fields
exhausts
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
10 fields
exhausts
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
13
10 fields
exhausts
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
14
10 fields
exhausts
yes
cost
1
name
Feed
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
15
10 fields
exhausts
no
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
16
10 fields
exhausts
no
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
relics
4 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
3
3 fields
name
Captain's Wheel
id
CaptainsWheel
counter
-1
4
3 fields
name
Ink Bottle
id
InkBottle
counter
7
max_hp
83
act_boss
The Guardian
gold
89
action_phase
WAITING_ON_USER
act
1
screen_name
GRID
room_phase
EVENT
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
yes
name
Block Potion
id
Block Potion
current_hp
21
floor
12
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
EventRoom
Model
Need to confirm.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.confirm();
return s.game_state.deck.map(c=>({name:c.name, upgrades:c.upgrades}));
Inputs played
Played CONFIRM
Played CONFIRM 00:00:00.0 in-game
What came back 817 characters
16 items
1
name
Strike
upgrades
0
2
name
Strike+
upgrades
1
3
name
Strike
upgrades
0
4
name
Strike+
upgrades
1
5
name
Strike
upgrades
0
6
name
Defend
upgrades
0
7
name
Defend
upgrades
0
8
name
Defend
upgrades
0
9
name
Bash+
upgrades
1
10
name
Shrug It Off
upgrades
0
11
name
Perfected Strike
upgrades
0
12
name
Pommel Strike
upgrades
0
13
name
Metallicize
upgrades
0
14
name
Feed+
upgrades
1
15
name
Uppercut
upgrades
0
16
name
Inflame
upgrades
0
Model
Feed+ acquired. Let's continue on the map — need a rest site badly, HP still 21/83.
slay_the_spire_exec
const st = await sts.state();
return { screen_type: st.game_state.screen_type, choice_list: st.game_state.choice_list };
screen_type
EVENT
choice_list
leave
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(0);
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0x=2
floor
12
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:00.4 in-game
screen_type
EVENT
room_phase
EVENT
room_type
EventRoom
floor
13
Floor 13
slay_the_spire_exec
const s = await sts.state();
return s.game_state.screen_state;
What came back 589 characters
event_id
Mushrooms
body_text
You enter a corridor full of hypnotizing colored mushrooms. Due to your lack of specialization in mycology you are unable to identify the specimens. You want to escape, but feel oddly compelled to eat a mushroom...
options
2 items
1
4 fields
choice_index
0
disabled
no
text
[Stomp] Anger the Mushrooms.
label
Stomp
2
4 fields
choice_index
1
disabled
no
text
[Eat] Heal 20 HP. Become Cursed - Parasite.
label
Eat
event_name
Mushrooms
Model
Healing is critical right now — I'll eat the mushroom for 20 HP despite the curse.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(1);
return { hp: s.game_state.current_hp, deck: s.game_state.deck.map(c=>c.name) };
Inputs played
Played CHOOSE 1
Played CHOOSE 1 00:00:00.0 in-game
hp
41
deck
StrikeStrike+StrikeStrike+StrikeDefendDefendDefendBash+Shrug It OffPerfected StrikePommel StrikeMetallicizeFeed+UppercutInflame
Model
HP now 41/83 — much healthier. Let's continue.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
Error: Slay the Spire refused "PROCEED": Invalid command: proceed. Possible commands: [choose, potion, key, click, wait, state]
slay_the_spire_exec
const s = await sts.state();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list };
Error: Cannot read properties of undefined (reading 'screen_type')
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
await sts.wait(1);
const s = await sts.state();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list };
Inputs played
Played WAIT 1
Played WAIT 1 00:00:00.0 in-game
screen_type
EVENT
choice_list
leave
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose(0);
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played CHOOSE 0
Played CHOOSE 0 00:00:00.0 in-game
screen_type
MAP
choice_list
x=1
floor
13
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.choose("x=1");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=1
Played CHOOSE x=1 00:00:00.3 in-game
screen_type
CHEST
room_phase
COMPLETE
room_type
TreasureRoom
floor
14
Floor 14
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("open");
return s.game_state.screen_state;
Inputs played
Played CHOOSE open
Played CHOOSE open 00:00:00.0 in-game
rewards
1 items
1
2 fields
reward_type
RELIC
relic
3 fields
name
Toxic Egg
id
Toxic Egg 2
counter
-1
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("relic");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, relics: s.game_state.relics.map(r=>r.name) };
Inputs played
Played CHOOSE relic
Played CHOOSE relic 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
x=0
floor
14
relics
Burning BloodNeow's LamentCaptain's WheelInk BottleToxic Egg
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.choose("x=0");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE x=0
Played CHOOSE x=0 00:00:00.3 in-game
screen_type
REST
room_phase
INCOMPLETE
room_type
RestRoom
floor
15
Floor 15
slay_the_spire_exec
const s = await sts.state();
return { choice_list: s.game_state.choice_list, hp: s.game_state.current_hp, max_hp: s.game_state.max_hp, floor: s.game_state.floor };
choice_list
restsmith
hp
41
max_hp
83
floor
15
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.choose("rest");
return { hp: s.game_state.current_hp, max_hp: s.game_state.max_hp };
Inputs played
Played CHOOSE rest
Played CHOOSE rest 00:00:00.7 in-game
hp
65
max_hp
83
Model
HP restored to 65/83. Let's proceed toward the boss.
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
MAP
choice_list
boss
floor
15
slay_the_spire_exec
const s = await sts.state();
return { deck: s.game_state.deck.map(c=>c.name), relics: s.game_state.relics.map(r=>r.name), potions: s.game_state.potions.map(p=>p.name), hp: s.game_state.current_hp, max_hp: s.game_state.max_hp, gold: s.game_state.gold };
What came back 530 characters
deck
StrikeStrike+StrikeStrike+StrikeDefendDefendDefendBash+Shrug It OffPerfected StrikePommel StrikeMetallicizeFeed+UppercutInflameParasite
relics
Burning BloodNeow's LamentCaptain's WheelInk BottleToxic Egg
potions
Ancient PotionSkill PotionBlock Potion
hp
65
max_hp
83
gold
89
Model
Good state: 65/83 HP, decent deck, 3 potions. Let's proceed to the boss fight.
slay_the_spire_exec2 inputs played · 00:00:01.6 in-game
let s = await sts.choose("boss");
return { screen_type: s.game_state.screen_type, room_phase: s.game_state.room_phase, room_type: s.game_state.room_type, floor: s.game_state.floor };
Inputs played
Played CHOOSE boss
Played CHOOSE boss 00:00:01.6 in-game
screen_type
NONE
room_phase
COMBAT
room_type
MonsterRoomBoss
floor
16
Floor 16
Model
The Guardian boss fight has begun. Let's check the combat state.
slay_the_spire_exec
const s = await sts.state();
return s.game_state.combat_state;
What came back 5 438 characters
draw_pile
12 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
8
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
11 fields
exhausts
no
is_playable
yes
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
11
11 fields
exhausts
no
is_playable
yes
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
discard_pile
none
exhaust_pile
none
cards_discarded_this_turn
0
times_damaged
0
monsters
1 items
1
13 fields
is_gone
no
move_hits
1
move_base_damage
-1
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
DEBUG
move_id
6
name
The Guardian
current_hp
240
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
30
name
Mode Shift
id
Mode Shift
turn
1
limbo
none
hand
5 items
1
11 fields
exhausts
yes
is_playable
yes
cost
1
name
Feed+
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
RARE
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
4
11 fields
exhausts
no
is_playable
no
cost
-2
name
Parasite
id
Parasite
type
CURSE
ethereal
no
uuid
[ID]
upgrades
0
rarity
CURSE
has_target
no
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
player
orbs
none
current_hp
65
block
0
max_hp
83
powers
none
energy
3
slay_the_spire_exec2 inputs played · 00:00:01.5 in-game
let s = await sts.play(2); // Inflame - gain strength
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:01.5 in-game
orbs
none
current_hp
65
block
0
max_hp
83
powers
1 items
1
3 fields
amount
2
name
Strength
id
Strength
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Feed+DefendParasiteStrike
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(4, 0); // Strike on Guardian
return s.game_state.combat_state.monsters[0].current_hp;
Inputs played
Played PLAY 4 0
Played PLAY 4 0 00:00:00.3 in-game
232
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Feed+DefendParasite
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(2); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.7 in-game
orbs
none
current_hp
65
block
5
max_hp
83
powers
1 items
1
3 fields
amount
2
name
Strength
id
Strength
energy
0
Model
Total 8 damage dealt this turn, staying under the Mode Shift threshold. End turn.
slay_the_spire_exec2 inputs played · 00:00:02.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:02.9 in-game
What came back 714 characters
player
orbs
none
current_hp
65
block
0
max_hp
83
powers
1 items
1
3 fields
amount
2
name
Strength
id
Strength
energy
3
monsters
1 items
1
14 fields
is_gone
no
move_hits
1
move_base_damage
32
last_move_id
6
half_dead
no
move_adjusted_damage
32
max_hp
240
intent
ATTACK
move_id
2
name
The Guardian
current_hp
232
block
9
id
TheGuardian
powers
1 items
1
3 fields
amount
22
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Pommel StrikeMetallicizeBash+DefendShrug It Off
slay_the_spire_exec4 inputs played · 00:00:00.5 in-game
let s = await sts.play(2); // Metallicize
s = await sts.play(1); // wait hand shifted, recheck
return s.game_state;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
Played PLAY 1
Played PLAY 1 00:00:00.0 in-game
Error: Slay the Spire refused "PLAY 1": Selected card requires an enemy target.
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Error: Cannot read properties of undefined (reading 'combat_state')
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
await sts.wait(1);
const st = await sts.state();
return st.game_state.combat_state ? { hand: st.game_state.combat_state.hand.map(c=>c.name), player: st.game_state.combat_state.player } : st.game_state;
Inputs played
Played WAIT 1
Played WAIT 1 00:00:00.0 in-game
What came back 403 characters
hand
Pommel StrikeBash+DefendShrug It Off
player
orbs
none
current_hp
65
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
Model
Metallicize played. Now use remaining 2 energy for block.
slay_the_spire_exec4 inputs played · 00:00:01.1 in-game
let s = await sts.play(3); // Defend
s = await sts.play(3); // Shrug It Off (index shifts)
return s.game_state.combat_state ? { hand: s.game_state.combat_state.hand.map(c=>c.name), player: s.game_state.combat_state.player } : s.game_state;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.5 in-game
Played PLAY 3
Played PLAY 3 00:00:00.6 in-game
hand
Pommel StrikeBash+Defend
player
orbs
none
current_hp
65
block
13
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
slay_the_spire_exec2 inputs played · 00:00:03.2 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.2 in-game
What came back 851 characters
player
orbs
none
current_hp
49
block
18
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
2
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
STRONG_DEBUFF
second_last_move_id
6
move_id
7
name
The Guardian
current_hp
232
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
22
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+Perfected StrikeStrike+UppercutStrike
slay_the_spire_exec2 inputs played · 00:00:00.8 in-game
let s = await sts.play(2, 0); // Perfected Strike
return s.game_state.combat_state.monsters[0];
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.8 in-game
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
7
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
BUFF
second_last_move_id
2
move_id
1
name
The Guardian
current_hp
210
block
20
id
TheGuardian
powers
none
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Strike+Strike+UppercutStrike
energy
1
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 0); // Strike+ on Guardian to chip block
return s.game_state.combat_state.monsters[0];
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
7
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
BUFF
second_last_move_id
2
move_id
1
name
The Guardian
current_hp
210
block
9
id
TheGuardian
powers
none
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.6 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.6 in-game
What came back 840 characters
player
orbs
none
current_hp
49
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
7
move_id
3
name
The Guardian
current_hp
210
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Perfected StrikeBash+Strike+Strike+Parasite
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(1, 0); // Perfected Strike
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.5 in-game
What came back 785 characters
monster
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
7
move_id
3
name
The Guardian
current_hp
188
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
player
orbs
none
current_hp
46
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Bash+Strike+Strike+Parasite
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2, 0); // Strike+ on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.5 in-game
What came back 785 characters
monster
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
7
move_id
3
name
The Guardian
current_hp
177
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
player
orbs
none
current_hp
43
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:02.8 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:02.8 in-game
What came back 845 characters
player
orbs
none
current_hp
37
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
177
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeUppercutDefendPommel StrikeDefend
slay_the_spire_exec4 inputs played · 00:00:00.5 in-game
let s = await sts.play(3); // Defend
s = await sts.play(3); // Defend (index shifts)
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.5 in-game
Played PLAY 3
Played PLAY 3 00:00:00.0 in-game
Error: Slay the Spire refused "PLAY 3": Selected card requires an enemy target.
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Error: Cannot read properties of undefined (reading 'combat_state')
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
await sts.wait(1);
const st = await sts.state();
return st.game_state.combat_state ? { hand: st.game_state.combat_state.hand.map(c=>c.name), player: st.game_state.combat_state.player } : st.game_state;
Inputs played
Played WAIT 1
Played WAIT 1 00:00:00.0 in-game
hand
StrikeUppercutPommel StrikeDefend
player
orbs
none
current_hp
37
block
5
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(4); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 4
Played PLAY 4 00:00:00.5 in-game
orbs
none
current_hp
37
block
10
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeUppercutPommel Strike
slay_the_spire_exec2 inputs played · 00:00:00.8 in-game
let s = await sts.play(3, 0); // Pommel Strike on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 3 0
Played PLAY 3 0 00:00:00.8 in-game
What came back 790 characters
monster
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
166
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
player
orbs
none
current_hp
37
block
7
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
slay_the_spire_exec2 inputs played · 00:00:03.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.9 in-game
What came back 841 characters
player
orbs
none
current_hp
31
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
4
move_base_damage
5
last_move_id
4
half_dead
no
move_adjusted_damage
5
max_hp
240
intent
ATTACK
second_last_move_id
3
move_id
5
name
The Guardian
current_hp
166
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
40
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 566 characters
hand
StrikeDefendFeed+StrikeStrike+
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Block Potion
id
Block Potion
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.potion("use", 2); // Block Potion, slot index 2 (0-based? let's check)
return s.game_state.combat_state ? s.game_state.combat_state.player : s.game_state;
Inputs played
Played POTION use 2
Played POTION use 2 00:00:00.3 in-game
orbs
none
current_hp
31
block
12
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
orbs
none
current_hp
31
block
17
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeFeed+StrikeStrike+
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(4, 0); // Strike+ on Guardian
return s.game_state.combat_state.monsters[0].current_hp;
Inputs played
Played PLAY 4 0
Played PLAY 4 0 00:00:00.3 in-game
155
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeFeed+Strike
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 0); // Strike on Guardian
return s.game_state.combat_state.monsters[0].current_hp;
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
147
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.9 in-game
What came back 843 characters
player
orbs
none
current_hp
31
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
5
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
DEFEND
second_last_move_id
4
move_id
6
name
The Guardian
current_hp
147
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
21
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffUppercutPommel StrikePerfected StrikeDefend
slay_the_spire_exec2 inputs played · 00:00:00.8 in-game
let s = await sts.play(4, 0); // Perfected Strike
return s.game_state.combat_state.monsters[0].current_hp;
Inputs played
Played PLAY 4 0
Played PLAY 4 0 00:00:00.8 in-game
125
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffUppercutPommel StrikeDefend
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(3, 0); // Pommel Strike
return s.game_state.combat_state.monsters[0].current_hp;
Inputs played
Played PLAY 3 0
Played PLAY 3 0 00:00:00.5 in-game
125
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.monsters[0];
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
6
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
BUFF
second_last_move_id
5
move_id
1
name
The Guardian
current_hp
125
block
9
id
TheGuardian
powers
none
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Shrug It OffUppercutDefendStrike+
energy
0
slay_the_spire_exec2 inputs played · 00:00:03.6 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.6 in-game
What came back 840 characters
player
orbs
none
current_hp
31
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
6
move_id
3
name
The Guardian
current_hp
125
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
ParasiteStrikeBash+DefendDefend
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(3, 0); // Bash+ on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 3 0
Played PLAY 3 0 00:00:00.6 in-game
What came back 911 characters
monster
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
6
move_id
3
name
The Guardian
current_hp
113
block
0
id
TheGuardian
powers
2 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
2
4 fields
amount
3
just_applied
no
name
Vulnerable
id
Vulnerable
player
orbs
none
current_hp
28
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
ParasiteStrikeDefendDefend
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(3); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.5 in-game
orbs
none
current_hp
28
block
5
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.0 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.0 in-game
What came back 983 characters
player
orbs
none
current_hp
27
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
113
block
0
id
TheGuardian
powers
2 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
2
4 fields
amount
2
just_applied
no
name
Vulnerable
id
Vulnerable
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 572 characters
hand
Strike+DefendFeed+StrikeShrug It Off
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
orbs
none
current_hp
27
block
5
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+Feed+StrikeShrug It Off
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(4); // Shrug It Off
return s.game_state.combat_state.player;
Inputs played
Played PLAY 4
Played PLAY 4 00:00:00.6 in-game
orbs
none
current_hp
27
block
13
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Strike+Feed+StrikeStrike+
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(1, 0); // Strike+ on Guardian (vulnerable)
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.7 in-game
What came back 916 characters
monster
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
97
block
0
id
TheGuardian
powers
2 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
2
4 fields
amount
2
just_applied
no
name
Vulnerable
id
Vulnerable
player
orbs
none
current_hp
27
block
10
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
Model
16 damage dealt (16.5 rounded), Guardian at 97 HP. No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:04.0 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:04.0 in-game
What came back 978 characters
player
orbs
none
current_hp
24
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
4
move_base_damage
5
last_move_id
4
half_dead
no
move_adjusted_damage
5
max_hp
240
intent
ATTACK
second_last_move_id
3
move_id
5
name
The Guardian
current_hp
97
block
0
id
TheGuardian
powers
2 items
1
4 fields
amount
1
just_applied
no
name
Vulnerable
id
Vulnerable
2
3 fields
amount
50
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 585 characters
hand
Perfected StrikeUppercutStrikeStrike+Shrug It Off
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(5); // Shrug It Off
return { hand: s.game_state.combat_state.hand.map(c=>c.name), player: s.game_state.combat_state.player };
Inputs played
Played PLAY 5
Played PLAY 5 00:00:00.6 in-game
What came back 417 characters
hand
Perfected StrikeUppercutStrikeStrike+Feed+
player
orbs
none
current_hp
24
block
8
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
2
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 0); // Perfected Strike on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.3 in-game
What came back 911 characters
monster
is_gone
no
move_hits
4
move_base_damage
5
last_move_id
4
half_dead
no
move_adjusted_damage
5
max_hp
240
intent
ATTACK
second_last_move_id
3
move_id
5
name
The Guardian
current_hp
64
block
0
id
TheGuardian
powers
2 items
1
4 fields
amount
1
just_applied
no
name
Vulnerable
id
Vulnerable
2
3 fields
amount
17
name
Mode Shift
id
Mode Shift
player
orbs
none
current_hp
24
block
8
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
Model
33 damage — Guardian down to 64 HP! End turn.
slay_the_spire_exec2 inputs played · 00:00:04.4 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:04.4 in-game
What came back 842 characters
player
orbs
none
current_hp
15
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
5
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
DEFEND
second_last_move_id
4
move_id
6
name
The Guardian
current_hp
64
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
17
name
Mode Shift
id
Mode Shift
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 573 characters
hand
Strike+Bash+StrikePommel StrikeDefend
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.play(4, 0); // Pommel Strike on Guardian
return { monster: s.game_state.combat_state.monsters[0], hand: s.game_state.combat_state.hand.map(c=>c.name) };
Inputs played
Played PLAY 4 0
Played PLAY 4 0 00:00:00.4 in-game
What came back 557 characters
monster
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
5
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
DEFEND
second_last_move_id
4
move_id
6
name
The Guardian
current_hp
53
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
6
name
Mode Shift
id
Mode Shift
hand
Strike+Bash+StrikeDefendParasite
slay_the_spire_exec2 inputs played · 00:00:00.8 in-game
let s = await sts.play(1, 0); // Strike+ on Guardian
return s.game_state.combat_state.monsters[0];
Inputs played
Played PLAY 1 0
Played PLAY 1 0 00:00:00.8 in-game
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
6
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
BUFF
second_last_move_id
5
move_id
1
name
The Guardian
current_hp
42
block
20
id
TheGuardian
powers
none
Game saved (interval)
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Bash+StrikeDefendParasite
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(2, 0); // Strike on Guardian to chip block
return s.game_state.combat_state.monsters[0];
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.3 in-game
is_gone
no
move_hits
1
move_base_damage
-1
last_move_id
6
half_dead
no
move_adjusted_damage
-1
max_hp
240
intent
BUFF
second_last_move_id
5
move_id
1
name
The Guardian
current_hp
42
block
12
id
TheGuardian
powers
none
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:03.5 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.5 in-game
What came back 839 characters
player
orbs
none
current_hp
15
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
6
move_id
3
name
The Guardian
current_hp
42
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 567 characters
hand
StrikeDefendDefendStrike+Strike
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec4 inputs played · 00:00:01.0 in-game
let s = await sts.play(2); // Defend
s = await sts.play(2); // Defend (index shifts)
return s.game_state.combat_state ? { hand: s.game_state.combat_state.hand.map(c=>c.name), player: s.game_state.combat_state.player } : s.game_state;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
hand
StrikeStrike+Strike
player
orbs
none
current_hp
15
block
10
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
Model
Block 10 + Metallicize 3 = 13, covers the 9 incoming. Now use last energy for damage.
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.play(2, 0); // Strike+ on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.4 in-game
What came back 784 characters
monster
is_gone
no
move_hits
1
move_base_damage
9
last_move_id
1
half_dead
no
move_adjusted_damage
9
max_hp
240
intent
ATTACK
second_last_move_id
6
move_id
3
name
The Guardian
current_hp
31
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
player
orbs
none
current_hp
15
block
7
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
0
slay_the_spire_exec2 inputs played · 00:00:02.7 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:02.7 in-game
What came back 844 characters
player
orbs
none
current_hp
15
block
0
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
31
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), potions: st.game_state.potions };
What came back 573 characters
hand
Strike+Pommel StrikeDefendBash+Strike
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Skill Potion
id
SkillPotion
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(2, 0); // Pommel Strike on Guardian
return { monster: s.game_state.combat_state.monsters[0], hand: s.game_state.combat_state.hand.map(c=>c.name), energy: s.game_state.combat_state.player.energy };
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:00.6 in-game
What came back 575 characters
monster
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
20
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
hand
Strike+DefendBash+StrikeParasite
energy
2
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(2); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.7 in-game
orbs
none
current_hp
12
block
5
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), player: st.game_state.combat_state.player, monster: st.game_state.combat_state.monsters[0] };
What came back 879 characters
hand
Strike+Bash+StrikeParasiteUppercut
player
orbs
none
current_hp
12
block
5
max_hp
83
powers
2 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
energy
1
monster
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
20
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec2 inputs played · 00:00:00.1 in-game
let s = await sts.potion("use", 0); // Ancient Potion
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monster: s.game_state.combat_state.monsters[0] } : s.game_state;
Inputs played
Played POTION use 0
Played POTION use 0 00:00:00.1 in-game
What came back 880 characters
player
orbs
none
current_hp
12
block
5
max_hp
83
powers
3 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
3
3 fields
amount
1
name
Artifact
id
Artifact
energy
1
monster
is_gone
no
move_hits
2
move_base_damage
8
last_move_id
3
half_dead
no
move_adjusted_damage
8
max_hp
240
intent
ATTACK_BUFF
second_last_move_id
1
move_id
4
name
The Guardian
current_hp
20
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
3
name
Sharp Hide
id
Sharp Hide
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.potion("use", 1); // Skill Potion
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, hand: s.game_state.combat_state.hand.map(c=>c.name) } : s.game_state;
Inputs played
Played POTION use 1
Played POTION use 1 00:00:00.0 in-game
What came back 500 characters
player
orbs
none
current_hp
12
block
5
max_hp
83
powers
3 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
3
3 fields
amount
1
name
Artifact
id
Artifact
energy
1
hand
Strike+Bash+StrikeParasiteUppercut
slay_the_spire_exec
const st = await sts.state();
return { screen_type: st.game_state.screen_type, screen_state: st.game_state.screen_state, available_commands: st.available_commands };
What came back 1 140 characters
screen_type
CARD_REWARD
screen_state
cards
3 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Double Tap
id
Double Tap
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
0
name
Flex
id
Flex
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
True Grit
id
True Grit
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
bowl_available
no
skip_available
yes
available_commands
chooseskipkeyclickwaitstate
slay_the_spire_exec2 inputs played · 00:00:00.2 in-game
let s = await sts.choose("True Grit");
return s.game_state.combat_state ? { hand: s.game_state.combat_state.hand.map(c=>c.name), player: s.game_state.combat_state.player } : s.game_state;
Inputs played
Played CHOOSE True Grit
Played CHOOSE True Grit 00:00:00.2 in-game
What came back 517 characters
hand
Strike+Bash+StrikeParasiteUppercutTrue Grit
player
orbs
none
current_hp
12
block
5
max_hp
83
powers
3 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
3
3 fields
amount
1
name
Artifact
id
Artifact
energy
1
Model
True Grit is in hand now with 1 energy left. Let's play it for extra block.
slay_the_spire_exec2 inputs played · 00:00:00.7 in-game
let s = await sts.play(6); // True Grit
return s.game_state.combat_state.player;
Inputs played
Played PLAY 6
Played PLAY 6 00:00:00.7 in-game
orbs
none
current_hp
12
block
12
max_hp
83
powers
3 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
3
3 fields
amount
1
name
Artifact
id
Artifact
energy
1
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
Strike+Bash+StrikeUppercut
energy
1
slay_the_spire_exec2 inputs played · 00:00:03.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters } : s.game_state;
Inputs played
Played END
Played END 00:00:03.9 in-game
What came back 931 characters
player
orbs
none
current_hp
11
block
0
max_hp
83
powers
3 items
1
3 fields
amount
2
name
Strength
id
Strength
2
3 fields
amount
3
name
Metallicize
id
Metallicize
3
3 fields
amount
1
name
Artifact
id
Artifact
energy
3
monsters
1 items
1
15 fields
is_gone
no
move_hits
4
move_base_damage
5
last_move_id
4
half_dead
no
move_adjusted_damage
5
max_hp
240
intent
ATTACK
second_last_move_id
3
move_id
5
name
The Guardian
current_hp
20
block
0
id
TheGuardian
powers
1 items
1
3 fields
amount
60
name
Mode Shift
id
Mode Shift
Model
This is lethal — Bash+ (12) + Strike (8) = exactly 20 damage needed to kill the Guardian before it can attack.
slay_the_spire_exec2 inputs played · 00:00:02.0 in-game
let s = await sts.play(2, 0); // Bash+ on Guardian
return { monster: s.game_state.combat_state.monsters[0], player: s.game_state.combat_state.player };
Inputs played
Played PLAY 2 0
Played PLAY 2 0 00:00:02.0 in-game
Error: Cannot read properties of undefined (reading 'monsters')
slay_the_spire_exec
const st = await sts.state();
return st.game_state;
What came back 16 541 characters
choice_list
goldcard
screen_type
COMBAT_REWARD
screen_state
rewards
2 items
1
2 fields
gold
103
reward_type
GOLD
2
1 fields
reward_type
CARD
seed
2 577
deck
17 items
1
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike+
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
no
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
no
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
no
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
10
11 fields
exhausts
no
is_playable
no
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
11
11 fields
exhausts
no
is_playable
no
cost
2
name
Perfected Strike
id
Perfected Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
12
11 fields
exhausts
no
is_playable
no
cost
1
name
Pommel Strike
id
Pommel Strike
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
yes
13
11 fields
exhausts
no
is_playable
no
cost
1
name
Metallicize
id
Metallicize
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
14
11 fields
exhausts
yes
is_playable
no
cost
1
name
Feed+
id
Feed
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
RARE
has_target
yes
15
11 fields
exhausts
no
is_playable
no
cost
2
name
Uppercut
id
Uppercut
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
yes
16
11 fields
exhausts
no
is_playable
no
cost
1
name
Inflame
id
Inflame
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
17
11 fields
exhausts
no
is_playable
no
cost
-2
name
Parasite
id
Parasite
type
CURSE
ethereal
no
uuid
[ID]
upgrades
0
rarity
CURSE
has_target
no
relics
5 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
3
3 fields
name
Captain's Wheel
id
CaptainsWheel
counter
-1
4
3 fields
name
Ink Bottle
id
InkBottle
counter
2
5
3 fields
name
Toxic Egg
id
Toxic Egg 2
counter
-1
max_hp
83
act_boss
The Guardian
gold
89
action_phase
WAITING_ON_USER
act
1
screen_name
COMBAT_REWARD
room_phase
COMPLETE
is_screen_up
yes
potions
3 items
1
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
17
floor
16
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoomBoss
Model
The Guardian is defeated! Act 1 boss down. Let's collect rewards.
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("gold");
s = await sts.choose("card");
return s.game_state.screen_state;
Inputs played
Played CHOOSE gold
Played CHOOSE gold 00:00:00.0 in-game
Played CHOOSE card
Played CHOOSE card 00:00:00.0 in-game
What came back 891 characters
cards
3 items
1
11 fields
exhausts
no
is_playable
no
cost
3
name
Bludgeon
id
Bludgeon
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
yes
2
11 fields
exhausts
yes
is_playable
no
cost
2
name
Reaper
id
Reaper
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
3
11 fields
exhausts
no
is_playable
no
cost
2
name
Immolate
id
Immolate
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
RARE
has_target
no
bowl_available
no
skip_available
yes
slay_the_spire_exec4 inputs played · 00:00:00.0 in-game
let s = await sts.choose("Reaper");
s = await sts.proceed();
return { screen_type: s.game_state.screen_type, floor: s.game_state.floor, act: s.game_state.act, hp: s.game_state.current_hp, choice_list: s.game_state.choice_list };
Inputs played
Played CHOOSE Reaper
Played CHOOSE Reaper 00:00:00.0 in-game
Played PROCEED
Played PROCEED 00:00:00.0 in-game
screen_type
CHEST
floor
17
act
1
hp
17
choice_list
open
Floor 17
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
let s = await sts.choose("open");
return s.game_state.screen_state;
Inputs played
Played CHOOSE open
Played CHOOSE open 00:00:00.0 in-game
relics
3 items
1
3 fields
name
Snecko Eye
id
Snecko Eye
counter
-1
2
3 fields
name
Calling Bell
id
Calling Bell
counter
-1
3
3 fields
name
Sacred Bark
id
SacredBark
counter
-1
slay_the_spire_exec2 inputs played · 00:00:01.1 in-game
let s = await sts.choose("Sacred Bark");
return { relics: s.game_state.relics.map(r=>r.name) };
Inputs played
Played CHOOSE Sacred Bark
Played CHOOSE Sacred Bark 00:00:01.1 in-game
relics
Burning BloodNeow's LamentCaptain's WheelInk BottleToxic EggSacred Bark
Model
Act 1 complete — the Guardian is defeated and I've picked up Sacred Bark as the boss relic. Let's continue.
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.proceed();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, act: s.game_state.act, hp: s.game_state.current_hp, max_hp: s.game_state.max_hp };
Inputs played
Played PROCEED
Played PROCEED 00:00:00.4 in-game
screen_type
MAP
choice_list
x=0x=1x=5
floor
17
act
2
hp
83
max_hp
83
Act 1 boss
Act 1 boss chapter
Victory
Victory · Victory (act1) (act 2, floor 17)
Prompt
[Request interrupted by user]
Game saved (milestone Act 1 boss)
Game saved (milestone end of session)
Run ended: completed · claude -p exited with 0; 488 assistant turns; cost $9.98; error_during_execution; game over: Victory (act1); game over: Victory (act1)
Recording stopped after 00:22:48
Recording started (obs)
Game ready, seed 23M
Human: resumed after completed
Human intervention: resumed after completed
Human: goal extended from act1 to act3
Human intervention: goal extended from act1 to act3
Goal changed from act1 to act3
Run resumed, segment 2 · claude-sonnet-5 on claude-code
Model
No response requested.
Prompt
The harness has resumed this run with a larger goal: Act 3 boss. The game was restored to your last save state, in the same paused condition. Continue from there.
Model
Resuming the run — checking current game state before continuing toward Act 3.
slay_the_spire_exec
const s = await sts.state();
return { screen_type: s.game_state.screen_type, choice_list: s.game_state.choice_list, floor: s.game_state.floor, act: s.game_state.act, hp: s.game_state.current_hp, max_hp: s.game_state.max_hp, gold: s.game_state.gold };
screen_type
NONE
floor
7
act
1
hp
85
max_hp
85
gold
127
Floor 7
slay_the_spire_exec
const s = await sts.state();
return s.game_state;
What came back 20 013 characters
screen_type
NONE
screen_state
none
seed
2 577
combat_state
draw_pile
7 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
discard_pile
none
exhaust_pile
none
cards_discarded_this_turn
0
times_damaged
0
monsters
3 items
1
13 fields
is_gone
no
move_hits
1
move_base_damage
-1
half_dead
no
move_adjusted_damage
-1
max_hp
41
intent
DEBUG
move_id
3
name
Sentry
current_hp
41
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
2
13 fields
is_gone
no
move_hits
1
move_base_damage
9
half_dead
no
move_adjusted_damage
9
max_hp
38
intent
DEBUG
move_id
4
name
Sentry
current_hp
38
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
3
13 fields
is_gone
no
move_hits
1
move_base_damage
-1
half_dead
no
move_adjusted_damage
-1
max_hp
40
intent
DEBUG
move_id
3
name
Sentry
current_hp
40
block
0
id
Sentry
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
turn
1
limbo
none
hand
5 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Evolve
id
Evolve
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
player
6 fields
orbs
none
current_hp
85
block
0
max_hp
85
powers
none
energy
3
deck
12 items
1
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
2
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
3
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
4
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
5
11 fields
exhausts
no
is_playable
yes
cost
1
name
Strike
id
Strike_R
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
yes
6
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
7
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
8
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
9
11 fields
exhausts
no
is_playable
yes
cost
1
name
Defend
id
Defend_R
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
BASIC
has_target
no
10
11 fields
exhausts
no
is_playable
yes
cost
2
name
Bash+
id
Bash
type
ATTACK
ethereal
no
uuid
[ID]
upgrades
1
rarity
BASIC
has_target
yes
11
11 fields
exhausts
no
is_playable
yes
cost
1
name
Shrug It Off
id
Shrug It Off
type
SKILL
ethereal
no
uuid
[ID]
upgrades
0
rarity
COMMON
has_target
no
12
11 fields
exhausts
no
is_playable
yes
cost
1
name
Evolve
id
Evolve
type
POWER
ethereal
no
uuid
[ID]
upgrades
0
rarity
UNCOMMON
has_target
no
relics
2 items
1
3 fields
name
Burning Blood
id
Burning Blood
counter
-1
2
3 fields
name
Neow's Lament
id
NeowsBlessing
counter
-2
max_hp
85
act_boss
The Guardian
gold
127
action_phase
WAITING_ON_USER
act
1
screen_name
NONE
room_phase
COMBAT
is_screen_up
no
potions
3 items
1
5 fields
requires_target
no
can_use
yes
can_discard
yes
name
Ancient Potion
id
Ancient Potion
2
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
3
5 fields
requires_target
no
can_use
no
can_discard
no
name
Potion Slot
id
Potion Slot
current_hp
85
floor
7
ascension_level
0
class
IRONCLAD
map
58 items
1
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
1
x
0
y
0
parents
none
2
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
1
x
1
y
0
parents
none
3
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
1
x
5
y
0
parents
none
4
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
2
2
2 fields
x
1
y
2
x
0
y
1
parents
none
5
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
2
x
1
y
1
parents
none
6
5 fields
symbol
$
children
1 items
1
2 fields
x
5
y
2
x
6
y
1
parents
none
7
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
3
2
2 fields
x
1
y
3
x
0
y
2
parents
none
8
5 fields
symbol
?
children
2 items
1
2 fields
x
1
y
3
2
2 fields
x
2
y
3
x
1
y
2
parents
none
9
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
3
x
5
y
2
parents
none
10
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
4
x
0
y
3
parents
none
11
5 fields
symbol
$
children
2 items
1
2 fields
x
0
y
4
2
2 fields
x
2
y
4
x
1
y
3
parents
none
12
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
4
x
2
y
3
parents
none
13
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
4
x
6
y
3
parents
none
14
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
5
x
0
y
4
parents
none
15
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
5
x
2
y
4
parents
none
16
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
5
x
3
y
4
parents
none
17
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
5
x
6
y
4
parents
none
18
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
6
x
0
y
5
parents
none
19
5 fields
symbol
R
children
1 items
1
2 fields
x
1
y
6
x
1
y
5
parents
none
20
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
6
x
4
y
5
parents
none
21
5 fields
symbol
R
children
1 items
1
2 fields
x
6
y
6
x
6
y
5
parents
none
22
5 fields
symbol
R
children
1 items
1
2 fields
x
0
y
7
x
0
y
6
parents
none
23
5 fields
symbol
E
children
1 items
1
2 fields
x
0
y
7
x
1
y
6
parents
none
24
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
7
x
4
y
6
parents
none
25
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
7
x
6
y
6
parents
none
26
5 fields
symbol
M
children
2 items
1
2 fields
x
0
y
8
2
2 fields
x
1
y
8
x
0
y
7
parents
none
27
5 fields
symbol
M
children
1 items
1
2 fields
x
5
y
8
x
4
y
7
parents
none
28
5 fields
symbol
?
children
1 items
1
2 fields
x
6
y
8
x
5
y
7
parents
none
29
5 fields
symbol
T
children
2 items
1
2 fields
x
0
y
9
2
2 fields
x
1
y
9
x
0
y
8
parents
none
30
5 fields
symbol
T
children
1 items
1
2 fields
x
2
y
9
x
1
y
8
parents
none
31
5 fields
symbol
T
children
1 items
1
2 fields
x
4
y
9
x
5
y
8
parents
none
32
5 fields
symbol
T
children
1 items
1
2 fields
x
5
y
9
x
6
y
8
parents
none
33
5 fields
symbol
M
children
1 items
1
2 fields
x
0
y
10
x
0
y
9
parents
none
34
5 fields
symbol
$
children
1 items
1
2 fields
x
0
y
10
x
1
y
9
parents
none
35
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
10
x
2
y
9
parents
none
36
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
10
x
4
y
9
parents
none
37
5 fields
symbol
R
children
1 items
1
2 fields
x
4
y
10
x
5
y
9
parents
none
38
5 fields
symbol
M
children
1 items
1
2 fields
x
1
y
11
x
0
y
10
parents
none
39
5 fields
symbol
?
children
2 items
1
2 fields
x
2
y
11
2
2 fields
x
3
y
11
x
2
y
10
parents
none
40
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
11
2
2 fields
x
4
y
11
x
4
y
10
parents
none
41
5 fields
symbol
?
children
2 items
1
2 fields
x
0
y
12
2
2 fields
x
2
y
12
x
1
y
11
parents
none
42
5 fields
symbol
E
children
1 items
1
2 fields
x
2
y
12
x
2
y
11
parents
none
43
5 fields
symbol
M
children
2 items
1
2 fields
x
3
y
12
2
2 fields
x
4
y
12
x
3
y
11
parents
none
44
5 fields
symbol
E
children
1 items
1
2 fields
x
5
y
12
x
4
y
11
parents
none
45
5 fields
symbol
?
children
1 items
1
2 fields
x
1
y
13
x
0
y
12
parents
none
46
5 fields
symbol
M
children
2 items
1
2 fields
x
2
y
13
2
2 fields
x
3
y
13
x
2
y
12
parents
none
47
5 fields
symbol
?
children
1 items
1
2 fields
x
3
y
13
x
3
y
12
parents
none
48
5 fields
symbol
M
children
1 items
1
2 fields
x
4
y
13
x
4
y
12
parents
none
49
5 fields
symbol
?
children
1 items
1
2 fields
x
5
y
13
x
5
y
12
parents
none
50
5 fields
symbol
?
children
1 items
1
2 fields
x
0
y
14
x
1
y
13
parents
none
51
5 fields
symbol
?
children
1 items
1
2 fields
x
2
y
14
x
2
y
13
parents
none
52
5 fields
symbol
M
children
1 items
1
2 fields
x
2
y
14
x
3
y
13
parents
none
53
5 fields
symbol
M
children
1 items
1
2 fields
x
3
y
14
x
4
y
13
parents
none
54
5 fields
symbol
M
children
1 items
1
2 fields
x
6
y
14
x
5
y
13
parents
none
55
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
0
y
14
parents
none
56
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
2
y
14
parents
none
57
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
3
y
14
parents
none
58
5 fields
symbol
R
children
1 items
1
2 fields
x
3
y
16
x
6
y
14
parents
none
room_type
MonsterRoomElite
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(2); // Evolve
return s.game_state.combat_state.player;
Inputs played
Played PLAY 2
Played PLAY 2 00:00:00.5 in-game
orbs
none
current_hp
85
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendStrikeStrikeDefend
slay_the_spire_exec4 inputs played · 00:00:00.7 in-game
let s = await sts.play(2, 1); // Strike on Sentry index1 (attacker)
s = await sts.play(2, 1); // second Strike
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
Played PLAY 2 1
Played PLAY 2 1 00:00:00.3 in-game
412640
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:04.7 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,intent:m.intent,dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:04.7 in-game
What came back 449 characters
player
orbs
none
current_hp
76
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
3
monsters
3 items
1
3 fields
hp
41
intent
ATTACK
dmg
9
2
3 fields
hp
26
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
Shrug It OffDefendDefendStrikeStrike
slay_the_spire_exec2 inputs played · 00:00:00.6 in-game
let s = await sts.play(1); // Shrug It Off
return s.game_state.combat_state.player;
Inputs played
Played PLAY 1
Played PLAY 1 00:00:00.6 in-game
orbs
none
current_hp
76
block
8
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
2
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendDefendStrikeStrikeBash+
slay_the_spire_exec4 inputs played · 00:00:01.0 in-game
let s = await sts.play(1); // Defend
s = await sts.play(1); // Defend again
return s.game_state.combat_state.player;
Inputs played
Played PLAY 1
Played PLAY 1 00:00:00.4 in-game
Played PLAY 1
Played PLAY 1 00:00:00.5 in-game
orbs
none
current_hp
76
block
18
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
0
Model
Block 18 matches the incoming 18. End turn.
slay_the_spire_exec2 inputs played · 00:00:06.4 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,intent:m.intent,dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:06.4 in-game
What came back 450 characters
player
orbs
none
current_hp
76
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
3
monsters
3 items
1
3 fields
hp
41
intent
DEBUFF
dmg
-1
2
3 fields
hp
26
intent
ATTACK
dmg
9
3
3 fields
hp
40
intent
DEBUFF
dmg
-1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDefendDazedShrug It OffDazedDazedBash+Strike
slay_the_spire_exec2 inputs played · 00:00:00.9 in-game
let s = await sts.play(7, 1); // Bash+ on Sentry index1
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,powers:m.powers}));
Inputs played
Played PLAY 7 1
Played PLAY 7 1 00:00:00.9 in-game
1
hp
41
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
2
hp
16
powers
none
3
hp
40
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDefendDazedShrug It OffDazedDazedStrike
slay_the_spire_exec2 inputs played · 00:00:00.4 in-game
let s = await sts.play(1, 1); // Strike on index1
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 1 1
Played PLAY 1 1 00:00:00.4 in-game
411040
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:06.5 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,intent:m.intent,dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:06.5 in-game
What came back 449 characters
player
orbs
none
current_hp
67
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
3
monsters
3 items
1
3 fields
hp
41
intent
ATTACK
dmg
9
2
3 fields
hp
10
intent
DEBUFF
dmg
-1
3
3 fields
hp
40
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DazedDazedDefendDefendStrikeDefendDazedStrike
slay_the_spire_exec6 inputs played · 00:00:01.0 in-game
let s = await sts.play(3); // Defend
s = await sts.play(3); // Defend
s = await sts.play(3); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:00.5 in-game
Played PLAY 3
Played PLAY 3 00:00:00.4 in-game
Played PLAY 3
Played PLAY 3 00:00:00.0 in-game
Error: Slay the Spire refused "PLAY 3": Selected card requires an enemy target.
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), player: st.game_state.combat_state.player };
Error: Cannot read properties of undefined (reading 'combat_state')
slay_the_spire_exec2 inputs played · 00:00:00.0 in-game
await sts.wait(1);
const st = await sts.state();
return st.game_state.combat_state ? { hand: st.game_state.combat_state.hand.map(c=>c.name), player: st.game_state.combat_state.player } : st.game_state;
Inputs played
Played WAIT 1
Played WAIT 1 00:00:00.0 in-game
hand
DazedDazedStrikeDefendDazedStrike
player
orbs
none
current_hp
67
block
10
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
1
Model
Block 10, one Defend left in hand.
slay_the_spire_exec2 inputs played · 00:00:00.5 in-game
let s = await sts.play(4); // Defend
return s.game_state.combat_state.player;
Inputs played
Played PLAY 4
Played PLAY 4 00:00:00.5 in-game
orbs
none
current_hp
67
block
15
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
0
Model
Block 15, no energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:07.1 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,intent:m.intent,dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:07.1 in-game
What came back 450 characters
player
orbs
none
current_hp
64
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
3
monsters
3 items
1
3 fields
hp
41
intent
DEBUFF
dmg
-1
2
3 fields
hp
10
intent
ATTACK
dmg
9
3
3 fields
hp
40
intent
DEBUFF
dmg
-1
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
StrikeDefendDefendStrikeShrug It Off
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(1, 1); // Strike on index1 (10hp)
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 1 1
Played PLAY 1 1 00:00:00.3 in-game
1
hp
41
gone
no
2
hp
4
gone
no
3
hp
40
gone
no
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DefendDefendStrikeShrug It Off
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(3, 1); // Strike to finish index1
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp, gone:m.is_gone}));
Inputs played
Played PLAY 3 1
Played PLAY 3 1 00:00:00.3 in-game
1
hp
41
gone
no
2
hp
0
gone
yes
3
hp
40
gone
no
Model
Middle Sentry killed. Let's use remaining energy for block.
slay_the_spire_exec
const st = await sts.state();
return { hand: st.game_state.combat_state.hand.map(c=>c.name), energy: st.game_state.combat_state.player.energy };
hand
DefendDefendShrug It Off
energy
1
slay_the_spire_exec2 inputs played · 00:00:01.0 in-game
let s = await sts.play(3); // Shrug It Off
return s.game_state.combat_state.player;
Inputs played
Played PLAY 3
Played PLAY 3 00:00:01.0 in-game
orbs
none
current_hp
64
block
8
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
0
Model
No energy left. End turn.
slay_the_spire_exec2 inputs played · 00:00:05.9 in-game
let s = await sts.end();
return s.game_state.combat_state ? { player: s.game_state.combat_state.player, monsters: s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,intent:m.intent,dmg:m.move_adjusted_damage})) } : s.game_state;
Inputs played
Played END
Played END 00:00:05.9 in-game
What came back 447 characters
player
orbs
none
current_hp
64
block
0
max_hp
85
powers
1 items
1
3 fields
amount
1
name
Evolve
id
Evolve
energy
3
monsters
3 items
1
3 fields
hp
41
intent
ATTACK
dmg
9
2
3 fields
hp
0
intent
ATTACK
dmg
9
3
3 fields
hp
40
intent
ATTACK
dmg
9
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DazedDazedDazedDazedDefendStrikeDazedBash+StrikeStrike
slay_the_spire_exec2 inputs played · 00:00:00.9 in-game
let s = await sts.play(8, 0); // Bash+ on index0
return s.game_state.combat_state.monsters.map(m=>({hp:m.current_hp,powers:m.powers}));
Inputs played
Played PLAY 8 0
Played PLAY 8 0 00:00:00.9 in-game
1
hp
31
powers
none
2
hp
0
powers
none
3
hp
40
powers
1 items
1
3 fields
amount
1
name
Artifact
id
Artifact
slay_the_spire_exec
const st = await sts.state();
return st.game_state.combat_state.hand.map(c=>c.name);
DazedDazedDazedDazedDefendStrikeDazedStrikeStrike
slay_the_spire_exec2 inputs played · 00:00:00.3 in-game
let s = await sts.play(6, 0); // Strike on index0
return s.game_state.combat_state.monsters.map(m=>m.current_hp);
Inputs played
Played PLAY 6 0
Played PLAY 6 0 00:00:00.3 in-game
25040
Model
No energy left. End turn.
Prompt
[Request interrupted by user]
Game saved (milestone end of session)
Run ended: stopped · claude -p exited with 0; 56 assistant turns; cost $2.72; error_during_execution; time budget of 3 min reached; weekly budget 70% reached