Dungeon Kingdom: Sign of the Moon (Steam)

Post cheat tables here
Post Reply
Daffy
Posts: 260
Joined: Sun Apr 10, 2022 3:35 am

Dungeon Kingdom: Sign of the Moon (Steam)

Post by Daffy »

Hi all,

just bought a copy (20% off in Winter Sale, hehe) of the early-access-version of "Dungeon Kingdom: Sign of the Moon" on Steam.


What's this game about?
This best description of this game, in my opinion, is "Dungeon Master with good graphics".

So, in this game you do not choose a specific class for your characters. Instead, when casting a cleric spell, the character gets cleric-experience and will eventually level up. So it's the excellent "you are what you do" character development I really love. The game offers lots of secrets, many puzzles and of course fights.

Table features
Always Full Life, Endurance, Food, Water...whatever plus Damage-Boost
Experience Booster
Get 2.000 XP with each Melee Attack
Get 2.000 XP with each Nija Attack
More XP for Mage-Casts (20x)
More XP for Priest Casts (20x)
Gold of the Party
Heroes-Stats for all four characters:
Given Name
Name
CurrentWeight
MaxWeight
XP Warrior
XP Mage
XP Priest
XP Ninja
Health - Current Value
Health - Normal Value
Endurance - Current Value
Endurance - Normal Value
Mana - Current Value
Mana - Normal Value
Strength - Current Value
Strength - Normal Value
Dexterity - Current Value
Dexterity - Normal Value
Constitution - Current Value
Constitution - Normal Value
Intelligence - Current Value
Intelligence - Normal Value
Wisdom - Current Value
Wisdom - Normal Value
Right-Hand-Damage (Upper Hand)
Water %
Food %
Upper Hand (Item[7] in Inventory List)
Name
Critical Attack Bonus
Charge Count
Reload Time
Prevent Overweight-Flagging
Coordinates
Achievements
Monsters Killed
Steps Walked
Amount of Spells casted by Group
Number of Different Spells casted by Group
Potions drunk by Group

Actually the script patches the modifier-code in the game which simply affects everything which can be modified including health regeneration, mana regeneration, food consumption, water consumption, damage etc. Since a float of 1000 is added, we get a nice damage output. 8-)
Some informations helpful for others to create their own tables and/or update this table
game is using mono, so don't miss using the mono dissector.
dkCharacter
dkGame->heroes
dkSpellProjectile:OnTriggerEnter
dkSpellsManager:Cast
every value in this game is stored as float. Use "Rounded (default)" for searching.
How to find the relevant character data:
call the mono dissector
go to assembly cs-sharp and expand i, scroll down to "dkGame", make a rightlick on it and choose "find Instance of class"
You'll get three possible addresses
Open the dissect window, select the "dkGame" structure. Put all 3 addresses found by the mono dissector into the dissect window-
Then take a look at "selected hero" while selecting different characters in the game. The one address which changes when selecting another char is the right one. Hint: it seems to be always the 2nd one.
make a pointer scan for the dkGame-Adress.
searching for character Names? Use UTF-16 with case sensitive on. You'll get 12 hits, change names and see which one is the right one
when looking what writes to health, there is an interesting function named dkCharacteristic:ApplyModifier. This one applys to health, Mana, Food, Water and the damage we are dealing. Very nice. Not very subtile, but effective.
the code increasing MageXP is at dkCharacter:AddXpMagic+62: D9 58 48 - fstp dword ptr [eax+48]
the code increasing PriestXP is at dkCharacter:AddXpPriest+62 - D9 58 4C - fstp dword ptr [eax+4C]
If you look at the character stats in the game, you'll see the current levels of Fighter, Ninja, Priest and Mage, followed by an experience counter. This experience counter is simply the summed up representation of the experience of all 4 classes. The XP-values for the classes itself are hidden in the game.
so you can write down the amount of experience you see in the game, cast a spell and calculate the difference to see how much the amount of experience in mage/priest has increased (makes searching a lot easier).For example a fireball adds exactly 18 Points to it, so use "increased by 18.0000" to narrow down your results
The level ups are at 200,400,800,1600,3200... Experience in their corresponding classes. For fast leveling up, set the experience to 199,399,799 etc and make one appropriate action to level up.
at experience 200,800,3200... (also known as "every second level up") you can spend one point to the characters attributes
the value which represents how fed the characters are is a float, too. Seems to be as percent, because 100 = full fed.
when playing this game, always give your characters at least 10 Points of Intelligence, so they can at least cast something to get caster levels. Push all characters to level 3 in all possible classes, because a) this gives you constitution b) you can distribute some attributes and c) until level 3 it is sufficient to hit the air to get warrior and ninja levels.
when searching the coordinates the following may be useful: 0 is in the bottom left corner of the map. Meaning: y increases when going north, x increases when going east. And each step increases(decreases the according value by 3. Stepping out of the inn at the town leaves you at x=339, y=45. When the party stands still, the value has no fractional part. All 3 coords are after each other in the order xzy. If you walk out of the inn, stand still for a second then make an AOB for "00 80 A9 43 59 FC 64 3F 00 00 34 42". You'll get 8 hits, check them out.
when trying to find the items in inventory, search for 4-Byte-Values. An empty Slot has the value 0, use it to narrow down your results.
freezing an item slot and then taking the item out of the slot ingame simply makes a copy of that very item
when doing a Pointer Search, a "Depth" of 8 and a "Maximum Offset Value" of 500 is sufficient
Availabe Spells in the Game
The currently available Spells are:


Priest: Mage
=======================================================================================
Body = heal group Stars = Create Light
Body + Invert = Shield for Group Air+Atom = Lightning Bolt
Stars+Body+Time = Footprints Air+Fire = Fireball
Revert+Body+Earth = Cure Poison Air+Control = Activation/Open Door
Air+Nature+Invert = Poison Cloud
Control+Air+Atom+Invert = Syntonization
Using the built-in cheat mode
Using DNSpy, I found a boolean named "cheat". Searching for the references I found a code which tells us to
press and hold the Letters K+L down
press down the left shift key
release the letters K+L while still pressing the left shift key
Result: trigger cheat mode on and off.
Attachments
Dungeon Kingdom.CT
(104.39 KiB) Downloaded 287 times
Post Reply