require 'CHC_config'


CHC_settings.itemPropsByType = {
    -- source: zombie\scripting\objects\Item.java InstanceItem()
    WeaponPart = {
        { name = 'getDamage',         default = 0,     ignoreDefault = true, type = "number" },
        { name = 'getClipSize',       default = 0,     ignoreDefault = true, type = "number" },
        { name = 'getMaxRange',       default = 0,     ignoreDefault = true, type = "number" },
        { name = 'getMinRangeRanged', default = 0,     ignoreDefault = true, type = "number" },
        { name = 'getRecoilDelay',    default = 0,     ignoreDefault = true, type = "number" },
        { name = 'getMountOn',        type = "list" },
        { name = 'getPartType',       type = "string" },
        { name = 'getReloadTime',     type = "number", default = 0,          ignoreDefault = true },
        { name = 'getAimingTime',     type = "number", default = 0,          ignoreDefault = true },
        { name = 'getHitChance',      type = "number", default = 0,          ignoreDefault = true },
        { name = 'getAngle',          type = "number", default = 0,          ignoreDefault = true },
        { name = 'getWeightModifier', type = "number", default = 0,          ignoreDefault = true },
    },
    Key = {
        { name = 'isDigitalPadlock', type = "boolean" },
        { name = 'isPadlock',        type = "boolean" }
    },
    Container = {
        { name = 'getItemCapacity',       type = "number", default = -1, ignoreDefault = true },
        { name = 'getCapacity',           type = "number", default = 0,  ignoreDefault = true },
        { name = 'getWeightReduction',    type = "number", default = 0,  ignoreDefault = true },
        { name = 'canBeEquipped',         type = "string" },
        { name = 'getPutSound',           type = "string" },
        { name = 'getCloseSound',         type = "string" },
        { name = 'getOpenSound',          type = "string" },
        { name = 'getOnlyAcceptCategory', type = "string" },
        { name = 'getAcceptItemFunction', type = "string" },
    },
    Food = {
        { name = 'getPoisonLevelForRecipe',        type = "number" },
        { name = 'getPoisonDetectionLevel',        type = "number", default = -1,         ignoreDefault = true },
        { name = 'isPoison',                       type = "boolean" },
        { name = 'getFoodType',                    type = "string" },
        { name = 'getPoisonPower',                 type = "number", default = 0,          ignoreDefault = true },
        { name = 'getUseForPoison',                type = "number", default = 0,          ignoreDefault = true },
        { name = 'getThirstChange',                type = "number", mul = 100,            default = 0,          ignoreDefault = true },
        { name = 'getHungChange',                  type = "number", mul = 100,            default = 0,          ignoreDefault = true },
        { name = 'getBaseHunger',                  type = "number", mul = 100,            default = 0,          ignoreDefault = true },
        { name = 'getEndChange',                   type = "number", mul = 100,            default = 0,          ignoreDefault = true },
        { name = 'getOffAge',                      type = "number", default = 1000000000, ignoreDefault = true },
        { name = 'getOffAgeMax',                   type = "number", default = 1000000000, ignoreDefault = true },
        { name = 'isCookable',                     type = "boolean" },
        { name = 'getMinutesToCook',               type = "number", default = 60,         ignoreDefault = false },
        { name = 'getMinutesToBurn',               type = "number", default = 120,        ignoreDefault = false },
        { name = 'isbDangerousUncooked',           type = "boolean" },
        { name = 'getReplaceOnCooked',             type = 'list' },
        { name = 'isSpice',                        type = "boolean" },
        { name = 'getSpices',                      type = 'list' },
        { name = 'isRemoveNegativeEffectOnCooked', type = "boolean" },
        { name = 'getCustomEatSound',              type = "string" },
        { name = 'getOnCooked',                    type = "string" },
        { name = 'getFluReduction',                type = "number", default = 0,          ignoreDefault = true },
        { name = 'getReduceFoodSickness',          type = "number", default = 0,          ignoreDefault = true },
        { name = 'getPainReduction',               type = "number", default = 0,          ignoreDefault = true },
        { name = 'getHerbalistType',               type = "string" },
        { name = 'getCarbohydrates',               type = "number", default = 0,          ignoreDefault = true },
        { name = 'getLipids',                      type = "number", default = 0,          ignoreDefault = true },
        { name = 'getProteins',                    type = "number", default = 0,          ignoreDefault = true },
        { name = 'getCalories',                    type = "number", default = 0,          ignoreDefault = false },
        { name = 'isPackaged',                     type = "boolean" },
        { name = 'canBeFrozen',                    type = "boolean" },
        { name = 'getReplaceOnRotten',             type = "string" },
        { name = 'getOnEat',                       type = "string" },
        { name = 'isBadInMicrowave',               type = "boolean" },
        { name = 'isGoodHot',                      type = "boolean" },
        { name = 'isBadCold',                      type = "boolean" },
    },
    Literature = {
        { name = 'getNumberOfPages',    type = "number", default = -1, ignoreDefault = true },
        { name = 'getAlreadyReadPages', type = "number", default = 0,  ignoreDefault = true },
        { name = 'getSkillTrained',     type = "string" },
        { name = 'getLvlSkillTrained',  type = "number", default = -1, ignoreDefault = true },
        { name = 'getNumLevelsTrained', type = "number", default = 1,  ignoreDefault = false },
        { name = 'canBeWrite',          type = "boolean" },
        { name = 'getPageToWrite',      type = "number", default = 0,  ignoreDefault = true },
        { name = 'getTeachedRecipes',   type = "list",   retRaw = true },
    },
    AlarmClock = {
        { name = 'getAlarmSound',  type = "string", default = "AlarmClockLoop", ignoreDefault = false },
        { name = 'isDigital',      type = "boolean" },
        { name = 'getSoundRadius', type = "number", default = 0,                ignoreDefault = true },
    },
    AlarmClockClothing = {
        { name = 'getTemperature',            type = "number", default = 0,                ignoreDefault = true },
        { name = 'getInsulation',             type = "number", default = 0,                ignoreDefault = true },
        { name = 'getConditionLowerChance',   type = "number", default = 1000000,          ignoreDefault = false },
        { name = 'getStompPower',             type = "number", default = 1,                ignoreDefault = true },
        { name = 'getRunSpeedModifier',       type = "number", default = 1,                ignoreDefault = true },
        { name = 'getCombatSpeedModifier',    type = "number", default = 1,                ignoreDefault = true },
        { name = 'isRemoveOnBroken',          type = "boolean" },
        { name = 'getCanHaveHoles',           type = "boolean" },
        { name = 'getWeightWet',              type = "number", default = 0,                ignoreDefault = true },
        { name = 'getBiteDefense',            type = "number", default = 0,                ignoreDefault = true },
        { name = 'getBulletDefense',          type = "number", default = 0,                ignoreDefault = true },
        { name = 'getNeckProtectionModifier', type = "number", default = 1,                ignoreDefault = true },
        { name = 'getScratchDefense',         type = "number", default = 0,                ignoreDefault = true },
        { name = 'getChanceToFall',           type = "number", default = 0,                ignoreDefault = true },
        { name = 'getWindresistance',         type = "number", default = 0,                ignoreDefault = true },
        { name = 'getWaterResistance',        type = "number", default = 0,                ignoreDefault = true },
        { name = 'getAlarmSound',             type = "string", default = "AlarmClockLoop", ignoreDefault = false },
        { name = 'getSoundRadius',            type = "number", default = 0,                ignoreDefault = true },
    },
    Weapon = {
        { name = 'isMultipleHitConditionAffected',  type = "boolean" },
        { name = 'getConditionLowerChance',         type = "number", default = 1000000, ignoreDefault = false },
        { name = 'getSplatSize',                    type = "number", default = 1,       ignoreDefault = true },
        { name = 'getAimingMod',                    type = "number", default = 1,       ignoreDefault = true },
        { name = 'getMinDamage',                    type = "number", default = 0,       ignoreDefault = false },
        { name = 'getMaxDamage',                    type = "number", default = 1.5,     ignoreDefault = false },
        { name = 'getBaseSpeed',                    type = "number", default = 1,       ignoreDefault = true },
        { name = 'getPhysicsObject',                type = "string" },
        { name = 'getOtherHandRequire',             type = "string" },
        { name = 'isOtherHandUse',                  type = "boolean" },
        { name = 'getMaxRange',                     type = "number", default = 1,       ignoreDefault = false },
        { name = 'getMinRange',                     type = "number", default = 0,       ignoreDefault = false },
        { name = 'isShareEndurance',                type = "boolean" },
        { name = 'getKnockdownMod',                 type = "number", default = 1,       ignoreDefault = true },
        { name = 'isAimedFirearm',                  type = "boolean" },
        { name = 'getRunAnim',                      type = "string" },
        -- { name = 'IdleAnim' },
        -- { name = 'HitAngleMod' , default = 0, ignoreDefault = true },
        { name = 'isAimedHandWeapon',               type = "boolean" },
        { name = 'isCantAttackWithLowestEndurance', type = "boolean" },
        { name = 'isAlwaysKnockdown',               type = "boolean" },
        { name = 'getEnduranceMod',                 type = "string", default = 1,       ignoreDefault = true },
        { name = 'isUseSelf',                       type = "boolean" },
        { name = 'getMaxHitCount',                  type = "number", default = 1000,    ignoreDefault = true },
        { name = 'getMinimumSwingTime',             type = "number", default = 0,       ignoreDefault = true },
        { name = 'getSwingTime',                    type = "number", default = 1,       ignoreDefault = false },
        { name = 'getDoSwingBeforeImpact',          type = "number", default = 0,       ignoreDefault = true },
        { name = 'getMinAngle',                     type = "number", default = 1,       ignoreDefault = true },
        { name = 'getDoorDamage',                   type = "number", default = 1,       ignoreDefault = true },
        { name = 'getTreeDamage',                   type = "number", default = 0,       ignoreDefault = true },
        { name = 'getDoorHitSound',                 type = "string" },
        { name = 'getHitFloorSound',                type = "string" },
        { name = 'getZombieHitSound',               type = "string" },
        { name = 'getPushBackMod',                  type = "number", default = 1,       ignoreDefault = true },
        { name = 'getImpactSound',                  type = "string" },
        { name = 'getSplatNumber',                  type = "number", default = 2,       ignoreDefault = true },
        { name = 'isKnockBackOnNoDeath',            type = "boolean" },
        { name = 'isSplatBloodOnNoDeath',           type = "boolean" },
        { name = 'getSwingSound',                   type = "string" },
        { name = 'getBulletOutSound',               type = "string" },
        { name = 'getShellFallSound',               type = "string" },
        { name = 'isAngleFalloff',                  type = "boolean" },
        { name = 'getSoundVolume',                  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getSoundRadius',                  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getToHitModifier',                type = "number", default = 1,       ignoreDefault = true },
        { name = 'getOtherBoost',                   type = "number", default = 1,       ignoreDefault = true },
        { name = 'isRanged',                        type = "boolean" },
        { name = 'isRangeFalloff',                  type = "boolean" },
        { name = 'isUseEndurance',                  type = "boolean" },
        { name = 'getCriticalChance',               type = "number", default = 20,      ignoreDefault = false },
        { name = 'getCritDmgMultiplier',            type = "number", default = 0,       ignoreDefault = true },
        { name = 'isShareDamage',                   type = "boolean" },
        { name = 'isCanBarracade',                  type = "boolean" },
        { name = 'getWeaponSprite',                 type = "string" },
        { name = 'getOriginalWeaponSprite',         type = "string" },
        { name = 'getSubCategory',                  type = "string" },
        { name = 'getCategories',                   type = "list",   default = "[]",    ignoreDefault = true },
        { name = 'getSoundGain',                    type = "number", default = 1,       ignoreDefault = true },
        { name = 'getAimingPerkCritModifier',       type = "number", default = 0,       ignoreDefault = true },
        { name = 'getAimingPerkRangeModifier',      type = "number", default = 0,       ignoreDefault = true },
        { name = 'getAimingPerkHitChanceModifier',  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getHitChance',                    type = "number", default = 0,       ignoreDefault = true },
        { name = 'getRecoilDelay',                  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getAimingPerkMinAngleModifier',   type = "number", default = 0,       ignoreDefault = true },
        { name = 'isPiercingBullets',               type = "boolean" },
        { name = 'getClipSize',                     type = "number", default = 0,       ignoreDefault = true },
        { name = 'getReloadTime',                   type = "number", default = 0,       ignoreDefault = true },
        { name = 'getAimingTime',                   type = "number", default = 0,       ignoreDefault = true },
        { name = 'getTriggerExplosionTimer',        type = "number", default = 0,       ignoreDefault = true },
        { name = 'getSensorRange',                  type = "number", default = 0,       ignoreDefault = true },
        -- { name = 'getWeaponLength' , default = 0.4, ignoreDefault = true },
        { name = 'getPlacedSprite',                 type = "string" },
        { name = 'getExplosionTimer',               type = "number", default = 0,       ignoreDefault = true },
        { name = 'canBePlaced',                     type = "boolean" },
        { name = 'canBeReused',                     type = "boolean" },
        { name = 'getExplosionRange',               type = "number", default = 0,       ignoreDefault = true },
        { name = 'getExplosionPower',               type = "number", default = 0,       ignoreDefault = true },
        { name = 'getFireRange',                    type = "number", default = 0,       ignoreDefault = true },
        { name = 'getFirePower',                    type = "number", default = 0,       ignoreDefault = true },
        { name = 'getSmokeRange',                   type = "number", default = 0,       ignoreDefault = true },
        { name = 'getNoiseRange',                   type = "number", default = 0,       ignoreDefault = true },
        { name = 'getExtraDamage',                  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getAmmoBox',                      type = "string" },
        { name = 'getRackSound',                    type = "string" },
        { name = 'getClickSound',                   type = "string" },
        { name = 'getMagazineType',                 type = "string" },
        { name = 'getWeaponReloadType',             type = "string" },
        { name = 'isInsertAllBulletsReload',        type = "number" },
        { name = 'isRackAfterShoot',                type = "number" },
        { name = 'getJamGunChance',                 type = "number", default = 1,       ignoreDefault = true },
        { name = 'getModelWeaponPart',              type = "list",   forceIgnore = true },
        { name = 'haveChamber',                     type = "boolean" },
        { name = 'getDamageCategory',               type = "string" },
        { name = 'isDamageMakeHole',                type = "boolean" },
        { name = 'getFireMode',                     type = "string" },
        { name = 'getFireModePossibilities',        type = "list" },
    },
    Normal = {},
    Clothing = {
        { name = 'getTemperature',            type = "number", default = 0,       ignoreDefault = true },
        { name = 'getInsulation',             type = "number", default = 0,       ignoreDefault = true },
        { name = 'getConditionLowerChance',   type = "number", default = 1000000, ignoreDefault = true },
        { name = 'getStompPower',             type = "number", default = 1,       ignoreDefault = true },
        { name = 'getRunSpeedModifier',       type = "number", default = 1,       ignoreDefault = true },
        { name = 'getCombatSpeedModifier',    type = "number", default = 1,       ignoreDefault = true },
        { name = 'isRemoveOnBroken',          type = "boolean" },
        { name = 'getCanHaveHoles',           type = "boolean" },
        { name = 'getWeightWet',              type = "number", default = 0,       ignoreDefault = true },
        { name = 'getBiteDefense',            type = "number", default = 0,       ignoreDefault = true },
        { name = 'getBulletDefense',          type = "number", default = 0,       ignoreDefault = true },
        { name = 'getNeckProtectionModifier', type = "number", default = 1,       ignoreDefault = true },
        { name = 'getScratchDefense',         type = "number", default = 0,       ignoreDefault = true },
        { name = 'getChanceToFall',           type = "number", default = 0,       ignoreDefault = true },
        { name = 'getWindresistance',         type = "number", default = 0,       ignoreDefault = true },
        { name = 'getWaterResistance',        type = "number", default = 0,       ignoreDefault = true },
        { name = 'getFabricType',             type = "number" },
        { name = 'getFabricTypeName',         type = "string" },
        -- { name = 'getPaletteChoices' },
    },
    Drainable = {
        { name = 'isUseWhileEquiped',   type = "boolean" },
        { name = 'isUseWhileUnequiped', type = "boolean" },
        { name = 'getTicksPerEquipUse', type = "number", default = 30,      ignoreDefault = false },
        { name = 'getUseDelta',         type = "number", default = 0.03125, ignoreDefault = false },
        { name = 'getReplaceOnDeplete', type = "string" },
        { name = 'isIsCookable',        type = "boolean" },
        { name = 'getReplaceOnCooked',  type = "list" },
        { name = 'getMinutesToCook',    type = "number", default = 60,      ignoreDefault = false },
        { name = 'getOnCooked',         type = "string" },
        { name = 'getRainFactor',       type = "number", default = 0,       ignoreDefault = true },
        { name = 'canConsolidate',      type = "boolean" },
        { name = 'getWeightEmpty',      type = "number", default = 0,       ignoreDefault = true },
    },
    Radio = {
        { name = 'getIsTwoWay',         type = "boolean" },
        { name = 'getTransmitRange',    type = "number", default = 0,       ignoreDefault = true },
        { name = 'getMicRange',         type = "number", default = 0,       ignoreDefault = true },
        { name = 'getBaseVolumeRange',  type = "number", default = 0,       ignoreDefault = true },
        { name = 'getIsPortable',       type = "boolean" },
        { name = 'getIsTelevision',     type = "boolean" },
        { name = 'getMinChannelRange',  type = "number", default = 88000,   ignoreDefault = false },
        { name = 'getMaxChannelRange',  type = "number", default = 108000,  ignoreDefault = false },
        { name = 'getIsBatteryPowered', type = "boolean" },
        { name = 'getIsHighTier',       type = "boolean" },
        { name = 'getUseDelta',         type = "number", default = 0.03125, ignoreDefault = false },
        { name = 'getMediaType',        type = "number", default = -1,      ignoreDefault = true },
        { name = 'isNoTransmit',        type = "boolean" },
    },
    Moveable = {
        { name = 'getWorldSprite',      type = "string" },
        { name = 'CanBeDroppedOnFloor', type = "boolean" },
        { name = 'isMultiGridAnchor',   type = "boolean" },
        { name = 'isLight',             type = "boolean", default = false,              ignoreDefault = true },
        { name = 'isLightUseBattery',   type = "boolean", default = false,              ignoreDefault = true },
        { name = 'getLightBulbItem',    type = "string",  default = '"Base.LightBulb"', ignoreDefault = true },
        { name = 'getLightPower',       type = "number",  default = 0,                  ignoreDefault = true },
        { name = 'getLightDelta',       type = "number",  default = 2.0E-4,             ignoreDefault = true },
        { name = 'getLightR',           type = "number",  default = 1,                  ignoreDefault = true },
        { name = 'getLightG',           type = "number",  default = 1,                  ignoreDefault = true },
        { name = 'getLightB',           type = "number",  default = 1,                  ignoreDefault = true },

    },
    Map = {},
    Common = {
        { name = 'getAlcoholPower',             type = "number", default = 0,    ignoreDefault = true },
        { name = 'getConditionMax',             type = "number" },
        { name = 'getCondition',                type = "number" },
        { name = 'canBeActivated',              type = "boolean" },
        { name = 'getLightStrength',            type = "number", default = 0,    ignoreDefault = true },
        { name = 'isTorchCone',                 type = "boolean" },
        { name = 'getLightDistance',            type = "number", default = 0,    ignoreDefault = true },
        { name = 'getActualWeight',             type = "boolean" },
        { name = 'getWeight',                   type = "number" },
        { name = 'getUses',                     type = "number", default = 1,    ignoreDefault = true },
        { name = 'getBoredomChange',            type = "number", default = 0,    ignoreDefault = true },
        { name = 'getStressChange',             type = "number", mul = 100,      default = 0,         ignoreDefault = true },
        { name = 'getUnhappyChange',            type = "number", default = 0,    ignoreDefault = true },
        { name = 'getReplaceOnUseOn',           type = "string" },
        { name = 'getRequireInHandOrInventory', type = "list" },
        { name = 'getAttachmentsProvided',      type = "list" },
        { name = 'getAttachmentReplacement',    type = "string" },
        { name = 'isWaterSource',               type = "boolean" },
        { name = 'getMetalValue',               type = "number", default = 0,    ignoreDefault = true },
        { name = 'canStoreWater',               type = "boolean" },
        -- { name = 'CanStack' },
        { name = 'getCount',                    type = "number", default = 1,    ignoreDefault = true },
        { name = 'getFatigueChange',            type = "number", mul = 100,      default = 0,         ignoreDefault = true },
        { name = 'getTooltip',                  type = "string" },
        { name = 'getDisplayCategory',          type = "string" },
        { name = 'isAlcoholic',                 type = "boolean" },
        { name = 'isRequiresEquippedBothHands', type = "boolean" },
        { name = 'getBreakSound',               type = "boolean" },
        { name = 'getReplaceOnUse',             type = "boolean" },
        { name = 'getBandagePower',             type = "number", default = 0,    ignoreDefault = true },
        { name = 'getReduceInfectionPower',     type = "number", default = 0,    ignoreDefault = true },
        { name = 'canBeRemote',                 type = "boolean" },
        { name = 'isRemoteController',          type = "boolean" },
        { name = 'getRemoteRange',              type = "number", default = 0,    ignoreDefault = true },
        { name = 'getCountDownSound',           type = "string" },
        { name = 'getExplosionSound',           type = "string" },
        { name = 'getColorRed',                 type = "number", mul = 255,      default = 255,       ignoreDefault = true },
        { name = 'getColorGreen',               type = "number", mul = 255,      default = 255,       ignoreDefault = true },
        { name = 'getColorBlue',                type = "number", mul = 255,      default = 255,       ignoreDefault = true },
        { name = 'getEvolvedRecipeName',        type = "string" },
        { name = 'isWet',                       type = "boolean" },
        { name = 'getWetCooldown',              type = "number", default = 0,    ignoreDefault = true },
        { name = 'getItemWhenDry',              type = "string" },
        { name = 'keepOnDeplete',               type = "boolean" },
        { name = 'getMaxCapacity',              type = "number", default = -1,   ignoreDefault = true },
        { name = 'getBrakeForce',               type = "number", default = 0,    ignoreDefault = true },
        { name = 'getChanceToSpawnDamaged',     type = "number", default = 0,    ignoreDefault = true },
        { name = 'getConditionLowerNormal',     type = "number", default = 0,    ignoreDefault = true },
        { name = 'getConditionLowerOffroad',    type = "number", default = 0,    ignoreDefault = true },
        { name = 'getWheelFriction',            type = "number", default = 0,    ignoreDefault = true },
        { name = 'getSuspensionCompression',    type = "number", default = 0,    ignoreDefault = true },
        { name = 'getEngineLoudness',           type = "number", default = 0,    ignoreDefault = true },
        { name = 'getSuspensionDamping',        type = "number", default = 0,    ignoreDefault = true },
        { name = 'getCustomMenuOption',         type = "string" },
        { name = 'getIconsForTexture',          type = "list" },
        { name = 'getBodyLocation',             type = "string", default = '""', ignoreDefault = true },
        { name = 'getBloodClothingType',        type = "list" },
        -- { name = 'CloseKillMove' },
        { name = 'getAmmoType',                 type = "string" },
        { name = 'getMaxAmmo',                  type = "number", default = 0,    ignoreDefault = true },
        { name = 'getGunType',                  type = "string" },
        { name = 'getAttachmentType',           type = "string" },
        { name = 'getTags',                     type = "list",   default = '[]', ignoreDefault = true }
    },
    Integrations = {
        CraftingEnhanced = {
            { name = 'Capacity',           path = 'container',         path2 = 'capacity' },
            { name = 'containerType',      path = 'container',         path2 = 'type' },
            { name = 'craftingSound',      path = 'craftingSound',     default = nil,     ignoreDefault = true },
            { name = 'requireTool',        path = 'requireTool' },
            { name = 'maxTime',            path = 'maxTime' },
            { name = 'size',               path = 'size' },
            { name = 'tooltipDescription', path = 'tooltipDescription' },
            { name = 'tooltipTexture',     path = 'tooltipTexture' },
            { name = 'tooltipTitle',       path = 'tooltipTitle' },
            { name = 'icon',               path = 'icon',              default = '""',    ignoreDefault = true },
            { name = 'recipe',             path = 'recipe',            forceIgnore = true },
        }
    },
    Traits = {
        -- { name = "Description",       path = "tooltip", default = nil,               ignoreDefault = true },
        { name = "Cost",              path = "item", path2 = "cost",              type = "number",  default = 0,  ignoreDefault = true },
        { name = "isRemoveInMp",      path = "item", path2 = "removeInMp",        type = "boolean" },
        { name = "isFree",            path = "item", path2 = "isFree",            type = "boolean", },
        { name = "MutuallyExclusive", path = "item", path2 = "mutuallyExclusive", type = "list",    retRaw = true },
        { name = "XPBoostMap",        path = "item", path2 = "XPBoostMap",        type = "list",    retRaw = true },
        { name = "type",              path = "item", path2 = "type" }
    },
    Professions = {
        -- { name = "Description", path = "tooltip", default = nil,        ignoreDefault = true },
        { name = "Cost",       path = "item", path2 = "cost",       type = "number" },
        { name = "FreeTraits", path = "item", path2 = "freeTraits", type = "list",  default = "[]", ignoreDefault = true },
        { name = "XPBoostMap", path = "item", path2 = "XPBoostMap", type = "list",  retRaw = true }
    },
    Skills = {
        { name = "id",            path = "item", path2 = "id",       type = "string" },
        { name = "index",         path = "item", path2 = "index",    type = "number" },
        { name = "isCustom",      path = "item", path2 = "isCustom", type = "boolean" },
        { name = "isPassiv",      path = "item", path2 = "isPassiv", type = "boolean" },
        { name = "parent",        path = "item", path2 = "parent",   type = "string" },
        { name = "xpForLvl",      path = "item", path2 = "xpForLvl", skip = true },
        { name = "xpForLvlTotal", path = "item", path2 = "xpForLvl", skip = true },


    }
}
