Modify Shadow Fight 2 Data


Prologue

Shadow Fight 2 is a fantastic action game developed by Nekki. However, some items in game may not be easy to obtain through legal progress of the game, such as coins, gems, and enchantment materials. Also, some special weapons.

My phone is HarmonyOS, which is slightly different from Android and totally not iOS. But I guess they’re all the same. And right now, when I’m writing this article, the game version is 2.26.0.

If you got any problem, you can contact me through e-mail. (Below my avatar.)

DISCLAIMER

  • Everything in this tutorial is for self entertainment purpose only.
  • You are at risk of losing your progress if I was wrong, or you made mistakes.

Preparation

First, you need the game. Of course, you can download it from official software store. However, if you just want to go through it quickly, you can download it from androeed.ru. It offers you optional unlimited money, which means you can still play it as the original game, and keeps the ability to have much money.

Notice that the game from androeed.ru doesn’t have unlimited enchantment material.

After you get the game, you can just play it and only make modification when you really want to. And before you make modification, please prepare a text editor that could edit XML files. You can download one on the phone, or exchange files with a PC.

Any modification to the game is done in this directory on your phone: Android/data/com.nekki.shadowfight/. This is the location in HarmonyOS, and may vary in different OS. This directory will be called root folder in the following parts.

You can connect your phone to a PC to make it easier for file operations. But do not launch the game during connection, real-time I/O to the files may cause Windows Explorer not responding correctly.


Back up Data

If you’re afraid of losing your progress, or encountered some error and need to re-install the game, backing up your data is sure to be a good choice.

Step 1. Files to Back up

Go to the root folder (whispers: Android/data/com.nekki.shadowfight/), you will see all data files that Shadow Fight 2 uses.

image-20230211132808125

cache/ and no_backup/ are trivial, you can simply ignore these two.

Now, enter files/, and you will see these, which is what we will back up then.

image-20230211132927159

File Description

  • gamedata/: Game resources, this is essential if you don’t want to re-download them.
  • userdata/: Your progress, MUST be kept intact.
  • Unity/: Shadow Fight 2 uses Unity?! Seems to be some archived logs. Not that vital.
  • il2cpp/: Seems to be an asset comes together with Unity.

Step 2. Back up Files

Basically, you can just copy the files/ folder to your back up folder. However, this may take quite long, because there are too many files (though small) in files/Unity/!

Good news is that, these annoying files are totally unnecessary! Go to files/Unity/ce8db467-e533-4c3a-8e87-96866484f08b/Analytics/ArchivedEvents, and delete all sub folders, it won’t affect the game.

image-20230211134653321

The name of this folder doesn’t matter, since there’s only one.

image-20230211134825386

Now, you can simply copy the files/ folder to anywhere you want.


Modify Game Data

WARNING! You are at risk of losing your progress, and game data is at risk of crash!

Unlike other tutorials, perhaps due to the game version? You MUST connect to the Internet when open the game, or the game may report data crash!

0. Introduction to Game Data

Before you actually modify the game data, spend some time to get a brief understanding of what you are dealing with.

Go to files/userdata/, and you’ll see your progress and settings data. The game creates corresponding hash files to validate data. If any file failed hash verification, you game will encounter data crash error! Your progress is stored in users.xml. Actually users_backup.xml is useless if you have users.xml.

image-20230211141043378

Important! Hash verification can be skipped by simply deleting the corresponding .hash file! (I don’t know why. :P) So if you want to modify the game, delete users.xml.hash, users_backup.xml and users_backup.xml.hash, then you can do whatever you want in users.xml!

That three files will be regenerated by the game again, though. Just delete them before you modify the data. And remember to back up users.xml in case you made some mistake. To roll back, simple restore the users.xml.

Below are some common modifications. They only change users.xml. Good luck. :)

Tips: I use Visual Studio Code!

1. Increase Money

Open users.xml, and you can see the structure of the xml file.

image-20230211135824139

Find Root/Warriors/Warrior , it contains all your progress and data.

image-20230211142611697

Money and Gems are stored as attribute (Gem is called Bonus in code), you can also modify your level, though.

Warning! If you modifies your level and defeat enemies that should be defeated later, game will proceed in an incorrect order, which may cause content missing, or you cannot trigger certain events.

2. Increase Enchantment Material

Some good mod doesn’t provide unlimited enchantment material, and it could be tiring to get enough of them.

Find Root/Warriors/Warrior/Currencies, ForgeMaterial1 - ForgeMaterial3 are corresponding to the green, red and purple ball.

image-20230211143227602

3. Mythical Set

There are some sets that have mythical enchantments. You can just add them to Root/Warriors/Warrior/Items/.

Here are two templates, which will add an equipment of max level (52).

Simple Template

You can easily add an item by adding this line to Items/ by filling the Name attribute. However, you will have to enchant it with mythical enchantment in game after you add the complete set.

1
<Item Name="" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />

Complete Template

This template will brings mythical enchantment together. Just fill the two Name attribute.

1
2
3
4
5
<Item Name="" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="" />
</Enchantments>
</Item>

Example

Here is a complete example of Monk Set.

1
2
3
4
5
<Item Name="WEAPON_C2_Z2_MONK_KATAR" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />
<Item Name="ARMOR_C2_Z2_MONK" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />
<Item Name="HELM_C2_Z2_MONK" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />
<Item Name="RANGED_C2_Z2_MONK_SHURIKEN" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />
<Item Name="MAGIC_C2_Z2_MONK_ROOT_STUN" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade" />
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<Item Name="WEAPON_C2_Z2_MONK_KATAR" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="PERK_MONK_SET_WHIRL" />
</Enchantments>
</Item>
<Item Name="ARMOR_C2_Z2_MONK" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="PERK_MONK_SET_WHIRL" />
</Enchantments>
</Item>
<Item Name="HELM_C2_Z2_MONK" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="PERK_MONK_SET_WHIRL" />
</Enchantments>
</Item>
<Item Name="RANGED_C2_Z2_MONK_SHURIKEN" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="PERK_MONK_SET_WHIRL" />
</Enchantments>
</Item>
<Item Name="MAGIC_C2_Z2_MONK_ROOT_STUN" Equipped="0" Count="1" UpgradeLevel="5240" DeliveryTime="0" DeliveryUpgradeLevel="-1" AcquireType="Upgrade">
<Enchantments>
<Perk Name="PERK_MONK_SET_WHIRL" />
</Enchantments>
</Item>

Sets Information

Here are some sets, just replace the Name.

1
2
3
4
5
6
7
Weapon: WEAPON_C2_Z2_MONK_KATAR
Armor: ARMOR_C2_Z2_MONK
Helmet: HELM_C2_Z2_MONK
Ranged: RANGED_C2_Z2_MONK_SHURIKEN
Magic: MAGIC_C2_Z2_MONK_ROOT_STUN

Enchantment: PERK_MONK_SET_WHIRL
1
2
3
4
5
6
7
Weapon: WEAPON_C2_Z3_SENTINEL_SPEAR
Armor: ARMOR_C2_Z3_SENTINEL
Helmet: HELM_C2_Z3_SENTINEL
Ranged: RANGED_C2_Z3_SENTINEL_SHURIKEN
Magic: MAGIC_C2_Z3_SENTINEL_DRAGON

Enchantment: PERK_SENTINEL_SET_SUPER_RETURN
1
2
3
4
5
6
7
Weapon: WEAPON_BP_S5_TIME_SHIFTER
Armor: ARMOR_BP_S5_TIME_SHIFTER
Helmet: HELM_BP_S5_TIME_SHIFTER
Ranged: RANGED_BP_S5_TIME_SHIFTER
Magic: MAGIC_BP_S5_TIME_SHIFTER

Enchantment: PERK_TIME_SHIFT_SET_TIME_SHIFTER
1
2
3
4
5
6
7
Weapon: WEAPON_C4_Z1_WARLOCK_STAFF
Armor: ARMOR_C4_Z1_WARLOCK
Helmet: HELM_C4_Z1_WARLOCK
Ranged: RANGED_C4_Z1_WARLOCK_SHURIKEN
Magic: MAGIC_C4_Z1_WARLOCK_DARK_WAVE

Enchantment: PERK_WARLOCK_SET_CURSE
1
2
3
4
5
6
7
Weapon: WEAPON_BP_S1_GUARDIAN
Armor: ARMOR_BP_S1_GUARDIAN
Helmet: HELM_BP_S1_GUARDIAN
Ranged: RANGED_BP_S1_GUARDIAN
Magic: MAGIC_BP_S1_GUARDIAN

Enchantment: PERK_GUARDIAN_SET_PROTECTION