yangyuan/hearthrock

Yet another new version =)

Closed this issue · 7 comments

Hi yangyuan!

The current Hearthrock version is not up to date with the latest Hearthstone version. I lack the knowledge of updating the Hearthrock version myself and would greatly appreciate an update!

Cheers and thanks for an awesome work.

Hello,

Although I do not know the project well enough to guarantee that this fix has no weird behaviors, I have been able to successfully patch Hearthstone version 13.0.3.28329 by updating the pegasus.json file (found in the release zip 0.6.0) with the following values:

{ "checksum": "4137629A103C800246890911106F97412582FE8B", "version": "13.0.3.28329" }

@v-secure @Stektsnus

you did fine, but you also need this new dlls, I decrypted 'em for you

you can just build client project, go to "~hearthrock\src\Hearthrock.Client\bin\Debug"
and replace with this:

Dlls.zip

it'll be help until new version hsrock will be delivered

also, you can just replace with this Managed.zip in "~Blizzard\Hearthstone\Hearthstone_Data\Managed"

it's already patched new version

Hello @AiSatan, thank you for the clarifications. I have some questions regarding the DLLs:

  • why aren't they included in the github source code?
  • where do they come from?

My current understanding is that they're decompiled game files -> extended with hearthrock's logic -> recompiled. Is this correct? I'm asking because I would like to find out more about the capabilities of the bot engine. Please let me know if there are some resources where I can learn more about this (I tried reading through the issues but the information is kind of fragmented).

Thank you.

Hi, @v-secure

why aren't they included in the github source code?

I believe it's because dlls is not "source code" and it's easier to deliver/update through nuget.

where do they come from?

this dlls from "~\Blizzard\Hearthstone\Hearthstone_Data\Managed", you can find them and use instead of nuget, but 'cause they (blizzard) start encrypt Assembly-CSharp.dll (#31), you'll need this code to decrypt it:

https://gist.github.com/yangyuan/14444ccbc08517f64b31cf24165fccf2

My current understanding is that they're decompiled game files -> extended with hearthrock's logic -> recompiled. Is this correct?

I think you are right, but to be clear:

  1. decrypt Assembly-CSharp.dll
  2. patch Assembly-CSharp.dll with this code (it'll be add Hearthrock.dll to references, and call it before/after some methods):
    https://github.com/yangyuan/hearthrock/blob/master/src/Hearthrock.Client/Hacking/MonoCecilExtensions.cs
  3. replace original Assembly-CSharp.dll with patched version

well, bot engine can do anything that Assembly-CSharp.dll contain, if you need something new, for example, "bool IsMinionFrozen", you can easily add this here: https://github.com/yangyuan/hearthrock/blob/master/src/Hearthrock/Pegasus/Internal/RockPegasusSnapshotHelper.cs and re-patch Assembly-CSharp.dll

I think, best way to learn (if you don't work for blizzard, I believe that they have some manual) it's use engine's source code: https://github.com/yangyuan/hearthrock/tree/master/src/Hearthrock

I also updated my Fork

https://github.com/AiSatan/hearthrock

The different here, that I use my own nuget https://www.nuget.org/packages/Hearthrock.RedStone

you can use my Fork, or just replace nuget in this project with mine and update pegasus.json file (https://github.com/AiSatan/hearthrock/blob/master/src/Hearthrock.Client/pegasus.json):

{ "checksum": "4137629A103C800246890911106F97412582FE8B", "version": "13.0.3.28329" }

Please, check both repositories if you'll looking for new version

@AiSatan @v-secure
It seems to be working now! Thank you very much for your help guys. =)

@AiSatan thank you for the comprehensive reply :)
I'll have a go at reading through the engine's source code (to get a better understanding of its capabilities) and keep employment at blizzard as a backup plan :D