Page 1 of 5

Slay the Spire cheat

Posted: Tue Dec 05, 2017 6:01 am
by cnerrv
I found one thing,This game can't make CT Cheat??
Which partner were able make CT cheat??

Re: Slay the Spire cheat

Posted: Thu Dec 14, 2017 8:03 pm
by lqylqy123
looks like the game is using jvm, so you can't find value by searching

Re: Slay the Spire cheat

Posted: Wed Jan 03, 2018 5:05 am
by ChiliSoup
At the start of the first battle wait about 30 seconds and the scan AOB

Code: Select all

63 00 00 00 63 00 00 00
.

You will see a bunch of 65XXXXXX and the 11th address starts with a C0AXXXX.
Add C0AXXXX, change to 4 byte, right click and show as decimal.

Re: Slay the Spire cheat

Posted: Wed Jan 03, 2018 7:39 am
by ChiliSoup
Save as .CT Let me know if it works for you. I am on update 5.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="24">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"ENABLE"</Description>
      <DropDownList>123
</DropDownList>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

registersymbol(INJECT)
aobscan(INJECT, 63 00 00 00 63 00 00 00 00 00 00 00 00 00 80 3F) // should be unique


INJECT:
//db FF FF 00 00 FF FF

[DISABLE]

INJECT:
//db 63 00 00 00 63 00

unregistersymbol(INJECT)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>16</ID>
          <Description>"No Mana Spent"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

registersymbol(INJECT2)
aobscan(INJECT2, 89 04 19 E9 76 00 00 00 83 F8 02 0F 85 10)


INJECT2:
db 90 90 90
[DISABLE]

INJECT2:
db 89 04 19
unregistersymbol(INJECT2)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Money"</Description>
          <LastState Value="557" RealAddress="C0A4D12C"/>
          <VariableType>4 Bytes</VariableType>
          <Address>INJECT</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"HP Current"</Description>
          <LastState Value="31" RealAddress="C0A4D14C"/>
          <VariableType>4 Bytes</VariableType>
          <Address>INJECT+20</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"HP Max"</Description>
          <LastState Value="70" RealAddress="C0A4D150"/>
          <VariableType>4 Bytes</VariableType>
          <Address>INJECT+24</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>12</ID>
          <Description>"Shield"</Description>
          <LastState Value="5" RealAddress="C0A4D154"/>
          <VariableType>4 Bytes</VariableType>
          <Address>INJECT+28</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>

Re: Slay the Spire cheat

Posted: Sun Jan 07, 2018 3:33 am
by TheMenda
That code works like a charm, even on patch 2 :)
Nice work.
PS: would be nice to have an actual 4bytes value for mana to be able to edit, not only the script.

EDit: ON partch 5, also works for me

Re: Slay the Spire cheat

Posted: Sun Jan 07, 2018 10:11 am
by sifr
how do you save the codes as .ct?

Re: Slay the Spire cheat

Posted: Sun Jan 07, 2018 9:22 pm
by ChiliSoup
sifr wrote:
Sun Jan 07, 2018 10:11 am
how do you save the codes as .ct?
Put into a notepad and save as a .ct

Re: Slay the Spire cheat

Posted: Tue Jan 09, 2018 4:34 am
by Warnorse
Hey, is there any chance of an update? It seems to still detect values at the time you check enable, but they can't be edited and do not update to reflect in game changes. The no mana appears to still work though.

Re: Slay the Spire cheat

Posted: Wed Jan 10, 2018 6:36 pm
by Fazuul
An update would be fantastic.

Re: Slay the Spire cheat

Posted: Sun Jan 14, 2018 9:35 pm
by caroline00
@ChiliSoup can you please update your table to patch 7 pls, the one for patch 5 didn't work, thanks for your work.

Re: Slay the Spire cheat

Posted: Tue Jan 16, 2018 5:17 pm
by manbearbunny
Also requesting update please

Re: Slay the Spire cheat

Posted: Sat Jan 20, 2018 1:37 pm
by ghjkl789
Also requesting update for newest steam version (patch 8 atm), thanks!

Re: Slay the Spire cheat

Posted: Mon Jan 22, 2018 8:11 am
by happybrother
When updating, please notice that in update8 they did a new Cheater (-999) score after winning (cheat detection?).
Is this why at the start I get option to Remove a card instead of Obtaining one?

Btw, There is a file in preferences folder, a file called STSPlayer. When edited in notepad++ there is one curious option:
"funMode": "true",
Is this the Cheater anti-achievement? (messes up gameplay and unlocks)
It auto updated when I started playing (could be a coincidence).

Re: Slay the Spire cheat

Posted: Tue Jan 30, 2018 1:18 am
by Nostradamus
The cheater score penalty was reduced to -99, so it's not that relevant (you can also just change a metric that increases your score). I didn't find out what "funMode":"true" does, but it doesn't change your score and it allows playing normally.

Anyway, here is an extended version of ChiliSoups's posted table - copy the following code into a txt-file and change the file name to SlayTheSpire.CT:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="26">
  <CheatEntries>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Stats: activate this in your first run after starting the game"</Description>
      <Options moManualExpandCollapse="1"/>
      <DropDownList>123
</DropDownList>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

RegisterSymbol(addr)
AOBScanRegion(addr, A0000000, FFFFFFFF, 00 C0 AA 43 ?? ?? ?? 43 ?? ?? 00 00 ?? ?? 00 00 ?? ?? ?? ?? 00 00 80 3F ?? ?? ?? ?? AA ?? ?? ??)  // constant in every run
//AOBScanRegion(addr, A0000000, FFFFFFFF, 00 C0 AA 43 ?? ?? ?? 43 ?? ?? 00 00 ?? ?? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 00 00 00 50 00 00 00 ?? 00 00 00)  // HP: 80/80
//AOBScanRegion(addr, A0000000, FFFFFFFF, 00 C0 AA 43 ?? ?? ?? 43 ?? ?? 00 00 ?? ?? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 46 00 00 00 46 00 00 00 ?? 00 00 00)  // HP: 70/70



[DISABLE]

UnregisterSymbol(addr)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Money/Gold"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addr+8</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"HP: current"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addr+28</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"HP: maximum"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addr+2C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>12</ID>
          <Description>"Block/Shield"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addr+30</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>17</ID>
      <Description>"Stats: activate this when you have 99 gold"</Description>
      <Options moManualExpandCollapse="1"/>
      <DropDownList>123
</DropDownList>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

UnregisterSymbol(addrGold)
RegisterSymbol(addrGold)
AOBScanRegion(addrGold, A0000000, FFFFFFFF, 63 00 00 00 63 00 00 00 ?? ?? ?? ?? 00 00 80 3F)  // Gold: 99 (actual/shown)
//AOBScanRegion(addrGold, A0000000, FFFFFFFF, 63 00 00 00 ?? 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 00 00 00 50 00 00 00 ?? 00 00 00)  // Gold: 99; HP: 80/80
//AOBScanRegion(addrGold, A0000000, FFFFFFFF, 63 00 00 00 ?? 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 46 00 00 00 46 00 00 00 ?? 00 00 00)  // Gold: 99; HP: 70/70



[DISABLE]

UnregisterSymbol(addrGold)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>23</ID>
          <Description>"If this is activated, but you can't change your actual values, ..."</Description>
          <LastState Value="" RealAddress="00000000"/>
          <Color>808080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"... change the Money/Gold entry below to something else than 99 and then reactivate this."</Description>
          <LastState Value="" RealAddress="00000000"/>
          <Color>808080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Money/Gold"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"HP: current"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+20</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"HP: maximum"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+24</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Block/Shield"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+28</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>26</ID>
      <Description>"Stats: activate this when you have 999 gold"</Description>
      <Options moManualExpandCollapse="1"/>
      <DropDownList>123
</DropDownList>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

UnregisterSymbol(addrGold)
RegisterSymbol(addrGold)
AOBScanRegion(addrGold, A0000000, FFFFFFFF, E7 03 00 00 E7 03 00 00 ?? ?? ?? ?? 00 00 80 3F)  // Gold: 999 (actual/shown)
//AOBScanRegion(addrGold, A0000000, FFFFFFFF, E7 03 00 00 ?? 0? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 00 00 00 50 00 00 00 ?? 00 00 00)  // Gold: 999; HP: 80/80
//AOBScanRegion(addrGold, A0000000, FFFFFFFF, E7 03 00 00 ?? 0? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 46 00 00 00 46 00 00 00 ?? 00 00 00)  // Gold: 999; HP: 70/70



[DISABLE]

UnregisterSymbol(addrGold)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>27</ID>
          <Description>"If this is activated, but you can't change your actual values, ..."</Description>
          <LastState Value="" RealAddress="00000000"/>
          <Color>808080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"... change the Money/Gold entry below to something else than 999 and then reactivate this."</Description>
          <LastState Value="" RealAddress="00000000"/>
          <Color>808080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>29</ID>
          <Description>"Money/Gold"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>30</ID>
          <Description>"HP: current"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+20</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>31</ID>
          <Description>"HP: maximum"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+24</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>32</ID>
          <Description>"Block/Shield"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>addrGold+28</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>18</ID>
      <Description>"Never expend Energy/Mana"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

RegisterSymbol(injectMana)
AOBScan(injectMana, 89 04 19 E9 76 00 00 00 83 F8 02 0F 85 10)

injectMana:
db 90 90 90



[DISABLE]

injectMana:
db 89 04 19

UnregisterSymbol(injectMana)

</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
Let me know when the stat-parts (Gold, HP, Block) of the table don't work.

Re: Slay the Spire cheat

Posted: Tue Jan 30, 2018 5:00 am
by jungletek
Nostradamus wrote:
Tue Jan 30, 2018 1:18 am
[...]Anyway, here is an extended version of ChiliSoups's posted table - copy the following code into a txt-file and change the file name to SlayTheSpire.CT:
Or just attach it to the post as an attachment so people don't have to cut and paste text and rename a file, then copy it to where they store their CT's.
:roll: