Best Python code snippet using nose
_skills_data.py
Source:_skills_data.py
1# Embedded file name: scripts/common/_skills_data.py2"""3This module is autogenerated don't modify any params,4after bundling they will be lost5"""6import Math7import math8import consts9import datetime10true = True11false = False12class Dummy():13 pass14isServerDatabase = True15class AMMO_TYPE():16 BALL = 017 AP = 118 APC = 219 I = 320 APHC = 421 API = 522 HEI = 623 APHE = 724 ALL_TYPES = (BALL,25 AP,26 APC,27 I,28 APHC,29 API,30 HEI,31 APHE)32class ModsTypeEnum():33 AIR_AGILITY = 034 MAX_SPEED = 135 WEAPONS_HEATING = 236 BOMB_MISSILE_FOCUS = 337 TURRET_DELAY = 438 GUNNER_ALIVE = 539 WEAPONS_FOCUS = 640 TURRET_FOCUS = 741 TURRET_ANGLE = 842 TURRET_RANGE = 943 ENGINE_POWER = 1044 SPEED_AGILITY = 1145 DAMAGE_AGILITY = 1246 FIRE_DURATION = 1347 FIRE_DURATION_PILOT = 1448 FIRE_DURATION_GUNNER = 1549 FIRE_DURATION_NAVIGATOR = 1650 CREW_MEMBER_HP = 1751 SIGHT_RANGE_PILOT = 1852 SIGHT_ANGLE_PILOT = 1953 SIGHT_RANGE_GUNNER = 2054 SIGHT_ANGLE_GUNNER = 2155 SIGHT_RANGE_NAVIGATOR = 2256 SIGHT_ANGLE_NAVIGATOR = 2357 XP_MODIFIER = 2458 SYSTEM_HP = 2559 PILOT_REAR_ARMOR = 2660 CABIN_ARMOR = 2761 VITALS_ARMOR = 2862 FIRE_CHANCE = 2963 EMERGENCY_POWER = 3064 EMERGENCY_HEATING = 3165 HP_RESTORE = 3266 ENGINE_RESTORE = 3367 FIRE_EXTINGUISH_MANUAL = 3468 FIRE_EXTINGUISH_AUTO = 3569 TEMP_IMMORTAL_CREW = 3670 BOMB_DAMADGE_REDUCTION = 3771 FIRE_WORK = 3872 SPARKLERS = 3973 COLOR_PLUMES = 4074 CLEAR_ENGINE_OVERHEAT = 4175 FREE_FORSAGE = 4276 CLEAR_GUNS_OVERHEAT = 4377 FREE_GUNS_FIRING = 4478 FIRE_IMMUNITY = 4579 MAIN_HP = 4680 FIRE_DAMAGE_K = 4781 DIVE_ACCELERATION = 4882 ROLL_MAX_SPEED_CFG = 4983 YAW_MAX_SPEED_CFG = 5084 PITCH_MAX_SPEED_CFG = 5185 ACCEL_BRAKE_CFG = 5286 FAST_ENGINE_COOLING = 5387 LOCK_ENGINE_POWER = 5488 AUTO_ENGINE_RESTORE = 5589 AUTO_AIM = 5690 FIX_TAIL_AND_WINGS = 5791 AA_PLANE_DAMAGE_K = 5892 ECONOMIC_BONUS_XP = 5993 ECONOMIC_BONUS_FREEXP = 6094 ECONOMIC_BONUS_CREDITS = 6195 STEALTH = 6296 DAMAGE_K = 6397 ACTIVATE_ROCKET_DETONATOR = 6498 ROCKET_SPLASH = 6599 ROCKET_DAMAGE = 66100 BOMB_SPLASH = 67101 BOMB_DAMAGE = 68102 CRIT_WEAKNESS_PILOT = 69103 CRIT_WEAKNESS_GUNNER = 70104 EQUIPMENT_EFFECT = 71105 GUNS_INCFLICT_DAMAGE = 72106 GUNS_INFLICT_CRIT = 73107 GUNS_INFLICT_FIRE = 74108 TURRET_INFLICT_CRIT = 75109 GUNNER_ENEMYHP_WATCHER = 76110 GUNNER_BARRAGE_FIRE = 77111 AUTOAIM_ANGLE = 78112 GUNNER_BURST_TIME_MODIFIER = 79113 GUNNER_REDUCTION_TIME = 80114 VISIBILITY_FACTOR_TO_ENEMY = 81115 WEP_WORK_TIME = 82116 EXPLOSIVE_CHARACTER = 83117 TEAM_OBJ_GUNS_INFLICT_FIRE = 84118 ALL_TYPES = (AIR_AGILITY,119 MAX_SPEED,120 WEAPONS_HEATING,121 BOMB_MISSILE_FOCUS,122 TURRET_DELAY,123 GUNNER_ALIVE,124 WEAPONS_FOCUS,125 TURRET_FOCUS,126 TURRET_ANGLE,127 TURRET_RANGE,128 ENGINE_POWER,129 SPEED_AGILITY,130 DAMAGE_AGILITY,131 FIRE_DURATION,132 FIRE_DURATION_PILOT,133 FIRE_DURATION_GUNNER,134 FIRE_DURATION_NAVIGATOR,135 CREW_MEMBER_HP,136 SIGHT_RANGE_PILOT,137 SIGHT_ANGLE_PILOT,138 SIGHT_RANGE_GUNNER,139 SIGHT_ANGLE_GUNNER,140 SIGHT_RANGE_NAVIGATOR,141 SIGHT_ANGLE_NAVIGATOR,142 XP_MODIFIER,143 SYSTEM_HP,144 PILOT_REAR_ARMOR,145 CABIN_ARMOR,146 VITALS_ARMOR,147 FIRE_CHANCE,148 EMERGENCY_POWER,149 EMERGENCY_HEATING,150 HP_RESTORE,151 ENGINE_RESTORE,152 FIRE_EXTINGUISH_MANUAL,153 FIRE_EXTINGUISH_AUTO,154 TEMP_IMMORTAL_CREW,155 BOMB_DAMADGE_REDUCTION,156 FIRE_WORK,157 SPARKLERS,158 COLOR_PLUMES,159 CLEAR_ENGINE_OVERHEAT,160 FREE_FORSAGE,161 CLEAR_GUNS_OVERHEAT,162 FREE_GUNS_FIRING,163 FIRE_IMMUNITY,164 MAIN_HP,165 FIRE_DAMAGE_K,166 DIVE_ACCELERATION,167 ROLL_MAX_SPEED_CFG,168 YAW_MAX_SPEED_CFG,169 PITCH_MAX_SPEED_CFG,170 ACCEL_BRAKE_CFG,171 FAST_ENGINE_COOLING,172 LOCK_ENGINE_POWER,173 AUTO_ENGINE_RESTORE,174 AUTO_AIM,175 FIX_TAIL_AND_WINGS,176 AA_PLANE_DAMAGE_K,177 ECONOMIC_BONUS_XP,178 ECONOMIC_BONUS_FREEXP,179 ECONOMIC_BONUS_CREDITS,180 STEALTH,181 DAMAGE_K,182 ACTIVATE_ROCKET_DETONATOR,183 ROCKET_SPLASH,184 ROCKET_DAMAGE,185 BOMB_SPLASH,186 BOMB_DAMAGE,187 CRIT_WEAKNESS_PILOT,188 CRIT_WEAKNESS_GUNNER,189 EQUIPMENT_EFFECT,190 GUNS_INCFLICT_DAMAGE,191 GUNS_INFLICT_CRIT,192 GUNS_INFLICT_FIRE,193 TURRET_INFLICT_CRIT,194 GUNNER_ENEMYHP_WATCHER,195 GUNNER_BARRAGE_FIRE,196 AUTOAIM_ANGLE,197 GUNNER_BURST_TIME_MODIFIER,198 GUNNER_REDUCTION_TIME,199 VISIBILITY_FACTOR_TO_ENEMY,200 WEP_WORK_TIME,201 EXPLOSIVE_CHARACTER,202 TEAM_OBJ_GUNS_INFLICT_FIRE)203class SHELL_TYPE():204 BOMBS = 0205 ROCKETS = 1206 ALL_TYPES = (BOMBS, ROCKETS)207class SKILL_GROUP():208 MAIN = 0209 COMMON = 1210 IMPROVED = 2211 UNIQUE = 3212 ALL_TYPES = (MAIN,213 COMMON,214 IMPROVED,215 UNIQUE)216class SpecializationEnum():217 PILOT = 0218 GUNNER = 1219 NAVIGATOR = 2220 ALL_TYPES = (PILOT, GUNNER, NAVIGATOR)221class WEAPON_AIM_TYPE():222 empty = 0223 smg = 1224 assault = 2225 shotgun = 3226 sniper = 4227 ALL_TYPES = (empty,228 smg,229 assault,230 shotgun,231 sniper)232Skills = Dummy()233Skills.skill = []234Skills.skill.insert(0, None)235Skills.skill[0] = Dummy()236Skills.skill[0].bindForPlanes = []237Skills.skill[0].cost = 0238Skills.skill[0].crewMemberSubTypes = []239Skills.skill[0].crewMemberTypes = []240Skills.skill[0].crewMemberTypes.insert(0, None)241Skills.skill[0].crewMemberTypes[0] = SpecializationEnum.PILOT242Skills.skill[0].group = SKILL_GROUP.MAIN243Skills.skill[0].icoPath = 'icons/specialization/tab/hangarTabSquarePilot.png'244Skills.skill[0].id = 1245Skills.skill[0].localizeTag = 'PILOT'246Skills.skill[0].mainForSpecialization = SpecializationEnum.PILOT247Skills.skill[0].mods = []248Skills.skill[0].mods.insert(0, None)249Skills.skill[0].mods[0] = Dummy()250Skills.skill[0].mods[0].states = Dummy()251Skills.skill[0].mods[0].states.crit = 0.8252Skills.skill[0].mods[0].states.damaged = 0.9253Skills.skill[0].mods[0].states.good = 0.9254Skills.skill[0].mods[0].type = ModsTypeEnum.AIR_AGILITY255Skills.skill[0].mods.insert(1, None)256Skills.skill[0].mods[1] = Dummy()257Skills.skill[0].mods[1].states = Dummy()258Skills.skill[0].mods[1].states.crit = 0.8259Skills.skill[0].mods[1].states.damaged = 0.9260Skills.skill[0].mods[1].states.good = 0.9261Skills.skill[0].mods[1].type = ModsTypeEnum.ENGINE_POWER262Skills.skill[0].mods.insert(2, None)263Skills.skill[0].mods[2] = Dummy()264Skills.skill[0].mods[2].states = Dummy()265Skills.skill[0].mods[2].states.crit = 0.5266Skills.skill[0].mods[2].states.damaged = 0.8267Skills.skill[0].mods[2].states.good = 0.8268Skills.skill[0].mods[2].type = ModsTypeEnum.WEAPONS_FOCUS269Skills.skill[0].mods.insert(3, None)270Skills.skill[0].mods[3] = Dummy()271Skills.skill[0].mods[3].states = Dummy()272Skills.skill[0].mods[3].states.crit = 0.5273Skills.skill[0].mods[3].states.damaged = 0.8274Skills.skill[0].mods[3].states.good = 0.8275Skills.skill[0].mods[3].type = ModsTypeEnum.BOMB_MISSILE_FOCUS276Skills.skill[0].mods.insert(4, None)277Skills.skill[0].mods[4] = Dummy()278Skills.skill[0].mods[4].states = Dummy()279Skills.skill[0].mods[4].states.crit = 0.0280Skills.skill[0].mods[4].states.damaged = 1.0281Skills.skill[0].mods[4].states.good = 1.0282Skills.skill[0].mods[4].type = ModsTypeEnum.AUTO_AIM283Skills.skill[0].order = 0284Skills.skill[0].smallIcoPath = 'icons/specialization/crew/hangPilotsIconPilot.png'285Skills.skill[0].uiIndex = 1286Skills.skill.insert(1, None)287Skills.skill[1] = Dummy()288Skills.skill[1].bindForPlanes = []289Skills.skill[1].cost = 0290Skills.skill[1].crewMemberSubTypes = []291Skills.skill[1].crewMemberTypes = []292Skills.skill[1].crewMemberTypes.insert(0, None)293Skills.skill[1].crewMemberTypes[0] = SpecializationEnum.GUNNER294Skills.skill[1].group = SKILL_GROUP.MAIN295Skills.skill[1].icoPath = 'icons/specialization/tab/hangarTabSquareGunner.png'296Skills.skill[1].id = 2297Skills.skill[1].localizeTag = 'GUNNER'298Skills.skill[1].mainForSpecialization = SpecializationEnum.GUNNER299Skills.skill[1].mods = []300Skills.skill[1].mods.insert(0, None)301Skills.skill[1].mods[0] = Dummy()302Skills.skill[1].mods[0].states = Dummy()303Skills.skill[1].mods[0].states.crit = 0.5304Skills.skill[1].mods[0].states.damaged = 0.75305Skills.skill[1].mods[0].states.good = 0.75306Skills.skill[1].mods[0].type = ModsTypeEnum.TURRET_DELAY307Skills.skill[1].mods.insert(1, None)308Skills.skill[1].mods[1] = Dummy()309Skills.skill[1].mods[1].states = Dummy()310Skills.skill[1].mods[1].states.crit = 0.0311Skills.skill[1].mods[1].states.damaged = 1.0312Skills.skill[1].mods[1].states.good = 1.0313Skills.skill[1].mods[1].type = ModsTypeEnum.GUNNER_ALIVE314Skills.skill[1].order = 0315Skills.skill[1].smallIcoPath = 'icons/specialization/crew/hangPilotsIconGunner.png'316Skills.skill[1].uiIndex = 2317Skills.skill.insert(2, None)318Skills.skill[2] = Dummy()319Skills.skill[2].bindForPlanes = []320Skills.skill[2].cost = 1321Skills.skill[2].crewMemberSubTypes = []322Skills.skill[2].crewMemberSubTypes.insert(0, None)323Skills.skill[2].crewMemberSubTypes[0] = 0324Skills.skill[2].crewMemberSubTypes.insert(1, None)325Skills.skill[2].crewMemberSubTypes[1] = 1326Skills.skill[2].crewMemberSubTypes.insert(2, None)327Skills.skill[2].crewMemberSubTypes[2] = 2328Skills.skill[2].crewMemberSubTypes.insert(3, None)329Skills.skill[2].crewMemberSubTypes[3] = 3330Skills.skill[2].crewMemberSubTypes.insert(4, None)331Skills.skill[2].crewMemberSubTypes[4] = 4332Skills.skill[2].crewMemberSubTypes.insert(5, None)333Skills.skill[2].crewMemberSubTypes[5] = 5334Skills.skill[2].crewMemberTypes = []335Skills.skill[2].crewMemberTypes.insert(0, None)336Skills.skill[2].crewMemberTypes[0] = SpecializationEnum.PILOT337Skills.skill[2].group = SKILL_GROUP.COMMON338Skills.skill[2].icoPath = 'icons/skills/lobby/pilotFireDuration.dds'339Skills.skill[2].id = 201340Skills.skill[2].infotipsIcoPath = 'icons/skills/infotips/pilotFireDuration.dds'341Skills.skill[2].localizeTag = 'PILOT_FIREDURATION'342Skills.skill[2].mods = []343Skills.skill[2].mods.insert(0, None)344Skills.skill[2].mods[0] = Dummy()345Skills.skill[2].mods[0].states = Dummy()346Skills.skill[2].mods[0].states.crit = 0.8347Skills.skill[2].mods[0].states.damaged = 0.8348Skills.skill[2].mods[0].states.good = 0.8349Skills.skill[2].mods[0].type = ModsTypeEnum.FIRE_DAMAGE_K350Skills.skill[2].mods.insert(1, None)351Skills.skill[2].mods[1] = Dummy()352Skills.skill[2].mods[1].states = Dummy()353Skills.skill[2].mods[1].states.crit = 1.2354Skills.skill[2].mods[1].states.damaged = 1.2355Skills.skill[2].mods[1].states.good = 1.2356Skills.skill[2].mods[1].type = ModsTypeEnum.FIRE_DURATION357Skills.skill[2].order = 0358Skills.skill[2].smallIcoPath = 'icons/skills/lobby/pilotFireDuration_Mini.dds'359Skills.skill[2].uiIndex = 201360Skills.skill.insert(3, None)361Skills.skill[3] = Dummy()362Skills.skill[3].bindForPlanes = []363Skills.skill[3].cost = 2364Skills.skill[3].crewMemberSubTypes = []365Skills.skill[3].crewMemberSubTypes.insert(0, None)366Skills.skill[3].crewMemberSubTypes[0] = 0367Skills.skill[3].crewMemberSubTypes.insert(1, None)368Skills.skill[3].crewMemberSubTypes[1] = 1369Skills.skill[3].crewMemberSubTypes.insert(2, None)370Skills.skill[3].crewMemberSubTypes[2] = 2371Skills.skill[3].crewMemberSubTypes.insert(3, None)372Skills.skill[3].crewMemberSubTypes[3] = 3373Skills.skill[3].crewMemberSubTypes.insert(4, None)374Skills.skill[3].crewMemberSubTypes[4] = 4375Skills.skill[3].crewMemberSubTypes.insert(5, None)376Skills.skill[3].crewMemberSubTypes[5] = 5377Skills.skill[3].crewMemberTypes = []378Skills.skill[3].crewMemberTypes.insert(0, None)379Skills.skill[3].crewMemberTypes[0] = SpecializationEnum.PILOT380Skills.skill[3].group = SKILL_GROUP.COMMON381Skills.skill[3].icoPath = 'icons/skills/lobby/pilotBattleTried.dds'382Skills.skill[3].id = 202383Skills.skill[3].infotipsIcoPath = 'icons/skills/infotips/pilotBattleTried.dds'384Skills.skill[3].localizeTag = 'PILOT_BATTLETRIED'385Skills.skill[3].mods = []386Skills.skill[3].mods.insert(0, None)387Skills.skill[3].mods[0] = Dummy()388Skills.skill[3].mods[0].states = Dummy()389Skills.skill[3].mods[0].states.crit = 0.8390Skills.skill[3].mods[0].states.damaged = 0.8391Skills.skill[3].mods[0].states.good = 0.8392Skills.skill[3].mods[0].type = ModsTypeEnum.CRIT_WEAKNESS_PILOT393Skills.skill[3].mods.insert(1, None)394Skills.skill[3].mods[1] = Dummy()395Skills.skill[3].mods[1].states = Dummy()396Skills.skill[3].mods[1].states.crit = 1.25397Skills.skill[3].mods[1].states.damaged = 1.25398Skills.skill[3].mods[1].states.good = 1.25399Skills.skill[3].mods[1].type = ModsTypeEnum.DAMAGE_AGILITY400Skills.skill[3].order = 2401Skills.skill[3].smallIcoPath = 'icons/skills/lobby/pilotBattleTried_Mini.dds'402Skills.skill[3].uiIndex = 203403Skills.skill.insert(4, None)404Skills.skill[4] = Dummy()405Skills.skill[4].bindForPlanes = []406Skills.skill[4].cost = 2407Skills.skill[4].crewMemberSubTypes = []408Skills.skill[4].crewMemberSubTypes.insert(0, None)409Skills.skill[4].crewMemberSubTypes[0] = 0410Skills.skill[4].crewMemberSubTypes.insert(1, None)411Skills.skill[4].crewMemberSubTypes[1] = 1412Skills.skill[4].crewMemberSubTypes.insert(2, None)413Skills.skill[4].crewMemberSubTypes[2] = 2414Skills.skill[4].crewMemberSubTypes.insert(3, None)415Skills.skill[4].crewMemberSubTypes[3] = 4416Skills.skill[4].crewMemberSubTypes.insert(4, None)417Skills.skill[4].crewMemberSubTypes[4] = 5418Skills.skill[4].crewMemberTypes = []419Skills.skill[4].crewMemberTypes.insert(0, None)420Skills.skill[4].crewMemberTypes[0] = SpecializationEnum.PILOT421Skills.skill[4].group = SKILL_GROUP.COMMON422Skills.skill[4].icoPath = 'icons/skills/lobby/pilotKnowEngine_1.dds'423Skills.skill[4].id = 203424Skills.skill[4].infotipsIcoPath = 'icons/skills/infotips/pilotKnowEngine_1.dds'425Skills.skill[4].localizeTag = 'PILOT_KNOWENGINE_I'426Skills.skill[4].mods = []427Skills.skill[4].mods.insert(0, None)428Skills.skill[4].mods[0] = Dummy()429Skills.skill[4].mods[0].states = Dummy()430Skills.skill[4].mods[0].states.crit = 1.03431Skills.skill[4].mods[0].states.damaged = 1.03432Skills.skill[4].mods[0].states.good = 1.03433Skills.skill[4].mods[0].type = ModsTypeEnum.ENGINE_POWER434Skills.skill[4].order = 3435Skills.skill[4].smallIcoPath = 'icons/skills/lobby/pilotKnowEngine_1_Mini.dds'436Skills.skill[4].uiIndex = 207437Skills.skill.insert(5, None)438Skills.skill[5] = Dummy()439Skills.skill[5].bindForPlanes = []440Skills.skill[5].cost = 2441Skills.skill[5].crewMemberSubTypes = []442Skills.skill[5].crewMemberSubTypes.insert(0, None)443Skills.skill[5].crewMemberSubTypes[0] = 0444Skills.skill[5].crewMemberSubTypes.insert(1, None)445Skills.skill[5].crewMemberSubTypes[1] = 1446Skills.skill[5].crewMemberSubTypes.insert(2, None)447Skills.skill[5].crewMemberSubTypes[2] = 2448Skills.skill[5].crewMemberSubTypes.insert(3, None)449Skills.skill[5].crewMemberSubTypes[3] = 3450Skills.skill[5].crewMemberSubTypes.insert(4, None)451Skills.skill[5].crewMemberSubTypes[4] = 4452Skills.skill[5].crewMemberSubTypes.insert(5, None)453Skills.skill[5].crewMemberSubTypes[5] = 5454Skills.skill[5].crewMemberTypes = []455Skills.skill[5].crewMemberTypes.insert(0, None)456Skills.skill[5].crewMemberTypes[0] = SpecializationEnum.PILOT457Skills.skill[5].group = SKILL_GROUP.COMMON458Skills.skill[5].icoPath = 'icons/skills/lobby/pilotMarksman_1.dds'459Skills.skill[5].id = 204460Skills.skill[5].infotipsIcoPath = 'icons/skills/infotips/pilotMarksman_1.dds'461Skills.skill[5].localizeTag = 'PILOT_MARKSMAN_I'462Skills.skill[5].mods = []463Skills.skill[5].mods.insert(0, None)464Skills.skill[5].mods[0] = Dummy()465Skills.skill[5].mods[0].states = Dummy()466Skills.skill[5].mods[0].states.crit = 1.05467Skills.skill[5].mods[0].states.damaged = 1.05468Skills.skill[5].mods[0].states.good = 1.05469Skills.skill[5].mods[0].type = ModsTypeEnum.WEAPONS_FOCUS470Skills.skill[5].order = 4471Skills.skill[5].smallIcoPath = 'icons/skills/lobby/pilotMarksman_1_Mini.dds'472Skills.skill[5].uiIndex = 209473Skills.skill.insert(6, None)474Skills.skill[6] = Dummy()475Skills.skill[6].bindForPlanes = []476Skills.skill[6].cost = 1477Skills.skill[6].crewMemberSubTypes = []478Skills.skill[6].crewMemberSubTypes.insert(0, None)479Skills.skill[6].crewMemberSubTypes[0] = 0480Skills.skill[6].crewMemberSubTypes.insert(1, None)481Skills.skill[6].crewMemberSubTypes[1] = 2482Skills.skill[6].crewMemberSubTypes.insert(2, None)483Skills.skill[6].crewMemberSubTypes[2] = 3484Skills.skill[6].crewMemberSubTypes.insert(3, None)485Skills.skill[6].crewMemberSubTypes[3] = 4486Skills.skill[6].crewMemberSubTypes.insert(4, None)487Skills.skill[6].crewMemberSubTypes[4] = 5488Skills.skill[6].crewMemberTypes = []489Skills.skill[6].crewMemberTypes.insert(0, None)490Skills.skill[6].crewMemberTypes[0] = SpecializationEnum.PILOT491Skills.skill[6].group = SKILL_GROUP.COMMON492Skills.skill[6].icoPath = 'icons/skills/lobby/pilotSightRange.dds'493Skills.skill[6].id = 205494Skills.skill[6].infotipsIcoPath = 'icons/skills/infotips/pilotSightRange.dds'495Skills.skill[6].localizeTag = 'PILOT_SIGHTRANGE'496Skills.skill[6].mods = []497Skills.skill[6].mods.insert(0, None)498Skills.skill[6].mods[0] = Dummy()499Skills.skill[6].mods[0].states = Dummy()500Skills.skill[6].mods[0].states.crit = 1.1501Skills.skill[6].mods[0].states.damaged = 1.1502Skills.skill[6].mods[0].states.good = 1.1503Skills.skill[6].mods[0].type = ModsTypeEnum.SIGHT_RANGE_PILOT504Skills.skill[6].order = 1505Skills.skill[6].smallIcoPath = 'icons/skills/lobby/pilotSightRange_Mini.dds'506Skills.skill[6].uiIndex = 202507Skills.skill.insert(7, None)508Skills.skill[7] = Dummy()509Skills.skill[7].bindForPlanes = []510Skills.skill[7].cost = 2511Skills.skill[7].crewMemberSubTypes = []512Skills.skill[7].crewMemberSubTypes.insert(0, None)513Skills.skill[7].crewMemberSubTypes[0] = 0514Skills.skill[7].crewMemberSubTypes.insert(1, None)515Skills.skill[7].crewMemberSubTypes[1] = 1516Skills.skill[7].crewMemberSubTypes.insert(2, None)517Skills.skill[7].crewMemberSubTypes[2] = 3518Skills.skill[7].crewMemberSubTypes.insert(3, None)519Skills.skill[7].crewMemberSubTypes[3] = 4520Skills.skill[7].crewMemberSubTypes.insert(4, None)521Skills.skill[7].crewMemberSubTypes[4] = 5522Skills.skill[7].crewMemberTypes = []523Skills.skill[7].crewMemberTypes.insert(0, None)524Skills.skill[7].crewMemberTypes[0] = SpecializationEnum.PILOT525Skills.skill[7].group = SKILL_GROUP.COMMON526Skills.skill[7].icoPath = 'icons/skills/lobby/pilotShellMaster.dds'527Skills.skill[7].id = 206528Skills.skill[7].infotipsIcoPath = 'icons/skills/infotips/pilotShellMaster.dds'529Skills.skill[7].localizeTag = 'PILOT_SHELLMASTER'530Skills.skill[7].mods = []531Skills.skill[7].mods.insert(0, None)532Skills.skill[7].mods[0] = Dummy()533Skills.skill[7].mods[0].states = Dummy()534Skills.skill[7].mods[0].states.crit = 1.15535Skills.skill[7].mods[0].states.damaged = 1.15536Skills.skill[7].mods[0].states.good = 1.15537Skills.skill[7].mods[0].type = ModsTypeEnum.ROCKET_DAMAGE538Skills.skill[7].mods.insert(1, None)539Skills.skill[7].mods[1] = Dummy()540Skills.skill[7].mods[1].states = Dummy()541Skills.skill[7].mods[1].states.crit = 1.15542Skills.skill[7].mods[1].states.damaged = 1.15543Skills.skill[7].mods[1].states.good = 1.15544Skills.skill[7].mods[1].type = ModsTypeEnum.ROCKET_SPLASH545Skills.skill[7].mods.insert(2, None)546Skills.skill[7].mods[2] = Dummy()547Skills.skill[7].mods[2].states = Dummy()548Skills.skill[7].mods[2].states.crit = 1.15549Skills.skill[7].mods[2].states.damaged = 1.15550Skills.skill[7].mods[2].states.good = 1.15551Skills.skill[7].mods[2].type = ModsTypeEnum.BOMB_DAMAGE552Skills.skill[7].mods.insert(3, None)553Skills.skill[7].mods[3] = Dummy()554Skills.skill[7].mods[3].states = Dummy()555Skills.skill[7].mods[3].states.crit = 1.15556Skills.skill[7].mods[3].states.damaged = 1.15557Skills.skill[7].mods[3].states.good = 1.15558Skills.skill[7].mods[3].type = ModsTypeEnum.BOMB_SPLASH559Skills.skill[7].order = 5560Skills.skill[7].smallIcoPath = 'icons/skills/lobby/pilotShellMaster_Mini.dds'561Skills.skill[7].uiIndex = 211562Skills.skill.insert(8, None)563Skills.skill[8] = Dummy()564Skills.skill[8].bindForPlanes = []565Skills.skill[8].cost = 3566Skills.skill[8].crewMemberSubTypes = []567Skills.skill[8].crewMemberSubTypes.insert(0, None)568Skills.skill[8].crewMemberSubTypes[0] = 0569Skills.skill[8].crewMemberSubTypes.insert(1, None)570Skills.skill[8].crewMemberSubTypes[1] = 1571Skills.skill[8].crewMemberSubTypes.insert(2, None)572Skills.skill[8].crewMemberSubTypes[2] = 2573Skills.skill[8].crewMemberSubTypes.insert(3, None)574Skills.skill[8].crewMemberSubTypes[3] = 4575Skills.skill[8].crewMemberSubTypes.insert(4, None)576Skills.skill[8].crewMemberSubTypes[4] = 5577Skills.skill[8].crewMemberTypes = []578Skills.skill[8].crewMemberTypes.insert(0, None)579Skills.skill[8].crewMemberTypes[0] = SpecializationEnum.PILOT580Skills.skill[8].dependedFrom = 203581Skills.skill[8].group = SKILL_GROUP.IMPROVED582Skills.skill[8].icoPath = 'icons/skills/lobby/pilotKnowEngine_2.dds'583Skills.skill[8].id = 207584Skills.skill[8].infotipsIcoPath = 'icons/skills/infotips/pilotKnowEngine_2.dds'585Skills.skill[8].localizeTag = 'PILOT_KNOWENGINE_II'586Skills.skill[8].mods = []587Skills.skill[8].mods.insert(0, None)588Skills.skill[8].mods[0] = Dummy()589Skills.skill[8].mods[0].states = Dummy()590Skills.skill[8].mods[0].states.crit = 1.02591Skills.skill[8].mods[0].states.damaged = 1.02592Skills.skill[8].mods[0].states.good = 1.02593Skills.skill[8].mods[0].type = ModsTypeEnum.ENGINE_POWER594Skills.skill[8].mods.insert(1, None)595Skills.skill[8].mods[1] = Dummy()596Skills.skill[8].mods[1].states = Dummy()597Skills.skill[8].mods[1].states.crit = 1.02598Skills.skill[8].mods[1].states.damaged = 1.02599Skills.skill[8].mods[1].states.good = 1.02600Skills.skill[8].mods[1].type = ModsTypeEnum.MAX_SPEED601Skills.skill[8].order = 3602Skills.skill[8].smallIcoPath = 'icons/skills/lobby/pilotKnowEngine_2_Mini.dds'603Skills.skill[8].uiIndex = 208604Skills.skill.insert(9, None)605Skills.skill[9] = Dummy()606Skills.skill[9].bindForPlanes = []607Skills.skill[9].cost = 2608Skills.skill[9].crewMemberSubTypes = []609Skills.skill[9].crewMemberSubTypes.insert(0, None)610Skills.skill[9].crewMemberSubTypes[0] = 0611Skills.skill[9].crewMemberSubTypes.insert(1, None)612Skills.skill[9].crewMemberSubTypes[1] = 1613Skills.skill[9].crewMemberSubTypes.insert(2, None)614Skills.skill[9].crewMemberSubTypes[2] = 2615Skills.skill[9].crewMemberSubTypes.insert(3, None)616Skills.skill[9].crewMemberSubTypes[3] = 3617Skills.skill[9].crewMemberSubTypes.insert(4, None)618Skills.skill[9].crewMemberSubTypes[4] = 4619Skills.skill[9].crewMemberSubTypes.insert(5, None)620Skills.skill[9].crewMemberSubTypes[5] = 5621Skills.skill[9].crewMemberTypes = []622Skills.skill[9].crewMemberTypes.insert(0, None)623Skills.skill[9].crewMemberTypes[0] = SpecializationEnum.PILOT624Skills.skill[9].group = SKILL_GROUP.IMPROVED625Skills.skill[9].icoPath = 'icons/skills/lobby/pilotPilotage.dds'626Skills.skill[9].id = 208627Skills.skill[9].infotipsIcoPath = 'icons/skills/infotips/pilotPilotage.dds'628Skills.skill[9].localizeTag = 'PILOT_PILOTAGE'629Skills.skill[9].mods = []630Skills.skill[9].mods.insert(0, None)631Skills.skill[9].mods[0] = Dummy()632Skills.skill[9].mods[0].states = Dummy()633Skills.skill[9].mods[0].states.crit = 1.005634Skills.skill[9].mods[0].states.damaged = 1.005635Skills.skill[9].mods[0].states.good = 1.005636Skills.skill[9].mods[0].type = ModsTypeEnum.PITCH_MAX_SPEED_CFG637Skills.skill[9].mods.insert(1, None)638Skills.skill[9].mods[1] = Dummy()639Skills.skill[9].mods[1].states = Dummy()640Skills.skill[9].mods[1].states.crit = 1.02641Skills.skill[9].mods[1].states.damaged = 1.02642Skills.skill[9].mods[1].states.good = 1.02643Skills.skill[9].mods[1].type = ModsTypeEnum.ROLL_MAX_SPEED_CFG644Skills.skill[9].mods.insert(2, None)645Skills.skill[9].mods[2] = Dummy()646Skills.skill[9].mods[2].states = Dummy()647Skills.skill[9].mods[2].states.crit = 1.02648Skills.skill[9].mods[2].states.damaged = 1.02649Skills.skill[9].mods[2].states.good = 1.02650Skills.skill[9].mods[2].type = ModsTypeEnum.YAW_MAX_SPEED_CFG651Skills.skill[9].order = 0652Skills.skill[9].smallIcoPath = 'icons/skills/lobby/pilotPilotage_Mini.dds'653Skills.skill[9].uiIndex = 204654Skills.skill.insert(10, None)655Skills.skill[10] = Dummy()656Skills.skill[10].bindForPlanes = []657Skills.skill[10].cost = 3658Skills.skill[10].crewMemberSubTypes = []659Skills.skill[10].crewMemberSubTypes.insert(0, None)660Skills.skill[10].crewMemberSubTypes[0] = 0661Skills.skill[10].crewMemberSubTypes.insert(1, None)662Skills.skill[10].crewMemberSubTypes[1] = 1663Skills.skill[10].crewMemberSubTypes.insert(2, None)664Skills.skill[10].crewMemberSubTypes[2] = 2665Skills.skill[10].crewMemberSubTypes.insert(3, None)666Skills.skill[10].crewMemberSubTypes[3] = 3667Skills.skill[10].crewMemberSubTypes.insert(4, None)668Skills.skill[10].crewMemberSubTypes[4] = 4669Skills.skill[10].crewMemberSubTypes.insert(5, None)670Skills.skill[10].crewMemberSubTypes[5] = 5671Skills.skill[10].crewMemberTypes = []672Skills.skill[10].crewMemberTypes.insert(0, None)673Skills.skill[10].crewMemberTypes[0] = SpecializationEnum.PILOT674Skills.skill[10].dependedFrom = 204675Skills.skill[10].group = SKILL_GROUP.IMPROVED676Skills.skill[10].icoPath = 'icons/skills/lobby/pilotMarksman_2.dds'677Skills.skill[10].id = 209678Skills.skill[10].infotipsIcoPath = 'icons/skills/infotips/pilotMarksman_2.dds'679Skills.skill[10].localizeTag = 'PILOT_MARKSMAN_II'680Skills.skill[10].mods = []681Skills.skill[10].mods.insert(0, None)682Skills.skill[10].mods[0] = Dummy()683Skills.skill[10].mods[0].states = Dummy()684Skills.skill[10].mods[0].states.crit = 1.05685Skills.skill[10].mods[0].states.damaged = 1.05686Skills.skill[10].mods[0].states.good = 1.05687Skills.skill[10].mods[0].type = ModsTypeEnum.WEAPONS_FOCUS688Skills.skill[10].mods.insert(1, None)689Skills.skill[10].mods[1] = Dummy()690Skills.skill[10].mods[1].states = Dummy()691Skills.skill[10].mods[1].states.crit = 1.1692Skills.skill[10].mods[1].states.damaged = 1.1693Skills.skill[10].mods[1].states.good = 1.1694Skills.skill[10].mods[1].type = ModsTypeEnum.AUTOAIM_ANGLE695Skills.skill[10].order = 4696Skills.skill[10].smallIcoPath = 'icons/skills/lobby/pilotMarksman_2_Mini.dds'697Skills.skill[10].uiIndex = 210698Skills.skill.insert(11, None)699Skills.skill[11] = Dummy()700Skills.skill[11].bindForPlanes = []701Skills.skill[11].cost = 2702Skills.skill[11].crewMemberSubTypes = []703Skills.skill[11].crewMemberSubTypes.insert(0, None)704Skills.skill[11].crewMemberSubTypes[0] = 0705Skills.skill[11].crewMemberSubTypes.insert(1, None)706Skills.skill[11].crewMemberSubTypes[1] = 1707Skills.skill[11].crewMemberSubTypes.insert(2, None)708Skills.skill[11].crewMemberSubTypes[2] = 2709Skills.skill[11].crewMemberSubTypes.insert(3, None)710Skills.skill[11].crewMemberSubTypes[3] = 3711Skills.skill[11].crewMemberSubTypes.insert(4, None)712Skills.skill[11].crewMemberSubTypes[4] = 4713Skills.skill[11].crewMemberSubTypes.insert(5, None)714Skills.skill[11].crewMemberSubTypes[5] = 5715Skills.skill[11].crewMemberTypes = []716Skills.skill[11].crewMemberTypes.insert(0, None)717Skills.skill[11].crewMemberTypes[0] = SpecializationEnum.PILOT718Skills.skill[11].group = SKILL_GROUP.IMPROVED719Skills.skill[11].icoPath = 'icons/skills/lobby/pilotRocketKiller.dds'720Skills.skill[11].id = 210721Skills.skill[11].infotipsIcoPath = 'icons/skills/infotips/pilotRocketKiller.dds'722Skills.skill[11].localizeTag = 'PILOT_ROCKETKILLER'723Skills.skill[11].mods = []724Skills.skill[11].mods.insert(0, None)725Skills.skill[11].mods[0] = Dummy()726Skills.skill[11].mods[0].states = Dummy()727Skills.skill[11].mods[0].states.crit = 1.5728Skills.skill[11].mods[0].states.damaged = 1.5729Skills.skill[11].mods[0].states.good = 1.5730Skills.skill[11].mods[0].type = ModsTypeEnum.ACTIVATE_ROCKET_DETONATOR731Skills.skill[11].order = 5732Skills.skill[11].smallIcoPath = 'icons/skills/lobby/pilotRocketKiller_Mini.dds'733Skills.skill[11].uiIndex = 212734Skills.skill.insert(12, None)735Skills.skill[12] = Dummy()736Skills.skill[12].bindForPlanes = []737Skills.skill[12].cost = 2738Skills.skill[12].crewMemberSubTypes = []739Skills.skill[12].crewMemberSubTypes.insert(0, None)740Skills.skill[12].crewMemberSubTypes[0] = 0741Skills.skill[12].crewMemberSubTypes.insert(1, None)742Skills.skill[12].crewMemberSubTypes[1] = 1743Skills.skill[12].crewMemberSubTypes.insert(2, None)744Skills.skill[12].crewMemberSubTypes[2] = 2745Skills.skill[12].crewMemberSubTypes.insert(3, None)746Skills.skill[12].crewMemberSubTypes[3] = 3747Skills.skill[12].crewMemberSubTypes.insert(4, None)748Skills.skill[12].crewMemberSubTypes[4] = 4749Skills.skill[12].crewMemberSubTypes.insert(5, None)750Skills.skill[12].crewMemberSubTypes[5] = 5751Skills.skill[12].crewMemberTypes = []752Skills.skill[12].crewMemberTypes.insert(0, None)753Skills.skill[12].crewMemberTypes[0] = SpecializationEnum.PILOT754Skills.skill[12].group = SKILL_GROUP.IMPROVED755Skills.skill[12].icoPath = 'icons/skills/lobby/pilotEquipFlight.dds'756Skills.skill[12].id = 211757Skills.skill[12].infotipsIcoPath = 'icons/skills/infotips/pilotEquipFlight.dds'758Skills.skill[12].localizeTag = 'PILOT_EQUIP_FLIGHT'759Skills.skill[12].mods = []760Skills.skill[12].mods.insert(0, None)761Skills.skill[12].mods[0] = Dummy()762Skills.skill[12].mods[0].relation = Dummy()763Skills.skill[12].mods[0].relation.type = []764Skills.skill[12].mods[0].relation.type.insert(0, None)765Skills.skill[12].mods[0].relation.type[0] = ModsTypeEnum.ENGINE_POWER766Skills.skill[12].mods[0].relation.type.insert(1, None)767Skills.skill[12].mods[0].relation.type[1] = ModsTypeEnum.MAX_SPEED768Skills.skill[12].mods[0].relation.type.insert(2, None)769Skills.skill[12].mods[0].relation.type[2] = ModsTypeEnum.PITCH_MAX_SPEED_CFG770Skills.skill[12].mods[0].relation.type.insert(3, None)771Skills.skill[12].mods[0].relation.type[3] = ModsTypeEnum.ROLL_MAX_SPEED_CFG772Skills.skill[12].mods[0].relation.type.insert(4, None)773Skills.skill[12].mods[0].relation.type[4] = ModsTypeEnum.YAW_MAX_SPEED_CFG774Skills.skill[12].mods[0].states = Dummy()775Skills.skill[12].mods[0].states.crit = 1.4776Skills.skill[12].mods[0].states.damaged = 1.4777Skills.skill[12].mods[0].states.good = 1.4778Skills.skill[12].mods[0].type = ModsTypeEnum.EQUIPMENT_EFFECT779Skills.skill[12].order = 1780Skills.skill[12].smallIcoPath = 'icons/skills/lobby/pilotEquipFlight_Mini.dds'781Skills.skill[12].uiIndex = 205782Skills.skill.insert(13, None)783Skills.skill[13] = Dummy()784Skills.skill[13].bindForPlanes = []785Skills.skill[13].cost = 2786Skills.skill[13].crewMemberSubTypes = []787Skills.skill[13].crewMemberSubTypes.insert(0, None)788Skills.skill[13].crewMemberSubTypes[0] = 0789Skills.skill[13].crewMemberSubTypes.insert(1, None)790Skills.skill[13].crewMemberSubTypes[1] = 1791Skills.skill[13].crewMemberSubTypes.insert(2, None)792Skills.skill[13].crewMemberSubTypes[2] = 2793Skills.skill[13].crewMemberSubTypes.insert(3, None)794Skills.skill[13].crewMemberSubTypes[3] = 3795Skills.skill[13].crewMemberTypes = []796Skills.skill[13].crewMemberTypes.insert(0, None)797Skills.skill[13].crewMemberTypes[0] = SpecializationEnum.PILOT798Skills.skill[13].group = SKILL_GROUP.IMPROVED799Skills.skill[13].icoPath = 'icons/skills/lobby/pilotEquipArmor.dds'800Skills.skill[13].id = 212801Skills.skill[13].infotipsIcoPath = 'icons/skills/infotips/pilotEquipArmor.dds'802Skills.skill[13].localizeTag = 'PILOT_EQUIP_ARMOR'803Skills.skill[13].mods = []804Skills.skill[13].mods.insert(0, None)805Skills.skill[13].mods[0] = Dummy()806Skills.skill[13].mods[0].relation = Dummy()807Skills.skill[13].mods[0].relation.type = []808Skills.skill[13].mods[0].relation.type.insert(0, None)809Skills.skill[13].mods[0].relation.type[0] = ModsTypeEnum.MAIN_HP810Skills.skill[13].mods[0].relation.type.insert(1, None)811Skills.skill[13].mods[0].relation.type[1] = ModsTypeEnum.SYSTEM_HP812Skills.skill[13].mods[0].relation.type.insert(2, None)813Skills.skill[13].mods[0].relation.type[2] = ModsTypeEnum.VITALS_ARMOR814Skills.skill[13].mods[0].relation.type.insert(3, None)815Skills.skill[13].mods[0].relation.type[3] = ModsTypeEnum.AA_PLANE_DAMAGE_K816Skills.skill[13].mods[0].states = Dummy()817Skills.skill[13].mods[0].states.crit = 1.4818Skills.skill[13].mods[0].states.damaged = 1.4819Skills.skill[13].mods[0].states.good = 1.4820Skills.skill[13].mods[0].type = ModsTypeEnum.EQUIPMENT_EFFECT821Skills.skill[13].order = 2822Skills.skill[13].smallIcoPath = 'icons/skills/lobby/pilotEquipArmor_Mini.dds'823Skills.skill[13].uiIndex = 206824Skills.skill.insert(14, None)825Skills.skill[14] = Dummy()826Skills.skill[14].activation = Dummy()827Skills.skill[14].activation.disableEvent = Dummy()828Skills.skill[14].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_FIREMANUVER_END829Skills.skill[14].activation.enableEvent = Dummy()830Skills.skill[14].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_FIREMANUVER_START831Skills.skill[14].bindForPlanes = []832Skills.skill[14].cost = 1833Skills.skill[14].crewMemberSubTypes = []834Skills.skill[14].crewMemberSubTypes.insert(0, None)835Skills.skill[14].crewMemberSubTypes[0] = 0836Skills.skill[14].crewMemberSubTypes.insert(1, None)837Skills.skill[14].crewMemberSubTypes[1] = 1838Skills.skill[14].crewMemberSubTypes.insert(2, None)839Skills.skill[14].crewMemberSubTypes[2] = 2840Skills.skill[14].crewMemberSubTypes.insert(3, None)841Skills.skill[14].crewMemberSubTypes[3] = 3842Skills.skill[14].crewMemberSubTypes.insert(4, None)843Skills.skill[14].crewMemberSubTypes[4] = 4844Skills.skill[14].crewMemberSubTypes.insert(5, None)845Skills.skill[14].crewMemberSubTypes[5] = 5846Skills.skill[14].crewMemberTypes = []847Skills.skill[14].crewMemberTypes.insert(0, None)848Skills.skill[14].crewMemberTypes[0] = SpecializationEnum.PILOT849Skills.skill[14].group = SKILL_GROUP.UNIQUE850Skills.skill[14].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSFireManuver_active.dds'851Skills.skill[14].icoHudPath = 'icons/hud/aircraft/skills/pilotSFireManuver.dds'852Skills.skill[14].icoPath = 'icons/skills/lobby/pilotSFireManuver.dds'853Skills.skill[14].id = 213854Skills.skill[14].infotipsIcoPath = 'icons/skills/infotips/pilotSFireManuver.dds'855Skills.skill[14].localizeTag = 'PILOT_S_FIREMANUVER'856Skills.skill[14].mods = []857Skills.skill[14].mods.insert(0, None)858Skills.skill[14].mods[0] = Dummy()859Skills.skill[14].mods[0].states = Dummy()860Skills.skill[14].mods[0].states.crit = 1.75861Skills.skill[14].mods[0].states.damaged = 1.75862Skills.skill[14].mods[0].states.good = 1.75863Skills.skill[14].mods[0].type = ModsTypeEnum.FIRE_DURATION864Skills.skill[14].order = 0865Skills.skill[14].smallIcoPath = 'icons/skills/lobby/pilotSFireManuver_Mini.dds'866Skills.skill[14].uiIndex = 213867Skills.skill.insert(15, None)868Skills.skill[15] = Dummy()869Skills.skill[15].activation = Dummy()870Skills.skill[15].activation.disableEvent = Dummy()871Skills.skill[15].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_CRUISEFLIGHT_END872Skills.skill[15].activation.enableEvent = Dummy()873Skills.skill[15].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_CRUISEFLIGHT_START874Skills.skill[15].bindForPlanes = []875Skills.skill[15].cost = 2876Skills.skill[15].crewMemberSubTypes = []877Skills.skill[15].crewMemberSubTypes.insert(0, None)878Skills.skill[15].crewMemberSubTypes[0] = 0879Skills.skill[15].crewMemberSubTypes.insert(1, None)880Skills.skill[15].crewMemberSubTypes[1] = 1881Skills.skill[15].crewMemberSubTypes.insert(2, None)882Skills.skill[15].crewMemberSubTypes[2] = 2883Skills.skill[15].crewMemberSubTypes.insert(3, None)884Skills.skill[15].crewMemberSubTypes[3] = 3885Skills.skill[15].crewMemberSubTypes.insert(4, None)886Skills.skill[15].crewMemberSubTypes[4] = 4887Skills.skill[15].crewMemberSubTypes.insert(5, None)888Skills.skill[15].crewMemberSubTypes[5] = 5889Skills.skill[15].crewMemberTypes = []890Skills.skill[15].crewMemberTypes.insert(0, None)891Skills.skill[15].crewMemberTypes[0] = SpecializationEnum.PILOT892Skills.skill[15].group = SKILL_GROUP.UNIQUE893Skills.skill[15].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSCruiseFlight_active.dds'894Skills.skill[15].icoHudPath = 'icons/hud/aircraft/skills/pilotSCruiseFlight.dds'895Skills.skill[15].icoPath = 'icons/skills/lobby/pilotSCruiseFlight.dds'896Skills.skill[15].id = 214897Skills.skill[15].infotipsIcoPath = 'icons/skills/infotips/pilotSCruiseFlight.dds'898Skills.skill[15].localizeTag = 'PILOT_S_CRUISEFLIGHT'899Skills.skill[15].mods = []900Skills.skill[15].mods.insert(0, None)901Skills.skill[15].mods[0] = Dummy()902Skills.skill[15].mods[0].states = Dummy()903Skills.skill[15].mods[0].states.crit = 1.2904Skills.skill[15].mods[0].states.damaged = 1.2905Skills.skill[15].mods[0].states.good = 1.2906Skills.skill[15].mods[0].type = ModsTypeEnum.SIGHT_RANGE_PILOT907Skills.skill[15].mods.insert(1, None)908Skills.skill[15].mods[1] = Dummy()909Skills.skill[15].mods[1].states = Dummy()910Skills.skill[15].mods[1].states.crit = 1.03911Skills.skill[15].mods[1].states.damaged = 1.03912Skills.skill[15].mods[1].states.good = 1.03913Skills.skill[15].mods[1].type = ModsTypeEnum.ENGINE_POWER914Skills.skill[15].mods.insert(2, None)915Skills.skill[15].mods[2] = Dummy()916Skills.skill[15].mods[2].states = Dummy()917Skills.skill[15].mods[2].states.crit = 1.03918Skills.skill[15].mods[2].states.damaged = 1.03919Skills.skill[15].mods[2].states.good = 1.03920Skills.skill[15].mods[2].type = ModsTypeEnum.MAX_SPEED921Skills.skill[15].order = 1922Skills.skill[15].smallIcoPath = 'icons/skills/lobby/pilotSCruiseFlight_Mini.dds'923Skills.skill[15].uiIndex = 214924Skills.skill.insert(16, None)925Skills.skill[16] = Dummy()926Skills.skill[16].activation = Dummy()927Skills.skill[16].activation.disableEvent = Dummy()928Skills.skill[16].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_DIEHARD_END929Skills.skill[16].activation.enableEvent = Dummy()930Skills.skill[16].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_DIEHARD_START931Skills.skill[16].bindForPlanes = []932Skills.skill[16].cost = 3933Skills.skill[16].crewMemberSubTypes = []934Skills.skill[16].crewMemberSubTypes.insert(0, None)935Skills.skill[16].crewMemberSubTypes[0] = 0936Skills.skill[16].crewMemberSubTypes.insert(1, None)937Skills.skill[16].crewMemberSubTypes[1] = 1938Skills.skill[16].crewMemberSubTypes.insert(2, None)939Skills.skill[16].crewMemberSubTypes[2] = 2940Skills.skill[16].crewMemberSubTypes.insert(3, None)941Skills.skill[16].crewMemberSubTypes[3] = 3942Skills.skill[16].crewMemberSubTypes.insert(4, None)943Skills.skill[16].crewMemberSubTypes[4] = 4944Skills.skill[16].crewMemberTypes = []945Skills.skill[16].crewMemberTypes.insert(0, None)946Skills.skill[16].crewMemberTypes[0] = SpecializationEnum.PILOT947Skills.skill[16].group = SKILL_GROUP.UNIQUE948Skills.skill[16].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSDiehard_active.dds'949Skills.skill[16].icoHudPath = 'icons/hud/aircraft/skills/pilotSDiehard.dds'950Skills.skill[16].icoPath = 'icons/skills/lobby/pilotSDiehard.dds'951Skills.skill[16].id = 215952Skills.skill[16].infotipsIcoPath = 'icons/skills/infotips/pilotSDiehard.dds'953Skills.skill[16].localizeTag = 'PILOT_S_DIEHARD'954Skills.skill[16].mods = []955Skills.skill[16].mods.insert(0, None)956Skills.skill[16].mods[0] = Dummy()957Skills.skill[16].mods[0].states = Dummy()958Skills.skill[16].mods[0].states.crit = 1.0959Skills.skill[16].mods[0].states.damaged = 1.0960Skills.skill[16].mods[0].states.good = 1.0961Skills.skill[16].mods[0].type = ModsTypeEnum.HP_RESTORE962Skills.skill[16].mods.insert(1, None)963Skills.skill[16].mods[1] = Dummy()964Skills.skill[16].mods[1].states = Dummy()965Skills.skill[16].mods[1].states.crit = 1.0966Skills.skill[16].mods[1].states.damaged = 1.0967Skills.skill[16].mods[1].states.good = 1.0968Skills.skill[16].mods[1].type = ModsTypeEnum.FIRE_EXTINGUISH_MANUAL969Skills.skill[16].mods.insert(2, None)970Skills.skill[16].mods[2] = Dummy()971Skills.skill[16].mods[2].states = Dummy()972Skills.skill[16].mods[2].states.crit = 1.0973Skills.skill[16].mods[2].states.damaged = 1.0974Skills.skill[16].mods[2].states.good = 1.0975Skills.skill[16].mods[2].type = ModsTypeEnum.FIX_TAIL_AND_WINGS976Skills.skill[16].mods.insert(3, None)977Skills.skill[16].mods[3] = Dummy()978Skills.skill[16].mods[3].states = Dummy()979Skills.skill[16].mods[3].states.crit = 1.0980Skills.skill[16].mods[3].states.damaged = 1.0981Skills.skill[16].mods[3].states.good = 1.0982Skills.skill[16].mods[3].type = ModsTypeEnum.ENGINE_RESTORE983Skills.skill[16].mods.insert(4, None)984Skills.skill[16].mods[4] = Dummy()985Skills.skill[16].mods[4].states = Dummy()986Skills.skill[16].mods[4].states.crit = 0.5987Skills.skill[16].mods[4].states.damaged = 0.5988Skills.skill[16].mods[4].states.good = 0.5989Skills.skill[16].mods[4].type = ModsTypeEnum.CLEAR_GUNS_OVERHEAT990Skills.skill[16].mods.insert(5, None)991Skills.skill[16].mods[5] = Dummy()992Skills.skill[16].mods[5].states = Dummy()993Skills.skill[16].mods[5].states.crit = 0.33994Skills.skill[16].mods[5].states.damaged = 0.33995Skills.skill[16].mods[5].states.good = 0.33996Skills.skill[16].mods[5].type = ModsTypeEnum.CLEAR_ENGINE_OVERHEAT997Skills.skill[16].mods.insert(6, None)998Skills.skill[16].mods[6] = Dummy()999Skills.skill[16].mods[6].states = Dummy()1000Skills.skill[16].mods[6].states.crit = 1.051001Skills.skill[16].mods[6].states.damaged = 1.051002Skills.skill[16].mods[6].states.good = 1.051003Skills.skill[16].mods[6].type = ModsTypeEnum.ENGINE_POWER1004Skills.skill[16].mods.insert(7, None)1005Skills.skill[16].mods[7] = Dummy()1006Skills.skill[16].mods[7].states = Dummy()1007Skills.skill[16].mods[7].states.crit = 1.021008Skills.skill[16].mods[7].states.damaged = 1.021009Skills.skill[16].mods[7].states.good = 1.021010Skills.skill[16].mods[7].type = ModsTypeEnum.PITCH_MAX_SPEED_CFG1011Skills.skill[16].mods.insert(8, None)1012Skills.skill[16].mods[8] = Dummy()1013Skills.skill[16].mods[8].states = Dummy()1014Skills.skill[16].mods[8].states.crit = 1.11015Skills.skill[16].mods[8].states.damaged = 1.11016Skills.skill[16].mods[8].states.good = 1.11017Skills.skill[16].mods[8].type = ModsTypeEnum.ROLL_MAX_SPEED_CFG1018Skills.skill[16].mods.insert(9, None)1019Skills.skill[16].mods[9] = Dummy()1020Skills.skill[16].mods[9].states = Dummy()1021Skills.skill[16].mods[9].states.crit = 1.021022Skills.skill[16].mods[9].states.damaged = 1.021023Skills.skill[16].mods[9].states.good = 1.021024Skills.skill[16].mods[9].type = ModsTypeEnum.YAW_MAX_SPEED_CFG1025Skills.skill[16].order = 21026Skills.skill[16].smallIcoPath = 'icons/skills/lobby/pilotSDiehard_Mini.dds'1027Skills.skill[16].uiIndex = 2151028Skills.skill.insert(17, None)1029Skills.skill[17] = Dummy()1030Skills.skill[17].activation = Dummy()1031Skills.skill[17].activation.disableEvent = Dummy()1032Skills.skill[17].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BLOODLUST_END1033Skills.skill[17].activation.enableEvent = Dummy()1034Skills.skill[17].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BLOODLUST_START1035Skills.skill[17].bindForPlanes = []1036Skills.skill[17].cost = 31037Skills.skill[17].crewMemberSubTypes = []1038Skills.skill[17].crewMemberSubTypes.insert(0, None)1039Skills.skill[17].crewMemberSubTypes[0] = 01040Skills.skill[17].crewMemberSubTypes.insert(1, None)1041Skills.skill[17].crewMemberSubTypes[1] = 21042Skills.skill[17].crewMemberSubTypes.insert(2, None)1043Skills.skill[17].crewMemberSubTypes[2] = 31044Skills.skill[17].crewMemberSubTypes.insert(3, None)1045Skills.skill[17].crewMemberSubTypes[3] = 41046Skills.skill[17].crewMemberSubTypes.insert(4, None)1047Skills.skill[17].crewMemberSubTypes[4] = 51048Skills.skill[17].crewMemberTypes = []1049Skills.skill[17].crewMemberTypes.insert(0, None)1050Skills.skill[17].crewMemberTypes[0] = SpecializationEnum.PILOT1051Skills.skill[17].group = SKILL_GROUP.UNIQUE1052Skills.skill[17].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSBloodlust_active.dds'1053Skills.skill[17].icoHudPath = 'icons/hud/aircraft/skills/pilotSBloodlust.dds'1054Skills.skill[17].icoPath = 'icons/skills/lobby/pilotSBloodlust.dds'1055Skills.skill[17].id = 2161056Skills.skill[17].infotipsIcoPath = 'icons/skills/infotips/pilotSBloodlust.dds'1057Skills.skill[17].localizeTag = 'PILOT_S_BLOODLUST'1058Skills.skill[17].mods = []1059Skills.skill[17].mods.insert(0, None)1060Skills.skill[17].mods[0] = Dummy()1061Skills.skill[17].mods[0].states = Dummy()1062Skills.skill[17].mods[0].states.crit = 0.251063Skills.skill[17].mods[0].states.damaged = 0.251064Skills.skill[17].mods[0].states.good = 0.251065Skills.skill[17].mods[0].type = ModsTypeEnum.CLEAR_GUNS_OVERHEAT1066Skills.skill[17].mods.insert(1, None)1067Skills.skill[17].mods[1] = Dummy()1068Skills.skill[17].mods[1].states = Dummy()1069Skills.skill[17].mods[1].states.crit = 1.11070Skills.skill[17].mods[1].states.damaged = 1.11071Skills.skill[17].mods[1].states.good = 1.11072Skills.skill[17].mods[1].type = ModsTypeEnum.AUTOAIM_ANGLE1073Skills.skill[17].mods.insert(2, None)1074Skills.skill[17].mods[2] = Dummy()1075Skills.skill[17].mods[2].states = Dummy()1076Skills.skill[17].mods[2].states.crit = 1.11077Skills.skill[17].mods[2].states.damaged = 1.11078Skills.skill[17].mods[2].states.good = 1.11079Skills.skill[17].mods[2].type = ModsTypeEnum.WEAPONS_FOCUS1080Skills.skill[17].order = 51081Skills.skill[17].smallIcoPath = 'icons/skills/lobby/pilotSBloodlust_Mini.dds'1082Skills.skill[17].uiIndex = 2181083Skills.skill.insert(18, None)1084Skills.skill[18] = Dummy()1085Skills.skill[18].activation = Dummy()1086Skills.skill[18].activation.disableEvent = Dummy()1087Skills.skill[18].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_EVASIONMANUVER_END1088Skills.skill[18].activation.enableEvent = Dummy()1089Skills.skill[18].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_EVASIONMANUVER_START1090Skills.skill[18].bindForPlanes = []1091Skills.skill[18].cost = 31092Skills.skill[18].crewMemberSubTypes = []1093Skills.skill[18].crewMemberSubTypes.insert(0, None)1094Skills.skill[18].crewMemberSubTypes[0] = 01095Skills.skill[18].crewMemberSubTypes.insert(1, None)1096Skills.skill[18].crewMemberSubTypes[1] = 11097Skills.skill[18].crewMemberSubTypes.insert(2, None)1098Skills.skill[18].crewMemberSubTypes[2] = 31099Skills.skill[18].crewMemberSubTypes.insert(3, None)1100Skills.skill[18].crewMemberSubTypes[3] = 41101Skills.skill[18].crewMemberSubTypes.insert(4, None)1102Skills.skill[18].crewMemberSubTypes[4] = 51103Skills.skill[18].crewMemberTypes = []1104Skills.skill[18].crewMemberTypes.insert(0, None)1105Skills.skill[18].crewMemberTypes[0] = SpecializationEnum.PILOT1106Skills.skill[18].group = SKILL_GROUP.UNIQUE1107Skills.skill[18].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSEvasionManuver_active.dds'1108Skills.skill[18].icoHudPath = 'icons/hud/aircraft/skills/pilotSEvasionManuver.dds'1109Skills.skill[18].icoPath = 'icons/skills/lobby/pilotSEvasionManuver.dds'1110Skills.skill[18].id = 2171111Skills.skill[18].infotipsIcoPath = 'icons/skills/infotips/pilotSEvasionManuver.dds'1112Skills.skill[18].localizeTag = 'PILOT_S_EVASIONMANUVER'1113Skills.skill[18].mods = []1114Skills.skill[18].mods.insert(0, None)1115Skills.skill[18].mods[0] = Dummy()1116Skills.skill[18].mods[0].states = Dummy()1117Skills.skill[18].mods[0].states.crit = 0.751118Skills.skill[18].mods[0].states.damaged = 0.751119Skills.skill[18].mods[0].states.good = 0.751120Skills.skill[18].mods[0].type = ModsTypeEnum.DAMAGE_K1121Skills.skill[18].mods.insert(1, None)1122Skills.skill[18].mods[1] = Dummy()1123Skills.skill[18].mods[1].states = Dummy()1124Skills.skill[18].mods[1].states.crit = 0.751125Skills.skill[18].mods[1].states.damaged = 0.751126Skills.skill[18].mods[1].states.good = 0.751127Skills.skill[18].mods[1].type = ModsTypeEnum.VITALS_ARMOR1128Skills.skill[18].mods.insert(2, None)1129Skills.skill[18].mods[2] = Dummy()1130Skills.skill[18].mods[2].states = Dummy()1131Skills.skill[18].mods[2].states.crit = 0.751132Skills.skill[18].mods[2].states.damaged = 0.751133Skills.skill[18].mods[2].states.good = 0.751134Skills.skill[18].mods[2].type = ModsTypeEnum.SYSTEM_HP1135Skills.skill[18].order = 31136Skills.skill[18].smallIcoPath = 'icons/skills/lobby/pilotSEvasionManuver_Mini.dds'1137Skills.skill[18].uiIndex = 2161138Skills.skill.insert(19, None)1139Skills.skill[19] = Dummy()1140Skills.skill[19].activation = Dummy()1141Skills.skill[19].activation.disableEvent = Dummy()1142Skills.skill[19].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_END1143Skills.skill[19].activation.enableEvent = Dummy()1144Skills.skill[19].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_START1145Skills.skill[19].bindForPlanes = []1146Skills.skill[19].cost = 31147Skills.skill[19].crewMemberSubTypes = []1148Skills.skill[19].crewMemberSubTypes.insert(0, None)1149Skills.skill[19].crewMemberSubTypes[0] = 01150Skills.skill[19].crewMemberSubTypes.insert(1, None)1151Skills.skill[19].crewMemberSubTypes[1] = 11152Skills.skill[19].crewMemberSubTypes.insert(2, None)1153Skills.skill[19].crewMemberSubTypes[2] = 21154Skills.skill[19].crewMemberSubTypes.insert(3, None)1155Skills.skill[19].crewMemberSubTypes[3] = 51156Skills.skill[19].crewMemberTypes = []1157Skills.skill[19].crewMemberTypes.insert(0, None)1158Skills.skill[19].crewMemberTypes[0] = SpecializationEnum.PILOT1159Skills.skill[19].group = SKILL_GROUP.UNIQUE1160Skills.skill[19].icoHudActivePath = 'icons/hud/aircraft/skills/pilotSBoomzoom_active.dds'1161Skills.skill[19].icoHudPath = 'icons/hud/aircraft/skills/pilotSBoomzoom.dds'1162Skills.skill[19].icoPath = 'icons/skills/lobby/pilotSBoomzoom.dds'1163Skills.skill[19].id = 2181164Skills.skill[19].infotipsIcoPath = 'icons/skills/infotips/pilotSBoomzoom.dds'1165Skills.skill[19].localizeTag = 'PILOT_S_BOOMZOOM'1166Skills.skill[19].mods = []1167Skills.skill[19].mods.insert(0, None)1168Skills.skill[19].mods[0] = Dummy()1169Skills.skill[19].mods[0].states = Dummy()1170Skills.skill[19].mods[0].states.crit = 1.51171Skills.skill[19].mods[0].states.damaged = 1.51172Skills.skill[19].mods[0].states.good = 1.51173Skills.skill[19].mods[0].type = ModsTypeEnum.GUNS_INFLICT_CRIT1174Skills.skill[19].mods.insert(1, None)1175Skills.skill[19].mods[1] = Dummy()1176Skills.skill[19].mods[1].states = Dummy()1177Skills.skill[19].mods[1].states.crit = 1.51178Skills.skill[19].mods[1].states.damaged = 1.51179Skills.skill[19].mods[1].states.good = 1.51180Skills.skill[19].mods[1].type = ModsTypeEnum.GUNS_INFLICT_FIRE1181Skills.skill[19].order = 41182Skills.skill[19].smallIcoPath = 'icons/skills/lobby/pilotSBoomzoom_Mini.dds'1183Skills.skill[19].uiIndex = 2171184Skills.skill.insert(20, None)1185Skills.skill[20] = Dummy()1186Skills.skill[20].activation = Dummy()1187Skills.skill[20].activation.disableEvent = Dummy()1188Skills.skill[20].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_END1189Skills.skill[20].activation.enableEvent = Dummy()1190Skills.skill[20].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_START1191Skills.skill[20].bindForPlanes = []1192Skills.skill[20].cost = 31193Skills.skill[20].crewMemberSubTypes = []1194Skills.skill[20].crewMemberSubTypes.insert(0, None)1195Skills.skill[20].crewMemberSubTypes[0] = 31196Skills.skill[20].crewMemberTypes = []1197Skills.skill[20].crewMemberTypes.insert(0, None)1198Skills.skill[20].crewMemberTypes[0] = SpecializationEnum.PILOT1199Skills.skill[20].group = SKILL_GROUP.UNIQUE1200Skills.skill[20].icoHudActivePath = 'icons/skills/hud/pilotSValkyrie_Active.dds'1201Skills.skill[20].icoHudPath = 'icons/hud/aircraft/skills/pilotSValkyrie.dds'1202Skills.skill[20].icoPath = 'icons/skills/lobby/pilotSValkyrie.dds'1203Skills.skill[20].id = 2191204Skills.skill[20].infotipsIcoPath = 'icons/skills/infotips/pilotSValkyrie.dds'1205Skills.skill[20].localizeTag = 'PILOT_VALKYRIE'1206Skills.skill[20].locked = true1207Skills.skill[20].mods = []1208Skills.skill[20].mods.insert(0, None)1209Skills.skill[20].mods[0] = Dummy()1210Skills.skill[20].mods[0].states = Dummy()1211Skills.skill[20].mods[0].states.crit = 2.01212Skills.skill[20].mods[0].states.damaged = 2.01213Skills.skill[20].mods[0].states.good = 2.01214Skills.skill[20].mods[0].type = ModsTypeEnum.ROCKET_DAMAGE1215Skills.skill[20].mods.insert(1, None)1216Skills.skill[20].mods[1] = Dummy()1217Skills.skill[20].mods[1].states = Dummy()1218Skills.skill[20].mods[1].states.crit = 2.01219Skills.skill[20].mods[1].states.damaged = 2.01220Skills.skill[20].mods[1].states.good = 2.01221Skills.skill[20].mods[1].type = ModsTypeEnum.BOMB_DAMAGE1222Skills.skill[20].order = 41223Skills.skill[20].smallIcoPath = 'icons/skills/lobby/pilotSValkyrie_Mini.dds'1224Skills.skill[20].uiIndex = 2171225Skills.skill.insert(21, None)1226Skills.skill[21] = Dummy()1227Skills.skill[21].bindForPlanes = []1228Skills.skill[21].cost = 11229Skills.skill[21].crewMemberSubTypes = []1230Skills.skill[21].crewMemberSubTypes.insert(0, None)1231Skills.skill[21].crewMemberSubTypes[0] = 11232Skills.skill[21].crewMemberTypes = []1233Skills.skill[21].crewMemberTypes.insert(0, None)1234Skills.skill[21].crewMemberTypes[0] = SpecializationEnum.PILOT1235Skills.skill[21].group = SKILL_GROUP.COMMON1236Skills.skill[21].icoPath = 'icons/skills/lobby/pilotBrightStar.dds'1237Skills.skill[21].id = 2201238Skills.skill[21].infotipsIcoPath = 'icons/skills/infotips/pilotBrightStar.dds'1239Skills.skill[21].localizeTag = 'PILOT_BRIGHT_STAR'1240Skills.skill[21].locked = true1241Skills.skill[21].mods = []1242Skills.skill[21].mods.insert(0, None)1243Skills.skill[21].mods[0] = Dummy()1244Skills.skill[21].mods[0].states = Dummy()1245Skills.skill[21].mods[0].states.crit = 1.41246Skills.skill[21].mods[0].states.damaged = 1.41247Skills.skill[21].mods[0].states.good = 1.41248Skills.skill[21].mods[0].type = ModsTypeEnum.SIGHT_RANGE_PILOT1249Skills.skill[21].mods.insert(1, None)1250Skills.skill[21].mods[1] = Dummy()1251Skills.skill[21].mods[1].states = Dummy()1252Skills.skill[21].mods[1].states.crit = 1.11253Skills.skill[21].mods[1].states.damaged = 1.11254Skills.skill[21].mods[1].states.good = 1.11255Skills.skill[21].mods[1].type = ModsTypeEnum.VISIBILITY_FACTOR_TO_ENEMY1256Skills.skill[21].order = 11257Skills.skill[21].smallIcoPath = 'icons/skills/lobby/pilotBrightStar_Mini.dds'1258Skills.skill[21].uiIndex = 2021259Skills.skill.insert(22, None)1260Skills.skill[22] = Dummy()1261Skills.skill[22].activation = Dummy()1262Skills.skill[22].activation.disableEvent = Dummy()1263Skills.skill[22].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_CELESTIAL_FURY_END1264Skills.skill[22].activation.enableEvent = Dummy()1265Skills.skill[22].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_CELESTIAL_FURY_START1266Skills.skill[22].bindForPlanes = []1267Skills.skill[22].cost = 31268Skills.skill[22].crewMemberSubTypes = []1269Skills.skill[22].crewMemberSubTypes.insert(0, None)1270Skills.skill[22].crewMemberSubTypes[0] = 11271Skills.skill[22].crewMemberTypes = []1272Skills.skill[22].crewMemberTypes.insert(0, None)1273Skills.skill[22].crewMemberTypes[0] = SpecializationEnum.PILOT1274Skills.skill[22].group = SKILL_GROUP.UNIQUE1275Skills.skill[22].icoHudActivePath = 'icons/skills/hud/pilotSSkyFury_Active.dds'1276Skills.skill[22].icoHudPath = 'icons/hud/aircraft/skills/pilotSSkyFury.dds'1277Skills.skill[22].icoPath = 'icons/skills/lobby/pilotSSkyFury.dds'1278Skills.skill[22].id = 2211279Skills.skill[22].infotipsIcoPath = 'icons/skills/infotips/pilotSSkyFury.dds'1280Skills.skill[22].localizeTag = 'PILOT_SKY_FURY'1281Skills.skill[22].locked = true1282Skills.skill[22].mods = []1283Skills.skill[22].mods.insert(0, None)1284Skills.skill[22].mods[0] = Dummy()1285Skills.skill[22].mods[0].states = Dummy()1286Skills.skill[22].mods[0].states.crit = 1.21287Skills.skill[22].mods[0].states.damaged = 1.21288Skills.skill[22].mods[0].states.good = 1.21289Skills.skill[22].mods[0].type = ModsTypeEnum.GUNS_INCFLICT_DAMAGE1290Skills.skill[22].mods.insert(1, None)1291Skills.skill[22].mods[1] = Dummy()1292Skills.skill[22].mods[1].states = Dummy()1293Skills.skill[22].mods[1].states.crit = 1.21294Skills.skill[22].mods[1].states.damaged = 1.21295Skills.skill[22].mods[1].states.good = 1.21296Skills.skill[22].mods[1].type = ModsTypeEnum.GUNS_INFLICT_CRIT1297Skills.skill[22].mods.insert(2, None)1298Skills.skill[22].mods[2] = Dummy()1299Skills.skill[22].mods[2].states = Dummy()1300Skills.skill[22].mods[2].states.crit = 1.21301Skills.skill[22].mods[2].states.damaged = 1.21302Skills.skill[22].mods[2].states.good = 1.21303Skills.skill[22].mods[2].type = ModsTypeEnum.GUNS_INFLICT_FIRE1304Skills.skill[22].order = 51305Skills.skill[22].smallIcoPath = 'icons/skills/lobby/pilotSSkyFury_Mini.dds'1306Skills.skill[22].uiIndex = 2181307Skills.skill.insert(23, None)1308Skills.skill[23] = Dummy()1309Skills.skill[23].bindForPlanes = []1310Skills.skill[23].cost = 21311Skills.skill[23].crewMemberSubTypes = []1312Skills.skill[23].crewMemberSubTypes.insert(0, None)1313Skills.skill[23].crewMemberSubTypes[0] = 31314Skills.skill[23].crewMemberTypes = []1315Skills.skill[23].crewMemberTypes.insert(0, None)1316Skills.skill[23].crewMemberTypes[0] = SpecializationEnum.PILOT1317Skills.skill[23].group = SKILL_GROUP.COMMON1318Skills.skill[23].icoPath = 'icons/skills/lobby/pilotFasterThanWind.dds'1319Skills.skill[23].id = 2221320Skills.skill[23].infotipsIcoPath = 'icons/skills/infotips/pilotFasterThanWind.dds'1321Skills.skill[23].localizeTag = 'PILOT_FASTER_THAN_WIND'1322Skills.skill[23].locked = true1323Skills.skill[23].mods = []1324Skills.skill[23].mods.insert(0, None)1325Skills.skill[23].mods[0] = Dummy()1326Skills.skill[23].mods[0].states = Dummy()1327Skills.skill[23].mods[0].states.crit = 1.021328Skills.skill[23].mods[0].states.damaged = 1.021329Skills.skill[23].mods[0].states.good = 1.021330Skills.skill[23].mods[0].type = ModsTypeEnum.ENGINE_POWER1331Skills.skill[23].mods.insert(1, None)1332Skills.skill[23].mods[1] = Dummy()1333Skills.skill[23].mods[1].states = Dummy()1334Skills.skill[23].mods[1].states.crit = 1.11335Skills.skill[23].mods[1].states.damaged = 1.11336Skills.skill[23].mods[1].states.good = 1.11337Skills.skill[23].mods[1].type = ModsTypeEnum.WEP_WORK_TIME1338Skills.skill[23].order = 31339Skills.skill[23].smallIcoPath = 'icons/skills/lobby/pilotFasterThanWind_Mini.dds'1340Skills.skill[23].uiIndex = 2071341Skills.skill.insert(24, None)1342Skills.skill[24] = Dummy()1343Skills.skill[24].bindForPlanes = []1344Skills.skill[24].cost = 21345Skills.skill[24].crewMemberSubTypes = []1346Skills.skill[24].crewMemberSubTypes.insert(0, None)1347Skills.skill[24].crewMemberSubTypes[0] = 21348Skills.skill[24].crewMemberTypes = []1349Skills.skill[24].crewMemberTypes.insert(0, None)1350Skills.skill[24].crewMemberTypes[0] = SpecializationEnum.PILOT1351Skills.skill[24].group = SKILL_GROUP.COMMON1352Skills.skill[24].icoPath = 'icons/skills/lobby/pilotExplosiveCharacter.dds'1353Skills.skill[24].id = 2231354Skills.skill[24].infotipsIcoPath = 'icons/skills/infotips/pilotExplosiveCharacter.dds'1355Skills.skill[24].localizeTag = 'PILOT_EXPLOSIVE_CHARACTER'1356Skills.skill[24].locked = true1357Skills.skill[24].mods = []1358Skills.skill[24].mods.insert(0, None)1359Skills.skill[24].mods[0] = Dummy()1360Skills.skill[24].mods[0].states = Dummy()1361Skills.skill[24].mods[0].states.crit = 1.151362Skills.skill[24].mods[0].states.damaged = 1.151363Skills.skill[24].mods[0].states.good = 1.151364Skills.skill[24].mods[0].type = ModsTypeEnum.ROCKET_DAMAGE1365Skills.skill[24].mods.insert(1, None)1366Skills.skill[24].mods[1] = Dummy()1367Skills.skill[24].mods[1].states = Dummy()1368Skills.skill[24].mods[1].states.crit = 1.151369Skills.skill[24].mods[1].states.damaged = 1.151370Skills.skill[24].mods[1].states.good = 1.151371Skills.skill[24].mods[1].type = ModsTypeEnum.ROCKET_SPLASH1372Skills.skill[24].mods.insert(2, None)1373Skills.skill[24].mods[2] = Dummy()1374Skills.skill[24].mods[2].states = Dummy()1375Skills.skill[24].mods[2].states.crit = 1.151376Skills.skill[24].mods[2].states.damaged = 1.151377Skills.skill[24].mods[2].states.good = 1.151378Skills.skill[24].mods[2].type = ModsTypeEnum.BOMB_DAMAGE1379Skills.skill[24].mods.insert(3, None)1380Skills.skill[24].mods[3] = Dummy()1381Skills.skill[24].mods[3].states = Dummy()1382Skills.skill[24].mods[3].states.crit = 1.151383Skills.skill[24].mods[3].states.damaged = 1.151384Skills.skill[24].mods[3].states.good = 1.151385Skills.skill[24].mods[3].type = ModsTypeEnum.BOMB_SPLASH1386Skills.skill[24].mods.insert(4, None)1387Skills.skill[24].mods[4] = Dummy()1388Skills.skill[24].mods[4].states = Dummy()1389Skills.skill[24].mods[4].states.crit = 1.11390Skills.skill[24].mods[4].states.damaged = 1.11391Skills.skill[24].mods[4].states.good = 1.11392Skills.skill[24].mods[4].type = ModsTypeEnum.EXPLOSIVE_CHARACTER1393Skills.skill[24].order = 51394Skills.skill[24].smallIcoPath = 'icons/skills/lobby/pilotExplosiveCharacter_Mini.dds'1395Skills.skill[24].uiIndex = 2111396Skills.skill.insert(25, None)1397Skills.skill[25] = Dummy()1398Skills.skill[25].activation = Dummy()1399Skills.skill[25].activation.disableEvent = Dummy()1400Skills.skill[25].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_HOT_CHICK_END1401Skills.skill[25].activation.enableEvent = Dummy()1402Skills.skill[25].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_HOT_CHICK_START1403Skills.skill[25].bindForPlanes = []1404Skills.skill[25].cost = 31405Skills.skill[25].crewMemberSubTypes = []1406Skills.skill[25].crewMemberSubTypes.insert(0, None)1407Skills.skill[25].crewMemberSubTypes[0] = 21408Skills.skill[25].crewMemberTypes = []1409Skills.skill[25].crewMemberTypes.insert(0, None)1410Skills.skill[25].crewMemberTypes[0] = SpecializationEnum.PILOT1411Skills.skill[25].group = SKILL_GROUP.UNIQUE1412Skills.skill[25].icoHudActivePath = 'icons/skills/hud/pilotSSomeLikeItHot_Active.dds'1413Skills.skill[25].icoHudPath = 'icons/hud/aircraft/skills/pilotSSomeLikeItHot.dds'1414Skills.skill[25].icoPath = 'icons/skills/lobby/pilotSSomeLikeItHot.dds'1415Skills.skill[25].id = 2241416Skills.skill[25].infotipsIcoPath = 'icons/skills/infotips/pilotSSomeLikeItHot.dds'1417Skills.skill[25].localizeTag = 'PILOT_SOME_LIKE_IT_HOT'1418Skills.skill[25].locked = true1419Skills.skill[25].mods = []1420Skills.skill[25].mods.insert(0, None)1421Skills.skill[25].mods[0] = Dummy()1422Skills.skill[25].mods[0].states = Dummy()1423Skills.skill[25].mods[0].states.crit = 100.01424Skills.skill[25].mods[0].states.damaged = 100.01425Skills.skill[25].mods[0].states.good = 100.01426Skills.skill[25].mods[0].type = ModsTypeEnum.TEAM_OBJ_GUNS_INFLICT_FIRE1427Skills.skill[25].order = 31428Skills.skill[25].smallIcoPath = 'icons/skills/lobby/pilotSSomeLikeItHot_Mini.dds'1429Skills.skill[25].uiIndex = 2161430Skills.skill.insert(26, None)1431Skills.skill[26] = Dummy()1432Skills.skill[26].bindForPlanes = []1433Skills.skill[26].cost = 31434Skills.skill[26].crewMemberSubTypes = []1435Skills.skill[26].crewMemberSubTypes.insert(0, None)1436Skills.skill[26].crewMemberSubTypes[0] = 31437Skills.skill[26].crewMemberTypes = []1438Skills.skill[26].crewMemberTypes.insert(0, None)1439Skills.skill[26].crewMemberTypes[0] = SpecializationEnum.PILOT1440Skills.skill[26].dependedFrom = 2191441Skills.skill[26].group = SKILL_GROUP.IMPROVED1442Skills.skill[26].icoPath = 'icons/skills/lobby/pilotKnowEngine_2.dds'1443Skills.skill[26].id = 2251444Skills.skill[26].infotipsIcoPath = 'icons/skills/infotips/pilotKnowEngine_2.dds'1445Skills.skill[26].localizeTag = 'PILOT_FTW_KNOWENGINE_II'1446Skills.skill[26].mods = []1447Skills.skill[26].mods.insert(0, None)1448Skills.skill[26].mods[0] = Dummy()1449Skills.skill[26].mods[0].states = Dummy()1450Skills.skill[26].mods[0].states.crit = 1.021451Skills.skill[26].mods[0].states.damaged = 1.021452Skills.skill[26].mods[0].states.good = 1.021453Skills.skill[26].mods[0].type = ModsTypeEnum.ENGINE_POWER1454Skills.skill[26].mods.insert(1, None)1455Skills.skill[26].mods[1] = Dummy()1456Skills.skill[26].mods[1].states = Dummy()1457Skills.skill[26].mods[1].states.crit = 1.021458Skills.skill[26].mods[1].states.damaged = 1.021459Skills.skill[26].mods[1].states.good = 1.021460Skills.skill[26].mods[1].type = ModsTypeEnum.MAX_SPEED1461Skills.skill[26].order = 31462Skills.skill[26].smallIcoPath = 'icons/skills/lobby/pilotKnowEngine_2_Mini.dds'1463Skills.skill[26].uiIndex = 2081464Skills.skill.insert(27, None)1465Skills.skill[27] = Dummy()1466Skills.skill[27].bindForPlanes = []1467Skills.skill[27].bindForPlanes.insert(0, None)1468Skills.skill[27].bindForPlanes[0] = 15951469Skills.skill[27].cost = 21470Skills.skill[27].crewMemberSubTypes = []1471Skills.skill[27].crewMemberSubTypes.insert(0, None)1472Skills.skill[27].crewMemberSubTypes[0] = 41473Skills.skill[27].crewMemberTypes = []1474Skills.skill[27].crewMemberTypes.insert(0, None)1475Skills.skill[27].crewMemberTypes[0] = SpecializationEnum.PILOT1476Skills.skill[27].group = SKILL_GROUP.IMPROVED1477Skills.skill[27].icoPath = 'icons/skills/lobby/pilotMasterBf109e3.dds'1478Skills.skill[27].id = 2261479Skills.skill[27].infotipsIcoPath = 'icons/skills/infotips/pilotMasterBf109e3.dds'1480Skills.skill[27].localizeTag = 'MASTER_PLANE_BF_109E_3'1481Skills.skill[27].locked = true1482Skills.skill[27].mods = []1483Skills.skill[27].mods.insert(0, None)1484Skills.skill[27].mods[0] = Dummy()1485Skills.skill[27].mods[0].states = Dummy()1486Skills.skill[27].mods[0].states.crit = 1.11487Skills.skill[27].mods[0].states.damaged = 1.11488Skills.skill[27].mods[0].states.good = 1.11489Skills.skill[27].mods[0].type = ModsTypeEnum.GUNS_INCFLICT_DAMAGE1490Skills.skill[27].mods.insert(1, None)1491Skills.skill[27].mods[1] = Dummy()1492Skills.skill[27].mods[1].states = Dummy()1493Skills.skill[27].mods[1].states.crit = 1.11494Skills.skill[27].mods[1].states.damaged = 1.11495Skills.skill[27].mods[1].states.good = 1.11496Skills.skill[27].mods[1].type = ModsTypeEnum.MAX_SPEED1497Skills.skill[27].order = 21498Skills.skill[27].smallIcoPath = 'icons/skills/lobby/pilotMasterBf109e3_Mini.dds'1499Skills.skill[27].uiIndex = 2061500Skills.skill.insert(28, None)1501Skills.skill[28] = Dummy()1502Skills.skill[28].bindForPlanes = []1503Skills.skill[28].bindForPlanes.insert(0, None)1504Skills.skill[28].bindForPlanes[0] = 55931505Skills.skill[28].cost = 21506Skills.skill[28].crewMemberSubTypes = []1507Skills.skill[28].crewMemberSubTypes.insert(0, None)1508Skills.skill[28].crewMemberSubTypes[0] = 51509Skills.skill[28].crewMemberTypes = []1510Skills.skill[28].crewMemberTypes.insert(0, None)1511Skills.skill[28].crewMemberTypes[0] = SpecializationEnum.PILOT1512Skills.skill[28].group = SKILL_GROUP.IMPROVED1513Skills.skill[28].icoPath = 'icons/skills/lobby/pilotMasterSpitfireMkIa.dds'1514Skills.skill[28].id = 2271515Skills.skill[28].infotipsIcoPath = 'icons/skills/infotips/pilotMasterSpitfireMkIa.dds'1516Skills.skill[28].localizeTag = 'MASTER_PLANE_SPITFIRE_MK_IA'1517Skills.skill[28].locked = true1518Skills.skill[28].mods = []1519Skills.skill[28].mods.insert(0, None)1520Skills.skill[28].mods[0] = Dummy()1521Skills.skill[28].mods[0].states = Dummy()1522Skills.skill[28].mods[0].states.crit = 1.11523Skills.skill[28].mods[0].states.damaged = 1.11524Skills.skill[28].mods[0].states.good = 1.11525Skills.skill[28].mods[0].type = ModsTypeEnum.PITCH_MAX_SPEED_CFG1526Skills.skill[28].mods.insert(1, None)1527Skills.skill[28].mods[1] = Dummy()1528Skills.skill[28].mods[1].states = Dummy()1529Skills.skill[28].mods[1].states.crit = 1.11530Skills.skill[28].mods[1].states.damaged = 1.11531Skills.skill[28].mods[1].states.good = 1.11532Skills.skill[28].mods[1].type = ModsTypeEnum.ROLL_MAX_SPEED_CFG1533Skills.skill[28].mods.insert(2, None)1534Skills.skill[28].mods[2] = Dummy()1535Skills.skill[28].mods[2].states = Dummy()1536Skills.skill[28].mods[2].states.crit = 1.11537Skills.skill[28].mods[2].states.damaged = 1.11538Skills.skill[28].mods[2].states.good = 1.11539Skills.skill[28].mods[2].type = ModsTypeEnum.YAW_MAX_SPEED_CFG1540Skills.skill[28].mods.insert(3, None)1541Skills.skill[28].mods[3] = Dummy()1542Skills.skill[28].mods[3].states = Dummy()1543Skills.skill[28].mods[3].states.crit = 1.11544Skills.skill[28].mods[3].states.damaged = 1.11545Skills.skill[28].mods[3].states.good = 1.11546Skills.skill[28].mods[3].type = ModsTypeEnum.GUNS_INCFLICT_DAMAGE1547Skills.skill[28].order = 21548Skills.skill[28].smallIcoPath = 'icons/skills/lobby/pilotMasterSpitfireMkIa_Mini.dds'1549Skills.skill[28].uiIndex = 2061550Skills.skill.insert(29, None)1551Skills.skill[29] = Dummy()1552Skills.skill[29].activation = Dummy()1553Skills.skill[29].activation.disableEvent = Dummy()1554Skills.skill[29].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_LAST_SPURT_END1555Skills.skill[29].activation.enableEvent = Dummy()1556Skills.skill[29].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_LAST_SPURT_START1557Skills.skill[29].bindForPlanes = []1558Skills.skill[29].cost = 31559Skills.skill[29].crewMemberSubTypes = []1560Skills.skill[29].crewMemberSubTypes.insert(0, None)1561Skills.skill[29].crewMemberSubTypes[0] = 51562Skills.skill[29].crewMemberTypes = []1563Skills.skill[29].crewMemberTypes.insert(0, None)1564Skills.skill[29].crewMemberTypes[0] = SpecializationEnum.PILOT1565Skills.skill[29].group = SKILL_GROUP.UNIQUE1566Skills.skill[29].icoHudActivePath = 'icons/skills/hud/pilotSLastDash_Active.dds'1567Skills.skill[29].icoHudPath = 'icons/hud/aircraft/skills/pilotSLastDash.dds'1568Skills.skill[29].icoPath = 'icons/skills/lobby/pilotSLastDash.dds'1569Skills.skill[29].id = 2281570Skills.skill[29].infotipsIcoPath = 'icons/skills/infotips/pilotSLastDash.dds'1571Skills.skill[29].localizeTag = 'LAST_DASH'1572Skills.skill[29].locked = true1573Skills.skill[29].mods = []1574Skills.skill[29].mods.insert(0, None)1575Skills.skill[29].mods[0] = Dummy()1576Skills.skill[29].mods[0].states = Dummy()1577Skills.skill[29].mods[0].states.crit = 1.01578Skills.skill[29].mods[0].states.damaged = 1.01579Skills.skill[29].mods[0].states.good = 1.01580Skills.skill[29].mods[0].type = ModsTypeEnum.HP_RESTORE1581Skills.skill[29].mods.insert(1, None)1582Skills.skill[29].mods[1] = Dummy()1583Skills.skill[29].mods[1].states = Dummy()1584Skills.skill[29].mods[1].states.crit = 1.01585Skills.skill[29].mods[1].states.damaged = 1.01586Skills.skill[29].mods[1].states.good = 1.01587Skills.skill[29].mods[1].type = ModsTypeEnum.FIRE_EXTINGUISH_MANUAL1588Skills.skill[29].mods.insert(2, None)1589Skills.skill[29].mods[2] = Dummy()1590Skills.skill[29].mods[2].states = Dummy()1591Skills.skill[29].mods[2].states.crit = 1.01592Skills.skill[29].mods[2].states.damaged = 1.01593Skills.skill[29].mods[2].states.good = 1.01594Skills.skill[29].mods[2].type = ModsTypeEnum.FIX_TAIL_AND_WINGS1595Skills.skill[29].mods.insert(3, None)1596Skills.skill[29].mods[3] = Dummy()1597Skills.skill[29].mods[3].states = Dummy()1598Skills.skill[29].mods[3].states.crit = 1.01599Skills.skill[29].mods[3].states.damaged = 1.01600Skills.skill[29].mods[3].states.good = 1.01601Skills.skill[29].mods[3].type = ModsTypeEnum.ENGINE_RESTORE1602Skills.skill[29].mods.insert(4, None)1603Skills.skill[29].mods[4] = Dummy()1604Skills.skill[29].mods[4].states = Dummy()1605Skills.skill[29].mods[4].states.crit = 1.21606Skills.skill[29].mods[4].states.damaged = 1.21607Skills.skill[29].mods[4].states.good = 1.21608Skills.skill[29].mods[4].type = ModsTypeEnum.ENGINE_POWER1609Skills.skill[29].mods.insert(5, None)1610Skills.skill[29].mods[5] = Dummy()1611Skills.skill[29].mods[5].states = Dummy()1612Skills.skill[29].mods[5].states.crit = 1.21613Skills.skill[29].mods[5].states.damaged = 1.21614Skills.skill[29].mods[5].states.good = 1.21615Skills.skill[29].mods[5].type = ModsTypeEnum.PITCH_MAX_SPEED_CFG1616Skills.skill[29].mods.insert(6, None)1617Skills.skill[29].mods[6] = Dummy()1618Skills.skill[29].mods[6].states = Dummy()1619Skills.skill[29].mods[6].states.crit = 1.21620Skills.skill[29].mods[6].states.damaged = 1.21621Skills.skill[29].mods[6].states.good = 1.21622Skills.skill[29].mods[6].type = ModsTypeEnum.ROLL_MAX_SPEED_CFG1623Skills.skill[29].mods.insert(7, None)1624Skills.skill[29].mods[7] = Dummy()1625Skills.skill[29].mods[7].states = Dummy()1626Skills.skill[29].mods[7].states.crit = 1.21627Skills.skill[29].mods[7].states.damaged = 1.21628Skills.skill[29].mods[7].states.good = 1.21629Skills.skill[29].mods[7].type = ModsTypeEnum.YAW_MAX_SPEED_CFG1630Skills.skill[29].mods.insert(8, None)1631Skills.skill[29].mods[8] = Dummy()1632Skills.skill[29].mods[8].states = Dummy()1633Skills.skill[29].mods[8].states.crit = 1e-061634Skills.skill[29].mods[8].states.damaged = 1e-061635Skills.skill[29].mods[8].states.good = 1e-061636Skills.skill[29].mods[8].type = ModsTypeEnum.CRIT_WEAKNESS_PILOT1637Skills.skill[29].order = 21638Skills.skill[29].smallIcoPath = 'icons/skills/lobby/pilotSLastDash_Mini.dds'1639Skills.skill[29].uiIndex = 2151640Skills.skill.insert(30, None)1641Skills.skill[30] = Dummy()1642Skills.skill[30].activation = Dummy()1643Skills.skill[30].activation.disableEvent = Dummy()1644Skills.skill[30].activation.disableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_END1645Skills.skill[30].activation.enableEvent = Dummy()1646Skills.skill[30].activation.enableEvent.eventID = consts.SKILL_EVENT.PILOT_S_BOOMZOOM_START1647Skills.skill[30].bindForPlanes = []1648Skills.skill[30].cost = 31649Skills.skill[30].crewMemberSubTypes = []1650Skills.skill[30].crewMemberSubTypes.insert(0, None)1651Skills.skill[30].crewMemberSubTypes[0] = 41652Skills.skill[30].crewMemberTypes = []1653Skills.skill[30].crewMemberTypes.insert(0, None)1654Skills.skill[30].crewMemberTypes[0] = SpecializationEnum.PILOT1655Skills.skill[30].group = SKILL_GROUP.UNIQUE1656Skills.skill[30].icoHudActivePath = 'icons/skills/hud/pilotSSteepPeak_Active.dds'1657Skills.skill[30].icoHudPath = 'icons/hud/aircraft/skills/pilotSSteepPeak.dds'1658Skills.skill[30].icoPath = 'icons/skills/lobby/pilotSSteepPeak.dds'1659Skills.skill[30].id = 2291660Skills.skill[30].infotipsIcoPath = 'icons/skills/infotips/pilotSSteepPeak.dds'1661Skills.skill[30].localizeTag = 'STEEP_PEAK'1662Skills.skill[30].locked = true1663Skills.skill[30].mods = []1664Skills.skill[30].mods.insert(0, None)1665Skills.skill[30].mods[0] = Dummy()1666Skills.skill[30].mods[0].states = Dummy()1667Skills.skill[30].mods[0].states.crit = 1.21668Skills.skill[30].mods[0].states.damaged = 1.21669Skills.skill[30].mods[0].states.good = 1.21670Skills.skill[30].mods[0].type = ModsTypeEnum.GUNS_INCFLICT_DAMAGE1671Skills.skill[30].mods.insert(1, None)1672Skills.skill[30].mods[1] = Dummy()1673Skills.skill[30].mods[1].states = Dummy()1674Skills.skill[30].mods[1].states.crit = 1.51675Skills.skill[30].mods[1].states.damaged = 1.51676Skills.skill[30].mods[1].states.good = 1.51677Skills.skill[30].mods[1].type = ModsTypeEnum.GUNS_INFLICT_CRIT1678Skills.skill[30].mods.insert(2, None)1679Skills.skill[30].mods[2] = Dummy()1680Skills.skill[30].mods[2].states = Dummy()1681Skills.skill[30].mods[2].states.crit = 1.51682Skills.skill[30].mods[2].states.damaged = 1.51683Skills.skill[30].mods[2].states.good = 1.51684Skills.skill[30].mods[2].type = ModsTypeEnum.GUNS_INFLICT_FIRE1685Skills.skill[30].order = 41686Skills.skill[30].smallIcoPath = 'icons/skills/lobby/pilotSSteepPeak_Mini.dds'1687Skills.skill[30].uiIndex = 2171688Skills.skill.insert(31, None)1689Skills.skill[31] = Dummy()1690Skills.skill[31].bindForPlanes = []1691Skills.skill[31].cost = 11692Skills.skill[31].crewMemberSubTypes = []1693Skills.skill[31].crewMemberSubTypes.insert(0, None)1694Skills.skill[31].crewMemberSubTypes[0] = 01695Skills.skill[31].crewMemberTypes = []1696Skills.skill[31].crewMemberTypes.insert(0, None)1697Skills.skill[31].crewMemberTypes[0] = SpecializationEnum.GUNNER1698Skills.skill[31].group = SKILL_GROUP.COMMON1699Skills.skill[31].icoPath = 'icons/skills/lobby/gunnerTough.dds'1700Skills.skill[31].id = 2411701Skills.skill[31].infotipsIcoPath = 'icons/skills/infotips/gunnerTough.dds'1702Skills.skill[31].localizeTag = 'GUNNER_TOUGH'1703Skills.skill[31].mods = []1704Skills.skill[31].mods.insert(0, None)1705Skills.skill[31].mods[0] = Dummy()1706Skills.skill[31].mods[0].states = Dummy()1707Skills.skill[31].mods[0].states.crit = 0.81708Skills.skill[31].mods[0].states.damaged = 0.81709Skills.skill[31].mods[0].states.good = 0.81710Skills.skill[31].mods[0].type = ModsTypeEnum.CRIT_WEAKNESS_GUNNER1711Skills.skill[31].order = 01712Skills.skill[31].smallIcoPath = 'icons/skills/lobby/gunnerTough_Mini.dds'1713Skills.skill[31].uiIndex = 2411714Skills.skill.insert(32, None)1715Skills.skill[32] = Dummy()1716Skills.skill[32].bindForPlanes = []1717Skills.skill[32].cost = 11718Skills.skill[32].crewMemberSubTypes = []1719Skills.skill[32].crewMemberSubTypes.insert(0, None)1720Skills.skill[32].crewMemberSubTypes[0] = 01721Skills.skill[32].crewMemberTypes = []1722Skills.skill[32].crewMemberTypes.insert(0, None)1723Skills.skill[32].crewMemberTypes[0] = SpecializationEnum.GUNNER1724Skills.skill[32].group = SKILL_GROUP.COMMON1725Skills.skill[32].icoPath = 'icons/skills/lobby/gunnerSightRange.dds'1726Skills.skill[32].id = 2421727Skills.skill[32].infotipsIcoPath = 'icons/skills/infotips/gunnerSightRange.dds'1728Skills.skill[32].localizeTag = 'GUNNER_SIGHTRANGE'1729Skills.skill[32].mods = []1730Skills.skill[32].mods.insert(0, None)1731Skills.skill[32].mods[0] = Dummy()1732Skills.skill[32].mods[0].states = Dummy()1733Skills.skill[32].mods[0].states.crit = 1.11734Skills.skill[32].mods[0].states.damaged = 1.11735Skills.skill[32].mods[0].states.good = 1.11736Skills.skill[32].mods[0].type = ModsTypeEnum.SIGHT_RANGE_GUNNER1737Skills.skill[32].order = 11738Skills.skill[32].smallIcoPath = 'icons/skills/lobby/gunnerSightRange_Mini.dds'1739Skills.skill[32].uiIndex = 2421740Skills.skill.insert(33, None)1741Skills.skill[33] = Dummy()1742Skills.skill[33].bindForPlanes = []1743Skills.skill[33].cost = 21744Skills.skill[33].crewMemberSubTypes = []1745Skills.skill[33].crewMemberSubTypes.insert(0, None)1746Skills.skill[33].crewMemberSubTypes[0] = 01747Skills.skill[33].crewMemberTypes = []1748Skills.skill[33].crewMemberTypes.insert(0, None)1749Skills.skill[33].crewMemberTypes[0] = SpecializationEnum.GUNNER1750Skills.skill[33].group = SKILL_GROUP.COMMON1751Skills.skill[33].icoPath = 'icons/skills/lobby/gunnerVolley.dds'1752Skills.skill[33].id = 2431753Skills.skill[33].infotipsIcoPath = 'icons/skills/infotips/gunnerVolley.dds'1754Skills.skill[33].localizeTag = 'GUNNER_VOLLEY'1755Skills.skill[33].mods = []1756Skills.skill[33].mods.insert(0, None)1757Skills.skill[33].mods[0] = Dummy()1758Skills.skill[33].mods[0].states = Dummy()1759Skills.skill[33].mods[0].states.crit = 1.21760Skills.skill[33].mods[0].states.damaged = 1.21761Skills.skill[33].mods[0].states.good = 1.21762Skills.skill[33].mods[0].type = ModsTypeEnum.GUNNER_BURST_TIME_MODIFIER1763Skills.skill[33].order = 21764Skills.skill[33].smallIcoPath = 'icons/skills/lobby/gunnerVolley_Mini.dds'1765Skills.skill[33].uiIndex = 2431766Skills.skill.insert(34, None)1767Skills.skill[34] = Dummy()1768Skills.skill[34].bindForPlanes = []1769Skills.skill[34].cost = 31770Skills.skill[34].crewMemberSubTypes = []1771Skills.skill[34].crewMemberSubTypes.insert(0, None)1772Skills.skill[34].crewMemberSubTypes[0] = 01773Skills.skill[34].crewMemberTypes = []1774Skills.skill[34].crewMemberTypes.insert(0, None)1775Skills.skill[34].crewMemberTypes[0] = SpecializationEnum.GUNNER1776Skills.skill[34].dependedFrom = 2431777Skills.skill[34].group = SKILL_GROUP.IMPROVED1778Skills.skill[34].icoPath = 'icons/skills/lobby/gunnerLongRange.dds'1779Skills.skill[34].id = 2441780Skills.skill[34].infotipsIcoPath = 'icons/skills/infotips/gunnerLongRange.dds'1781Skills.skill[34].localizeTag = 'GUNNER_LONGRANGE'1782Skills.skill[34].mods = []1783Skills.skill[34].mods.insert(0, None)1784Skills.skill[34].mods[0] = Dummy()1785Skills.skill[34].mods[0].states = Dummy()1786Skills.skill[34].mods[0].states.crit = 1.151787Skills.skill[34].mods[0].states.damaged = 1.151788Skills.skill[34].mods[0].states.good = 1.151789Skills.skill[34].mods[0].type = ModsTypeEnum.TURRET_RANGE1790Skills.skill[34].mods.insert(1, None)1791Skills.skill[34].mods[1] = Dummy()1792Skills.skill[34].mods[1].relation = Dummy()1793Skills.skill[34].mods[1].relation.type = []1794Skills.skill[34].mods[1].relation.type.insert(0, None)1795Skills.skill[34].mods[1].relation.type[0] = ModsTypeEnum.TURRET_RANGE1796Skills.skill[34].mods[1].states = Dummy()1797Skills.skill[34].mods[1].states.crit = 1.21798Skills.skill[34].mods[1].states.damaged = 1.21799Skills.skill[34].mods[1].states.good = 1.21800Skills.skill[34].mods[1].type = ModsTypeEnum.EQUIPMENT_EFFECT1801Skills.skill[34].order = 21802Skills.skill[34].smallIcoPath = 'icons/skills/lobby/gunnerLongRange_Mini.dds'1803Skills.skill[34].uiIndex = 2441804Skills.skill.insert(35, None)1805Skills.skill[35] = Dummy()1806Skills.skill[35].bindForPlanes = []1807Skills.skill[35].cost = 21808Skills.skill[35].crewMemberSubTypes = []1809Skills.skill[35].crewMemberSubTypes.insert(0, None)1810Skills.skill[35].crewMemberSubTypes[0] = 01811Skills.skill[35].crewMemberTypes = []1812Skills.skill[35].crewMemberTypes.insert(0, None)1813Skills.skill[35].crewMemberTypes[0] = SpecializationEnum.GUNNER1814Skills.skill[35].group = SKILL_GROUP.COMMON1815Skills.skill[35].icoPath = 'icons/skills/lobby/gunnerNimble.dds'1816Skills.skill[35].id = 2451817Skills.skill[35].infotipsIcoPath = 'icons/skills/infotips/gunnerNimble.dds'1818Skills.skill[35].localizeTag = 'GUNNER_NIMBLE'1819Skills.skill[35].mods = []1820Skills.skill[35].mods.insert(0, None)1821Skills.skill[35].mods[0] = Dummy()1822Skills.skill[35].mods[0].states = Dummy()1823Skills.skill[35].mods[0].states.crit = 0.51824Skills.skill[35].mods[0].states.damaged = 0.51825Skills.skill[35].mods[0].states.good = 0.51826Skills.skill[35].mods[0].type = ModsTypeEnum.GUNNER_REDUCTION_TIME1827Skills.skill[35].order = 31828Skills.skill[35].smallIcoPath = 'icons/skills/lobby/gunnerNimble_Mini.dds'1829Skills.skill[35].uiIndex = 2451830Skills.skill.insert(36, None)1831Skills.skill[36] = Dummy()1832Skills.skill[36].bindForPlanes = []1833Skills.skill[36].cost = 31834Skills.skill[36].crewMemberSubTypes = []1835Skills.skill[36].crewMemberSubTypes.insert(0, None)1836Skills.skill[36].crewMemberSubTypes[0] = 01837Skills.skill[36].crewMemberTypes = []1838Skills.skill[36].crewMemberTypes.insert(0, None)1839Skills.skill[36].crewMemberTypes[0] = SpecializationEnum.GUNNER1840Skills.skill[36].group = SKILL_GROUP.IMPROVED1841Skills.skill[36].icoPath = 'icons/skills/lobby/gunnerPunisher.dds'1842Skills.skill[36].id = 2461843Skills.skill[36].infotipsIcoPath = 'icons/skills/infotips/gunnerPunisher.dds'1844Skills.skill[36].localizeTag = 'GUNNER_PUNISHER'1845Skills.skill[36].mods = []1846Skills.skill[36].mods.insert(0, None)1847Skills.skill[36].mods[0] = Dummy()1848Skills.skill[36].mods[0].states = Dummy()1849Skills.skill[36].mods[0].states.crit = 1.51850Skills.skill[36].mods[0].states.damaged = 1.51851Skills.skill[36].mods[0].states.good = 1.51852Skills.skill[36].mods[0].type = ModsTypeEnum.TURRET_INFLICT_CRIT1853Skills.skill[36].order = 41854Skills.skill[36].smallIcoPath = 'icons/skills/lobby/gunnerPunisher_Mini.dds'1855Skills.skill[36].uiIndex = 2471856Skills.skill.insert(37, None)1857Skills.skill[37] = Dummy()1858Skills.skill[37].bindForPlanes = []1859Skills.skill[37].cost = 41860Skills.skill[37].crewMemberSubTypes = []1861Skills.skill[37].crewMemberSubTypes.insert(0, None)1862Skills.skill[37].crewMemberSubTypes[0] = 01863Skills.skill[37].crewMemberTypes = []1864Skills.skill[37].crewMemberTypes.insert(0, None)1865Skills.skill[37].crewMemberTypes[0] = SpecializationEnum.GUNNER1866Skills.skill[37].group = SKILL_GROUP.IMPROVED1867Skills.skill[37].icoPath = 'icons/skills/lobby/gunnerKiller.dds'1868Skills.skill[37].id = 2471869Skills.skill[37].infotipsIcoPath = 'icons/skills/infotips/gunnerKiller.dds'1870Skills.skill[37].localizeTag = 'GUNNER_KILLER'1871Skills.skill[37].mods = []1872Skills.skill[37].mods.insert(0, None)1873Skills.skill[37].mods[0] = Dummy()1874Skills.skill[37].mods[0].states = Dummy()1875Skills.skill[37].mods[0].states.crit = 1.11876Skills.skill[37].mods[0].states.damaged = 1.11877Skills.skill[37].mods[0].states.good = 1.11878Skills.skill[37].mods[0].type = ModsTypeEnum.GUNNER_ENEMYHP_WATCHER1879Skills.skill[37].order = 51880Skills.skill[37].smallIcoPath = 'icons/skills/lobby/gunnerKiller_Mini.dds'1881Skills.skill[37].uiIndex = 2481882Skills.skill.insert(38, None)1883Skills.skill[38] = Dummy()1884Skills.skill[38].activation = Dummy()1885Skills.skill[38].activation.disableEvent = Dummy()1886Skills.skill[38].activation.disableEvent.eventID = consts.SKILL_EVENT.GUNNER_PROTECTOR_END1887Skills.skill[38].activation.enableEvent = Dummy()1888Skills.skill[38].activation.enableEvent.eventID = consts.SKILL_EVENT.GUNNER_PROTECTOR_START1889Skills.skill[38].bindForPlanes = []1890Skills.skill[38].cost = 31891Skills.skill[38].crewMemberSubTypes = []1892Skills.skill[38].crewMemberSubTypes.insert(0, None)1893Skills.skill[38].crewMemberSubTypes[0] = 01894Skills.skill[38].crewMemberTypes = []1895Skills.skill[38].crewMemberTypes.insert(0, None)1896Skills.skill[38].crewMemberTypes[0] = SpecializationEnum.GUNNER1897Skills.skill[38].group = SKILL_GROUP.IMPROVED1898Skills.skill[38].icoPath = 'icons/skills/lobby/gunnerProtector.dds'1899Skills.skill[38].id = 2481900Skills.skill[38].infotipsIcoPath = 'icons/skills/infotips/gunnerProtector.dds'1901Skills.skill[38].localizeTag = 'GUNNER_PROTECTOR'1902Skills.skill[38].mods = []1903Skills.skill[38].mods.insert(0, None)1904Skills.skill[38].mods[0] = Dummy()1905Skills.skill[38].mods[0].states = Dummy()1906Skills.skill[38].mods[0].states.crit = 0.71907Skills.skill[38].mods[0].states.damaged = 0.71908Skills.skill[38].mods[0].states.good = 0.71909Skills.skill[38].mods[0].type = ModsTypeEnum.GUNNER_BARRAGE_FIRE1910Skills.skill[38].order = 31911Skills.skill[38].smallIcoPath = 'icons/skills/lobby/gunnerProtector_Mini.dds'1912Skills.skill[38].uiIndex = 2461913def __xreload_old_new__(namespace, name, oldObj, newObj):1914 from config_consts import IS_DEVELOPMENT1915 if IS_DEVELOPMENT:1916 namespace[name] = newObj1917 import BigWorld1918 BigWorld.globalData['modifiersUpdateRequired'] = True1919SkillDB = None1920SpecializationSkillDB = None1921SkillWithRelationsDB = None1922def initDB():1923 global SkillWithRelationsDB1924 global SpecializationSkillDB1925 global SkillDB1926 if SkillDB is None:1927 SkillDB = {}1928 SpecializationSkillDB = {}1929 SkillWithRelationsDB = {}1930 for skill in Skills.skill:1931 SkillDB[skill.id] = skill1932 if hasattr(skill, 'mainForSpecialization'):1933 SpecializationSkillDB[skill.mainForSpecialization] = skill1934 skill.name = 'LOBBY_CREW_HEADER_' + skill.localizeTag1935 skill.description = 'LOBBY_CREW_LABEL_' + skill.localizeTag1936 skill.fullDescription = 'LOBBY_CREW_LABEL_' + skill.localizeTag1937 skill.middleDescription = 'LOBBY_CREW_LABEL_PLACE_FOR_' + skill.localizeTag1938 else:1939 skill.name = 'SKILL_NAME_' + skill.localizeTag1940 skill.description = 'SKILL_DESCRIPTION_SHORT_' + skill.localizeTag1941 skill.fullDescription = 'SKILL_DESCRIPTION_' + skill.localizeTag1942 skill.middleDescription = 'SKILL_DESCRIPTION_MIDDLE_' + skill.localizeTag1943 skill.activation = getattr(skill, 'activation', None)1944 if skill.activation:1945 skill.activation.isOneTimeAction = bool(getattr(skill.activation, 'isOneTimeAction', False))1946 for mod in skill.mods:1947 mod.states = [mod.states.good, mod.states.damaged, mod.states.crit]1948 if hasattr(mod, 'relation'):1949 SkillWithRelationsDB[skill.id] = [mod.type, mod.relation.type]1950 return...
main.py
Source:main.py
...12from raw_handler import Compiler13from raw_handler import SyntaxUpdater141516def select_from_non_selected_mods(*args):17 current_selection = non_selected_mods_listbox.curselection()18 # if the event was due to the listbox being unselected (and thus len(current_selection) not being 1), ignores it19 if len(current_selection) == 1:20 mod = non_selected_mods[current_selection[0]]21 update_mod_info_box(mod)22 select_unselect_button.configure(command=select_button_command, text="Select mod \u21D2", state='normal')232425def select_from_selected_mods(*args):26 current_selection = selected_mods_listbox.curselection()27 # if the event was due to the listbox being unselected (and thus len(current_selection) not being 1), ignores it28 if len(current_selection) == 1:29 mod = selected_mods[current_selection[0]]30 update_mod_info_box(mod)3132 select_unselect_button.configure(command=unselect_button_command, text="\u21D0 Unselect mod", state='normal')333435def update_mod_info_box(mod):36 # updates the text37 mod_info_text.configure(state='normal')38 mod_info_text.delete('1.0', tk.END)3940 mod_info_text.insert('1.0',41 mod.name + "\n" +42 mod.version + "\n" +43 "By " + mod.creator + "\n" +44 "For DF " + mod.df_version + "\n" +45 "----- " + "\n" +46 mod.description_string + "\r" +47 "----- " + "\n" +48 mod.dependencies_string)4950 if mod in missing_mods:51 mod_info_text.insert('1.0',52 "ATTENTION! This mod is seemingly missing from your mods folder.\n"53 "=====\n")5455 mod_info_text.configure(state='disabled')565758def update_selected_mods_listbox():59 # populates the selected_mods listbox60 selected_mods_listvar = tk.StringVar(value=[mod.name + " " + mod.version for mod in selected_mods])61 selected_mods_listbox.configure(listvariable=selected_mods_listvar)6263 # marks missing mods64 for i in range(len(selected_mods)):65 if selected_mods[i] in missing_mods:66 selected_mods_listbox.itemconfigure(i, background='red')67 else:68 selected_mods_listbox.itemconfigure(i, background='white')697071def update_non_selected_mods_listbox():72 non_selected_mods_listvar = tk.StringVar(value=[mod.name + " " + mod.version for mod in non_selected_mods])73 non_selected_mods_listbox.configure(listvariable=non_selected_mods_listvar)7475 # marks missing mods76 for i in range(len(non_selected_mods)):77 if non_selected_mods[i] in missing_mods:78 non_selected_mods_listbox.itemconfigure(i, background='red')79 else:80 non_selected_mods_listbox.itemconfigure(i, background='white')818283def load_mods_folder():84 global mods, non_selected_mods, missing_mods8586 def load_mod(path):87 mod_info_file = open(path + "\\mod_info.txt", "r", encoding="latin1")88 # populates a Mod object with what's in the mod_info_file, and appends it to the mods list89 mod_name = mod_info_file.readline().replace("name:", "").replace("\n", "")90 mod_version = mod_info_file.readline().replace("version:", "").replace("\n", "")91 # already loaded mods are made to keep their object IDs (so other parts of the code can work)92 is_old_mod = False93 for old_mod in mods:94 if (mod_name, mod_version) == (old_mod.name, old_mod.version):95 is_old_mod = True96 # the mod is re-initialized, but its identity remains the same97 old_mod.__init__(name=mod_name, version=mod_version,98 creator=mod_info_file.readline().replace("creator:", "").replace("\n", ""),99 df_version=mod_info_file.readline().replace("df_version:", "").replace("\n", ""),100 description_string=mod_info_file.readline().replace("description_string:", ""),101 dependencies_string=mod_info_file.readline().replace("dependencies_string:", ""),102 path=path)103 new_mods.append(old_mod)104 if not is_old_mod:105 mod_creator = mod_info_file.readline().replace("creator:", "").replace("\n", "")106 mod_df_version = mod_info_file.readline().replace("df_version:", "").replace("\n", "")107 mod_description_string = mod_info_file.readline().replace("description_string:", "")108 mod_dependencies_string = mod_info_file.readline().replace("dependencies_string:", "")109 new_mods.append(Mod(name=mod_name, version=mod_version, creator=mod_creator, df_version=mod_df_version,110 description_string=mod_description_string, dependencies_string=mod_dependencies_string,111 path=path))112 mod_info_file.close()113114 new_mods = []115 # finds the mods116 for top_directory in os.scandir(os.getcwd() + "\\mods"):117 if top_directory.is_dir():118119 # Mods may either be directly in the mods folder (i.e. contained within a folder for each such mod,120 # but nothing more). A mod needs a mod_info.txt to be valid.121 if os.path.isfile(top_directory.path + "\\mod_info.txt"):122 load_mod(top_directory.path)123124 # Or mods may be part of a "modpack", containing a modpack_info.txt and multiple such mod folders125 elif os.path.isfile(top_directory.path + "\\modpack_info.txt"):126 for mod_directory in os.scandir(top_directory.path):127 if mod_directory.is_dir():128 if os.path.isfile(mod_directory.path + "\\mod_info.txt"):129 load_mod(mod_directory.path)130 else:131 print(mod_directory.path + " is not neither a valid mod nor a valid modpack - "132 "it lacks mod_info.txt")133 else:134 print(top_directory.path + " is not neither a valid mod nor a valid modpack - it lacks mod_info.txt "135 "/ modpack_info.txt")136137 # old mods that were not loaded now must be missing138 missing_mods = []139 for old_mod in mods:140 if old_mod not in new_mods and old_mod not in missing_mods:141 missing_mods.append(old_mod)142 new_mods.append(old_mod)143 # and replaces the old mods with the new144 mods = new_mods145146 # populates the non_selected_mods and sorts them alphabetically147 non_selected_mods = [mod for mod in mods if mod not in selected_mods]148 non_selected_mods.sort(key=attrgetter('name'))149150 # updates/populates the listboxes151 update_non_selected_mods_listbox()152 update_selected_mods_listbox()153154155# ====== Widget commands ===============================================================================================156157def modloader_help_button_command():158 messagebox.showinfo(message='DF Modloader mockup\nVoliol 2021\n'159 'This is a mockup I made for a mod loader for Dwarf Fortress. ' 160 'It reads mods from a folder, and compiles them. '161 'This version was developed after discussions with Mr_Crabman, to approach a '162 'suggestion for the mod structure rewrite, which is closing in at the time of writing. '163 'The source code is available for anyone to use or edit, if they feel like picking '164 'it up.'165 '\nCompiled mods are put in the output folder.',166 title="Help - DF Modloader mockup")167168169def select_button_command():170 mod_index = non_selected_mods_listbox.curselection()[0]171 selected_mods.append(non_selected_mods.pop(mod_index))172 update_selected_mods_listbox()173 update_non_selected_mods_listbox()174175 # disables the select_unselect_button176 if mod_index >= len(non_selected_mods):177 select_unselect_button.configure(state='disabled')178179180def unselect_button_command():181 mod_index = selected_mods_listbox.curselection()[0]182 non_selected_mods.append(selected_mods.pop(mod_index))183 # sorts the non_selected_mods alphabetically by name184 non_selected_mods.sort(key=attrgetter('name'))185 update_selected_mods_listbox()186 update_non_selected_mods_listbox()187188 # disables the select_unselect_button189 if mod_index >= len(selected_mods):190 select_unselect_button.configure(state='disabled')191192193def move_up_button_command():194 mod_index = selected_mods_listbox.curselection()[0]195 if mod_index != 0:196 # moves the selected mod upwards197 selected_mods.insert(mod_index - 1, selected_mods.pop(mod_index))198 update_selected_mods_listbox()199 # and updates the selection (so it follows the mod)200 selected_mods_listbox.selection_clear(0, len(selected_mods))201 selected_mods_listbox.selection_set(mod_index - 1)202 selected_mods_listbox.yview_scroll(-1, 'units')203204205def move_down_button_command():206 mod_index = selected_mods_listbox.curselection()[0]207 if mod_index != len(selected_mods) - 1:208 # moves the selected mod downwards209 selected_mods.insert(mod_index + 1, selected_mods.pop(mod_index))210 update_selected_mods_listbox()211 # and updates the selection (so it follows the mod)212 selected_mods_listbox.selection_clear(0, len(selected_mods))213 selected_mods_listbox.selection_set(mod_index + 1)214 selected_mods_listbox.yview_scroll(1, 'units')215216217def move_to_top_button_command():218 mod_index = selected_mods_listbox.curselection()[0]219 if mod_index != 0:220 # moves the selected mod to the top221 selected_mods.insert(0, selected_mods.pop(mod_index))222 update_selected_mods_listbox()223 # and updates the selection (so it follows the mod)224 selected_mods_listbox.selection_clear(0, len(selected_mods))225 selected_mods_listbox.selection_set(0)226 selected_mods_listbox.yview_moveto(0)227228229def move_to_bottom_button_command():230 mod_index = selected_mods_listbox.curselection()[0]231 if mod_index != len(selected_mods) - 1:232 # moves the selected mod downwards233 selected_mods.insert(len(selected_mods) - 1, selected_mods.pop(mod_index))234 update_selected_mods_listbox()235 # and updates the selection (so it follows the mod)236 selected_mods_listbox.selection_clear(0, len(selected_mods))237 selected_mods_listbox.selection_set(len(selected_mods) - 1)238 selected_mods_listbox.yview_moveto(len(selected_mods) - 1)239240241def open_mods_folder_button_command():242 os.startfile(os.getcwd() + "\\mods")243244245def reload_mods_folder_button_command():246 load_mods_folder()247248249def change_output_folder_button_command():250 global output_path251 output_path = filedialog.askdirectory()252 # updates the tooltip253 create_tooltip(change_output_folder_button, text=output_path)254255256def update_syntax_button_command():257 print("Updating syntax started...")258 syntax_updater = SyntaxUpdater()259 syntax_updater.update_mods_syntax(selected_mods, backup_path)260 # so the updated raws are used261 load_mods_folder()262 print("Updating syntax completed! Look in your mods folder! Find the unchanged files in the backup folder.")263264265def compile_button_command():266 print("Compiling started...")267 compiler = Compiler()268 compiler.compile_mods(selected_mods, output_path)269 print("Compiling completed! Look in your output folder!")270271272# ======================================================================================================================273274# initializes the root window275root = tk.Tk()276root.title("DF Modloader")277root.iconbitmap(os.getcwd() + "//icon.ico")278279# creates a mainframe+grid within the root280mainframe = ttk.Frame(root, padding="3 3 12 12")281mainframe.grid(column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))282root.columnconfigure(0, weight=1)
...
hash_table.py
Source:hash_table.py
1""" Generated automatically by XVM builder """2HASH_DATA = {3'res_mods/configs/xvm/py_macro/totalEfficiency.py': '0794d92c2e9f1c04234176fb6c7717076c092983',4'res_mods/configs/xvm/py_macro/hangar_stat.py': '54363a51171d295aafe5c9b61e8e80f52079d3c6',5'res_mods/configs/xvm/py_macro/math.py': 'd6818dd619afa439647dbd0c51fd8def63ee4bcd',6'res_mods/configs/xvm/py_macro/xvm_debug.py': 'acb91c6669afa23a3696d0c9aaa45beef2d14859',7'res_mods/configs/xvm/py_macro/sixthsenseduration.py': 'c5ab885fa53723688903085b93e126cd0ffaa0a1',8'res_mods/configs/xvm/py_macro/xvm.py': '98bdf1e2b5067ab21adea9df502817e4f3033fcc',9'res_mods/configs/xvm/py_macro/tooltips_shell.py': 'f42a29c10cda19c8f3001bb824d461198b082d42',10'res_mods/configs/xvm/py_macro/vinfo.py': '6f1d9024fd37e721f6c28414fa3fcffad335f632',11'res_mods/configs/xvm/py_macro/xvm/__init__.py': 'da39a3ee5e6b4b0d3255bfef95601890afd80709',12'res_mods/configs/xvm/py_macro/xvm/hitLog.py': '301ce703717c8f22e99f62e7a4d08fda3e58193b',13'res_mods/configs/xvm/py_macro/xvm/damageLog.py': 'ff74c60fb47ce3648ab5496ebfca62601eeaf9d0',14'res_mods/configs/xvm/py_macro/xvm/utils.py': '434849226dcd26dcc620c78b3613226c6debe61f',15'res_mods/configs/xvm/py_macro/xvm/xvm2sup.py': '2164a22ab5ab9548a0e050e491ba687990cc7417',16'res_mods/configs/xvm/py_macro/xvm/total_hp.py': 'ed21646ef76e7b364169398cc9528ee252f00507',17'res_mods/configs/xvm/py_macro/xvm/total_Efficiency.py': '8494e828be13c88102d8a8f5e8a4d53e16c2aa28',18'res_mods/configs/xvm/py_macro/xvm/parser_addon.py': 'a9d8028422640d2dcdd5820780f5ece736cf41b8',19'res_mods/configs/xvm/py_macro/str.py': '3ce0e2641c9f8f3f84e5aa59ab0db34f1ea0dd93',20'res_mods/configs/xvm/py_macro/damage_log.py': '75b996ce604a35d39cfd3098e2f4f8408b1c9d86',21'res_mods/configs/xvm/py_macro/hit_log.py': 'bc52a7655e4369e88d8975c1d28272194a14ab20',22'res_mods/configs/xvm/py_macro/repairTime.py': '95b67759f1110941a728ab9d69a7670227a59c91',23'res_mods/configs/xvm/py_macro/score_panel.py': 'cbe5827b69bef63ab6c32a182bde9810ec782e6a',24'res_mods/mods/xfw_packages/xvm_online/python/__init__.py': 'c76f9d1be44c8a3187675e401aa3bb2d908788fe',25'res_mods/mods/xfw_packages/xvm_online/python/online.py': '5804ed8aa013597d3cb0b70d0a75beabd5ef663b',26'res_mods/mods/xfw_packages/xvm_online/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',27'res_mods/mods/xfw_packages/xvm_tooltips/python/__init__.py': '22a93cad606780c2716f544c1bd9a76485ffe806',28'res_mods/mods/xfw_packages/xvm_tooltips/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',29'res_mods/mods/xfw_packages/xvm_integrity/python/__init__.py': 'e08d66d983eaabe5260d1f5e4218887b6f87ad08',30'res_mods/mods/xfw_packages/xvm_integrity/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',31'res_mods/mods/xfw_packages/xvm_integrity/python/hash_table.py': '1cc0b2868e0241a4e63ec62faefdcecbb76e3462',32'res_mods/mods/xfw_packages/xvm_sounds/python/__init__.py': '0bc68fa00be3535ddf3c712a476c903550527ce1',33'res_mods/mods/xfw_packages/xvm_sounds/python/gunReloaded.py': 'a2c04dd572933aafb43023ea7623368e5640c31b',34'res_mods/mods/xfw_packages/xvm_sounds/python/bankManager.py': 'd173e145c61d2721bf5f5b7d8ae70016161fb3de',35'res_mods/mods/xfw_packages/xvm_sounds/python/enemySighted.py': 'f82ac4e6491e0aef7395ed060c75573a3b1d737b',36'res_mods/mods/xfw_packages/xvm_sounds/python/test.py': '9fd113368951e09fcc95fc1e66cea057151a3e9f',37'res_mods/mods/xfw_packages/xvm_sounds/python/ammoBay.py': '816bfe4fed40c2d192253e29a4562b5fb445d45e',38'res_mods/mods/xfw_packages/xvm_sounds/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',39'res_mods/mods/xfw_packages/xvm_sounds/python/sixthSense.py': '6c41b988d058e593e37399adb5d48882aab48e54',40'res_mods/mods/xfw_packages/xvm_sounds/python/battleEnd.py': '113c7eaced316afb7e266db19bfd5fbd8a3881b8',41'res_mods/mods/xfw_packages/xvm_sounds/python/remoteCommunication.py': 'eee32fb27d3ebe21704282440b0b64b099038fd8',42'res_mods/mods/xfw_packages/xvm_sounds/python/fireAlert.py': '77b690bfdff944cf597f11cb8b2ac5fdc8071785',43'res_mods/mods/xfw_packages/xvm_hangar/python/__init__.py': 'b6b88721884396c5f25533f265811d9fa13e8272',44'res_mods/mods/xfw_packages/xvm_hangar/python/counters.py': 'd5c12dc8c16d4ae84429fb03846f6eac2fa8f075',45'res_mods/mods/xfw_packages/xvm_hangar/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',46'res_mods/mods/xfw_packages/xvm_hangar/python/battletype.py': '4b1220891814700adeeaf54c621f965b0a9ff61b',47'res_mods/mods/xfw_packages/xvm_hangar/python/svcmsg.py': '3df09ffbe382f12b19fcee108b4ac7c184c6b9b6',48'res_mods/mods/xfw_packages/xvm_main/python/__init__.py': '5b052cb81be2fbfb270559ac698559714ba3121e',49'res_mods/mods/xfw_packages/xvm_main/python/consts.py': 'c77e6a2ce06d85e8111823469cb2ead5c0b277b9',50'res_mods/mods/xfw_packages/xvm_main/python/mutex.py': '0d2245faaa7716d1036fcb47998af93b60461d75',51'res_mods/mods/xfw_packages/xvm_main/python/xvmapi.py': '993ff699a587c7e0e31104837e6c9cf14899e811',52'res_mods/mods/xfw_packages/xvm_main/python/topclans.py': '8b44ba52f6a64b2e26dd796cc2aee31f8cc955c7',53'res_mods/mods/xfw_packages/xvm_main/python/logger.py': 'f41a83f3767f66bf9fd42c7af1490cf626f4e212',54'res_mods/mods/xfw_packages/xvm_main/python/vehinfo_tiers.py': '5b338fafb4964f642a8ed7d0bf9fb0623d48ebab',55'res_mods/mods/xfw_packages/xvm_main/python/filecache.py': '9551258a767720609bd668cf17556f9225ff2789',56'res_mods/mods/xfw_packages/xvm_main/python/xvm_debug.py': '15475541c81655c811c74c9059be68b8309b87ff',57'res_mods/mods/xfw_packages/xvm_main/python/stats.py': '33a53ec31a880449a98f8ab23050745dddf3757c',58'res_mods/mods/xfw_packages/xvm_main/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',59'res_mods/mods/xfw_packages/xvm_main/python/python_macro.py': 'a34767db619b2be3d01bfc46872c5c26a602a874',60'res_mods/mods/xfw_packages/xvm_main/python/vehinfo.py': 'abcb596e381bc8f36af6b57ab5b18ee5be46a921',61'res_mods/mods/xfw_packages/xvm_main/python/userprefs.py': '404b3d4fcd80220ee562edc8ce3318e5767b3cc2',62'res_mods/mods/xfw_packages/xvm_main/python/xvm.py': '02e309687606d9d54a93349cc952c1c3d9708115',63'res_mods/mods/xfw_packages/xvm_main/python/default_config.py': '7a5f6b8bba94fa8f04b502b2201d506813974201',64'res_mods/mods/xfw_packages/xvm_main/python/xvm_scale_data.py': '624f14249442e971827de7e9bdcf7edbd6dc7396',65'res_mods/mods/xfw_packages/xvm_main/python/minimap_circles.py': '60608e868fae084800a0db9cfecda305cfa51fda',66'res_mods/mods/xfw_packages/xvm_main/python/disabled_servers.py': 'f6cd406cd8bb2a12da0b6c8d49a206ce6b2c1656',67'res_mods/mods/xfw_packages/xvm_main/python/wgutils.py': 'c8fadf1a5e3d5f721accdfb1166bec3426590aee',68'res_mods/mods/xfw_packages/xvm_main/python/utils.py': '4cdf7fa4893164a9a0eb8012f961ee1b28438164',69'res_mods/mods/xfw_packages/xvm_main/python/loadurl.py': 'b1d20e562c2b8341c373d9149dfaf68bf40fa921',70'res_mods/mods/xfw_packages/xvm_main/python/svcmsg.py': '99e518ad5d2fadbd8460816c699b07d0e2931354',71'res_mods/mods/xfw_packages/xvm_main/python/dossier.py': 'fd3e3827081c00ebbe44beb5012a8776d88bde95',72'res_mods/mods/xfw_packages/xvm_main/python/config.py': '7aa5e3346dffe210dab0f26c20189845573bcb41',73'res_mods/mods/xfw_packages/xvm_main/python/xvm_scale.py': 'f1e4be01714f4a6e0dae9a38aacd19a0895cefc1',74'res_mods/mods/xfw_packages/xvm_main/python/reserve.py': 'acc96374a9fd148f3717d28057dbe006121b6bc4',75'res_mods/mods/xfw_packages/xvm_main/python/vehinfo_short.py': '73a6f362e6224710b1568bc7ef9ab83b59b548a2',76'res_mods/mods/xfw_packages/xvm_main/python/default_xvm_xc.py': 'db52eaae970a2d2d47b551902cd9b7d85f78aab5',77'res_mods/mods/xfw_packages/xvm_hotfix/python/__init__.py': 'b2ed14c9f1fe9a2f286d20290565ae2419eeac37',78'res_mods/mods/xfw_packages/xvm_hotfix/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',79'res_mods/mods/xfw_packages/xvm_battle/as_battle/xvm_vehiclemarkers_ui.swf': 'e1e95f7a8dc6672026f4ef6affdb65b0c8c36921',80'res_mods/mods/xfw_packages/xvm_battle/as_battle_epicbattle/xvm_battle_epicbattle.swf': '2fa24db4055eb3c9c485604ffa692633228d7482',81'res_mods/mods/xfw_packages/xvm_battle/python/__init__.py': '11505a220db37489fe76ff52c5788d242751b272',82'res_mods/mods/xfw_packages/xvm_battle/python/consts.py': 'a3d994c0d18a0e47f2ee75cb43614691837a759b',83'res_mods/mods/xfw_packages/xvm_battle/python/shared.py': '98f280740e0e6557eda7277f517340bc1c377574',84'res_mods/mods/xfw_packages/xvm_battle/python/xmqp.py': '625332b20936292f8e814888dae87c4b4952b0b2',85'res_mods/mods/xfw_packages/xvm_battle/python/minimap.py': '6d03acfb930320bfb6b848281e77686c6bb4c59e',86'res_mods/mods/xfw_packages/xvm_battle/python/fragCorrelationPanel.py': '30bf155a4e27b3fc56a5b4c179e4665fa0bcbe87',87'res_mods/mods/xfw_packages/xvm_battle/python/vehicleMarkers.py': 'fade2f5263e0e0d53df73ba573a4a8071700ae99',88'res_mods/mods/xfw_packages/xvm_battle/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',89'res_mods/mods/xfw_packages/xvm_battle/python/battleloading.py': 'c19f903d39052474bbc7c5a83760a6972ed38727',90'res_mods/mods/xfw_packages/xvm_battle/python/xmqp_events.py': 'c7e022075028cf2bb11120493fec37d2a01d74cf',91'res_mods/mods/xfw_packages/xvm_battle/python/vehicleMarkersBC.py': '056669b07bd8c6caaef7d56a8f3c68c68418ed42',92'res_mods/mods/xfw_packages/xvm_battle/python/replay.py': '0289cc0132df4d61f2955eadde67beb5ee5093f7',93'res_mods/mods/xfw_packages/xvm_battle/python/camera.py': 'a4201f961981f08baa33c431d8228e1e6f45bb40',94'res_mods/mods/xfw_packages/xvm_battle/python/battle.py': 'bc42f510e5733a3358c301479486c1f6b8106579',95'res_mods/mods/xfw_packages/xvm_battle/as_battle_ranked/xvm_battle_ranked.swf': '6ef72bf7cf12bdb0642b4d2ab03b5d5405b45822',96'res_mods/mods/xfw_packages/xvm_battle/as_battle_epicrandom/xvm_battle_epicrandom.swf': '38f1489df5e005513d24a65fb83503c8fd09c5e0',97'res_mods/mods/xfw_packages/xvm_battle/as_battle_classic/xvm_battle_classic.swf': 'ef42f1cd492b758fd20eaec2c02c550fc05ca800',98'res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobby_ui.swf': '459ce29e21902bcbad5f7ff1244829ea69b95e5e',99'res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobbycontacts_ui.swf': '68a61a5da16c0a6592f83a62a36fc3cbe7a1045e',100'res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobby.swf': '501372cd0f0258852aaac907da8b77f838ac7d87',101'res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobbyprofile_ui.swf': 'd65ec602032955b5fcb2235490329453dd760f3a',102'res_mods/mods/xfw_packages/xvm_battleresults/python/__init__.py': 'c6f74652030a102e6a6a7787ce9d4e554fdc5234',103'res_mods/mods/xfw_packages/xvm_battleresults/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',104'res_mods/mods/xfw_packages/xvm_export/python/fps.py': 'd8915b4df77940c59fcba4a3e1c59970f90526c7',105'res_mods/mods/xfw_packages/xvm_export/python/__init__.py': '397e11a3902cbee09636a71d9e6110b63140d714',106'res_mods/mods/xfw_packages/xvm_export/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',107'res_mods/mods/xfw_packages/xvm_contacts/python/wg_compat.py': 'b05cc98b6078c6a256546427e05e6a161c361a1f',108'res_mods/mods/xfw_packages/xvm_contacts/python/__init__.py': 'a79ee69894c73b35b74f98e3b2eab12d65d67826',109'res_mods/mods/xfw_packages/xvm_contacts/python/view.py': 'f8e1998ee9c8fc69029c94bdded8dabeae672ebe',110'res_mods/mods/xfw_packages/xvm_contacts/python/contacts.py': '97330ccccd6f0604a0aaab49511f9d762bb487ef',111'res_mods/mods/xfw_packages/xvm_contacts/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',112'res_mods/mods/xfw_packages/xvm_tankcarousel/python/__init__.py': '48f689c1360195379feab92785d7fbde48184390',113'res_mods/mods/xfw_packages/xvm_tankcarousel/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',114'res_mods/mods/xfw_packages/xvm_tankcarousel/python/tankcarousel.py': 'fe9c5b80c59180740d1f551d9bcc1aa192bab5a0',115'res_mods/mods/xfw_packages/xvm_tankcarousel/python/filter_popover.py': '72197614174674268de187cee83a4cd4f8797bd0',116'res_mods/mods/xfw_packages/xvm_autologin/python/__init__.py': '50e35b243464b62a5eda4053ee8a83165bc0dd13',117'res_mods/mods/xfw_packages/xvm_autologin/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',118'res_mods/mods/xfw_packages/xvm_limits/python/__init__.py': '5870f4a1fc5c9dec9aa8420bd0fbe975f36abad2',119'res_mods/mods/xfw_packages/xvm_limits/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',120'res_mods/mods/xfw_packages/xvm_techtree/python/__init__.py': '65af24c518ef8f9c0185e0429388d912be0ef773',121'res_mods/mods/xfw_packages/xvm_techtree/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',122'res_mods/mods/xfw_packages/xvm_profile/python/__init__.py': 'd2df28efed688d30e086b29c468af7846dedde08',123'res_mods/mods/xfw_packages/xvm_profile/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',124'res_mods/mods/xfw_packages/xvm_crew/python/wg_compat.py': 'b2e98a123f70021ab650b9b70a7d33fd291ef520',125'res_mods/mods/xfw_packages/xvm_crew/python/__init__.py': '99e43f5fe9e81e6f9f1292b4cd964cb2190ab51c',126'res_mods/mods/xfw_packages/xvm_crew/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',127'res_mods/mods/xfw_packages/xvm_profiler/python/__init__.py': '5f10940d194394d422508f9145acccb96080afdb',128'res_mods/mods/xfw_packages/xvm_profiler/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',129'res_mods/mods/xfw_packages/xvm_profiler/python/swfprofiler.py': '86f4ec0d8c668ca08bae1bb5ee7086587e2a7f48',130'res_mods/mods/xfw_packages/xvm_profiler/python/profiler.py': '919e33bc461e9b10b0dba742d7ca03011c001165',131'res_mods/mods/xfw_packages/xvm_ping/python/__init__.py': 'e33ab0f89f6faef7fec8db916410d7743265390d',132'res_mods/mods/xfw_packages/xvm_ping/python/pinger_wg.py': '88db5650b2db4aadf6c33b28984d8f177babd4b5',133'res_mods/mods/xfw_packages/xvm_ping/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',134'res_mods/mods/xfw_packages/xvm_ping/python/pinger.py': '818cc61c3d8687a727dec97706468fdc8c2d9ea0',135'res_mods/mods/xfw_packages/xvm_equip/python/wg_compat.py': '09ca1d014d0de9b64fb888a9b331592e69b505d1',136'res_mods/mods/xfw_packages/xvm_equip/python/__init__.py': '280b5a47fe87301e7d74cdb062220276d8c7c9da',137'res_mods/mods/xfw_packages/xvm_equip/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',138'res_mods/mods/xfw_packages/xvm_squad/python/__init__.py': '108995e07efca78f03e479d870f6762951408232',139'res_mods/mods/xfw_packages/xvm_squad/python/__version__.py': '8aa14f3b351c7959231a3ced5da46a17439e5885',...
mods.py
Source:mods.py
1# -*- coding: utf-8 -*-2import functools3from enum import IntFlag4from enum import unique5from utils.misc import pymysql_encode6from utils.misc import escape_enum7__all__ = ('Mods',)8# NOTE: the order of some of these = stupid9@unique10@pymysql_encode(escape_enum)11class Mods(IntFlag):12 NOMOD = 013 NOFAIL = 1 << 014 EASY = 1 << 115 TOUCHSCREEN = 1 << 2 # old: 'NOVIDEO'16 HIDDEN = 1 << 317 HARDROCK = 1 << 418 SUDDENDEATH = 1 << 519 DOUBLETIME = 1 << 620 RELAX = 1 << 721 HALFTIME = 1 << 822 NIGHTCORE = 1 << 923 FLASHLIGHT = 1 << 1024 AUTOPLAY = 1 << 1125 SPUNOUT = 1 << 1226 AUTOPILOT = 1 << 1327 PERFECT = 1 << 1428 KEY4 = 1 << 1529 KEY5 = 1 << 1630 KEY6 = 1 << 1731 KEY7 = 1 << 1832 KEY8 = 1 << 1933 FADEIN = 1 << 2034 RANDOM = 1 << 2135 CINEMA = 1 << 2236 TARGET = 1 << 2337 KEY9 = 1 << 2438 KEYCOOP = 1 << 2539 KEY1 = 1 << 2640 KEY3 = 1 << 2741 KEY2 = 1 << 2842 SCOREV2 = 1 << 2943 MIRROR = 1 << 3044 @functools.cache45 def __repr__(self) -> str:46 if self.value == Mods.NOMOD:47 return 'NM'48 mod_str = []49 _dict = mod2modstr_dict # global50 for mod in Mods:51 if self.value & mod:52 mod_str.append(_dict[mod])53 return ''.join(mod_str)54 def filter_invalid_combos(self, mode_vn: int) -> 'Mods':55 """Remove any invalid mod combinations."""56 # 1. mode-inspecific mod conflictions57 _dtnc = self & (Mods.DOUBLETIME | Mods.NIGHTCORE)58 if _dtnc == (Mods.DOUBLETIME | Mods.NIGHTCORE):59 self &= ~Mods.DOUBLETIME # DTNC60 elif _dtnc and self & Mods.HALFTIME:61 self &= ~Mods.HALFTIME # (DT|NC)HT62 if self & Mods.EASY and self & Mods.HARDROCK:63 self &= ~Mods.HARDROCK # EZHR64 if self & (Mods.NOFAIL | Mods.RELAX | Mods.AUTOPILOT):65 if self & Mods.SUDDENDEATH:66 self &= ~Mods.SUDDENDEATH # (NF|RX|AP)SD67 if self & Mods.PERFECT:68 self &= ~Mods.PERFECT # (NF|RX|AP)PF69 if self & (Mods.RELAX | Mods.AUTOPILOT):70 if self & Mods.NOFAIL:71 self &= ~Mods.NOFAIL # (RX|AP)NF72 if self & Mods.PERFECT and self & Mods.SUDDENDEATH:73 self &= ~Mods.SUDDENDEATH # PFSD74 # 2. remove mode-unique mods from incorrect gamemodes75 if mode_vn != 0: # osu! specific76 self &= ~OSU_SPECIFIC_MODS77 # ctb & taiko have no unique mods78 if mode_vn != 3: # mania specific79 self &= ~MANIA_SPECIFIC_MODS80 # 3. mode-specific mod conflictions81 if mode_vn == 0:82 if self & Mods.AUTOPILOT:83 if self & (Mods.SPUNOUT | Mods.RELAX):84 self &= ~Mods.AUTOPILOT # (SO|RX)AP85 if mode_vn == 3:86 self &= ~Mods.RELAX # rx is std/taiko/ctb common87 if self & Mods.HIDDEN and self & Mods.FADEIN:88 self &= ~Mods.FADEIN # HDFI89 # 4 remove multiple keymods90 # TODO: do this better91 keymods_used = self & KEY_MODS92 if bin(keymods_used).count('1') > 1:93 # keep only the first94 first_keymod = None95 for mod in KEY_MODS:96 if keymods_used & mod:97 first_keymod = mod98 break99 # remove all but the first keymod.100 self &= ~(keymods_used & ~first_keymod)101 return self102 @classmethod103 @functools.lru_cache(maxsize=64)104 def from_modstr(cls, s: str) -> 'Mods':105 # from fmt: `HDDTRX`106 mods = cls.NOMOD107 _dict = modstr2mod_dict # global108 # split into 2 character chunks109 mod_strs = [s[idx:idx+2].upper()110 for idx in range(0, len(s), 2)]111 # find matching mods112 for m in mod_strs:113 if m not in _dict:114 continue115 mods |= _dict[m]116 return mods117 @classmethod118 @functools.lru_cache(maxsize=64)119 def from_np(cls, s: str, mode_vn: int) -> 'Mods':120 mods = cls.NOMOD121 _dict = npstr2mod_dict # global122 # TODO: dis123 for mod in s.split(' '):124 if mod not in _dict:125 continue126 mods |= _dict[mod]127 # NOTE: for fetching from /np, we automatically128 # call cls.filter_invalid_combos as we assume129 # the input string is from user input.130 return mods.filter_invalid_combos(mode_vn)131modstr2mod_dict = {132 'NF': Mods.NOFAIL,133 'EZ': Mods.EASY,134 'TD': Mods.TOUCHSCREEN,135 'HD': Mods.HIDDEN,136 'HR': Mods.HARDROCK,137 'SD': Mods.SUDDENDEATH,138 'DT': Mods.DOUBLETIME,139 'RX': Mods.RELAX,140 'HT': Mods.HALFTIME,141 'NC': Mods.NIGHTCORE,142 'FL': Mods.FLASHLIGHT,143 'AU': Mods.AUTOPLAY,144 'SO': Mods.SPUNOUT,145 'AP': Mods.AUTOPILOT,146 'PF': Mods.PERFECT,147 'FI': Mods.FADEIN,148 'RN': Mods.RANDOM,149 'CN': Mods.CINEMA,150 'TP': Mods.TARGET,151 'V2': Mods.SCOREV2,152 'MR': Mods.MIRROR,153 '1K': Mods.KEY1,154 '2K': Mods.KEY2,155 '3K': Mods.KEY3,156 '4K': Mods.KEY4,157 '5K': Mods.KEY5,158 '6K': Mods.KEY6,159 '7K': Mods.KEY7,160 '8K': Mods.KEY8,161 '9K': Mods.KEY9,162 'CO': Mods.KEYCOOP163}164npstr2mod_dict = {165 '-NoFail': Mods.NOFAIL,166 '-Easy': Mods.EASY,167 '+Hidden': Mods.HIDDEN,168 '+HardRock': Mods.HARDROCK,169 '+SuddenDeath': Mods.SUDDENDEATH,170 '+DoubleTime': Mods.DOUBLETIME,171 '~Relax~': Mods.RELAX,172 '-HalfTime': Mods.HALFTIME,173 '+Nightcore': Mods.NIGHTCORE,174 '+Flashlight': Mods.FLASHLIGHT,175 '|Autoplay|': Mods.AUTOPLAY,176 '-SpunOut': Mods.SPUNOUT,177 '~Autopilot~': Mods.AUTOPILOT,178 '+Perfect': Mods.PERFECT,179 '|Cinema|': Mods.CINEMA,180 '~Target~': Mods.TARGET,181 # perhaps could modify regex182 # to only allow these once,183 # and only at the end of str?184 '|1K|': Mods.KEY1,185 '|2K|': Mods.KEY2,186 '|3K|': Mods.KEY3,187 '|4K|': Mods.KEY4,188 '|5K|': Mods.KEY5,189 '|6K|': Mods.KEY6,190 '|7K|': Mods.KEY7,191 '|8K|': Mods.KEY8,192 '|9K|': Mods.KEY9,193 # XXX: kinda mood that there's no way194 # to tell K1-K4 co-op from /np, but195 # scores won't submit or anything so196 # it's not ultimately a problem.197 '|10K|': Mods.KEY5 | Mods.KEYCOOP,198 '|12K|': Mods.KEY6 | Mods.KEYCOOP,199 '|14K|': Mods.KEY7 | Mods.KEYCOOP,200 '|16K|': Mods.KEY8 | Mods.KEYCOOP,201 '|18K|': Mods.KEY9 | Mods.KEYCOOP202}203mod2modstr_dict = {204 Mods.NOFAIL: 'NF',205 Mods.EASY: 'EZ',206 Mods.TOUCHSCREEN: 'TD',207 Mods.HIDDEN: 'HD',208 Mods.HARDROCK: 'HR',209 Mods.SUDDENDEATH: 'SD',210 Mods.DOUBLETIME: 'DT',211 Mods.RELAX: 'RX',212 Mods.HALFTIME: 'HT',213 Mods.NIGHTCORE: 'NC',214 Mods.FLASHLIGHT: 'FL',215 Mods.AUTOPLAY: 'AU',216 Mods.SPUNOUT: 'SO',217 Mods.AUTOPILOT: 'AP',218 Mods.PERFECT: 'PF',219 Mods.FADEIN: 'FI',220 Mods.RANDOM: 'RN',221 Mods.CINEMA: 'CN',222 Mods.TARGET: 'TP',223 Mods.SCOREV2: 'V2',224 Mods.MIRROR: 'MR',225 Mods.KEY1: '1K',226 Mods.KEY2: '2K',227 Mods.KEY3: '3K',228 Mods.KEY4: '4K',229 Mods.KEY5: '5K',230 Mods.KEY6: '6K',231 Mods.KEY7: '7K',232 Mods.KEY8: '8K',233 Mods.KEY9: '9K',234 Mods.KEYCOOP: 'CO'235}236KEY_MODS = (237 Mods.KEY1 | Mods.KEY2 | Mods.KEY3 |238 Mods.KEY4 | Mods.KEY5 | Mods.KEY6 |239 Mods.KEY7 | Mods.KEY8 | Mods.KEY9240)241#FREE_MOD_ALLOWED = (242# Mods.NOFAIL | Mods.EASY | Mods.HIDDEN | Mods.HARDROCK |243# Mods.SUDDENDEATH | Mods.FLASHLIGHT | Mods.FADEIN |244# Mods.RELAX | Mods.AUTOPILOT | Mods.SPUNOUT | KEY_MODS245#)246SCORE_INCREASE_MODS = (247 Mods.HIDDEN | Mods.HARDROCK | Mods.FADEIN |248 Mods.DOUBLETIME | Mods.FLASHLIGHT249)250SPEED_CHANGING_MODS = Mods.DOUBLETIME | Mods.NIGHTCORE | Mods.HALFTIME251OSU_SPECIFIC_MODS = Mods.AUTOPILOT | Mods.SPUNOUT | Mods.TARGET252# taiko & catch have no specific mods...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!