People have asked in the past how I end up getting all my information about how things work and what goes where, and I figure it’s time to explain this in some detail. In the past I’ve never bothered to do so because the things I do are in theory very much an EULA violation that can lead to a proper banhammering, but since then I’ve seen a lot of mods that utilize similar methods, and those seem to be “okay” with WG. So I might as well, right?
The first thing is that I decompile the Python scripts that come with the client (found under*res\scripts) because those contain a lot of the clues as to what’s what. The tool I use for this is uncompyle2*- that specific one in particular because it also does Python 2.6 and that’s what the WoT client uses at this moment.
Once you’ve done that, your explorations can begin; for example if you look at the*res\scripts\common\constants.py file, you will see things like this:

class VEHICLE_HIT_FLAGS: VEHICLE_KILLED = 1 VEHICLE_WAS_DEAD_BEFORE_ATTACK = 2 FIRE_STARTED = 4 RICOCHET = 8 MATERIAL_WITH_POSITIVE_DF_PIERCED_BY_PROJECTILE = 16 MATERIAL_WITH_POSITIVE_DF_NOT_PIERCED_BY_PROJECTILE = 32 ARMOR_WITH_ZERO_DF_PIERCED_BY_PROJECTILE = 64 ARMOR_WITH_ZERO_DF_NOT_PIERCED_BY_PROJECTILE = 128 DEVICE_PIERCED_BY_PROJECTILE = 256 DEVICE_NOT_PIERCED_BY_PROJECTILE = 512 CHASSIS_DAMAGED_BY_PROJECTILE = 1024 GUN_DAMAGED_BY_PROJECTILE = 2048 MATERIAL_WITH_POSITIVE_DF_PIERCED_BY_EXPLOSION = 4096 ARMOR_WITH_ZERO_DF_PIERCED_BY_EXPLOSION = 8192 DEVICE_PIERCED_BY_EXPLOSION = 16384 CHASSIS_DAMAGED_BY_EXPLOSION = 32768 GUN_DAMAGED_BY_EXPLOSION = 65536 ATTACK_IS_DIRECT_PROJECTILE = 131072 ATTACK_IS_EXTERNAL_EXPLOSION = 262144 IS_ANY_DAMAGE_MASK = MATERIAL_WITH_POSITIVE_DF_PIERCED_BY_PROJECTILE | MATERIAL_WITH_POSITIVE_DF_PIERCED_BY_EXPLOSION | DEVICE_PIERCED_BY_PROJECTILE | DEVICE_PIERCED_BY_EXPLOSION IS_ANY_PIERCING_MASK = IS_ANY_DAMAGE_MASK | ARMOR_WITH_ZERO_DF_PIERCED_BY_PROJECTILE | ARMOR_WITH_ZERO_DF_PIERCED_BY_EXPLOSIONAnd of course that’s not something entirely useful right now but it does show some of the things you can find. There’s also things there that help immensely with figuring out what kind of data is going around, since a lot of it is packed – for example it’s possible to describe a tank and all it’s modules in a single integer value that contains all elements; from res\scripts\common\items\vehicles.py:

def makeCompactDescr(self): type = self.type pack = struct.pack header = items.ITEM_TYPE_INDICES['vehicle'] + (type.id[0]