--[[----------------+ UPGRADES +------------------]]-- SIGNED_INT_LIMIT = 2147483647 UNSIGNED_INT_LIMIT = 4294967296 LOADOUT_POSITION_BODY = -1 LOADOUT_POSITION_PRIMARY_AND_SECONDARY = -2 LOADOUT_POSITION_ALL = -3 PLAYER_DATA_TYPE_DMGMULT = 1 PLAYER_DATA_TYPE_FIRERATEMULT = 2 PLAYER_DATA_TYPE_RELOADMULT = 3 PLAYER_DATA_TYPE_BASEDMG = 4 PLAYER_DATA_TYPE_MISC = 5 PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE = 1 PLAYER_DATA_DAMAGE_DMGMULT_MULTIPLICATIVE = 2 PLAYER_DATA_DAMAGE_DMGMULT_TASTYORANGE = 3 PLAYER_DATA_DAMAGE_DMGMULT_DEMOSHIELD = 4 PLAYER_DATA_DAMAGE_DMGMULT_PRISMATIC = 5 PLAYER_DATA_DAMAGE_DMGMULT_GEMSTONE = 6 PLAYER_DATA_DAMAGE_DMGMULT_MONEYISPOWER = 7 PLAYER_DATA_DAMAGE_DMGMULT_DYNAMO = 8 PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE = 1 PLAYER_DATA_SPEED_FIRERATEMULT_MULTIPLICATIVE = 2 PLAYER_DATA_SPEED_FIRERATEMULT_DEMOSHIELD = 3 PLAYER_DATA_SPEED_FIRERATEMULT_BARRAGEMODE = 4 PLAYER_DATA_SPEED_FIRERATEMULT_ADRENALINE = 5 PLAYER_DATA_SPEED_FIRERATEMULT_SPEEDRING = 6 PLAYER_DATA_SPEED_RELOADRATE = 1 PLAYER_DATA_SPEED_RELOADRATE_ADRENALINE = 2 PLAYER_DATA_SPEED_RELOADRATE_COMMITTED = 3 PLAYER_DATA_DAMAGE_BASEDMG_WINDUP = 1 PLAYER_DATA_DAMAGE_BASEDMG_MAGSHOT = 2 PLAYER_DATA_DAMAGE_BASEDMG_RELOADDAMAGE = 3 PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE = 4 PLAYER_DATA_DAMAGE_BASEDMG_MULTIPLICATIVE = 5 PLAYER_DATA_MISC_BULLETS_MAGSHOT = 1 PLAYER_DATA_MISC_BULLETS_WINDUP = 2 PLAYER_DATA_MISC_DMG_RELOAD = 3 PLAYER_DATA_TEMPLATE = { [1] = { [PLAYER_DATA_TYPE_DMGMULT] = { [PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_DMGMULT_MULTIPLICATIVE] = { Value = 1, Operation = "multiply" }, [PLAYER_DATA_DAMAGE_DMGMULT_PRISMATIC] = { Value = 1, Operation = "multiply" }, [PLAYER_DATA_DAMAGE_DMGMULT_TASTYORANGE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_DMGMULT_DEMOSHIELD] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_DMGMULT_GEMSTONE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_DMGMULT_DYNAMO] = { Value = 0, DefaultValue = 0, Operation = "add" }, }, [PLAYER_DATA_TYPE_FIRERATEMULT] = { [PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_SPEED_FIRERATEMULT_MULTIPLICATIVE] = { Value = 1, Operation = "divide" }, [PLAYER_DATA_SPEED_FIRERATEMULT_DEMOSHIELD] = { Value = 1, Operation = "divide" }, [PLAYER_DATA_SPEED_FIRERATEMULT_BARRAGEMODE] = { Value = 1, Operation = "divide" }, [PLAYER_DATA_SPEED_FIRERATEMULT_ADRENALINE] = { Value = 1, Operation = "divide" }, [PLAYER_DATA_SPEED_FIRERATEMULT_SPEEDRING] = { Value = 1, Operation = "multiply" }, }, [PLAYER_DATA_TYPE_RELOADMULT] = { [PLAYER_DATA_SPEED_RELOADRATE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_SPEED_RELOADRATE_ADRENALINE] = { Value = 1, Operation = "divide" }, [PLAYER_DATA_SPEED_RELOADRATE_COMMITTED] = { Value = 1, Operation = "multiply" }, }, [PLAYER_DATA_TYPE_BASEDMG] = { [PLAYER_DATA_DAMAGE_BASEDMG_WINDUP] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_BASEDMG_MAGSHOT] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_BASEDMG_RELOADDAMAGE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_DAMAGE_BASEDMG_MULTIPLICATIVE] = { Value = 1, DefaultValue = 1, Operation = "multiply" }, }, [PLAYER_DATA_TYPE_MISC] = { [PLAYER_DATA_MISC_BULLETS_MAGSHOT] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_MISC_BULLETS_WINDUP] = { Value = 0, DefaultValue = 0, Operation = "add" }, [PLAYER_DATA_MISC_DMG_RELOAD] = { Value = 0, DefaultValue = 0, Operation = "add" }, }, } } UPGRADE_COMMON_CHANCE = 0.5 UPGRADE_UNCOMMON_CHANCE = 0.35 UPGRADE_RARE_CHANCE = 0.12 UPGRADE_EPIC_CHANCE = 0.02 UPGRADE_LEGENDARY_CHANCE = 0.01 UPGRADE_GREED_CHANCE = 0.78 UPGRADE_GREED_RARE_CHANCE = 0.13 UPGRADE_GREED_EPIC_CHANCE = 0.07 UPGRADE_GREED_LEGENDARY_CHANCE = 0.02 UPGRADE_SHOP_COMMON_CHANCE = 0.4 UPGRADE_SHOP_UNCOMMON_CHANCE = 0.27 UPGRADE_SHOP_RARE_CHANCE = 0.18 UPGRADE_SHOP_GREED_CHANCE = 0.07 UPGRADE_SHOP_EPIC_CHANCE = 0.05 UPGRADE_SHOP_LEGENDARY_CHANCE = 0.03 UPGRADE_BOURGEOISIE_RARE_CHANCE = 0.97 UPGRADE_BOURGEOISIE_EPIC_CHANCE = 0.025 UPGRADE_BOURGEOISIE_LEGENDARY_CHANCE = 0.005 UPGRADE_TYPE_COMMON = 0 UPGRADE_TYPE_UNCOMMON = 1 UPGRADE_TYPE_RARE = 2 UPGRADE_TYPE_EPIC = 3 UPGRADE_TYPE_LEGENDARY = 4 UPGRADE_TYPE_GREED = 5 UPGRADE_COST_COMMON_BASE = 100 UPGRADE_COST_UNCOMMON_BASE = 125 UPGRADE_COST_RARE_BASE = 180 UPGRADE_COST_EPIC_BASE = 375 UPGRADE_COST_LEGENDARY_BASE = 600 UPGRADE_COST_GREED_BASE = 275 UPGRADE_COST_RAMP_COEF = 1.05 -- math.floor( COST * ( ( WAVE - 1 )^UPGRADE_COST_RAMP_COEF ) ) UpgradeChances = { [UPGRADE_TYPE_COMMON] = UPGRADE_COMMON_CHANCE, [UPGRADE_TYPE_UNCOMMON] = UPGRADE_UNCOMMON_CHANCE, [UPGRADE_TYPE_RARE] = UPGRADE_RARE_CHANCE, [UPGRADE_TYPE_EPIC] = UPGRADE_EPIC_CHANCE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_LEGENDARY_CHANCE } UpgradeChancesEPIC = { [UPGRADE_TYPE_EPIC] = 1 - UPGRADE_LEGENDARY_CHANCE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_LEGENDARY_CHANCE } UpgradeChancesGREED = { [UPGRADE_TYPE_GREED] = UPGRADE_GREED_CHANCE, [UPGRADE_TYPE_RARE] = UPGRADE_GREED_RARE_CHANCE, [UPGRADE_TYPE_EPIC] = UPGRADE_GREED_EPIC_CHANCE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_GREED_LEGENDARY_CHANCE } UpgradeChancesSHOP = { [UPGRADE_TYPE_COMMON] = UPGRADE_SHOP_COMMON_CHANCE, [UPGRADE_TYPE_UNCOMMON] = UPGRADE_SHOP_UNCOMMON_CHANCE, [UPGRADE_TYPE_RARE] = UPGRADE_SHOP_RARE_CHANCE, [UPGRADE_TYPE_EPIC] = UPGRADE_SHOP_EPIC_CHANCE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_SHOP_LEGENDARY_CHANCE, [UPGRADE_TYPE_GREED] = UPGRADE_SHOP_GREED_CHANCE, } UpgradeChancesBOURGEOISIE = { [UPGRADE_TYPE_RARE] = UPGRADE_BOURGEOISIE_RARE_CHANCE, [UPGRADE_TYPE_EPIC] = UPGRADE_BOURGEOISIE_EPIC_CHANCE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_BOURGEOISIE_LEGENDARY_CHANCE, } UPGRADE_LOOT_COMMON = 0 UPGRADE_LOOT_GREED = 1 UPGRADE_LOOT_EPIC = 2 UPGRADE_LOOT_SHOP = 3 UPGRADE_LOOT_BOURGEOISIE = 4 UPGRADE_LOOT_SHOP_BOURGEOISIE = 5 UPGRADE_TYPE_TABLE = { [UPGRADE_TYPE_COMMON] = "Common", [UPGRADE_TYPE_UNCOMMON] = "Uncommon", [UPGRADE_TYPE_RARE] = "Rare", [UPGRADE_TYPE_EPIC] = "Epic", [UPGRADE_TYPE_LEGENDARY] = "Legendary", [UPGRADE_TYPE_GREED] = "GREED", } UPGRADE_LOOT_TABLE = { [UPGRADE_LOOT_COMMON] = UpgradeChances, [UPGRADE_LOOT_GREED] = UpgradeChancesGREED, [UPGRADE_LOOT_EPIC] = UpgradeChancesEPIC, [UPGRADE_LOOT_SHOP] = UpgradeChancesSHOP, [UPGRADE_LOOT_BOURGEOISIE] = UpgradeChancesBOURGEOISIE, [UPGRADE_LOOT_SHOP_BOURGEOISIE] = UpgradeChancesBOURGEOISIE, } UPGRADE_COST_TABLE = { [UPGRADE_TYPE_COMMON] = UPGRADE_COST_COMMON_BASE, [UPGRADE_TYPE_UNCOMMON] = UPGRADE_COST_UNCOMMON_BASE, [UPGRADE_TYPE_RARE] = UPGRADE_COST_RARE_BASE, [UPGRADE_TYPE_EPIC] = UPGRADE_COST_EPIC_BASE, [UPGRADE_TYPE_LEGENDARY] = UPGRADE_COST_LEGENDARY_BASE, [UPGRADE_TYPE_GREED] = UPGRADE_COST_GREED_BASE, } UPGRADE_RING_PRIO_TABLE = { [UPGRADE_TYPE_COMMON] = 0.1, [UPGRADE_TYPE_UNCOMMON] = 0.2, [UPGRADE_TYPE_RARE] = 0.4, [UPGRADE_TYPE_EPIC] = 0.8, [UPGRADE_TYPE_LEGENDARY] = 1, [UPGRADE_TYPE_GREED] = 0.6, } UPGRADE_BOGO_CHANCE_TABLE = { -- 1 = 100%, 0.5 = 50% [UPGRADE_TYPE_COMMON] = 1, [UPGRADE_TYPE_UNCOMMON] = 1, [UPGRADE_TYPE_RARE] = 0.75, [UPGRADE_TYPE_GREED] = 0.75, [UPGRADE_TYPE_EPIC] = 0.5, [UPGRADE_TYPE_LEGENDARY] = 0.25, } UPGRADE_DEFAULT_COUNT = 3 UPGRADE_DEFAULT_COUNT_SHOP = 5 UPGRADE_DEFAULT_MAX_REROLLS = 1 UPGRADE_DEFAULT_MAX_UPGRADES = 1 UPGRADE_SKIP_BONUS = 250 UPGRADE_REROLL = -1 UPGRADE_REROLL_COST = 10 UPGRADE_REROLL_COST_RAMP_COEF = 1.15 UPGRADE_CATEGORY_ALL = 0 UPGRADE_CATEGORY_DAMAGE = 1 UPGRADE_CATEGORY_SPEED = 2 UPGRADE_CATEGORY_HEALTH = 3 UPGRADE_CATEGORY_MONEY = 4 UPGRADE_CATEGORY_GREED = 5 UPGRADE_CATEGORY_EPIC = 6 UPGRADE_CATEGORY_ELITE_BOSS = 7 UPGRADE_CATEGORY_SHOP = 8 UPGRADE_CATEGORY_WEAPON = 9 UPGRADE_CATEGORY_END = 10 UPGRADE_CATEGORY_LOOP = 11 UPGRADE_CATEGORY_SHOP_DAMAGE = 12 UPGRADE_CATEGORY_SHOP_SPEED = 13 UPGRADE_CATEGORY_SHOP_HEALTH = 14 UPGRADE_CATEGORY_SHOP_WEAPON = 15 UPGRADE_CATEGORY_SHOP_BOURGEOISIE = 16 UPGRADE_CATEGORY_SHOP_GREED = 17 UPGRADE_CATEGORY_SHOP_EPIC = 18 UPGRADE_CATEGORY_BOURGEOISIE = 19 UPGRADE_CATEGORY_OVERCLOCK = 20 UPGRADE_CATEGORY_GAUNTLET = 21 WAVE_TYPE_STANDARD = 1 WAVE_TYPE_HORDE = 2 WAVE_TYPE_GAUNTLET = 3 WAVE_TYPE_CONTROL = 4 WAVE_TYPE_BLANK = 0 WAVE_TYPE_CURRENT = WAVE_TYPE_STANDARD WAVE_TYPE_CHANCE_TABLE = { [WAVE_TYPE_STANDARD] = 1, [WAVE_TYPE_HORDE] = 0.33, [WAVE_TYPE_GAUNTLET] = 1, [WAVE_TYPE_CONTROL] = 0.125, } WAVE_TYPE_KEY = { [WAVE_TYPE_STANDARD] = "Invasion", [WAVE_TYPE_HORDE] = "Horde", [WAVE_TYPE_GAUNTLET] = "Gauntlet", [WAVE_TYPE_CONTROL] = "Control Points", [WAVE_TYPE_BLANK] = "", } WAVE_HORDE_DURATION = 30 WAVE_DURATION = 0 WAVE_NUMOFWAVESPERLOOP = 5 + 2 -- Shop and Elite fight are the 2 added WAVE_LOOPSTILEND = 4 -- used to be 5 WAVE_ISXL = false WAVE_XL_MIN_WAVE = 8 WAVE_XL_ENEMY_MULT = 2 WAVE_XL_LOOT_MULT = 2 WAVE_XL_CHANCE = 0.05 UPGRADE_LOOT_CATEGORY = UPGRADE_CATEGORY_ALL VOTE_CATEGORIES = { [UPGRADE_CATEGORY_ALL] = { name = "Random Loot", Weight = 0.65, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_ALL, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL}, SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_DAMAGE] = { name = "Damage", Weight = 1.15, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_DAMAGE, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SPEED] = { name = "Speed", Weight = 1, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_SPEED, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil }, [UPGRADE_CATEGORY_HEALTH] = { name = "Health", Weight = 0.85, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_HEALTH, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_MONEY] = { name = "Money", Weight = 0.75, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_MONEY, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_GREED] = { name = "GREED", Weight = 0.3, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_GREED, LootTable = UPGRADE_LOOT_GREED, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_WEAPON] = { name = "Weapon", Weight = 1, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_WEAPON, LootTable = UPGRADE_LOOT_COMMON, AvailableTypes = {WAVE_TYPE_STANDARD,WAVE_TYPE_HORDE,WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_EPIC] = { name = "Elite Fight", Weight = 0.2, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_EPIC, LootTable = UPGRADE_LOOT_EPIC, AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_BOURGEOISIE] = { name = "Dropped Bourgeoi$ie", Weight = 0.125, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_BOURGEOISIE, LootTable = UPGRADE_LOOT_BOURGEOISIE, AvailableTypes = {WAVE_TYPE_CONTROL},SelectedType = nil, IsXL = false}, [UPGRADE_CATEGORY_OVERCLOCK] = { name = "Weapon Overclock", Weight = 0, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_OVERCLOCK, LootTable = UPGRADE_LOOT_COMMON,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_GAUNTLET] = { name = "Gauntlet", Weight = 0, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_ALL, LootTable = UPGRADE_LOOT_COMMON,AvailableTypes = {WAVE_TYPE_GAUNTLET},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_ELITE_BOSS] = { name = "Elite Fight", Weight = 0, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_EPIC, LootTable = UPGRADE_LOOT_EPIC,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false}, [UPGRADE_CATEGORY_END] = { name = "End Game (Victory)", Weight = 0, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_AL, LootTable = UPGRADE_LOOT_COMMON,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_LOOP] = { name = "Continue (Random Loot + Random Flex)", Weight = 0, IsShop = false, CorrespondingCate = UPGRADE_CATEGORY_ALL, LootTable = UPGRADE_LOOT_COMMON,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP] = { name = "Random Loot Shop!", Weight = 0, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_ALL, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_DAMAGE] = { name = "Damage Loot Shop!", Weight = 0.75, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_DAMAGE, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_SPEED] = { name = "Speed Loot Shop!", Weight = 1, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_SPEED, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_HEALTH] = { name = "Health Loot Shop!", Weight = 1, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_HEALTH, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_WEAPON] = { name = "Weapon Loot Shop!", Weight = 1, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_WEAPON, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_BOURGEOISIE] = { name = "Bourgeoi$ie Shop!", Weight = 0.6, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_BOURGEOISIE, LootTable = UPGRADE_LOOT_SHOP_BOURGEOISIE,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_GREED] = { name = "GREED Loot Shop!", Weight = 0.3, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_GREED, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, [UPGRADE_CATEGORY_SHOP_EPIC] = { name = "Random Epic Shop!", Weight = 0.15, IsShop = true, CorrespondingCate = UPGRADE_CATEGORY_EPIC, LootTable = UPGRADE_LOOT_SHOP,AvailableTypes = {WAVE_TYPE_STANDARD},SelectedType = nil, IsXL = false }, } --Common UPGRADE_COMMON_DMG = 0 UPGRADE_COMMON_DMG_CRIT_RATE = 2 UPGRADE_COMMON_DMG_CRIT_DAMAGE = 3 UPGRADE_COMMON_DMG_BULLETS_PER_SHOT = 4 UPGRADE_COMMON_DMG_AT_CLOSE = 5 UPGRADE_COMMON_DMG_MELEE = 6 UPGRADE_COMMON_DMG_JARATE_SHOT = 7 UPGRADE_COMMON_DMG_BURN = 8 UPGRADE_COMMON_DMG_BLEED = 9 UPGRADE_COMMON_SPEED_FIRERATE = 1 UPGRADE_COMMON_SPEED_MOVESPEED = 10 UPGRADE_COMMON_SPEED_PROJSPEED = 11 UPGRADE_COMMON_SPEED_DEPLOYSPEED = 12 UPGRADE_COMMON_SPEED_SLOW_ON_HIT = 13 UPGRADE_COMMON_SPEED_RECHARGE_RATE = 31 UPGRADE_COMMON_WEAPON_CLIPSIZE = 14 UPGRADE_COMMON_WEAPON_RESERVEAMMO = 15 UPGRADE_COMMON_WEAPON_AMMOREGEN = 16 UPGRADE_COMMON_WEAPON_BLAST_RADIUS = 17 UPGRADE_COMMON_WEAPON_SPREAD = 18 UPGRADE_COMMON_WEAPON_MELEE_RANGE = 19 UPGRADE_COMMON_HEALTH_BONUS = 20 UPGRADE_COMMON_HEALTH_MULT = 21 UPGRADE_COMMON_HEALTH_REGEN = 22 UPGRADE_COMMON_HEALTH_HOK = 23 UPGRADE_COMMON_HEALTH_MELEE_AOE = 24 UPGRADE_COMMON_HEALTH_RECEIVED = 25 UPGRADE_COMMON_HEALTH_MILKY = 26 UPGRADE_COMMON_MONEY_INCOME = 27 UPGRADE_COMMON_MONEY_GOLDEN_ENEMIES = 28 UPGRADE_COMMON_MONEY_WIRE_TAP = 29 UPGRADE_COMMON_MONEY_DISCOUNT = 30 UPGRADE_COMMON_WEAPON_PENETRATION = 98 UPGRADE_COMMON_HEALTH_BUILDING = 32 UPGRADE_COMMON_HEALTH_DISPENSER_RATE = 33 UPGRADE_COMMON_DMG_SENTRY_DMG = 34 UPGRADE_COMMON_SPEED_SENTRY_FIRERATE = 35 UPGRADE_COMMON_SPEED_TELEPORTERRECHARGE = 36 UPGRADE_COMMON_SPEED_CONSTRUCTION = 37 UPGRADE_COMMON_SPEED_SENTRY_ROCKET = 38 UPGRADE_COMMON_WEAPON_SENTRY_RANGE = 39 UPGRADE_COMMON_WEAPON_SENTRY_AMMO = 40 UPGRADE_COMMON_HEALTH_HEALRATE = 41 UPGRADE_COMMON_HEALTH_OVERHEAL = 42 UPGRADE_COMMON_SPEED_OVERHEAL_DECAY = 43 UPGRADE_COMMON_SPEED_OVERHEAL_RATE = 44 UPGRADE_COMMON_WEAPON_MEDIGUN_RANGE = 45 UPGRADE_COMMON_WEAPON_MEDIGUN_UBERRATE = 46 UPGRADE_COMMON_WEAPON_MEDIGUN_UBERDURATION = 47 UPGRADE_COMMON_WEAPON_EFFECT_DURATION = 48 UPGRADE_COMMON_WEAPON_BANNER_EFFECT_DURATION = 49 UPGRADE_COMMON_WEAPON_BANNER_EFFECT_RANGE = 50 UPGRADE_COMMON_WEAPON_FLAME_RANGE = 51 UPGRADE_COMMON_SPEED_AFTERBURN_RATE = 52 UPGRADE_COMMON_SPEED_STICKY_CHARGE = 53 UPGRADE_COMMON_SPEED_SHIELD_CHARGE = 54 UPGRADE_COMMON_SPEED_SHIELD_KBRES = 55 UPGRADE_COMMON_DMG_SHIELD_IMPACT = 56 UPGRADE_COMMON_SPEED_MINIGUN_SPINUP = 57 UPGRADE_COMMON_HEALTH_LUNCHBOX = 58 UPGRADE_COMMON_SPEED_SNIPER_CHARGERATE = 59 UPGRADE_COMMON_DMG_REVOLVER_DISGUISED = 60 UPGRADE_COMMON_SPEED_CLOAKREGEN = 61 UPGRADE_COMMON_SPEED_CLOAKDURATION = 62 UPGRADE_COMMON_SPEED_CLOAKSPEED = 63 UPGRADE_COMMON_WEAPON_SAPPER = 64 UPGRADE_COMMON_WEAPON_TWOWAY = 65 UPGRADE_COMMON_WEAPON_METALAMMO = 66 UPGRADE_COMMON_DMG_FIREARROWS = 67 UPGRADE_COMMON_WEAPON_METALAMMO2 = 68 UPGRADE_COMMON_WEAPON_PARACHUTE_REDEPLOY = 69 UPGRADE_COMMON_SPEED_PARACHUTE_AIRCONTROL = 70 UPGRADE_COMMON_SPEED_PARACHUTE_FALLSPEED = 71 UPGRADE_COMMON_SPEED_JETPACK_RELAUNCH = 72 UPGRADE_COMMON_WEAPON_GUNSLINGER_SENTRIES = 73 UPGRADE_COMMON_WEAPON_SYDNEY_RADIUSSLEEPER = 74 UPGRADE_COMMON_WEAPON_SYDNEY_MAXDURATION = 75 UPGRADE_COMMON_DMG_MACHINA_DMG = 76 UPGRADE_COMMON_DMG_AMBIE_NOFALLOFF = 77 UPGRADE_COMMON_SPEED_SPYCICLE_COOLDOWN = 78 UPGRADE_COMMON_HEALTH_SPYCICLE_DURATION = 79 UPGRADE_COMMON_WEAPON_HUO_AMMODRAIN = 80 UPGRADE_COMMON_WEAPON_MITTEN_ALWAYSCRIT = 81 UPGRADE_COMMON_SPEED_GRU_EVIC_DRAINRATE = 82 UPGRADE_COMMON_SPEED_SHIELDRECHARGE_RATE = 83 UPGRADE_COMMON_MONEY_ONESHOT = 84 UPGRADE_COMMON_WEAPON_SHIELD_BASH_ANYDISTANCE = 85 UPGRADE_COMMON_DAMAGE_DMGBOOST_WHILECHARGING = 86 UPGRADE_COMMON_WEAPON_STOMP = 87 UPGRADE_COMMON_WEAPON_LONGERCHARGE = 88 UPGRADE_COMMON_WEAPON_MELEEKILLSFILL = 89 UPGRADE_COMMON_WEAPON_MELEEHITSFILL = 90 UPGRADE_COMMON_WEAPON_BASHFILL = 91 UPGRADE_COMMON_WEAPON_TIDE_NODRAIN = 92 UPGRADE_COMMON_WEAPON_ATTACKWHILECHARGING = 93 UPGRADE_COMMON_HEALTH_REGENBASH = 94 UPGRADE_COMMON_SPEED_TURNRATE = 95 UPGRADE_COMMON_SPEED_FIRERATE_WHILECHARGING = 96 UPGRADE_COMMON_DAMAGE_STICKY_FULLCHARGE = 97 UPGRADE_COMMON_WEAPON_AMMO_REFILLONKILL = 98 UPGRADE_COMMON_DAMAGE_MAGSHOT = 99 UPGRADE_COMMON_DAMAGE_WINDUP = 100 UPGRADE_COMMON_DAMAGE_ONRELOAD = 101 --Uncommon UPGRADE_UNCOMMON_DMG = 1000 UPGRADE_UNCOMMON_DMG_CRIT_RATE = 1002 UPGRADE_UNCOMMON_DMG_CRIT_DAMAGE = 1003 UPGRADE_UNCOMMON_DMG_BULLETS_PER_SHOT = 1004 UPGRADE_UNCOMMON_DMG_AT_CLOSE = 1005 UPGRADE_UNCOMMON_DMG_MELEE = 1006 UPGRADE_UNCOMMON_DMG_JARATE_SHOT = 1007 UPGRADE_UNCOMMON_DMG_BURN = 1008 UPGRADE_UNCOMMON_DMG_BLEED = 1009 UPGRADE_UNCOMMON_SPEED_FIRERATE = 1001 UPGRADE_UNCOMMON_SPEED_MOVESPEED = 1010 UPGRADE_UNCOMMON_SPEED_PROJSPEED = 1011 UPGRADE_UNCOMMON_SPEED_DEPLOYSPEED = 1012 UPGRADE_UNCOMMON_SPEED_SLOW_ON_HIT = 1013 UPGRADE_UNCOMMON_SPEED_RECHARGE_RATE = 1034 UPGRADE_UNCOMMON_WEAPON_CLIPSIZE = 1014 UPGRADE_UNCOMMON_WEAPON_RESERVEAMMO = 1015 UPGRADE_UNCOMMON_WEAPON_AMMOREGEN = 1016 UPGRADE_UNCOMMON_WEAPON_BLAST_RADIUS = 1017 UPGRADE_UNCOMMON_WEAPON_SPREAD = 1018 UPGRADE_UNCOMMON_WEAPON_MELEE_RANGE = 1019 UPGRADE_UNCOMMON_HEALTH_BONUS = 1020 UPGRADE_UNCOMMON_HEALTH_MULT = 1021 UPGRADE_UNCOMMON_HEALTH_REGEN = 1022 UPGRADE_UNCOMMON_HEALTH_HOK = 1023 UPGRADE_UNCOMMON_HEALTH_MELEE_AOE = 1024 UPGRADE_UNCOMMON_HEALTH_RECEIVED = 1025 UPGRADE_UNCOMMON_HEALTH_MILKY = 1026 UPGRADE_UNCOMMON_MONEY_INCOME = 1027 UPGRADE_UNCOMMON_MONEY_GOLDEN_ENEMIES = 1028 UPGRADE_UNCOMMON_MONEY_WIRE_TAP = 1029 UPGRADE_UNCOMMON_MONEY_LARGER_SHOPS = 1030 UPGRADE_UNCOMMON_MONEY_REROLLS = 1031 UPGRADE_UNCOMMON_HEALTH_AOE_HEAL = 1032 UPGRADE_UNCOMMON_HEALTH_FIGHT_INCREASE = 1033 UPGRADE_UNCOMMON_WEAPON_PENETRATION = 1100 UPGRADE_UNCOMMON_HEALTH_BUILDING = 1035 UPGRADE_UNCOMMON_HEALTH_DISPENSER_RATE = 1036 UPGRADE_UNCOMMON_DMG_SENTRY_DMG = 1037 UPGRADE_UNCOMMON_SPEED_SENTRY_FIRERATE = 1038 UPGRADE_UNCOMMON_SPEED_TELEPORTERRECHARGE = 1039 UPGRADE_UNCOMMON_SPEED_CONSTRUCTION = 1040 UPGRADE_UNCOMMON_SPEED_SENTRY_ROCKET = 1041 UPGRADE_UNCOMMON_WEAPON_SENTRY_RANGE = 1042 UPGRADE_UNCOMMON_WEAPON_SENTRY_AMMO = 1043 UPGRADE_UNCOMMON_HEALTH_HEALRATE = 1044 UPGRADE_UNCOMMON_HEALTH_OVERHEAL = 1045 UPGRADE_UNCOMMON_SPEED_OVERHEAL_DECAY = 1046 UPGRADE_UNCOMMON_SPEED_OVERHEAL_RATE = 1047 UPGRADE_UNCOMMON_WEAPON_MEDIGUN_RANGE = 1048 UPGRADE_UNCOMMON_WEAPON_MEDIGUN_UBERRATE = 1049 UPGRADE_UNCOMMON_WEAPON_MEDIGUN_UBERDURATION = 1050 UPGRADE_UNCOMMON_WEAPON_EFFECT_DURATION = 1051 UPGRADE_UNCOMMON_WEAPON_BANNER_EFFECT_DURATION = 1052 UPGRADE_UNCOMMON_WEAPON_BANNER_EFFECT_RANGE = 1053 UPGRADE_UNCOMMON_WEAPON_FLAME_RANGE = 1054 UPGRADE_UNCOMMON_SPEED_AFTERBURN_RATE = 1055 UPGRADE_UNCOMMON_SPEED_STICKY_CHARGE = 1056 UPGRADE_UNCOMMON_SPEED_SHIELD_CHARGE = 1057 UPGRADE_UNCOMMON_SPEED_SHIELD_KBRES = 1058 UPGRADE_UNCOMMON_DMG_SHIELD_IMPACT = 1059 UPGRADE_UNCOMMON_SPEED_MINIGUN_SPINUP = 1060 UPGRADE_UNCOMMON_HEALTH_LUNCHBOX = 1061 UPGRADE_UNCOMMON_SPEED_SNIPER_CHARGERATE = 1062 UPGRADE_UNCOMMON_DMG_REVOLVER_DISGUISED = 1063 UPGRADE_UNCOMMON_SPEED_CLOAKREGEN = 1064 UPGRADE_UNCOMMON_SPEED_CLOAKDURATION = 1065 UPGRADE_UNCOMMON_SPEED_CLOAKRATE = 1066 UPGRADE_UNCOMMON_SPEED_CLOAKSPEED = 1067 UPGRADE_UNCOMMON_SPEED_TELEPORTER_SPEEDBOOST = 1068 UPGRADE_UNCOMMON_WEAPON_FLAME_RICOCHET = 1069 UPGRADE_UNCOMMON_HEALTH_SHIELD_BULLETRES = 1070 UPGRADE_UNCOMMON_WEAPON_ARROW_PEN = 1071 UPGRADE_UNCOMMON_DMG_REVOLVER_CRIT = 1072 UPGRADE_UNCOMMON_WEAPON_REVOLVER_UBERDRAIN = 1073 UPGRADE_UNCOMMON_WEAPON_SAPPER_MARK = 1074 UPGRADE_UNCOMMON_WEAPON_METALGAIN = 1075 UPGRADE_UNCOMMON_DMG_EOI = 1076 UPGRADE_UNCOMMON_SPEED_PARACHUTE_XYSPEED = 1077 UPGRADE_UNCOMMON_WEAPON_JETPACKSTUN = 1078 UPGRADE_UNCOMMON_WEAPON_LOCH_IMPACTEXP = 1079 UPGRADE_UNCOMMON_WEAPON_SNIPER_EH = 1080 UPGRADE_UNCOMMON_DMG_MACHINA_DMG = 1081 UPGRADE_UNCOMMON_DMG_AMBIE_NOCOOLDOWN = 1082 UPGRADE_UNCOMMON_DMG_HUO_RINGDAMAGE = 1083 UPGRADE_UNCOMMON_HEALTH_FOS_MELEERES = 1084 UPGRADE_UNCOMMON_SPEED_SHIELDRECHARGE_RATE = 1085 UPGRADE_UNCOMMON_MONEY_ONESHOT = 1086 UPGRADE_UNCOMMON_DAMAGE_DMGBOOST_WHILECHARGING = 1087 UPGRADE_UNCOMMON_DAMAGE_MINITOCRIT = 1088 UPGRADE_UNCOMMON_DAMAGE_MINICRITBASH = 1089 UPGRADE_UNCOMMON_WEAPON_LONGERCHARGE = 1090 UPGRADE_UNCOMMON_WEAPON_MELEEKILLSFILL = 1091 UPGRADE_UNCOMMON_WEAPON_MELEEHITSFILL = 1092 UPGRADE_UNCOMMON_WEAPON_BASHFILL = 1093 UPGRADE_UNCOMMON_HEALTH_REGENBASH = 1094 UPGRADE_UNCOMMON_SPEED_TURNRATE = 1095 UPGRADE_UNCOMMON_SPEED_FIRERATE_WHILECHARGING = 1096 UPGRADE_UNCOMMON_WEAPON_ROLLER_DIRECT = 1097 UPGRADE_UNCOMMON_DAMAGE_STICKY_FULLCHARGE = 1098 UPGRADE_UNCOMMON_WEAPON_ARROWMULT = 1099 UPGRADE_UNCOMMON_WEAPON_AMMO_REFILLONKILL = 1100 UPGRADE_UNCOMMON_DAMAGE_MAGSHOT = 1101 UPGRADE_UNCOMMON_DAMAGE_WINDUP = 1102 UPGRADE_UNCOMMON_DAMAGE_ONRELOAD = 1103 --Rare UPGRADE_RARE_DMG = 2000 UPGRADE_RARE_DMG_CRIT_RATE = 2002 UPGRADE_RARE_DMG_CRIT_DAMAGE = 2003 UPGRADE_RARE_DMG_BULLETS_PER_SHOT = 2004 UPGRADE_RARE_DMG_AT_CLOSE = 2005 UPGRADE_RARE_DMG_MELEE = 2006 UPGRADE_RARE_DMG_JARATE_SHOT = 2007 UPGRADE_RARE_DMG_BURN = 2008 UPGRADE_RARE_DMG_BLEED = 2009 UPGRADE_RARE_SPEED_FIRERATE = 2001 UPGRADE_RARE_SPEED_MOVESPEED = 2010 UPGRADE_RARE_SPEED_PROJSPEED = 2011 UPGRADE_RARE_SPEED_DEPLOYSPEED = 2012 UPGRADE_RARE_SPEED_SLOW_ON_HIT = 2013 UPGRADE_RARE_SPEED_RECHARGE_RATE = 2034 UPGRADE_RARE_WEAPON_CLIPSIZE = 2014 UPGRADE_RARE_WEAPON_RESERVEAMMO = 2015 UPGRADE_RARE_WEAPON_AMMOREGEN = 2016 UPGRADE_RARE_WEAPON_BLAST_RADIUS = 2017 UPGRADE_RARE_WEAPON_SPREAD = 2018 UPGRADE_RARE_WEAPON_MELEE_RANGE = 2019 UPGRADE_RARE_HEALTH_BONUS = 2020 UPGRADE_RARE_HEALTH_MULT = 2021 UPGRADE_RARE_HEALTH_REGEN = 2022 UPGRADE_RARE_HEALTH_HOK = 2023 UPGRADE_RARE_HEALTH_MELEE_AOE = 2024 UPGRADE_RARE_HEALTH_RECEIVED = 2025 UPGRADE_RARE_HEALTH_MILKY = 2026 UPGRADE_RARE_MONEY_INCOME = 2027 UPGRADE_RARE_MONEY_GOLDEN_ENEMIES = 2028 UPGRADE_RARE_MONEY_WIRE_TAP = 2029 UPGRADE_RARE_MONEY_DISCOUNT = 2030 UPGRADE_RARE_DMG_MELEE_MARK = 2031 UPGRADE_RARE_SPEED_PARTY = 2032 UPGRADE_RARE_WEAPON_MELEE_CLEAVE = 2033 UPGRADE_RARE_WEAPON_PENETRATION = 2101 UPGRADE_RARE_HEALTH_BUILDING = 2035 UPGRADE_RARE_HEALTH_DISPENSER_RATE = 2036 UPGRADE_RARE_DMG_SENTRY_DMG = 2037 UPGRADE_RARE_SPEED_SENTRY_FIRERATE = 2038 UPGRADE_RARE_SPEED_TELEPORTERRECHARGE = 2039 UPGRADE_RARE_SPEED_CONSTRUCTION = 2040 UPGRADE_RARE_SPEED_SENTRY_ROCKET = 2041 UPGRADE_RARE_WEAPON_SENTRY_RANGE = 2042 UPGRADE_RARE_WEAPON_SENTRY_AMMO = 2043 UPGRADE_RARE_HEALTH_HEALRATE = 2044 UPGRADE_RARE_HEALTH_OVERHEAL = 2045 UPGRADE_RARE_SPEED_OVERHEAL_DECAY = 2046 UPGRADE_RARE_SPEED_OVERHEAL_RATE = 2047 UPGRADE_RARE_WEAPON_MEDIGUN_RANGE = 2048 UPGRADE_RARE_WEAPON_MEDIGUN_UBERRATE = 2049 UPGRADE_RARE_WEAPON_MEDIGUN_UBERDURATION = 2050 UPGRADE_RARE_WEAPON_EFFECT_DURATION = 2051 UPGRADE_RARE_WEAPON_BANNER_EFFECT_DURATION = 2052 UPGRADE_RARE_WEAPON_BANNER_EFFECT_RANGE = 2053 UPGRADE_RARE_WEAPON_FLAME_RANGE = 2054 UPGRADE_RARE_SPEED_AFTERBURN_RATE = 2055 UPGRADE_RARE_SPEED_STICKY_CHARGE = 2056 UPGRADE_RARE_SPEED_SHIELD_CHARGE = 2057 UPGRADE_RARE_SPEED_SHIELD_KBRES = 2058 UPGRADE_RARE_DMG_SHIELD_IMPACT = 2059 UPGRADE_RARE_SPEED_MINIGUN_SPINUP = 2060 UPGRADE_RARE_HEALTH_LUNCHBOX = 2061 UPGRADE_RARE_SPEED_SNIPER_CHARGERATE = 2062 UPGRADE_RARE_DMG_REVOLVER_DISGUISED = 2063 UPGRADE_RARE_SPEED_CLOAKREGEN = 2064 UPGRADE_RARE_SPEED_CLOAKDURATION = 2065 UPGRADE_RARE_SPEED_CLOAKSPEED = 2066 UPGRADE_RARE_WEAPON_METALCHEAP = 2067 UPGRADE_RARE_WEAPON_ATTACK_PROJ = 2068 UPGRADE_RARE_WEAPON_PACKEDLUNCH = 2069 UPGRADE_RARE_SPEED_SNIPER_REZOOM = 2070 UPGRADE_RARE_WEAPON_CLOAKSNEAK = 2071 UPGRADE_RARE_WEAPON_SAPPERMILK = 2072 UPGRADE_RARE_DMG_GASMULT = 2073 UPGRADE_RARE_HEALTH_ROCKETJUMP_REDUC = 2074 UPGRADE_RARE_HEALTH_DISGUISED_RES = 2075 UPGRADE_RARE_SPEED_BUILDING_UPGRADESTART = 2076 UPGRADE_RARE_WEAPON_METALCOST_REDUC = 2077 UPGRADE_RARE_DMG_MACHINA_DMG = 2078 UPGRADE_RARE_DMG_AXTING_MINITOCRIT = 2079 UPGRADE_RARE_HEALTH_FOS_RANGERES = 2080 UPGRADE_RARE_DMG_KGB_CRITDURATION = 2081 UPGRADE_RARE_SPEED_SHIELDRECHARGE_RATE = 2082 UPGRADE_RARE_WEAPON_ROCKETSPEC = 2083 UPGRADE_RARE_MONEY_LARGER_SHOPS = 2084 UPGRADE_RARE_MONEY_ONESHOT = 2085 UPGRADE_RARE_DAMAGE_DMGBOOST_WHILECHARGING = 2086 UPGRADE_RARE_DAMAGE_EXLOSIVEBASH = 2087 UPGRADE_RARE_WEAPON_LONGERCHARGE = 2088 UPGRADE_RARE_WEAPON_MELEEKILLSFILL = 2019 UPGRADE_RARE_WEAPON_MELEEHITSFILL = 2090 UPGRADE_RARE_WEAPON_BASHFILL = 2091 UPGRADE_RARE_HEALTH_REGENBASH = 2092 UPGRADE_RARE_HEALTH_DEFENSEBASH = 2093 UPGRADE_RARE_SPEED_TURNRATE = 2094 UPGRADE_RARE_SPEED_FIRERATE_WHILECHARGING = 2095 UPGRADE_RARE_SPEED_SUPPORTCHARGE = 2096 UPGRADE_RARE_DAMAGE_STICKY_FULLCHARGE = 2097 UPGRADE_RARE_MONEY_LUCKY = 2098 UPGRADE_RARE_DAMAGE_MORESTICKY = 2099 UPGRADE_RARE_WEAPON_AMMO_REFILLONKILL = 2100 UPGRADE_RARE_SPEED_SPEEDISDAMAGE = 2101 UPGRADE_RARE_DAMAGE_MAGSHOT = 2102 UPGRADE_RARE_DAMAGE_WINDUP = 2103 UPGRADE_RARE_DAMAGE_ONRELOAD = 2104 --Epic UPGRADE_EPIC_DMG = 3000 UPGRADE_EPIC_DMG_CRIT_RATE = 3002 UPGRADE_EPIC_DMG_CRIT_DAMAGE = 3003 UPGRADE_EPIC_DMG_BULLETS_PER_SHOT = 3004 UPGRADE_EPIC_DMG_AT_CLOSE = 3005 UPGRADE_EPIC_DMG_MELEE = 3006 UPGRADE_EPIC_DMG_JARATE_SHOT = 3007 UPGRADE_EPIC_DMG_BURN = 3008 UPGRADE_EPIC_DMG_BLEED = 3009 UPGRADE_EPIC_SPEED_FIRERATE = 3001 UPGRADE_EPIC_SPEED_MOVESPEED = 3010 UPGRADE_EPIC_SPEED_PROJSPEED = 3011 UPGRADE_EPIC_SPEED_DEPLOYSPEED = 3012 UPGRADE_EPIC_SPEED_SLOW_ON_HIT = 3013 UPGRADE_EPIC_SPEED_RECHARGE_RATE = 3037 UPGRADE_EPIC_WEAPON_CLIPSIZE = 3014 UPGRADE_EPIC_WEAPON_RESERVEAMMO = 3015 UPGRADE_EPIC_WEAPON_AMMOREGEN = 3016 UPGRADE_EPIC_WEAPON_BLAST_RADIUS = 3017 UPGRADE_EPIC_WEAPON_SPREAD = 3018 UPGRADE_EPIC_WEAPON_MELEE_RANGE = 3019 UPGRADE_EPIC_HEALTH_BONUS = 3020 UPGRADE_EPIC_HEALTH_MULT = 3021 UPGRADE_EPIC_HEALTH_REGEN = 3022 UPGRADE_EPIC_HEALTH_HOK = 3023 UPGRADE_EPIC_HEALTH_MELEE_AOE = 3024 UPGRADE_EPIC_HEALTH_RECEIVED = 3025 UPGRADE_EPIC_HEALTH_MILKY = 3026 UPGRADE_EPIC_MONEY_INCOME = 3027 UPGRADE_EPIC_MONEY_GOLDEN_ENEMIES = 3028 UPGRADE_EPIC_MONEY_WIRE_TAP = 3029 UPGRADE_EPIC_DMG_BULLET_MARK = 3030 UPGRADE_EPIC_SPEED_HASTE = 3031 UPGRADE_EPIC_SPEED_Adrenaline = 3032 UPGRADE_EPIC_WEAPON_RAMPUP = 3033 UPGRADE_EPIC_WEAPON_PASSIVE_RELOAD = 3034 UPGRADE_EPIC_HEALTH_TTG = 3036 UPGRADE_EPIC_WEAPON_PENETRATION = 3097 UPGRADE_EPIC_HEALTH_BUILDING = 3038 UPGRADE_EPIC_HEALTH_DISPENSER_RATE = 3039 UPGRADE_EPIC_DMG_SENTRY_DMG = 3040 UPGRADE_EPIC_SPEED_SENTRY_FIRERATE = 3041 UPGRADE_EPIC_SPEED_TELEPORTERRECHARGE = 3042 UPGRADE_EPIC_SPEED_CONSTRUCTION = 3043 UPGRADE_EPIC_SPEED_SENTRY_ROCKET = 3044 UPGRADE_EPIC_WEAPON_SENTRY_RANGE = 3045 UPGRADE_EPIC_WEAPON_SENTRY_AMMO = 3046 UPGRADE_EPIC_HEALTH_HEALRATE = 3047 UPGRADE_EPIC_HEALTH_OVERHEAL = 3048 UPGRADE_EPIC_SPEED_OVERHEAL_DECAY = 3049 UPGRADE_EPIC_SPEED_OVERHEAL_RATE = 3050 UPGRADE_EPIC_WEAPON_MEDIGUN_RANGE = 3051 UPGRADE_EPIC_WEAPON_MEDIGUN_UBERRATE = 3052 UPGRADE_EPIC_WEAPON_MEDIGUN_UBERDURATION = 3053 UPGRADE_EPIC_WEAPON_EFFECT_DURATION = 3054 UPGRADE_EPIC_WEAPON_BANNER_EFFECT_DURATION = 3055 UPGRADE_EPIC_WEAPON_BANNER_EFFECT_RANGE = 3056 UPGRADE_EPIC_WEAPON_FLAME_RANGE = 3057 UPGRADE_EPIC_SPEED_AFTERBURN_RATE = 3058 UPGRADE_EPIC_SPEED_STICKY_CHARGE = 3059 UPGRADE_EPIC_SPEED_SHIELD_CHARGE = 3060 UPGRADE_EPIC_SPEED_SHIELD_KBRES = 3061 UPGRADE_EPIC_DMG_SHIELD_IMPACT = 3062 UPGRADE_EPIC_SPEED_MINIGUN_SPINUP = 3063 UPGRADE_EPIC_HEALTH_LUNCHBOX = 3064 UPGRADE_EPIC_SPEED_SNIPER_CHARGERATE = 3065 UPGRADE_EPIC_DMG_REVOLVER_DISGUISED = 3066 UPGRADE_EPIC_SPEED_CLOAKREGEN = 3067 UPGRADE_EPIC_SPEED_CLOAKDURATION = 3068 UPGRADE_EPIC_SPEED_CLOAKSPEED = 3069 UPGRADE_EPIC_DMG_MEDIGUN_DAMAGE = 3070 UPGRADE_EPIC_SPEED_MINIGUN_MOVESPEED = 3071 UPGRADE_EPIC_SPEED_SNIPER_REZOOM = 3072 UPGRADE_EPIC_DMG_BLAST_INCREASED = 3073 UPGRADE_EPIC_HEALTH_ROCKETJUMP_REDUC = 3074 UPGRADE_EPIC_HEALTH_DISGUISED_RES = 3075 UPGRADE_EPIC_SPEED_BUILDRATE = 3076 UPGRADE_EPIC_WEAPON_MEDIGUN_UBERSTAY = 3077 UPGRADE_EPIC_DMG_SNIPER_EHDAMAGE = 3078 UPGRADE_EPIC_DMG_MACHINA_DMG = 3079 UPGRADE_EPIC_SPEED_SHIELDRECHARGE_RATE = 3080 UPGRADE_EPIC_MONEY_ONESHOT = 3081 UPGRADE_EPIC_DAMAGE_DMGBOOST_WHILECHARGING = 3082 UPGRADE_EPIC_DAMAGE_EXLOSIVEBASH = 3083 UPGRADE_EPIC_WEAPON_FALLAOE = 3084 UPGRADE_EPIC_WEAPON_LONGERCHARGE = 3085 UPGRADE_EPIC_WEAPON_MELEEKILLSFILL = 3086 UPGRADE_EPIC_WEAPON_MELEEHITSFILL = 3087 UPGRADE_EPIC_WEAPON_BASHFILL = 3088 UPGRADE_EPIC_HEALTH_REGENBASH = 3089 UPGRADE_EPIC_HEALTH_BONKCHARGE = 3090 UPGRADE_EPIC_SPEED_TURNRATE = 3091 UPGRADE_EPIC_SPEED_FIRERATE_WHILECHARGING = 3092 UPGRADE_EPIC_DAMAGE_STICKY_FULLCHARGE = 3093 UPGRADE_EPIC_MONEY_LUCKY = 3094 UPGRADE_EPIC_WEAPON_RECURSIVECLUSTER = 3095 UPGRADE_EPIC_WEAPON_AMMO_REFILLONKILL = 3097 UPGRADE_EPIC_DAMAGE_MAGSHOT = 3098 UPGRADE_EPIC_DAMAGE_WINDUP = 3099 UPGRADE_EPIC_DAMAGE_ONRELOAD = 3100 --Legendary UPGRADE_LEGENDARY_DMG = 4000 UPGRADE_LEGENDARY_DMG_CRIT_RATE = 4002 UPGRADE_LEGENDARY_DMG_CRIT_DAMAGE = 4003 UPGRADE_LEGENDARY_DMG_BULLETS_PER_SHOT = 4004 UPGRADE_LEGENDARY_DMG_AT_CLOSE = 4005 UPGRADE_LEGENDARY_DMG_MELEE = 4006 UPGRADE_LEGENDARY_DMG_JARATE_SHOT = 4007 UPGRADE_LEGENDARY_DMG_BURN = 4008 UPGRADE_LEGENDARY_DMG_BLEED = 4009 UPGRADE_LEGENDARY_SPEED_FIRERATE = 4001 UPGRADE_LEGENDARY_SPEED_MOVESPEED = 4010 UPGRADE_LEGENDARY_SPEED_PROJSPEED = 4011 UPGRADE_LEGENDARY_SPEED_DEPLOYSPEED = 4012 UPGRADE_LEGENDARY_SPEED_SLOW_ON_HIT = 4013 UPGRADE_LEGENDARY_SPEED_RECHARGE_RATE = 4032 UPGRADE_LEGENDARY_WEAPON_CLIPSIZE = 4014 UPGRADE_LEGENDARY_WEAPON_RESERVEAMMO = 4015 UPGRADE_LEGENDARY_WEAPON_AMMOREGEN = 4016 UPGRADE_LEGENDARY_WEAPON_BLAST_RADIUS = 4017 UPGRADE_LEGENDARY_WEAPON_SPREAD = 4018 UPGRADE_LEGENDARY_WEAPON_MELEE_RANGE = 4019 UPGRADE_LEGENDARY_HEALTH_BONUS = 4020 UPGRADE_LEGENDARY_HEALTH_MULT = 4021 UPGRADE_LEGENDARY_HEALTH_REGEN = 4022 UPGRADE_LEGENDARY_HEALTH_HOK = 4023 UPGRADE_LEGENDARY_HEALTH_MELEE_AOE = 4024 UPGRADE_LEGENDARY_HEALTH_RECEIVED = 4025 UPGRADE_LEGENDARY_HEALTH_MILKY = 4026 UPGRADE_LEGENDARY_MONEY_INCOME = 4027 UPGRADE_LEGENDARY_MONEY_GOLDEN_ENEMIES = 4028 UPGRADE_LEGENDARY_MONEY_WIRE_TAP = 4029 UPGRADE_LEGENDARY_MONEY_DISCOUNT = 4030 UPGRADE_LEGENDARY_DMG_HEADSHOT = 4031 UPGRADE_LEGENDARY_WEAPON_PENETRATION = 4084 UPGRADE_LEGENDARY_HEALTH_BUILDING = 4033 UPGRADE_LEGENDARY_HEALTH_DISPENSER_RATE = 4034 UPGRADE_LEGENDARY_DMG_SENTRY_DMG = 4035 UPGRADE_LEGENDARY_SPEED_SENTRY_FIRERATE = 4036 UPGRADE_LEGENDARY_SPEED_TELEPORTERRECHARGE = 4037 UPGRADE_LEGENDARY_SPEED_CONSTRUCTION = 4038 UPGRADE_LEGENDARY_SPEED_SENTRY_ROCKET = 4039 UPGRADE_LEGENDARY_WEAPON_SENTRY_RANGE = 4040 UPGRADE_LEGENDARY_WEAPON_SENTRY_AMMO = 4041 UPGRADE_LEGENDARY_HEALTH_HEALRATE = 4042 UPGRADE_LEGENDARY_HEALTH_OVERHEAL = 4043 UPGRADE_LEGENDARY_SPEED_OVERHEAL_DECAY = 4044 UPGRADE_LEGENDARY_SPEED_OVERHEAL_RATE = 4045 UPGRADE_LEGENDARY_WEAPON_MEDIGUN_RANGE = 4046 UPGRADE_LEGENDARY_WEAPON_MEDIGUN_UBERRATE = 4047 UPGRADE_LEGENDARY_WEAPON_MEDIGUN_UBERDURATION = 4048 UPGRADE_LEGENDARY_WEAPON_EFFECT_DURATION = 4049 UPGRADE_LEGENDARY_WEAPON_BANNER_EFFECT_DURATION = 4050 UPGRADE_LEGENDARY_WEAPON_BANNER_EFFECT_RANGE = 4051 UPGRADE_LEGENDARY_WEAPON_FLAME_RANGE = 4052 UPGRADE_LEGENDARY_SPEED_AFTERBURN_RATE = 4053 UPGRADE_LEGENDARY_SPEED_STICKY_CHARGE = 4054 UPGRADE_LEGENDARY_SPEED_SHIELD_CHARGE = 4055 UPGRADE_LEGENDARY_SPEED_SHIELD_KBRES = 4056 UPGRADE_LEGENDARY_DMG_SHIELD_IMPACT = 4057 UPGRADE_LEGENDARY_SPEED_MINIGUN_SPINUP = 4058 UPGRADE_LEGENDARY_HEALTH_LUNCHBOX = 4059 UPGRADE_LEGENDARY_SPEED_SNIPER_CHARGERATE = 4060 UPGRADE_LEGENDARY_DMG_REVOLVER_DISGUISED = 4061 UPGRADE_LEGENDARY_SPEED_CLOAKREGEN = 4062 UPGRADE_LEGENDARY_SPEED_CLOAKDURATION = 4063 UPGRADE_LEGENDARY_SPEED_CLOAKSPEED = 4064 UPGRADE_LEGENDARY_WEAPON_ATTACK_PROJ = 4065 UPGRADE_LEGENDARY_HEALTH_DISGUISE_FIREIMMUNE = 4066 UPGRADE_LEGENDARY_DMG_BLAST_INCREASED = 4067 UPGRADE_LEGENDARY_HEALTH_ROCKETJUMP_REDUC = 4068 UPGRADE_LEGENDARY_HEALTH_DISGUISED_RES = 4069 UPGRADE_LEGENDARY_SPEED_BUILDRATE = 4070 UPGRADE_LEGENDARY_SPEED_BUILDQUICKSTART = 4071 UPGRADE_LEGENDARY_DMG_MACHINA_DMG = 4072 UPGRADE_LEGENDARY_SPEED_SHIELDRECHARGE_RATE = 4073 UPGRADE_LEGENDARY_MONEY_ONESHOT = 4074 UPGRADE_LEGENDARY_DAMAGE_DMGBOOST_WHILECHARGING = 4075 UPGRADE_LEGENDARY_WEAPON_LONGERCHARGE = 4076 UPGRADE_LEGENDARY_WEAPON_MELEEKILLSFILL = 4077 UPGRADE_LEGENDARY_WEAPON_MELEEHITSFILL = 4078 UPGRADE_LEGENDARY_WEAPON_BASHFILL = 4079 UPGRADE_LEGENDARY_HEALTH_REGENBASH = 4080 UPGRADE_LEGENDARY_SPEED_TURNRATE = 4081 UPGRADE_LEGENDARY_SPEED_FIRERATE_WHILECHARGING = 4082 UPGRADE_LEGENDARY_DAMAGE_STICKY_FULLCHARGE = 4083 UPGRADE_LEGENDARY_WEAPON_AMMO_REFILLONKILL = 4084 UPGRADE_LEGENDARY_WEAPON_EXPLOSIVE_ARROWS = 4085 UPGRADE_LEGENDARY_DAMAGE_MAGSHOT = 4086 UPGRADE_LEGENDARY_DAMAGE_WINDUP = 4087 UPGRADE_LEGENDARY_DAMAGE_ONRELOAD = 4088 --Greed UPGRADE_GREED_DMG = 5000 UPGRADE_GREED_DMG_MELEE = 5003 UPGRADE_GREED_DMG_KB = 5002 UPGRADE_GREED_SPEED_FIRERATE = 5001 -- BARRAGE UPGRADE_GREED_SPEED_MOVESPEED = 5004 UPGRADE_GREED_WEAPON_RELOAD = 5005 UPGRADE_GREED_WEAPON_TURRET = 5006 UPGRADE_GREED_HEALTH_MULT = 5007 UPGRADE_GREED_HEALTH_MULT_CLOSE_RANGE = 5008 UPGRADE_GREED_MONEY_PHYSICAL = 5009 UPGRADE_GREED_MONEY_HAGGLE = 5010 UPGRADE_GREED_MONEY_PERK_UPGRADE = 5011 UPGRADE_GREED_HEALTH_HEALRATE = 5012 UPGRADE_GREED_HEALTH_REPAIRRATE = 5013 UPGRADE_GREED_HEALTH_RESIST = 5014 UPGRADE_GREED_HEALTH_OVERWHAMMER = 5015 UPGRADE_GREED_DMG_HEADSHOT = 5016 UPGRADE_GREED_DMG_ARMYOFONE = 5017 UPGRADE_GREED_DMG_POWERSHOT = 5024 UPGRADE_GREED_DMG_VSBURNING = 5018 UPGRADE_GREED_SPEED_ABSURD_FIRERATE = 5019 UPGRADE_GREED_WEAPON_ROCKETSPEC = 5020 UPGRADE_GREED_WEAPON_DUCKACC = 5021 UPGRADE_GREED_WEAPON_RESERVE_MULT = 5022 UPGRADE_GREED_WEAPON_MISC_AMMO = 5023 UPGRADE_GREED_MONEY_SELLOUT = 5025 UPGRADE_GREED_MONEY_DOUBLEDIP = 5026 UPGRADE_GREED_DMG_LOWHP = 5027 UPGRADE_GREED_DMG_PACKETDELAY = 5028 UPGRADE_GREED_DMG_HYBRIDKNIGHT = 5029 UPGRADE_GREED_WEAPON_FULLCLIPRELOAD = 5030 UPGRADE_GREED_MONEY_TAX = 5031 --Bourgeoisie UPGRADE_BOURGEOISIE_LANDMINES = 6000 UPGRADE_BOURGEOISIE_GOLDDIGGER = 6001 UPGRADE_BOURGEOISIE_LONGSHOT = 6002 UPGRADE_BOURGEOISIE_RING_EMERALD = 6003 UPGRADE_BOURGEOISIE_GEMSTONE = 6004 UPGRADE_BOURGEOISIE_RING_SPEED = 6005 UPGRADE_BOURGEOISIE_RING_JUMP = 6006 UPGRADE_BOURGEOISIE_RING_THORNS = 6007 -- UPGRADE_BOURGEOISIE_BURSTFIRE = 6008 UPGRADE_BOURGEOISIE_SKEWER = 6008 UPGRADE_BOURGEOISIE_MARTYRDOM = 6009 UPGRADE_BOURGEOISIE_RING_UPGRADE = 6010 UPGRADE_BOURGEOISIE_MOLE = 6011 UPGRADE_BOURGEOISIE_RING_RUBY = 6012 UPGRADE_BOURGEOISIE_RING_SPOOK = 6013 UPGRADE_BOURGEOISIE_RING_SAPPHIRE = 6014 UPGRADE_BOURGEOISIE_BLASTSHIELD = 6015 UPGRADE_BOURGEOISIE_TEAMKILL = 6016 UPGRADE_BOURGEOISIE_FIRSTSTRIKE = 6017 UPGRADE_BOURGEOISIE_ENRAGED = 6018 UPGRADE_BOURGEOISIE_FUELLEAK = 6019 UPGRADE_BOURGEOISIE_SHIELD_STUN = 6020 UPGRADE_BOURGEOISIE_DISPENSER = 6021 UPGRADE_BOURGEOISIE_BUILDING_DMG = 6022 UPGRADE_BOURGEOISIE_SAPPER_REGEN = 6023 UPGRADE_BOURGEOISIE_RING_PRISMATIC = 6024 UPGRADE_BOURGEOISIE_TASTYORANGE = 6025 UPGRADE_BOURGEOISIE_BOGO = 6026 UPGRADE_BOURGEOISIE_PIPE_DIRECT = 6027 --Overclocks Upgrades = { -- The giga table --ApplyFunction params (In order): player, upgrade --SalvagedFunction params (In order): player, upgrade --Common [UPGRADE_COMMON_DMG] = { Name = "Damage Boost", Description = "+ 20% Damage Primary And Secondary", Attributes = { { attr = "damage bonus", increment = 0, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.2, "add" ); print( "apply") end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.2, "subtract" ) end }, [UPGRADE_COMMON_DMG_CRIT_RATE] = { Name = "Sharpshooter", Description = "+ 5% Crit Rate", Attributes = { { attr = "crit mod disabled hidden", increment = 0.05, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_CRIT_DAMAGE] = { Name = "Critical Punch", Description = "+ 20% Crit Damage", Attributes = { { attr = "mult crit dmg", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_BULLETS_PER_SHOT] = { Name = "Packed Shot", Description = "+ 20% Bullets Per Shot (rounded down)", Attributes = { { attr = "bullets per shot bonus", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_AT_CLOSE] = { Name = "Danger Seeker", Description = "+ 30% Damage At Close Range", Attributes = { { attr = "mult dmg before distance", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg before distance specify", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = nil, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_MELEE] = { Name = "Strong Arms", Description = "+ 30% Melee Damage", Attributes = { { attr = "damage bonus", increment = 0.3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_JARATE_SHOT] = { Name = "Dirty Rounds", Description = "+ 1% Chance to apply jarate on hit", Attributes = { { attr = "throwable damage", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_BURN] = { Name = "Hot Fire", Description = "+ 50% Afterburn Damage", Attributes = { { attr = "weapon burn dmg increased", increment = 0.5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_BLEED] = { Name = "Sharpened Blade", Description = "+ 50% Bleed Damage", Attributes = { { attr = "mult bleeding dmg", increment = 0.5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_BLEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_FIRERATE] = { Name = "Rapid Fire", Description = "+ 15% Primary And Secondary Fire rate", Attributes = { { attr = "fire rate bonus", increment = 1.15, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_MOVESPEED] = { Name = "Speed Boost", Description = "+ 10% Move Speed", Attributes = { { attr = "move speed bonus", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_PROJSPEED] = { Name = "Enhanced Propulsion", Description = "+ 25% Projectile Speed", Attributes = { { attr = "projectile speed increased", increment = 0.25, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_PROJECTILE_SPEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_DEPLOYSPEED] = { Name = "Fast Hands", Description = "+ 20% Deploy Speed", Attributes = { { attr = "deploy time decreased", increment = 1.2, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_RECHARGE_RATE] = { Name = "Heatsink", Description = "+ 15% Item Recharge Rate", Attributes = { { attr = "effect bar recharge rate increased", increment = 1.15, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 1.15, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_RECHARGEBARITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SHIELDRECHARGE_RATE] = { Name = "Heatsink", Description = "+ 50% Charge Recharge Rate", Attributes = { { attr = "charge recharge rate increased", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = { ["tf_wearable_demoshield"] = true }, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_CLIPSIZE] = { Name = "Big Clip", Description = "+ 33% Clip Size", Attributes = { { attr = "clip size bonus", increment = 0.33, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_CLIPSIZE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_RESERVEAMMO] = { Name = "Big Pockets", Description = "+ 15% Reserve Ammo", Attributes = { { attr = "maxammo primary increased", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo secondary increased", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_AMMOREGEN] = { Name = "Reuse", Description = "+ 5% Ammo Regen", Attributes = { { attr = "ammo regen", increment = 0.05, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_BLAST_RADIUS] = { Name = "Big Blast", Description = "+ 12.5% Blast Radius", Attributes = { { attr = "blast radius increased", increment = 0.125, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EXPLOSIVE_BLAST_RADIUS, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SPREAD] = { Name = "Long Barrel", Description = "+ 15% Accuracy", Attributes = { { attr = "weapon spread bonus", increment = 1.15, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MELEE_RANGE] = { Name = "Long Arms", Description = "+ 15% Melee Range", Attributes = { { attr = "melee range multiplier", increment = 0.15, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_BONUS] = { Name = "Health Bonus", Description = "+ 40 Max Health", Attributes = { { attr = "max health additive bonus", increment = 40, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_MULT] = { Name = "Banana", Description = "+ 10% Max Health Multiplier", Attributes = { { attr = "mult max health", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_REGEN] = { Name = "Health Regen", Description = "+ 4 Health Regen", Attributes = { { attr = "health regen", increment = 4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_HOK] = { Name = "Bloodlust", Description = "+ 15 Health on kill", Attributes = { { attr = "heal on kill", increment = 15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_MILKY] = { Name = "Milky Shots", Description = "+ 1% Chance to apply mad milk on hit", Attributes = { { attr = "throwable healing", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_MONEY_INCOME] = { Name = "Passive Income", Description = "+ Gain +10% the cost of a common perk at the end of every encounter", Attributes = { { attr = "currency bonus", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_MONEY_GOLDEN_ENEMIES] = { Name = "Rare Treasure", Description = "+ 0.5% Chance for enemies to be golden \n+ Golden enemies drop 5x the money \n+ Global upgrade: Affects everyone on your team", Attributes = { { attr = "is australium item", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 100, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 0.5 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 0.5 end }, [UPGRADE_COMMON_MONEY_WIRE_TAP] = { Name = "Money Shot", Description = "+ 3 Credits on hit", Attributes = { { attr = "expiration date", increment = 3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_MONEY_DISCOUNT] = { Name = "Employee Discount", Description = "+ Shop prices are 10% Cheaper", Attributes = { { attr = "purchased", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = 0.9, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.CostMult = player.CostMult - 0.1 end, SalvagedFunction = function(player,upgrade) player.CostMult = player.CostMult + 0.1 end }, [UPGRADE_COMMON_MONEY_ONESHOT] = { Name = "Overwhammer", Description = "+ On Instakill: Gain 15% Extra Cash (dies in 0.5 seconds or sooner)", Attributes = { { attr = "non economy", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_PENETRATION] = { Name = "Bullet Penetration", Description = "+ 1 Penetration", Attributes = { { attr = "projectile penetration heavy", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_BUILDING] = { Name = "Quality Metal", Description = "+ 50% Building Health", Attributes = { { attr = "engy building health bonus", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_DISPENSER_RATE] = { Name = "Flow Valve", Description = "+ 25% Dispenser Rate", Attributes = { { attr = "mult dispenser rate", increment = 0.25, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_SENTRY_DMG] = { Name = "Higher Caliber", Description = "+ 30% Sentry Damage", Attributes = { { attr = "engy sentry damage bonus", increment = 0.3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SENTRY_FIRERATE] = { Name = "Auto Cycle", Description = "+ 20% Sentry Fire Rate", Attributes = { { attr = "engy sentry fire rate increased", increment = 1.2, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_TELEPORTERRECHARGE] = { Name = "Quick Charge", Description = "+ 20% Faster Teleporter Recharge", Attributes = { { attr = "mult teleporter recharge rate", increment = 1.2, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_CONSTRUCTION] = { Name = "Construction Boost", Description = "+ 30% Construction Boost", Attributes = { { attr = "Construction rate increased", increment = 0.3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SENTRY_ROCKET] = { Name = "Enhanced Propulsion", Description = "+ 15% Sentry Rocket Speed", Attributes = { { attr = "mult sentry rocket projectile speed", increment = 0.15, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SENTRY_RANGE] = { Name = "Enhanced Sensors", Description = "+ 15% Sentry Range", Attributes = { { attr = "engy sentry radius increased", increment = 0.15, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SENTRY_AMMO] = { Name = "Ammo Reserves", Description = "+ 20% Sentry Ammo", Attributes = { { attr = "mvm sentry ammo", increment = 0.2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_METALAMMO] = { Name = "Metal Reserves", Description = "+ 200% Metal Capacity", Attributes = { { attr = "maxammo metal increased", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 5, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_METALAMMO2] = { Name = "Metal Reserves", Description = "+ 200% Metal Capacity", Attributes = { { attr = "maxammo metal increased", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 5, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_TWOWAY] = { Name = "Two-Way Teleporter", Description = "+ Two-Way Teleporter", Attributes = { { attr = "bidirectional teleport", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_GUNSLINGER_SENTRIES] = { Name = "Sentry Army", Description = "+ 1 Disposable Sentries", Attributes = { { attr = "engy disposable sentries", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Gunslinger"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_HEALRATE] = { Name = "Flow Valve", Description = "+ 25% Heal Rate", Attributes = { { attr = "heal rate bonus", increment = 0.25, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_OVERHEAL] = { Name = "Bio-enhancements", Description = "+ 20% Max Overheal", Attributes = { { attr = "overheal bonus", increment = 0.2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_OVERHEAL_RATE] = { Name = "Excess Control", Description = "+ 15% Overheal Build Rate", Attributes = { { attr = "overheal fill rate reduced", increment = 0.15, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_OVERHEAL_DECAY] = { Name = "Drip Drain", Description = "+ 50% Slow Overheal Decay", Attributes = { { attr = "overheal decay bonus", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MEDIGUN_RANGE] = { Name = "Long Nozzle", Description = "+ 25% Medigun Range", Attributes = { { attr = "mult medigun range", increment = 0.25, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MEDIGUN_UBERRATE] = { Name = "Quick Uber", Description = "+ 10% Ubercharge Rate", Attributes = { { attr = "ubercharge rate bonus", increment = 0.1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MEDIGUN_UBERDURATION] = { Name = "Time Extension", Description = "+ 1 Second longer uber", Attributes = { { attr = "uber duration bonus", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_EFFECT_DURATION] = { Name = "Time Extension", Description = "+ 15% Longer Effect Duration", Attributes = { { attr = "mult effect duration", increment = 0.15, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EFFECTITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_BANNER_EFFECT_DURATION] = { Name = "Time Extension", Description = "+ 20% Longer Banner Duration", Attributes = { { attr = "increase buff duration", increment = 0.2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_BANNER_EFFECT_RANGE] = { Name = "Noise Amplification", Description = "+ 15% Banner Range", Attributes = { { attr = "mod soldier buff range", increment = 0.15, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_PARACHUTE_REDEPLOY] = { Name = "Re-deploy", Description = "+ You can re-deploy your parachute", Attributes = { { attr = "parachute redeploy", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil} }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_parachute_secondary"] = true,["tf_weapon_parachute_primary"] = true,["The B.A.S.E. Jumper"] = true,["Paratrooper Rifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_PARACHUTE_AIRCONTROL] = { Name = "Airflow", Description = "+ 100% Air Control While Parachuting", Attributes = { { attr = "mult parachute air control", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1} }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_parachute_secondary"] = true,["tf_weapon_parachute_primary"] = true,["The B.A.S.E. Jumper"] = true,["Paratrooper Rifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_PARACHUTE_FALLSPEED] = { Name = "Air Resistance", Description = "+ 33% Slow descent while parachuting", Attributes = { { attr = "mult parachute z speed", increment = 0.75, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "multiply", cap = nil, default = 1} }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_parachute_secondary"] = true,["tf_weapon_parachute_primary"] = true,["The B.A.S.E. Jumper"] = true,["Paratrooper Rifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_FLAME_RANGE] = { Name = "Controlled Burn", Description = "+ 10% Flame Range", Attributes = { { attr = "flame_drag", increment = 1.1, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 8.5 }, { attr = "flame_speed", increment = 100, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 2450 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_AFTERBURN_RATE] = { Name = "Quick Burn", Description = "+ 50% Afterburn Damage Rate", Attributes = { { attr = "weapon burn time increased", increment = 0.5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_JETPACK_RELAUNCH] = { Name = "Re-launch", Description = "+ Able to re-launch while already in-flight", Attributes = { { attr = "thermal_thruster_air_launch", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_rocketpack"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_STICKY_CHARGE] = { Name = "Quick Charge", Description = "+ 15% Sticky Charge Rate", Attributes = { { attr = "stickybomb charge rate", increment = 1.15, slot = LOADOUT_POSITION_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_pipebomblauncher"] = true, ["Force Fire"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SHIELD_CHARGE] = { Name = "Targe Train", Description = "+ 5% Charge Move Speed", Attributes = { { attr = "mult charging move speed", increment = 0.05, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SHIELD_KBRES] = { Name = "Dense Shield", Description = "+ 15% Damage Push Force Reduction", Attributes = { { attr = "damage force reduction", increment = 1.15, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SHIELD_BASH_ANYDISTANCE] = { Name = "Headbutt", Description = "+ Shield Impact Damage At Any Range", Attributes = { { attr = "no charge impact range", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_SHIELD_IMPACT] = { Name = "Blunt Force", Description = "+ 45% Shield Impact Damage", Attributes = { { attr = "charge impact damage increased", increment = 0.45, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DAMAGE_DMGBOOST_WHILECHARGING] = { Name = "Splendid Charge", Description = "+ 20% Damage While Charging", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_LONGERCHARGE] = { Name = "Time Extension", Description = "+ 0.25s Longer Charge", Attributes = { { attr = "charge time increased", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MELEEKILLSFILL] = { Name = "Refill", Description = "+ 10% Charge On Melee Kill", Attributes = { { attr = "kill refills meter", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MELEEHITSFILL] = { Name = "Refill", Description = "+ 5% Charge On Hit", Attributes = { { attr = "charge meter on hit", increment = 0.05, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_BASHFILL] = { Name = "Refill", Description = "+ 10% Charge On Shield Bash", Attributes = { { attr = "sniper charge per sec", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_ATTACKWHILECHARGING] = { Name = "Multi-Tasking", Description = "+ Attack Doesn't Cancel Charge", Attributes = { { attr = "Attack not cancel charge", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_TIDE_NODRAIN] = { Name = "No-Drain", Description = "+ Damage Doesn't Drain Charge", Attributes = { { attr = "lose demo charge on damage when charging", increment = 1, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = -1, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Tide Turner"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_STOMP] = { Name = "Stomp!", Description = "+ Deals 3x falling damage to the player you land on", Attributes = { { attr = "boots falling stomp", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["Ali Baba's Wee Booties"] = true, ["The Bootlegger"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, -- {["Ali Baba's Wee Booties"] = true, ["The Bootlegger"] = true} [UPGRADE_COMMON_HEALTH_REGENBASH] = { Name = "Regenerative Bash", Description = "+ 15 Healing On Shield Bash", Attributes = { { attr = "freaky fair healing potion", increment = 15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_TURNRATE] = { Name = "Turn Control", Description = "+ 40% Charge Turn Control", Attributes = { { attr = "mult charge turn control", increment = 0.4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_FIRERATE_WHILECHARGING] = { Name = "Boosted Charge", Description = "+ 20% Fire Rate While Charging", Attributes = { { attr = "pyro year number", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_MINIGUN_SPINUP] = { Name = "Rapid Rotation", Description = "+ 15% Spinup Speed", Attributes = { { attr = "minigun spinup time decreased", increment = 1.15, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_GRU_EVIC_DRAINRATE] = { Name = "Fitness Training", Description = "+ 33% Slower Health Drain Rate From Melee", Attributes = { { attr = "mod_maxhealth_drain_rate", increment = 0.75, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = nil, default = 10, } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["Gloves of Running Urgently"] = true, ["Festive Gloves of Running Urgently"] = true, ["The Bread Bite"] = true, ["The Eviction Notice"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_HUO_AMMODRAIN] = { Name = "Efficient Fire", Description = "+ Fire Ring Costs 1 Less Ammo", Attributes = { { attr = "uses ammo while aiming", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "subtract", cap = 0, default = 4 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Huo Long Heatmaker"] = true,["Promo Huo Long Heatmaker"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_MITTEN_ALWAYSCRIT] = { Name = "Extra Ticklish", Description = "+ Mittens Always Crit", Attributes = { { attr = "always crit", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil, } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Holiday Punch"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_LUNCHBOX] = { Name = "Extra Toppings", Description = "+ 50% Lunchbox Item Healing Effect", Attributes = { { attr = "lunchbox healing decreased", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_lunchbox"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SNIPER_CHARGERATE] = { Name = "Focus", Description = "+ 10% Faster Charge Rate", Attributes = { { attr = "SRifle Charge rate increased", increment = 1.1, slot = LOADOUT_POSITION_PRIMARY, type = "multiply", cap = 2, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true, ["Railgun"] = false, ["Triple Tap"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_FIREARROWS] = { Name = "Incendiary Arrows", Description = "+ Arrows ignite enemies on hit", Attributes = { { attr = "arrow ignite", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_compound_bow"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SYDNEY_RADIUSSLEEPER] = { Name = "Radius Sleeper", Description = "+ Headshots and full-charged bodyshots trigger a ''Jarate Explosion''", Attributes = { { attr = "radius sleeper", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Sydney Sleeper"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SYDNEY_MAXDURATION] = { Name = "Larger Dose", Description = "+ 2 Seconds of max jarate duration", Attributes = { { attr = "jarate duration", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 5 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Sydney Sleeper"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_MACHINA_DMG] = { Name = "Windup", Description = "+ 30% Full Charged Damage", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.3, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Machina"] = true,["Shooting Star"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_REVOLVER_DISGUISED] = { Name = "First Strike", Description = "+ 30% Revolver Damage Bonus While Disguised", Attributes = { { attr = "damage bonus while disguised", increment = 0.3, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DMG_AMBIE_NOFALLOFF] = { Name = "Marksman", Description = "+ No critical damage falloff", Attributes = { { attr = "crit_dmg_falloff", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "subtract", cap = 0, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Ambassador"] = true,["Festive Ambassador"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_CLOAKREGEN] = { Name = "Heatsink", Description = "+ 20% Cloak Regen Rate", Attributes = { { attr = "mult cloak meter regen rate", increment = 0.2, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_CLOAKDURATION] = { Name = "Time Stretch", Description = "+ 15% Slower Cloak Consume Rate", Attributes = { { attr = "cloak consume rate decreased", increment = 1.15, slot = LOADOUT_POSITION_PDA2, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_CLOAKSPEED] = { Name = "Quick Foot", Description = "+ 10% Move Speed While Cloaked", Attributes = { { attr = "move speed bonus resource level", increment = 0.1, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_SPEED_SPYCICLE_COOLDOWN] = { Name = "Refreeze", Description = "+ 100% Faster Spycicle Cooldown", Attributes = { { attr = "melts in fire", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = nil, default = 15 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["The Spy-cicle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_HEALTH_SPYCICLE_DURATION] = { Name = "Extra Cold", Description = "+ 50% Longer Afterburn Immunity", Attributes = { { attr = "become fireproof on hit by fire", increment = 5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 10 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["The Spy-cicle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_WEAPON_SAPPER] = { Name = "Sapper Enhancements", Description = "+ Robo-Sapper Upgrade", Attributes = { { attr = "robo sapper", increment = 1, slot = LOADOUT_POSITION_BUILDING, type = "add", cap = 3, default = 0 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["TF_WEAPON_BUILDER_SPY"] = true,["Upgradeable TF_WEAPON_BUILDER_SPY"] = true,["tf_weapon_sapper"] = true,["Distract And Sabotage"]=true,["Distract And Sabotage"]=true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DAMAGE_STICKY_FULLCHARGE] = { Name = "Charged Shot", Description = "+ Up 20% more damage based on sticky charge", Attributes = { { attr = "stickybomb_charge_damage_increase", increment = 0.2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_pipebomblauncher"] = true,["Force Fire"] = false, ["Stickybomb Jumper"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_COMMON_DAMAGE_MAGSHOT] = { Name = "Magshot", Description = "+ 1% extra base damage for every x bullets in the clip, + 40 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 40, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 40, "subtract" ) end }, [UPGRADE_COMMON_DAMAGE_WINDUP] = { Name = "Windup", Description = "+4% extra base damage the more you shoot without stopping, + 20 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_WINDUP, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 20, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 20, "subtract" ) end }, [UPGRADE_COMMON_DAMAGE_ONRELOAD] = { Name = "Fresh Bullets", Description = "+ Deal +30% extra base damage for 2 seconds on full reload", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RELOADABLE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 0.4, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 0.4, "subtract" ) end }, --Uncommon: 50% More than common [UPGRADE_UNCOMMON_DMG] = { Name = "Damage Boost", Description = "+ 30% Damage Primary And Secondary", Attributes = { { attr = "damage bonus", increment = 0, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.3, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.3, "subtract" ) end }, [UPGRADE_UNCOMMON_DMG_CRIT_RATE] = { Name = "Sharpshooter", Description = "+ 7.5% Crit Rate", Attributes = { { attr = "crit mod disabled hidden", increment = 0.075, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_CRIT_DAMAGE] = { Name = "Critical Punch", Description = "+ 30% Crit Damage", Attributes = { { attr = "mult crit dmg", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_BULLETS_PER_SHOT] = { Name = "Packed Shot", Description = "+ 30% Bullets Per Shot (rounded down)", Attributes = { { attr = "bullets per shot bonus", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_AT_CLOSE] = { Name = "Danger Seeker", Description = "+ 45% Damage At Close Range", Attributes = { { attr = "mult dmg before distance", increment = 0.45, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg before distance specify", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = nil, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_MELEE] = { Name = "Strong Arms", Description = "+ 45% Melee Damage", Attributes = { { attr = "damage bonus", increment = 0.45, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_JARATE_SHOT] = { Name = "Dirty Rounds", Description = "+ 1.5% Chance to apply jarate on hit", Attributes = { { attr = "throwable damage", increment = 1.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_BURN] = { Name = "Hot Fire", Description = "+ 75% Afterburn Damage", Attributes = { { attr = "weapon burn dmg increased", increment = 0.75, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_BLEED] = { Name = "Sharpened Blade", Description = "+ 75% Bleed Damage", Attributes = { { attr = "mult bleeding dmg", increment = 0.75, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_BLEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_FIRERATE] = { Name = "Rapid Fire", Description = "+ 25% Primary And Secondary Fire rate", Attributes = { { attr = "fire rate bonus", increment = 1.25, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_MOVESPEED] = { Name = "Speed Boost", Description = "+ 15% Move Speed", Attributes = { { attr = "move speed bonus", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_PROJSPEED] = { Name = "Enhanced Propulsion", Description = "+ 37.5% Projectile Speed", Attributes = { { attr = "projectile speed increased", increment = 0.375, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_PROJECTILE_SPEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_DEPLOYSPEED] = { Name = "Fast Hands", Description = "+ 50% Deploy Speed", Attributes = { { attr = "deploy time decreased", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_RECHARGE_RATE] = { Name = "Heatsink", Description = "+ 25% Item Recharge Rate", Attributes = { { attr = "effect bar recharge rate increased", increment = 1.25, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 1.25, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_RECHARGEBARITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SHIELDRECHARGE_RATE] = { Name = "Heatsink", Description = "+ 75% Charge Recharge Rate", Attributes = { { attr = "charge recharge rate increased", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = { ["tf_wearable_demoshield"] = true }, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_CLIPSIZE] = { Name = "Big Clip", Description = "+ 50% Clip Size", Attributes = { { attr = "clip size bonus", increment = 0.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_CLIPSIZE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_RESERVEAMMO] = { Name = "Big Pockets", Description = "+ 22.5% Reserve Ammo", Attributes = { { attr = "maxammo primary increased", increment = 0.225, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo secondary increased", increment = 0.225, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_AMMOREGEN] = { Name = "Reuse", Description = "+ 7.5% Ammo Regen", Attributes = { { attr = "ammo regen", increment = 0.075, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_BLAST_RADIUS] = { Name = "Big Blast", Description = "+ 20% Blast Radius", Attributes = { { attr = "blast radius increased", increment = 0.2, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EXPLOSIVE_BLAST_RADIUS, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_SPREAD] = { Name = "Long Barrel", Description = "+ 25% Accuracy", Attributes = { { attr = "weapon spread bonus", increment = 1.25, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MELEE_RANGE] = { Name = "Long Arms", Description = "+ 22.5% Melee Range", Attributes = { { attr = "melee range multiplier", increment = 0.225, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_BONUS] = { Name = "Health Bonus", Description = "+ 60 Max Health", Attributes = { { attr = "max health additive bonus", increment = 60, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_MULT] = { Name = "Banana", Description = "+ 15% Max Health Multiplier", Attributes = { { attr = "mult max health", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_REGEN] = { Name = "Health Regen", Description = "+ 6 Health Regen", Attributes = { { attr = "health regen", increment = 6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_HOK] = { Name = "Bloodlust", Description = "+ 25 Health on kill", Attributes = { { attr = "heal on kill", increment = 25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_MILKY] = { Name = "Milky Shots", Description = "+ 1.5% Chance to apply mad milk on hit", Attributes = { { attr = "throwable healing", increment = 1.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_AOE_HEAL] = { Name = "Melee AOE Heal", Description = "+ Trigger an AOE heal for 24 health on melee hit", Attributes = { { attr = "aoe heal chance", increment = 694201337, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 694201337, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_FIGHT_INCREASE] = { Name = "Endurance", Description = "+ 5 Max health after clearing an encounter", Attributes = { { attr = "sapper health penalty", increment = 5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_MONEY_INCOME] = { Name = "Passive Income", Description = "+ Gain +15% the cost of a common perk at the end of every encounter", Attributes = { { attr = "currency bonus", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_MONEY_GOLDEN_ENEMIES] = { Name = "Rare Treasure", Description = "+ 0.75% Chance for enemies to be golden \n+ Golden enemies drop 5x the money \n+ Global upgrade: Affects everyone on your team", Attributes = { { attr = "is australium item", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "add", cap = 100, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 0.75 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 0.75 end }, [UPGRADE_UNCOMMON_MONEY_WIRE_TAP] = { Name = "Money Shot", Description = "+ 4 Credits on hit", Attributes = { { attr = "expiration date", increment = 4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_MONEY_LARGER_SHOPS] = { Name = "Bigger Shops", Description = "+ 1 Shop item for sale", Attributes = { { attr = "never craftable", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = 6, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades + 1 end, SalvagedFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades - 1 end }, [UPGRADE_UNCOMMON_MONEY_REROLLS] = { Name = "Luck of the Rats", Description = "+ 1 Rerolls", Attributes = { { attr = "duck rating", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = 2, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.MaxRerolls = player.MaxRerolls + 1 end, SalvagedFunction = function(player,upgrade) player.MaxRerolls = player.MaxRerolls - 1 end }, -- Roll From The Hip ref [UPGRADE_UNCOMMON_MONEY_ONESHOT] = { Name = "Overwhammer", Description = "+ On Instakill: Gain 22.5% Extra Cash (dies in 0.5 seconds or sooner)", Attributes = { { attr = "non economy", increment = 0.225, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, -- Specialized Upgrades -- [UPGRADE_UNCOMMON_WEAPON_PENETRATION] = { Name = "Bullet Penetration", Description = "+ 2 Penetration", Attributes = { { attr = "projectile penetration heavy", increment = 2, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_BUILDING] = { Name = "Quality Metal", Description = "+ 75% Building Health", Attributes = { { attr = "engy building health bonus", increment = 0.75, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_DISPENSER_RATE] = { Name = "Flow Valve", Description = "+ 37.5% Dispenser Rate", Attributes = { { attr = "mult dispenser rate", increment = 0.375, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_SENTRY_DMG] = { Name = "Higher Caliber", Description = "+ 45% Sentry Damage", Attributes = { { attr = "engy sentry damage bonus", increment = 0.45, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SENTRY_FIRERATE] = { Name = "Auto Cycle", Description = "+ 30% Sentry Fire Rate", Attributes = { { attr = "engy sentry fire rate increased", increment = 1.3, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_TELEPORTERRECHARGE] = { Name = "Quick Charge", Description = "+ 30% Faster Teleporter Recharge", Attributes = { { attr = "mult teleporter recharge rate", increment = 1.3, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_CONSTRUCTION] = { Name = "Construction Boost", Description = "+ 50% Construction Boost", Attributes = { { attr = "Construction rate increased", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SENTRY_ROCKET] = { Name = "Enhanced Propulsion", Description = "+ 22.5% Sentry Rocket Speed", Attributes = { { attr = "mult sentry rocket projectile speed", increment = 0.225, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_TELEPORTER_SPEEDBOOST] = { Name = "Teleporter Coffee Service", Description = "+ Telepoters give 4 second speedboost", Attributes = { { attr = "mod teleporter speed boost", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_SENTRY_RANGE] = { Name = "Enhanced Sensors", Description = "+ 22.5% Sentry Range", Attributes = { { attr = "engy sentry radius increased", increment = 0.225, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_SENTRY_AMMO] = { Name = "Ammo Reserves", Description = "+ 30% Sentry Ammo", Attributes = { { attr = "mvm sentry ammo", increment = 0.3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_METALGAIN] = { Name = "Metal Salvage", Description = "+ 50% Metal From Pickups", Attributes = { { attr = "metal_pickup_decreased", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_HEALRATE] = { Name = "Flow Valve", Description = "+ 37.5% Heal Rate", Attributes = { { attr = "heal rate bonus", increment = 0.375, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_OVERHEAL] = { Name = "Bio-enhancements", Description = "+ 30% Max Overheal", Attributes = { { attr = "overheal bonus", increment = 0.3, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_OVERHEAL_RATE] = { Name = "Excess Control", Description = "+ 22.5% Overheal Build Rate", Attributes = { { attr = "overheal fill rate reduced", increment = 0.225, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_OVERHEAL_DECAY] = { Name = "Drip Drain", Description = "+ 75% Slow Overheal Decay", Attributes = { { attr = "overheal decay bonus", increment = 0.75, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MEDIGUN_RANGE] = { Name = "Long Nozzle", Description = "+ 37.5% Medigun Range", Attributes = { { attr = "mult medigun range", increment = 0.375, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MEDIGUN_UBERRATE] = { Name = "Quick Uber", Description = "+ 15% Ubercharge Rate", Attributes = { { attr = "ubercharge rate bonus", increment = 0.15, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MEDIGUN_UBERDURATION] = { Name = "Time Extension", Description = "+ 2 Second longer uber", Attributes = { { attr = "uber duration bonus", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_EFFECT_DURATION] = { Name = "Time Extension", Description = "+ 22.5% Longer Effect Duration", Attributes = { { attr = "mult effect duration", increment = 0.225, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EFFECTITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_BANNER_EFFECT_DURATION] = { Name = "Time Extension", Description = "+ 30% Longer Banner Duration", Attributes = { { attr = "increase buff duration", increment = 0.3, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_BANNER_EFFECT_RANGE] = { Name = "Noise Amplification", Description = "+ 22.5% Banner Range", Attributes = { { attr = "mod soldier buff range", increment = 0.225, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_PARACHUTE_XYSPEED] = { Name = "Lessened Drag", Description = "+ 50% Faster horizontal speed while parachuting", Attributes = { { attr = "mult parachute xy speed", increment = 0.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1} }, Type = UPGRADE_TYPE_COMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_parachute_secondary"] = true,["tf_weapon_parachute_primary"] = true,["The B.A.S.E. Jumper"] = true,["Paratrooper Rifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_FLAME_RANGE] = { Name = "Controlled Burn", Description = "+ 25% Flame Range", Attributes = { { attr = "flame_drag", increment = 1.25, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 8.5 }, { attr = "flame_speed", increment = 200, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 2450 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_FLAME_RICOCHET] = { Name = "Ricochet Flames", Description = "+ Flames bonus off of surfaces and gain speed and damage", Attributes = { { attr = "flame_reflect_on_collision", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "reflected_flame_dmg_reduction", increment = 1.75, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1.75, default = 0, refund_set = nil }, { attr = "redirected_flame_size_mult", increment = 2.5, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 2.5, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_EOI] = { Name = "Explode On Ignite", Description = "+ Enemies coated in gas will violently explode dealing 350 damage", Attributes = { { attr = "explode_on_ignite", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_jar_gas"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_AFTERBURN_RATE] = { Name = "Quick Burn", Description = "+ 75% Afterburn Damage Rate", Attributes = { { attr = "weapon burn time increased", increment = 0.75, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_JETPACKSTUN] = { Name = "Hard Impact", Description = "+ Stun enemies when you land", Attributes = { { attr = "falling_impact_radius_stun", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_rocketpack"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_STICKY_CHARGE] = { Name = "Quick Charge", Description = "+ 25% Sticky Charge Rate", Attributes = { { attr = "stickybomb charge rate", increment = 1.25, slot = LOADOUT_POSITION_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_pipebomblauncher"] = true, ["Force Fire"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SHIELD_CHARGE] = { Name = "Targe Train", Description = "+ 7.5% Charge Move Speed", Attributes = { { attr = "mult charging move speed", increment = 0.075, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SHIELD_KBRES] = { Name = "Dense Shield", Description = "+ 25% Damage Push Force Reduction", Attributes = { { attr = "damage force reduction", increment = 1.25, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_SHIELD_BULLETRES] = { Name = "Bigger Shield", Description = "+ 15% Bullet resistance", Attributes = { { attr = "dmg taken from bullets reduced", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = 0.55, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_SHIELD_IMPACT] = { Name = "Blunt Force", Description = "+ 67.5% Shield Impact Damage", Attributes = { { attr = "charge impact damage increased", increment = 0.675, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DAMAGE_DMGBOOST_WHILECHARGING] = { Name = "Splendid Charge", Description = "+ 30% Damage While Charging", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DAMAGE_MINITOCRIT] = { Name = "Critical Upgrade", Description = "+ Mini-crits Become Crits", Attributes = { { attr = "minicrits become crits", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true, ["The Loose Cannon"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DAMAGE_MINICRITBASH] = { Name = "Offensive Bash", Description = "+ 1s Of Mini-crit Boost On Shield Bash", Attributes = { { attr = "freaky fair buster potion", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_LONGERCHARGE] = { Name = "Time Extension", Description = "+ 0.5s Longer Charge", Attributes = { { attr = "charge time increased", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MELEEKILLSFILL] = { Name = "Refill", Description = "+ 15% Charge On Melee Kill", Attributes = { { attr = "kill refills meter", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_MELEEHITSFILL] = { Name = "Refill", Description = "+ 7.5% Charge On Hit", Attributes = { { attr = "charge meter on hit", increment = 0.075, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_BASHFILL] = { Name = "Refill", Description = "+ 15% Charge On Shield Bash", Attributes = { { attr = "sniper charge per sec", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_REGENBASH] = { Name = "Regenerative Bash", Description = "+ 25 Healing On Shield Bash", Attributes = { { attr = "freaky fair healing potion", increment = 25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_TURNRATE] = { Name = "Turn Control", Description = "+ 60% Charge Turn Control", Attributes = { { attr = "mult charge turn control", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_FIRERATE_WHILECHARGING] = { Name = "Boosted Charge", Description = "+ 30% Fire Rate While Charging", Attributes = { { attr = "pyro year number", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_LOCH_IMPACTEXP] = { Name = "Impact Grenade", Description = "+ Grenades instantly explode instead of shattering", Attributes = { { attr = "grenade explode on impact", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "sticky air burst mode", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "subtract", cap = 0, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Loch-n-Load"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_MINIGUN_SPINUP] = { Name = "Rapid Rotation", Description = "+ 35% Spinup Speed", Attributes = { { attr = "minigun spinup time decreased", increment = 1.35, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_HUO_RINGDAMAGE] = { Name = "Blazing Fire", Description = "+ 100% Ring Of Fire Pulse Damage", Attributes = { { attr = "ring of fire while aiming", increment = 12, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 12 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Huo Long Heatmaker"] = true,["Promo Huo Long Heatmaker"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_LUNCHBOX] = { Name = "Extra Toppings", Description = "+ 75% Lunchbox Item Healing Effect", Attributes = { { attr = "lunchbox healing decreased", increment = 0.75, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_lunchbox"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_HEALTH_FOS_MELEERES] = { Name = "Steel Block", Description = "+ 20% Less Melee Vuln", Attributes = { { attr = "dmg from melee increased", increment = 0.2, slot = LOADOUT_POSITION_MELEE, type = "subtract", cap = 0.2, default = 2 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["Fists of Steel"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_SNIPER_CHARGERATE] = { Name = "Focus", Description = "+ 15% Faster Charge Rate", Attributes = { { attr = "SRifle Charge rate increased", increment = 1.15, slot = LOADOUT_POSITION_PRIMARY, type = "multiply", cap = 2, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true, ["Railgun"] = false, ["Triple Tap"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_ARROW_PEN] = { Name = "Reinforced Arrow Tips", Description = "+ Arrows Penetrate unlimited enemies", Attributes = { { attr = "projectile penetration", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_compound_bow"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_SNIPER_EH] = { Name = "Explosive Headshot", Description = "+ 1 Tick of Explosive Headshot", Attributes = { { attr = "explosive sniper shot", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 5, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, AdvancedFilter = function( upgrade, data, player ) return ( WeaponAllowed( player:GetPlayerItemBySlot(LOADOUT_POSITION_PRIMARY), {["tf_weapon_sniperrifle"] = true} ) ) or ( HasUpgrade( player, UPGRADE_LEGENDARY_DMG_HEADSHOT ) ) end, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_MACHINA_DMG] = { Name = "Windup", Description = "+ 45% Full Charged Damage", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.45, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Machina"] = true,["Shooting Star"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_REVOLVER_CRIT] = { Name = "Final Stand", Description = "+ Last Shot Crits", Attributes = { { attr = "last shot crits", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_REVOLVER_DISGUISED] = { Name = "First Strike", Description = "+ 45% Revolver Damage Bonus While Disguised", Attributes = { { attr = "damage bonus while disguised", increment = 0.45, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DMG_AMBIE_NOCOOLDOWN] = { Name = "Quick Fire", Description = "+ No Headshot Cooldown", Attributes = { { attr = "can headshot", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Ambassador"] = true,["Festive Ambassador"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_REVOLVER_UBERDRAIN] = { Name = "Machinery Sabotage", Description = "+ Reduces Uber by 33% On hit", Attributes = { { attr = "subtract victim medigun charge on hit", increment = 33, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = 99, default = 0 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_CLOAKREGEN] = { Name = "Heatsink", Description = "+ 30% Cloak Regen Rate", Attributes = { { attr = "mult cloak meter regen rate", increment = 0.30, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_CLOAKDURATION] = { Name = "Time Stretch", Description = "+ 22.5% Slower Cloak Consume Rate", Attributes = { { attr = "cloak consume rate decreased", increment = 1.225, slot = LOADOUT_POSITION_PDA2, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_CLOAKSPEED] = { Name = "Quick Foot", Description = "+ 15% Move Speed While Cloaked", Attributes = { { attr = "move speed bonus resource level", increment = 0.15, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_SPEED_CLOAKRATE] = { Name = "Ninja Cloak", Description = "+ 50% Faster cloak and decloak rate", Attributes = { { attr = "mult decloak rate", increment = 0.5, slot = LOADOUT_POSITION_PDA2, type = "set", cap = 0.5, default = 1, refund_set = nil }, { attr = "mult cloak rate", increment = -0.25, slot = LOADOUT_POSITION_PDA2, type = "set", cap = -0.25, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_SAPPER_MARK] = { Name = "Disable Defenses", Description = "+ Sapper also marks targets for death", Attributes = { { attr = "duck badge level", increment = 1, slot = LOADOUT_POSITION_BUILDING, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["TF_WEAPON_BUILDER_SPY"] = true,["Upgradeable TF_WEAPON_BUILDER_SPY"] = true,["tf_weapon_sapper"] = true,["Distract And Sabotage"]=true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_ROLLER_DIRECT] = { Name = "Contact Grenades", Description = "+ Pipes explode on contact with enemies even as rollers", Attributes = { { attr = "grenade bounce damage", increment = 0.001, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 0.001, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["TF_WEAPON_GRENADELAUNCHER"] = true, ["The Loch-N-Load"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_WEAPON_ARROWMULT] = { Name = "Arrow Mastery", Description = "+ 2 Arrows per shot", Attributes = { { attr = "mult projectile count", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = 8, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_compound_bow"] = true, ["Hookbow"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DAMAGE_STICKY_FULLCHARGE] = { Name = "Charged Shot", Description = "+ Up 30% more damage based on sticky charge", Attributes = { { attr = "stickybomb_charge_damage_increase", increment = 0.3, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_pipebomblauncher"] = true,["Force Fire"] = false, ["Stickybomb Jumper"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_UNCOMMON_DAMAGE_MAGSHOT] = { Name = "Magshot", Description = "+ 1% extra base damage for every x bullets in the clip, + 60 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 60, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 60, "subtract" ) end }, [UPGRADE_UNCOMMON_DAMAGE_WINDUP] = { Name = "Windup", Description = "+4% extra base damage the more you shoot without stopping, + 30 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_WINDUP, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 30, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 30, "subtract" ) end }, [UPGRADE_UNCOMMON_DAMAGE_ONRELOAD] = { Name = "Fresh Bullets", Description = "+ Deal +45% extra base damage for 2 seconds on full reload", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_UNCOMMON, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RELOADABLE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 0.6, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 0.6, "subtract" ) end }, --Rare: Common + Uncommon [UPGRADE_RARE_DMG] = { Name = "Damage Shot", Description = "+ 50% Damage Primary And Secondary", Attributes = { { attr = "damage bonus", increment = 0, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.5, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.5, "subtract" ) end }, [UPGRADE_RARE_DMG_CRIT_RATE] = { Name = "Deadeye", Description = "+ 12.5% Crit Rate", Attributes = { { attr = "crit mod disabled hidden", increment = 0.125, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_CRIT_DAMAGE] = { Name = "Hot Shot", Description = "+ 50% Crit Damage", Attributes = { { attr = "mult crit dmg", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_BULLETS_PER_SHOT] = { Name = "Overloaded Shot", Description = "+ 50% Bullets Per Shot (rounded down)", Attributes = { { attr = "bullets per shot bonus", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_AT_CLOSE] = { Name = "Danger Enthusiast", Description = "+ 75% Damage At Close Range", Attributes = { { attr = "mult dmg before distance", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg before distance specify", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = nil, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_MELEE] = { Name = "Dense Weapon", Description = "+ 75% Melee Damage", Attributes = { { attr = "damage bonus", increment = 0.75, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_JARATE_SHOT] = { Name = "Biohazard Rounds", Description = "+ 2.5% Chance to apply jarate on hit", Attributes = { { attr = "throwable damage", increment = 2.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_BURN] = { Name = "Fire Starter", Description = "+ 125% Afterburn Damage", Attributes = { { attr = "weapon burn dmg increased", increment = 1.25, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_BLEED] = { Name = "Serrated Blade", Description = "+ 125% Bleed Damage", Attributes = { { attr = "mult bleeding dmg", increment = 1.25, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_BLEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_MELEE_MARK] = { Name = "Combo Melee", Description = "+ Melee marks any enemy for death for 5 seconds", Attributes = { { attr = "add cond on hit", increment = 30, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 30, default = 0, refund_set = nil }, { attr = "add cond on hit duration", increment = 5, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 5, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_FIRERATE] = { Name = "Supercharged", Description = "+ 40% Primary And Secondary Fire rate", Attributes = { { attr = "fire rate bonus", increment = 1.4, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_MOVESPEED] = { Name = "Speed Boots", Description = "+ 25% Move Speed", Attributes = { { attr = "move speed bonus", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_PROJSPEED] = { Name = "Speed Shot", Description = "+ 62.5% Projectile Speed", Attributes = { { attr = "projectile speed increased", increment = 0.625, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_PROJECTILE_SPEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_DEPLOYSPEED] = { Name = "Quick Draw", Description = "+ 100% Deploy Speed", Attributes = { { attr = "deploy time decreased", increment = 2, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_RECHARGE_RATE] = { Name = "Rapid Recharge", Description = "+ 40% Item Recharge Rate", Attributes = { { attr = "effect bar recharge rate increased", increment = 1.4, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 1.4, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_RECHARGEBARITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SHIELDRECHARGE_RATE] = { Name = "Rapid Recharge", Description = "+ 125% Charge Recharge Rate", Attributes = { { attr = "charge recharge rate increased", increment = 1.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = { ["tf_wearable_demoshield"] = true }, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_PARTY] = { Name = "Party Boost", Description = "+ Give yourself and nearby teammates a slight fire and reload speed buff", Attributes = { { attr = "add cond when active", increment = 113, slot = LOADOUT_POSITION_BODY, type = "set", cap = 113, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_CLIPSIZE] = { Name = "Massive Clip", Description = "+ 85% Clip Size", Attributes = { { attr = "clip size bonus", increment = 0.85, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_CLIPSIZE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_RESERVEAMMO] = { Name = "Ammo Pack", Description = "+ 37.5% Reserve Ammo", Attributes = { { attr = "maxammo primary increased", increment = 0.375, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo secondary increased", increment = 0.375, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_AMMOREGEN] = { Name = "Feedback Loop", Description = "+ 12.5% Ammo Regen", Attributes = { { attr = "ammo regen", increment = 0.125, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_BLAST_RADIUS] = { Name = "Enhanced Payload", Description = "+ 32% Blast Radius", Attributes = { { attr = "blast radius increased", increment = 0.32, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EXPLOSIVE_BLAST_RADIUS, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_SPREAD] = { Name = "Deadly Precision", Description = "+ 40% Accuracy", Attributes = { { attr = "weapon spread bonus", increment = 1.40, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MELEE_RANGE] = { Name = "Comically Large Melee", Description = "+ 37.5% Melee Range", Attributes = { { attr = "melee range multiplier", increment = 0.375, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MELEE_CLEAVE] = { Name = "Melee Cleave Attack", Description = "+ Melee hits all enemies in range", Attributes = { { attr = "melee cleave attack", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_BONUS] = { Name = "Health Boost", Description = "+ 100 Max Health", Attributes = { { attr = "max health additive bonus", increment = 100, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_MULT] = { Name = "Bunch O' Banana", Description = "+ 25% Max Health Multiplier", Attributes = { { attr = "mult max health", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_REGEN] = { Name = "Life Regen", Description = "+ 10 Health Regen", Attributes = { { attr = "health regen", increment = 10, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_HOK] = { Name = "Vampire", Description = "+ 40 Health on kill", Attributes = { { attr = "heal on kill", increment = 40, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_MILKY] = { Name = "Mad Shots", Description = "+ 2.5% Chance to apply mad milk on hit", Attributes = { { attr = "throwable healing", increment = 2.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_MONEY_INCOME] = { Name = "Paycheck", Description = "+ Gain +25% the cost of a common perk at the end of every encounter", Attributes = { { attr = "currency bonus", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_MONEY_GOLDEN_ENEMIES] = { Name = "Golden Enemies", Description = "+ 1.25% Chance for enemies to be golden \n+ Golden enemies drop 5x the money \n+ Global upgrade: Affects everyone on your team", Attributes = { { attr = "is australium item", increment = 1.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = 100, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 1.25 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 1.25 end }, [UPGRADE_RARE_MONEY_WIRE_TAP] = { Name = "Wire Tap", Description = "+ 6 Credits on hit", Attributes = { { attr = "expiration date", increment = 6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_MONEY_LARGER_SHOPS] = { Name = "Larger Shops", Description = "+ 2 Shop item for sale", Attributes = { { attr = "always tradable", increment = 2, slot = LOADOUT_POSITION_BODY, type = "add", cap = 6, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades + 2 end, SalvagedFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades - 2 end }, [UPGRADE_RARE_MONEY_DISCOUNT] = { Name = "Mercenary Discount", Description = "+ Shop prices are 20% Cheaper", Attributes = { { attr = "tool escrow until date", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = 0.8, default = 1, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.CostMult = player.CostMult - 0.2 end, SalvagedFunction = function(player,upgrade) player.CostMult = player.CostMult + 0.2 end }, [UPGRADE_RARE_MONEY_ONESHOT] = { Name = "Hitman", Description = "+ On Instakill: Gain 37.5% Extra Cash (dies in 0.5 seconds or sooner)", Attributes = { { attr = "non economy", increment = 0.375, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, -- Specialized Upgrades -- [UPGRADE_RARE_WEAPON_PENETRATION] = { Name = "Bullet Penetration", Description = "+ 3 Penetration", Attributes = { { attr = "projectile penetration heavy", increment = 3, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_BUILDING] = { Name = "Hardened Steel", Description = "+ 125% Building Health", Attributes = { { attr = "engy building health bonus", increment = 1.25, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_DISPENSER_RATE] = { Name = "Mass Production", Description = "+ 62.5% Dispenser Rate", Attributes = { { attr = "mult dispenser rate", increment = 0.625, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_SENTRY_DMG] = { Name = "Damage Shot", Description = "+ 75% Sentry Damage", Attributes = { { attr = "engy sentry damage bonus", increment = 0.75, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SENTRY_FIRERATE] = { Name = "Super Cycle", Description = "+ 50% Sentry Fire Rate", Attributes = { { attr = "engy sentry fire rate increased", increment = 1.5, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_TELEPORTERRECHARGE] = { Name = "Ultra Charge", Description = "+ 50% Faster Teleporter Recharge", Attributes = { { attr = "mult teleporter recharge rate", increment = 1.5, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_CONSTRUCTION] = { Name = "Construction Permit", Description = "+ 80% Construction Boost", Attributes = { { attr = "Construction rate increased", increment = 0.8, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_BUILDING_UPGRADESTART] = { Name = "Quickstart: Upgrade", Description = "+ 25% Upgrade progress for new buildings", Attributes = { { attr = "building instant upgrade", increment = 0.25, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SENTRY_ROCKET] = { Name = "Speed Shot", Description = "+ 37.5% Sentry Rocket Speed", Attributes = { { attr = "mult sentry rocket projectile speed", increment = 0.375, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_SENTRY_RANGE] = { Name = "Long Range Sensors", Description = "+ 37.5% Sentry Range", Attributes = { { attr = "engy sentry radius increased", increment = 0.375, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_SENTRY_AMMO] = { Name = "Ammo Linkage", Description = "+ 50% Sentry Ammo", Attributes = { { attr = "mvm sentry ammo", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_METALCHEAP] = { Name = "Building Logistics", Description = "+ 35% Cheaper Buildings", Attributes = { { attr = "building cost reduction", increment = 0.35, slot = LOADOUT_POSITION_MELEE, type = "subtract", cap = 0.3, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_METALCOST_REDUC] = { Name = "Metal Efficiency", Description = "+ 25% Less metal used on primary attack", Attributes = { { attr = "mod ammo per shot", increment = 0.8, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "multiply", cap = nil, default = 30 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Widowmaker"] = true,["tf_weapon_mechanical_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_HEALRATE] = { Name = "Quick-Fix", Description = "+ 62.5% Heal Rate", Attributes = { { attr = "heal rate bonus", increment = 0.625, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_OVERHEAL] = { Name = "Health Overdrive", Description = "+ 50% Max Overheal", Attributes = { { attr = "overheal bonus", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_OVERHEAL_RATE] = { Name = "Losses Overhealing", Description = "+ 37.5% Overheal Build Rate", Attributes = { { attr = "overheal fill rate reduced", increment = 0.375, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_OVERHEAL_DECAY] = { Name = "Longevity", Description = "+ 125% Slow Overheal Decay", Attributes = { { attr = "overheal decay bonus", increment = 1.25, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MEDIGUN_RANGE] = { Name = "Extreme Range", Description = "+ 62.5% Medigun Range", Attributes = { { attr = "mult medigun range", increment = 0.625, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MEDIGUN_UBERRATE] = { Name = "Blitzuber", Description = "+ 25% Ubercharge Rate", Attributes = { { attr = "ubercharge rate bonus", increment = 0.25, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MEDIGUN_UBERDURATION] = { Name = "Time Dilation", Description = "+ 3 Second longer uber", Attributes = { { attr = "uber duration bonus", increment = 3, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_EFFECT_DURATION] = { Name = "Time Dilation", Description = "+ 37.5% Longer Effect Duration", Attributes = { { attr = "mult effect duration", increment = 0.375, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EFFECTITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_BANNER_EFFECT_DURATION] = { Name = "Time Dilation", Description = "+ 50% Longer Banner Duration", Attributes = { { attr = "increase buff duration", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_BANNER_EFFECT_RANGE] = { Name = "Charge Order", Description = "+ 37.5% Banner Range", Attributes = { { attr = "mod soldier buff range", increment = 0.375, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_ROCKETSPEC] = { Name = "Rocket Specialist", Description = "+ 1 tick of Rocket Spec", Attributes = { { attr = "rocket specialist", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = 4, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_particle_cannon"] = true,["tf_weapon_rocketlauncher"] = true,["tf_weapon_rocketlauncher_directhit"] = true,["tf_weapon_rocketlauncher_airstrike"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_ROCKETJUMP_REDUC] = { Name = "Metal Boots", Description = "+ 20% Blast Jump Damage Resistance", Attributes = { { attr = "rocket jump damage reduction", increment = 1.2, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = WEAPONS_LIST_SELF_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_FLAME_RANGE] = { Name = "High Pressure", Description = "+ 33% Flame Range", Attributes = { { attr = "flame_drag", increment = 1.33, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 8.5 }, { attr = "flame_speed", increment = 300, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 2450 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_AFTERBURN_RATE] = { Name = "Incineration", Description = "+ 125% Afterburn Damage Rate", Attributes = { { attr = "weapon burn time increased", increment = 1.25, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, -- [UPGRADE_RARE_DMG_AXTING_MINITOCRIT] = { Name = "Finishing Blow", Description = "+ Axtinguisher Mini-Crits Become Crits", Attributes = { { attr = "minicrits become crits", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Axtinguisher"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_GASMULT] = { Name = "Noxious Gas", Description = "+ 100% Gas Passer damage mult", Attributes = { { attr = "dmg penalty vs players", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_jar_gas"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_STICKY_CHARGE] = { Name = "Fast Shot", Description = "+ 40% Sticky Charge Rate", Attributes = { { attr = "stickybomb charge rate", increment = 1.4, slot = LOADOUT_POSITION_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_pipebomblauncher"] = true, ["Force Fire"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SHIELD_CHARGE] = { Name = "DUI", Description = "+ 12.5% Charge Move Speed", Attributes = { { attr = "mult charging move speed", increment = 0.125, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SHIELD_KBRES] = { Name = "Iron Wall", Description = "+ 40% Damage Push Force Reduction", Attributes = { { attr = "damage force reduction", increment = 1.4, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_SHIELD_IMPACT] = { Name = "Spiked Shield", Description = "+ 112.5% Shield Impact Damage", Attributes = { { attr = "charge impact damage increased", increment = 1.125, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DAMAGE_DMGBOOST_WHILECHARGING] = { Name = "Added Velocity", Description = "+ 50% Damage While Charging", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DAMAGE_EXLOSIVEBASH] = { Name = "Explosive Bash", Description = "+ Shield bashes cause an explosion dealing x amount of damage \n+ 200 damage", Attributes = { { attr = "freaky fair relentless potion", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_LONGERCHARGE] = { Name = "Time Dilation", Description = "+ 0.75s Longer Charge", Attributes = { { attr = "charge time increased", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MELEEKILLSFILL] = { Name = "Pit Stop", Description = "+ 20% Charge On Melee Kill", Attributes = { { attr = "kill refills meter", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_MELEEHITSFILL] = { Name = "Pit Stop", Description = "+ 12.5% Charge On Hit", Attributes = { { attr = "charge meter on hit", increment = 0.125, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_BASHFILL] = { Name = "Pit Stop", Description = "+ 20% Charge On Shield Bash", Attributes = { { attr = "sniper charge per sec", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_REGENBASH] = { Name = "Regenerative Bash", Description = "+ 40 Healing On Shield Bash", Attributes = { { attr = "freaky fair healing potion", increment = 40, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_DEFENSEBASH] = { Name = "Defensive Bash", Description = "+ Shield Bashes give battalion buff for x seconds \n+ 1.5 Seconds", Attributes = { { attr = "freaky fair uber potion", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_TURNRATE] = { Name = "Turn Control", Description = "+ 100% Charge Turn Control", Attributes = { { attr = "mult charge turn control", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_FIRERATE_WHILECHARGING] = { Name = "Boosted Charge", Description = "+ 50% Fire Rate While Charging", Attributes = { { attr = "pyro year number", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SUPPORTCHARGE] = { Name = "Support Charge", Description = "+ Shield charges gives nearby teammates Agility Powerup for 5 seconds", Attributes = { { attr = "zoom speed mod disabled", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_MINIGUN_SPINUP] = { Name = "Mobile Turret", Description = "+ 80% Spinup Speed", Attributes = { { attr = "minigun spinup time decreased", increment = 1.8, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_ATTACK_PROJ] = { Name = "Attack Projectilies", Description = "+ Minigun can shoot down projectiles", Attributes = { { attr = "attack projectiles", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_LUNCHBOX] = { Name = "Extra Toppings", Description = "+ 125% Lunchbox Item Healing Effect", Attributes = { { attr = "lunchbox healing decreased", increment = 12.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_lunchbox"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_FOS_RANGERES] = { Name = "Reinforced Steel", Description = "+ 10% Range Damage Resistance (FOS)", Attributes = { { attr = "dmg from ranged reduced", increment = 0.1, slot = LOADOUT_POSITION_MELEE, type = "subtract", cap = 0.2, default = 0.6 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["Fists of Steel"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_KGB_CRITDURATION] = { Name = "Heavyweight Camp", Description = "+ 3 Second of Crit Boost on kill (melee)", Attributes = { { attr = "critboost on kill", increment = 3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 5 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Killing Gloves of Boxing"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SNIPER_CHARGERATE] = { Name = "Hard Focus", Description = "+ 25% Faster Charge Rate", Attributes = { { attr = "SRifle Charge rate increased", increment = 1.25, slot = LOADOUT_POSITION_PRIMARY, type = "multiply", cap = 2, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true, ["Railgun"] = false, ["Triple Tap"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SNIPER_REZOOM] = { Name = "Sniper Expert", Description = "+ 40% Faster Re-zoom", Attributes = { { attr = "ability master sniper", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_MACHINA_DMG] = { Name = "Power Shot", Description = "+ 75% Full Charged Damage", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.75, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Machina"] = true,["Shooting Star"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DMG_REVOLVER_DISGUISED] = { Name = "Saboteur", Description = "+ 75% Revolver Damage Bonus While Disguised", Attributes = { { attr = "damage bonus while disguised", increment = 0.75, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_CLOAKREGEN] = { Name = "Rapid Recharge", Description = "+ 50% Cloak Regen Rate", Attributes = { { attr = "mult cloak meter regen rate", increment = 0.50, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_CLOAKDURATION] = { Name = "Against The Cloak", Description = "+ 37.5% Slower Cloak Consume Rate", Attributes = { { attr = "cloak consume rate decreased", increment = 1.375, slot = LOADOUT_POSITION_PDA2, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_CLOAKSPEED] = { Name = "Shadow Walk", Description = "+ 25% Move Speed While Cloaked", Attributes = { { attr = "move speed bonus resource level", increment = 0.25, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_HEALTH_DISGUISED_RES] = { Name = "Thick Suit", Description = "+ 15% Damage Resistance While Disguised", Attributes = { { attr = "disguise damage reduction", increment = 1.15, slot = LOADOUT_POSITION_PDA, type = "divide", cap = 0.4, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_pda_spy"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_CLOAKSNEAK] = { Name = "Sneak Attack", Description = "+ You can break cloak by attacking", Attributes = { { attr = "effect cond override", increment = 66, slot = LOADOUT_POSITION_PDA2, type = "set", cap = 66, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["The Dead Ringer"] = false,["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_WEAPON_SAPPERMILK] = { Name = "Disable Defenses", Description = "+ Sapper also coats enemies in mad milk", Attributes = { { attr = "display duck leaderboard", increment = 1, slot = LOADOUT_POSITION_BUILDING, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["TF_WEAPON_BUILDER_SPY"] = true,["Upgradeable TF_WEAPON_BUILDER_SPY"] = true,["tf_weapon_sapper"] = true,["Distract And Sabotage"]=true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DAMAGE_MORESTICKY] = { Name = "Extra Sticky", Description = "+ 1 Sticky bomb per shot", Attributes = { { attr = "mult projectile count", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = 4, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["Force Fire"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DAMAGE_STICKY_FULLCHARGE] = { Name = "Overpower", Description = "+ Up 50% more damage based on sticky charge", Attributes = { { attr = "stickybomb_charge_damage_increase", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_pipebomblauncher"] = true,["Force Fire"] = false, ["Stickybomb Jumper"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_MONEY_LUCKY] = { Name = "Four Leaf Clover", Description = "+ Perk rarity is rolled twice and chooses the higher of the two", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_SPEED_SPEEDISDAMAGE] = { Name = "Dynamo", Description = "+ Extra damage multiplier the faster you're moving than your base walk speed (Vertical movement doesn't count)", Attributes = { { attr = "freaky fair rtd potion", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_RARE_DAMAGE_MAGSHOT] = { Name = "Magshot", Description = "+ 1% extra base damage for every x bullets in the clip, + 100 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 100, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 100, "subtract" ) end }, [UPGRADE_RARE_DAMAGE_WINDUP] = { Name = "Windup", Description = "+4% extra base damage the more you shoot without stopping, + 50 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_WINDUP, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 50, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 50, "subtract" ) end }, [UPGRADE_RARE_DAMAGE_ONRELOAD] = { Name = "Fresh Bullets", Description = "+ Deal +75% extra base damage for 2 seconds on full reload", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RELOADABLE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 1, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 1, "subtract" ) end }, --Epic: Common + Uncommon + Rare [UPGRADE_EPIC_DMG] = { Name = "Damage Shot", Description = "+ 80% Damage Primary And Secondary", Attributes = { { attr = "damage bonus", increment = 0, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.8, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 0.8, "subtract" ) end }, [UPGRADE_EPIC_DMG_CRIT_RATE] = { Name = "Deadeye", Description = "+ 20% Crit Rate", Attributes = { { attr = "crit mod disabled hidden", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_CRIT_DAMAGE] = { Name = "Hot Shot", Description = "+ 80% Crit Damage", Attributes = { { attr = "mult crit dmg", increment = 0.8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_BULLETS_PER_SHOT] = { Name = "Overloaded Shot", Description = "+ 100% Bullets Per Shot (rounded down)", Attributes = { { attr = "bullets per shot bonus", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_AT_CLOSE] = { Name = "Danger Enthusiast", Description = "+ 120% Damage At Close Range", Attributes = { { attr = "mult dmg before distance", increment = 1.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg before distance specify", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = nil, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_MELEE] = { Name = "Dense Weapon", Description = "+ 120% Melee Damage", Attributes = { { attr = "damage bonus", increment = 1.2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_JARATE_SHOT] = { Name = "Biohazard Rounds", Description = "+ 4% Chance to apply jarate on hit", Attributes = { { attr = "throwable damage", increment = 4, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_BURN] = { Name = "Fire Starter", Description = "+ 200% Afterburn Damage", Attributes = { { attr = "weapon burn dmg increased", increment = 2, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_BLEED] = { Name = "Serrated Blade", Description = "+ 200% Bleed Damage", Attributes = { { attr = "mult bleeding dmg", increment = 2, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_BLEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_BULLET_MARK] = { Name = "Hunter's Mark", Description = "+ Mark one enemy for death on hit.", Attributes = { { attr = "mark for death", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, -- There it is! [UPGRADE_EPIC_SPEED_FIRERATE] = { Name = "Supercharged", Description = "+ 75% Primary And Secondary Fire rate", Attributes = { { attr = "fire rate bonus", increment = 1.75, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_MOVESPEED] = { Name = "Speed Boots", Description = "+ 32.5% Move Speed", Attributes = { { attr = "move speed bonus", increment = 0.325, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_PROJSPEED] = { Name = "Speed Shot", Description = "+ 100% Projectile Speed", Attributes = { { attr = "projectile speed increased", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_PROJECTILE_SPEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_DEPLOYSPEED] = { Name = "Quick Draw", Description = "+ 250% Deploy Speed", Attributes = { { attr = "deploy time decreased", increment = 3.5, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SLOW_ON_HIT] = { Name = "Sludge Bullets", Description = "+ Move speed and fire rate slow on hit \n+ 15% Slow strength", Attributes = { { attr = "stun on hit", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = nil, default = 0, refund_set = nil, }, { attr = "stun on hit slow", increment = 0.15, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 0.75, default = 0 }, { attr = "stun on hit type", increment = "movement", slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = nil, default = 0, refund_set = nil, } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_RECHARGE_RATE] = { Name = "Rapid Recharge", Description = "+ 75% Item Recharge Rate", Attributes = { { attr = "effect bar recharge rate increased", increment = 1.75, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 1.75, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_RECHARGEBARITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SHIELDRECHARGE_RATE] = { Name = "Rapid Recharge", Description = "+ 200% Charge Recharge Rate", Attributes = { { attr = "charge recharge rate increased", increment = 2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = { ["tf_wearable_demoshield"] = true }, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_HASTE] = { Name = "Haste!", Description = "+ Gain the Haste Powerup for the first 6 seconds of an encounter", Attributes = { { attr = "kill eater user 1", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_Adrenaline] = { Name = "Adrenaline", Description = "+ 33% Faster weapon fire and reload rate on kill for 3 seconds", Attributes = { { attr = "kill eater user 2", increment = 0.67, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.67, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_CLIPSIZE] = { Name = "Massive Clip", Description = "+ 165% Clip Size", Attributes = { { attr = "clip size bonus", increment = 1.65, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_CLIPSIZE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_RESERVEAMMO] = { Name = "Ammo Pack", Description = "+ 60% Reserve Ammo", Attributes = { { attr = "maxammo primary increased", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo secondary increased", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_AMMOREGEN] = { Name = "Feedback Loop", Description = "+ 20% Ammo Regen", Attributes = { { attr = "ammo regen", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_BLAST_RADIUS] = { Name = "Enhanced Payload", Description = "+ 50% Blast Radius", Attributes = { { attr = "blast radius increased", increment = 0.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EXPLOSIVE_BLAST_RADIUS, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_SPREAD] = { Name = "Deadly Precision", Description = "+ 60% Accuracy", Attributes = { { attr = "weapon spread bonus", increment = 1.6, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MELEE_RANGE] = { Name = "Comically Large Melee", Description = "+ 60% Melee Range", Attributes = { { attr = "melee range multiplier", increment = 0.6, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_RAMPUP] = { Name = "Increased Rampup", Description = "+ Maximum damage ramp-up increased to 50%", Attributes = { { attr = "no reduced damage rampup", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RAMPUP, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_PASSIVE_RELOAD] = { Name = "Passive Reload", Description = "+ Weapons passive reload when not active \n+ Ignores reload speed penalties", Attributes = { { attr = "passive reload", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RELOAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_BONUS] = { Name = "Health Boost", Description = "+ 150 Max Health", Attributes = { { attr = "max health additive bonus", increment = 150, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_MULT] = { Name = "Bunch O' Banana", Description = "+ 40% Max Health Multiplier", Attributes = { { attr = "mult max health", increment = 0.4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_REGEN] = { Name = "Life Regen", Description = "+ 16 Health Regen", Attributes = { { attr = "health regen", increment = 16, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_HOK] = { Name = "Vampire", Description = "+ 75 Health on kill", Attributes = { { attr = "heal on kill", increment = 75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_MILKY] = { Name = "Mad Shots", Description = "+ 4% Chance to apply mad milk on hit", Attributes = { { attr = "throwable healing", increment = 4, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_TTG] = { Name = "Grinding Monstera", Description = "+ Melee marks enemies for health \n Killing the enemy will increase your max hp by 2", Attributes = { { attr = "duckstreaks active", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 2, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_RECEIVED] = { Name = "Quick-Fix", Description = "+ 40% Health from all sources", Attributes = { { attr = "healing received bonus", increment = 0.4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_MONEY_INCOME] = { Name = "Paycheck", Description = "+ Gain +40% the cost of a common perk at the end of every encounter", Attributes = { { attr = "currency bonus", increment = 0.40, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_MONEY_GOLDEN_ENEMIES] = { Name = "Golden Enemies", Description = "+ 2.5% Chance for enemies to be golden \n+ Golden enemies drop 5x the money \n+ Global upgrade: Affects everyone on your team", Attributes = { { attr = "is australium item", increment = 2.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 100, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 2.5 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 2.5 end }, [UPGRADE_EPIC_MONEY_WIRE_TAP] = { Name = "Wire Tap", Description = "+ 8 Credits on hit", Attributes = { { attr = "expiration date", increment = 8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_MONEY_ONESHOT] = { Name = "Hitman", Description = "+ On Instakill: Gain 60% Extra Cash (dies in 0.5 seconds or sooner)", Attributes = { { attr = "non economy", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, -- Specialized Upgrades -- [UPGRADE_EPIC_WEAPON_PENETRATION] = { Name = "Bullet Penetration", Description = "+ 5 Penetration", Attributes = { { attr = "projectile penetration heavy", increment = 5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_BUILDING] = { Name = "Hardened Steel", Description = "+ 200% Building Health", Attributes = { { attr = "engy building health bonus", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_DISPENSER_RATE] = { Name = "Mass Production", Description = "+ 100% Dispenser Rate", Attributes = { { attr = "mult dispenser rate", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_SENTRY_DMG] = { Name = "Damage Shot", Description = "+ 120% Sentry Damage", Attributes = { { attr = "engy sentry damage bonus", increment = 1.2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SENTRY_FIRERATE] = { Name = "Super Cycle", Description = "+ 80% Sentry Fire Rate", Attributes = { { attr = "engy sentry fire rate increased", increment = 1.8, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_TELEPORTERRECHARGE] = { Name = "Ultra Charge", Description = "+ 80% Faster Teleporter Recharge", Attributes = { { attr = "mult teleporter recharge rate", increment = 1.8, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_CONSTRUCTION] = { Name = "Construction Permit", Description = "+ 120% Construction Boost", Attributes = { { attr = "Construction rate increased", increment = 1.2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_BUILDRATE] = { Name = "Turbo Boost", Description = "+ 33% Faster Building", Attributes = { { attr = "build rate bonus", increment = 0.75, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SENTRY_ROCKET] = { Name = "Speed Shot", Description = "+ 60% Sentry Rocket Speed", Attributes = { { attr = "mult sentry rocket projectile speed", increment = 0.6, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_SENTRY_RANGE] = { Name = "Long Range Sensors", Description = "+ 60% Sentry Range", Attributes = { { attr = "engy sentry radius increased", increment = 0.6, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_SENTRY_AMMO] = { Name = "Ammo Linkage", Description = "+ 80% Sentry Ammo", Attributes = { { attr = "mvm sentry ammo", increment = 0.8, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_HEALRATE] = { Name = "Quick-Fix", Description = "+ 100% Heal Rate", Attributes = { { attr = "heal rate bonus", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_OVERHEAL] = { Name = "Health Overdrive", Description = "+ 80% Max Overheal", Attributes = { { attr = "overheal bonus", increment = 0.8, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_OVERHEAL_RATE] = { Name = "Losses Overhealing", Description = "+ 60% Overheal Build Rate", Attributes = { { attr = "overheal fill rate reduced", increment = 0.6, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_OVERHEAL_DECAY] = { Name = "Longevity", Description = "+ 200% Slow Overheal Decay", Attributes = { { attr = "overheal decay bonus", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MEDIGUN_RANGE] = { Name = "Extreme Range", Description = "+ 100% Medigun Range", Attributes = { { attr = "mult medigun range", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MEDIGUN_UBERRATE] = { Name = "Blitzuber", Description = "+ 40% Ubercharge Rate", Attributes = { { attr = "ubercharge rate bonus", increment = 0.4, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MEDIGUN_UBERDURATION] = { Name = "Time Dilation", Description = "+ 5 Second longer uber", Attributes = { { attr = "uber duration bonus", increment = 5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, -- [UPGRADE_EPIC_WEAPON_MEDIGUN_UBERSTAY] = { Name = "Persistent Uber", Description = "+ Uber effect stays on target", Attributes = { { attr = "medigun keep charged effect", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_MEDIGUN_DAMAGE] = { Name = "Reverse Module", Description = "+ 200% Of heal rate to damage", Attributes = { { attr = "medigun attack enemy", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_EFFECT_DURATION] = { Name = "Time Dilation", Description = "+ 60% Longer Effect Duration", Attributes = { { attr = "mult effect duration", increment = 0.6, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EFFECTITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_BANNER_EFFECT_DURATION] = { Name = "Time Dilation", Description = "+ 80% Longer Banner Duration", Attributes = { { attr = "increase buff duration", increment = 0.8, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_BANNER_EFFECT_RANGE] = { Name = "Charge Order", Description = "+ 60% Banner Range", Attributes = { { attr = "mod soldier buff range", increment = 0.6, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_ROCKETJUMP_REDUC] = { Name = "Metal Boots", Description = "+ 30% Blast Jump Damage Resistance", Attributes = { { attr = "rocket jump damage reduction", increment = 1.3, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = WEAPONS_LIST_SELF_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_BLAST_INCREASED] = { Name = "Deadly Blast", Description = "+ 5% Damage per enemy in blast", Attributes = { { attr = "add damage per target", increment = 0.05, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_EXPLOSIVE_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_FLAME_RANGE] = { Name = "High Pressure", Description = "+ 50% Flame Range", Attributes = { { attr = "flame_drag", increment = 1.5, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 8.5 }, { attr = "flame_speed", increment = 600, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 2450 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_AFTERBURN_RATE] = { Name = "Incineration", Description = "+ 250% Afterburn Damage Rate", Attributes = { { attr = "weapon burn time increased", increment = 2.5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_STICKY_CHARGE] = { Name = "Fast Shot", Description = "+ 75% Sticky Charge Rate", Attributes = { { attr = "stickybomb charge rate", increment = 1.75, slot = LOADOUT_POSITION_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_pipebomblauncher"] = true, ["Force Fire"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SHIELD_CHARGE] = { Name = "DUI", Description = "+ 20% Charge Move Speed", Attributes = { { attr = "mult charging move speed", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SHIELD_KBRES] = { Name = "Iron Wall", Description = "+ 65% Damage Push Force Reduction", Attributes = { { attr = "damage force reduction", increment = 1.65, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_SHIELD_IMPACT] = { Name = "Spiked Shield", Description = "+ 180% Shield Impact Damage", Attributes = { { attr = "charge impact damage increased", increment = 1.8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DAMAGE_DMGBOOST_WHILECHARGING] = { Name = "Added Velocity", Description = "+ 80% Damage While Charging", Attributes = { { attr = "sniper full charge damage bonus", increment = 0.8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_FALLAOE] = { Name = "Shattering Impact", Description = "+ When landing with enough speed: trigger an AoE stun and deal x damage \n+ 250 Damage", Attributes = { { attr = "kb fall min velocity", increment = 600, slot = LOADOUT_POSITION_BODY, type = "set", cap = 750, default = 0, refund_set = nil }, { attr = "kb fall radius", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = 400, default = 0, refund_set = nil }, { attr = "kb fall stun time", increment = 5, slot = LOADOUT_POSITION_BODY, type = "set", cap = 6, default = 0, refund_set = nil }, { attr = "kb fall force", increment = 500, slot = LOADOUT_POSITION_BODY, type = "set", cap = 600, default = 0, refund_set = nil }, { attr = "kb fall damage", increment = 250, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["Ali Baba's Wee Booties"] = true, ["The Bootlegger"] = true, ["The Mantreads"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_LONGERCHARGE] = { Name = "Time Dilation", Description = "+ 1.5s Longer Charge", Attributes = { { attr = "charge time increased", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MELEEKILLSFILL] = { Name = "Pit Stop", Description = "+ 33% Charge On Melee Kill", Attributes = { { attr = "kill refills meter", increment = 0.33, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_MELEEHITSFILL] = { Name = "Pit Stop", Description = "+ 20% Charge On Hit", Attributes = { { attr = "charge meter on hit", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_BASHFILL] = { Name = "Pit Stop", Description = "+ 33% Charge On Shield Bash", Attributes = { { attr = "sniper charge per sec", increment = 0.33, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_REGENBASH] = { Name = "Regenerative Bash", Description = "+ 75 Healing On Shield Bash", Attributes = { { attr = "freaky fair healing potion", increment = 75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_BONKCHARGE] = { Name = "Bonk Charge", Description = "+ Shield charges gives user 75% Chance to dodge damage", Attributes = { { attr = "freaky fair ghost potion", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_TURNRATE] = { Name = "Turn Control", Description = "+ 160% Charge Turn Control", Attributes = { { attr = "mult charge turn control", increment = 1.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_FIRERATE_WHILECHARGING] = { Name = "Boosted Charge", Description = "+ 80% Fire Rate While Charging", Attributes = { { attr = "pyro year number", increment = 0.8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_MINIGUN_SPINUP] = { Name = "Mobile Turret", Description = "+ 100% Spinup Speed", Attributes = { { attr = "minigun spinup time decreased", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_MINIGUN_MOVESPEED] = { Name = "Light Metal", Description = "+ 40% Move speed while spun up", Attributes = { { attr = "aiming movespeed increased", increment = 0.4, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = 1.2, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_LUNCHBOX] = { Name = "Extra Toppings", Description = "+ 200% Lunchbox Item Healing Effect", Attributes = { { attr = "lunchbox healing decreased", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_lunchbox"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SNIPER_CHARGERATE] = { Name = "Hard Focus", Description = "+ 40% Faster Charge Rate", Attributes = { { attr = "SRifle Charge rate increased", increment = 1.4, slot = LOADOUT_POSITION_PRIMARY, type = "multiply", cap = 2, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true, ["Railgun"] = false, ["Triple Tap"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_SNIPER_REZOOM] = { Name = "Sniper Master", Description = "+ 30% Faster Re-zoom", Attributes = { { attr = "ability master sniper", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = 2, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_SNIPER_EHDAMAGE] = { Name = "Deadly Precision", Description = "+ 100% Explosive Headshot Damage", Attributes = { { attr = "mult bleeding dmg", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, AdvancedFilter = function( upgrade, data, player ) return ( WeaponAllowed( player:GetPlayerItemBySlot(LOADOUT_POSITION_PRIMARY), {["tf_weapon_sniperrifle"] = true} ) ) or ( HasUpgrade( player, UPGRADE_UNCOMMON_WEAPON_SNIPER_EH ) ) end, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_MACHINA_DMG] = { Name = "Power Shot", Description = "+ 120% Full Charged Damage", Attributes = { { attr = "sniper full charge damage bonus", increment = 1.2, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Machina"] = true,["Shooting Star"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DMG_REVOLVER_DISGUISED] = { Name = "Saboteur", Description = "+ 120% Revolver Damage Bonus While Disguised", Attributes = { { attr = "damage bonus while disguised", increment = 1.2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_CLOAKREGEN] = { Name = "Rapid Recharge", Description = "+ 80% Cloak Regen Rate", Attributes = { { attr = "mult cloak meter regen rate", increment = 0.8, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_CLOAKDURATION] = { Name = "Against The Cloak", Description = "+ 60% Slower Cloak Consume Rate", Attributes = { { attr = "cloak consume rate decreased", increment = 1.6, slot = LOADOUT_POSITION_PDA2, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_SPEED_CLOAKSPEED] = { Name = "Shadow Walk", Description = "+ 40% Move Speed While Cloaked", Attributes = { { attr = "move speed bonus resource level", increment = 0.4, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_HEALTH_DISGUISED_RES] = { Name = "Thick Suit", Description = "+ 30% Damage Resistance While Disguised", Attributes = { { attr = "disguise damage reduction", increment = 1.3, slot = LOADOUT_POSITION_PDA, type = "divide", cap = 0.4, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_pda_spy"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_WEAPON_RECURSIVECLUSTER] = { Name = "Recursive Explosion", Description = "+ Any kills the first explosion gets will trigger secondary explosions with the same strength", Attributes = { { attr = "event date", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["Heavy Metal"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DAMAGE_STICKY_FULLCHARGE] = { Name = "Overpower", Description = "+ Up 80% more damage based on sticky charge", Attributes = { { attr = "stickybomb_charge_damage_increase", increment = 0.8, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_pipebomblauncher"] = true,["Force Fire"] = false, ["Stickybomb Jumper"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_MONEY_LUCKY] = { Name = "Lucky Reroll", Description = "+ Rerolling has a small chance to upgrade loot by a tier, increases each reroll", Attributes = { { attr = "freaky fair ammo potion", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_EPIC_DAMAGE_MAGSHOT] = { Name = "Magshot", Description = "+ 1% extra base damage for every x bullets in the clip, + 160 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 160, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 160, "subtract" ) end }, [UPGRADE_EPIC_DAMAGE_WINDUP] = { Name = "Windup", Description = "+4% extra base damage the more you shoot without stopping, + 80 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_WINDUP, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 80, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 80, "subtract" ) end }, [UPGRADE_EPIC_DAMAGE_ONRELOAD] = { Name = "Fresh Bullets", Description = "+ Deal +120% extra base damage for 2 seconds on full reload", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RELOADABLE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 1.6, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 1.6, "subtract" ) end }, --Legendary: 2Common + Uncommon + Rare + Epic [UPGRADE_LEGENDARY_DMG] = { Name = "Pure Damage", Description = "+ 200% Damage Primary And Secondary", Attributes = { { attr = "damage bonus", increment = 0, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 2, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_ADDITIVE, 2, "subtract" ) end }, [UPGRADE_LEGENDARY_DMG_CRIT_RATE] = { Name = "Kritzkrieg", Description = "+ 45% Crit Rate", Attributes = { { attr = "crit mod disabled hidden", increment = 0.45, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_CRIT_DAMAGE] = { Name = "Mega Crit", Description = "+ 200% Crit Damage", Attributes = { { attr = "mult crit dmg", increment = 2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_BULLETS_PER_SHOT] = { Name = "Split Shot", Description = "+ 170% Bullets Per Shot (rounded down)", Attributes = { { attr = "bullets per shot bonus", increment = 1.7, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_AT_CLOSE] = { Name = "Close Range Expert", Description = "+ 270% Damage At Close Range", Attributes = { { attr = "mult dmg before distance", increment = 2.7, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg before distance specify", increment = 350, slot = LOADOUT_POSITION_BODY, type = "set", cap = nil, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_MELEE] = { Name = "Pure Muscle", Description = "+ 300% Melee Damage", Attributes = { { attr = "damage bonus", increment = 3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_JARATE_SHOT] = { Name = "Bullet Based Karate", Description = "+ 10% Chance to apply jarate on hit", Attributes = { { attr = "throwable damage", increment = 10, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = nil, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_BURN] = { Name = "Napalm Fire", Description = "+ 500% Afterburn Damage", Attributes = { { attr = "weapon burn dmg increased", increment = 5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_BLEED] = { Name = "Internal Bleeding", Description = "+ 500% Bleed Damage", Attributes = { { attr = "mult bleeding dmg", increment = 5, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_BLEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_HEADSHOT] = { Name = "Can Headshot", Description = "+ Weapons can deal critical damage on headshot", Attributes = { { attr = "can headshot", increment = 1, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_FIRERATE] = { Name = "Hailstorm", Description = "+ 150% Primary And Secondary Fire rate", Attributes = { { attr = "fire rate bonus", increment = 2.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_MOVESPEED] = { Name = "Pure Speed", Description = "+ 60% Move Speed", Attributes = { { attr = "move speed bonus", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_PROJSPEED] = { Name = "Instant Shot", Description = "+ 200% Projectile Speed", Attributes = { { attr = "projectile speed increased", increment = 2, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_PROJECTILE_SPEED, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_DEPLOYSPEED] = { Name = "Cowboy", Description = "+ 400% Deploy Speed", Attributes = { { attr = "deploy time decreased", increment = 5, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_RECHARGE_RATE] = { Name = "Instant Recharge", Description = "+ 150% Item Recharge Rate", Attributes = { { attr = "effect bar recharge rate increased", increment = 2.5, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 2.5, slot = LOADOUT_POSITION_ALL, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_RECHARGEBARITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SHIELDRECHARGE_RATE] = { Name = "Instant Recharge", Description = "+ 450% Charge Recharge Rate", Attributes = { { attr = "charge recharge rate increased", increment = 4.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = { ["tf_wearable_demoshield"] = true }, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_CLIPSIZE] = { Name = "Terminator Logic", Description = "+ 350% Clip Size", Attributes = { { attr = "clip size bonus", increment = 3.5, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_CLIPSIZE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_RESERVEAMMO] = { Name = "Endless Ammo", Description = "+ 135% Reserve Ammo", Attributes = { { attr = "maxammo primary increased", increment = 1.35, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo secondary increased", increment = 1.35, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_AMMOREGEN] = { Name = "Bluetooth Supply", Description = "+ 45% Ammo Regen", Attributes = { { attr = "ammo regen", increment = 0.45, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_BLAST_RADIUS] = { Name = "Hyper Blast", Description = "+ 125% Blast Radius", Attributes = { { attr = "blast radius increased", increment = 1.25, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EXPLOSIVE_BLAST_RADIUS, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_SPREAD] = { Name = "Nevamiss", Description = "+ 100% Accuracy", Attributes = { { attr = "weapon spread bonus", increment = 2, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MELEE_RANGE] = { Name = "Absurd Range", Description = "+ 135% Melee Range", Attributes = { { attr = "melee range multiplier", increment = 1.35, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_BONUS] = { Name = "Pure Health", Description = "+ 300 Max Health", Attributes = { { attr = "max health additive bonus", increment = 300, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_MULT] = { Name = "Banana Harvest", Description = "+ 80% Max Health Multiplier", Attributes = { { attr = "mult max health", increment = 0.8, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_REGEN] = { Name = "Portable Sandvich", Description = "+ 35 Health Regen", Attributes = { { attr = "health regen", increment = 35, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_HOK] = { Name = "Health Shot", Description = "+ 200 Health on kill", Attributes = { { attr = "heal on kill", increment = 200, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_MILKY] = { Name = "Milk Shots", Description = "+ 10% Chance to apply mad milk on hit", Attributes = { { attr = "throwable healing", increment = 10, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = 100, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_RECEIVED] = { Name = "Uber-Fix", Description = "+ 100% Health from all sources", Attributes = { { attr = "healing received bonus", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_MONEY_INCOME] = { Name = "Cashout", Description = "+ Gain +60% the cost of a common perk at the end of every encounter", Attributes = { { attr = "currency bonus", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_MONEY_GOLDEN_ENEMIES] = { Name = "Australium Enemies", Description = "+ 6% Chance for enemies to be golden \n+ Golden enemies drop 5x the money \n+ Global upgrade: Affects everyone on your team", Attributes = { { attr = "is australium item", increment = 6, slot = LOADOUT_POSITION_BODY, type = "add", cap = 100, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 6 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 6 end }, [UPGRADE_LEGENDARY_MONEY_WIRE_TAP] = { Name = "Tax Gun", Description = "+ 20 Credits on hit", Attributes = { { attr = "expiration date", increment = 20, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_MONEY_ONESHOT] = { Name = "Rich Get Richer", Description = "+ On Instakill: Gain 150% Extra Cash (dies in 0.5 seconds or sooner)", Attributes = { { attr = "non economy", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_MONEY_DISCOUNT] = { Name = "Hale's Own Discount", Description = "+ Shop prices are 40% Cheaper", Attributes = { { attr = "tag__eotlearlysupport", increment = 0.4, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = 0.6, default = 1, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_MONEY, WeaponList = nil, ApplyFunction = function(player,upgrade) player.CostMult = player.CostMult - 0.4 end, SalvagedFunction = function(player,upgrade) player.CostMult = player.CostMult + 0.4 end }, -- Specialized Upgrades -- [UPGRADE_LEGENDARY_WEAPON_PENETRATION] = { Name = "Bullet Penetration", Description = "+ 8 Penetration", Attributes = { { attr = "projectile penetration heavy", increment = 8, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_BUILDING] = { Name = "Energy Shield", Description = "+ 450% Building Health", Attributes = { { attr = "engy building health bonus", increment = 4.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_DISPENSER_RATE] = { Name = "Production Overdrive", Description = "+ 225% Dispenser Rate", Attributes = { { attr = "mult dispenser rate", increment = 2.25, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_SENTRY_DMG] = { Name = "Pure Damage", Description = "+ 300% Sentry Damage", Attributes = { { attr = "engy sentry damage bonus", increment = 3, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SENTRY_FIRERATE] = { Name = "Hailstorm", Description = "+ 150% Sentry Fire Rate", Attributes = { { attr = "engy sentry fire rate increased", increment = 2.5, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_TELEPORTERRECHARGE] = { Name = "Instant Recharge", Description = "+ 200% Faster Teleporter Recharge", Attributes = { { attr = "mult teleporter recharge rate", increment = 3, slot = LOADOUT_POSITION_MELEE, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_CONSTRUCTION] = { Name = "Build-A-Sentry", Description = "+ 250% Construction Boost", Attributes = { { attr = "Construction rate increased", increment = 2.5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_BUILDRATE] = { Name = "Turbo Boost", Description = "+ 100% Faster Building", Attributes = { { attr = "build rate bonus", increment = 0.5, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_BUILDQUICKSTART] = { Name = "Quickstart: Buildings", Description = "+ Builds start 1 level higher", Attributes = { { attr = "merasmus hat level display ONLY", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 2, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SENTRY_ROCKET] = { Name = "Instant Rockets", Description = "+ 125% Sentry Rocket Speed", Attributes = { { attr = "mult sentry rocket projectile speed", increment = 1.25, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_SENTRY_RANGE] = { Name = "Portable Wrangler", Description = "+ 135% Sentry Range", Attributes = { { attr = "engy sentry radius increased", increment = 1.35, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_SENTRY_AMMO] = { Name = "Terminator Logic", Description = "+ 200% Sentry Ammo", Attributes = { { attr = "mvm sentry ammo", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_HEALRATE] = { Name = "Perma-charge", Description = "+ 225% Heal Rate", Attributes = { { attr = "heal rate bonus", increment = 2.25, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_OVERHEAL] = { Name = "Absurd Health", Description = "+ 200% Max Overheal", Attributes = { { attr = "overheal bonus", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_OVERHEAL_RATE] = { Name = "Instant Overheal", Description = "+ 200% Overheal Build Rate", Attributes = { { attr = "overheal fill rate reduced", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_OVERHEAL_DECAY] = { Name = "Forever Health", Description = "+ 500% Slow Overheal Decay", Attributes = { { attr = "overheal decay bonus", increment = 5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MEDIGUN_RANGE] = { Name = "Global Range", Description = "+ 250% Medigun Range", Attributes = { { attr = "mult medigun range", increment = 2.5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MEDIGUN_UBERRATE] = { Name = "Insta-Uber", Description = "+ 100% Ubercharge Rate", Attributes = { { attr = "ubercharge rate bonus", increment = 1, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MEDIGUN_UBERDURATION] = { Name = "Extreme Duration", Description = "+ 8 Second longer uber", Attributes = { { attr = "uber duration bonus", increment = 8, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_EFFECT_DURATION] = { Name = "Extreme Duration", Description = "+ 135% Longer Effect Duration", Attributes = { { attr = "mult effect duration", increment = 1.35, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = WEAPONS_LIST_EFFECTITEM, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_BANNER_EFFECT_DURATION] = { Name = "Extreme Duration", Description = "+ 200% Longer Banner Duration", Attributes = { { attr = "increase buff duration", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_BANNER_EFFECT_RANGE] = { Name = "War Charge", Description = "+ 135% Banner Range", Attributes = { { attr = "mod soldier buff range", increment = 1.35, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_buff_item"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_ROCKETJUMP_REDUC] = { Name = "Pocket Gunboats", Description = "+ 80% Blast Jump Damage Resistance", Attributes = { { attr = "rocket jump damage reduction", increment = 1.8, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = WEAPONS_LIST_SELF_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_BLAST_INCREASED] = { Name = "Deadly Blast", Description = "+ 10% Damage per enemy in blast", Attributes = { { attr = "add damage per target", increment = 0.1, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_EXPLOSIVE_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_FLAME_RANGE] = { Name = "Super Condensed Air", Description = "+ 100% Flame Range", Attributes = { { attr = "flame_drag", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 8.5 }, { attr = "flame_speed", increment = 1300, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 2450 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_flamethrower"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_AFTERBURN_RATE] = { Name = "Red Phosphorus", Description = "+ 600% Afterburn Damage Rate", Attributes = { { attr = "weapon burn time increased", increment = 6, slot = LOADOUT_POSITION_ALL, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_STICKY_CHARGE] = { Name = "Instant Charge", Description = "+ 150% Sticky Charge Rate", Attributes = { { attr = "stickybomb charge rate", increment = 2.5, slot = LOADOUT_POSITION_SECONDARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_pipebomblauncher"] = true, ["Force Fire"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SHIELD_CHARGE] = { Name = "Speeding Targe", Description = "+ 33% Charge Move Speed", Attributes = { { attr = "mult charging move speed", increment = 0.33, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SHIELD_KBRES] = { Name = "Immoveable Targe", Description = "+ 150% Damage Push Force Reduction", Attributes = { { attr = "damage force reduction", increment = 2.5, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_SHIELD_IMPACT] = { Name = "Unstoppable Force", Description = "+ 450% Shield Impact Damage", Attributes = { { attr = "charge impact damage increased", increment = 4.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DAMAGE_DMGBOOST_WHILECHARGING] = { Name = "Crushing Force", Description = "+ 150% Damage While Charging", Attributes = { { attr = "sniper full charge damage bonus", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_LONGERCHARGE] = { Name = "Extreme Duration", Description = "+ 3s Longer Charge", Attributes = { { attr = "charge time increased", increment = 3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MELEEKILLSFILL] = { Name = "Pit Stop", Description = "+ 50% Charge On Melee Kill", Attributes = { { attr = "kill refills meter", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_MELEEHITSFILL] = { Name = "Pit Stop", Description = "+ 33% Charge On Hit", Attributes = { { attr = "charge meter on hit", increment = 0.33, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_BASHFILL] = { Name = "Pit Stop", Description = "+ 50% Charge On Shield Bash", Attributes = { { attr = "sniper charge per sec", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_REGENBASH] = { Name = "Regenerative Bash", Description = "+ 200 Healing On Shield Bash", Attributes = { { attr = "freaky fair healing potion", increment = 200, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_TURNRATE] = { Name = "Turn Control", Description = "+ 400% Charge Turn Control", Attributes = { { attr = "mult charge turn control", increment = 4, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_FIRERATE_WHILECHARGING] = { Name = "Need For Speed", Description = "+ 200% Fire Rate While Charging", Attributes = { { attr = "pyro year number", increment = 2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_wearable_demoshield"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_MINIGUN_SPINUP] = { Name = "Instant Spinup", Description = "+ 150% Spinup Speed", Attributes = { { attr = "minigun spinup time decreased", increment = 2.5, slot = LOADOUT_POSITION_PRIMARY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_ATTACK_PROJ] = { Name = "Destroy Projectilies", Description = "+ Minigun will shoot down projectiles", Attributes = { { attr = "attack projectiles", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 2, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_minigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_LUNCHBOX] = { Name = "Sandvich Deluxe", Description = "+ 500% Lunchbox Item Healing Effect", Attributes = { { attr = "lunchbox healing decreased", increment = 5, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_lunchbox"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_SNIPER_CHARGERATE] = { Name = "Unbreakable Focus", Description = "+ 100% Faster Charge Rate", Attributes = { { attr = "SRifle Charge rate increased", increment = 2, slot = LOADOUT_POSITION_PRIMARY, type = "multiply", cap = 2, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_sniperrifle"] = true, ["Railgun"] = false, ["Triple Tap"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_MACHINA_DMG] = { Name = "Railgun", Description = "+ 300% Full Charged Damage", Attributes = { { attr = "sniper full charge damage bonus", increment = 3, slot = LOADOUT_POSITION_PRIMARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["The Machina"] = true,["Shooting Star"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DMG_REVOLVER_DISGUISED] = { Name = "Opportunistic", Description = "+ 270% Revolver Damage Bonus While Disguised", Attributes = { { attr = "damage bonus while disguised", increment = 2.7, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_revolver"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_DISGUISE_FIREIMMUNE] = { Name = "Flame Retardant Suit", Description = "+ Immune to fire while disguised", Attributes = { { attr = "disguise no burn", increment = 1, slot = LOADOUT_POSITION_PDA, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_pda_spy"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_CLOAKREGEN] = { Name = "Instant Recharge", Description = "+ 200% Cloak Regen Rate", Attributes = { { attr = "mult cloak meter regen rate", increment = 2, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_CLOAKDURATION] = { Name = "Cloak And Dagger", Description = "+ 150% Slower Cloak Consume Rate", Attributes = { { attr = "cloak consume rate decreased", increment = 2.5, slot = LOADOUT_POSITION_PDA2, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_SPEED_CLOAKSPEED] = { Name = "Speed of the Shadows", Description = "+ 100% Move Speed While Cloaked", Attributes = { { attr = "move speed bonus resource level", increment = 1, slot = LOADOUT_POSITION_PDA2, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_SPEED, WeaponList = {["tf_weapon_invis"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_HEALTH_DISGUISED_RES] = { Name = "Feigned Damage Report", Description = "+ 75% Damage Resistance While Disguised", Attributes = { { attr = "disguise damage reduction", increment = 1.75, slot = LOADOUT_POSITION_PDA, type = "divide", cap = 0.4, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_HEALTH, WeaponList = {["tf_weapon_pda_spy"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DAMAGE_STICKY_FULLCHARGE] = { Name = "Overpower", Description = "+ Up 200% more damage based on sticky charge", Attributes = { { attr = "stickybomb_charge_damage_increase", increment = 2, slot = LOADOUT_POSITION_SECONDARY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = {["tf_weapon_pipebomblauncher"] = true,["Force Fire"] = false, ["Stickybomb Jumper"] = false}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_WEAPON_EXPLOSIVE_ARROWS] = { Name = "Explosive Arrows", Description = "+ Arrows explode on impact with enemy or after 2 seconds", Attributes = { { attr = "tag__summer2014", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_WEAPON, WeaponList = {["tf_weapon_compound_bow"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_LEGENDARY_DAMAGE_MAGSHOT] = { Name = "Magshot", Description = "+ 1% extra base damage for every x bullets in the clip, + 400 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 400, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_MAGSHOT, 400, "subtract" ) end }, [UPGRADE_LEGENDARY_DAMAGE_WINDUP] = { Name = "Windup", Description = "+4% extra base damage the more you shoot without stopping, + 200 bullets counted", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_WINDUP, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 200, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_BULLETS_WINDUP, 200, "subtract" ) end }, [UPGRADE_LEGENDARY_DAMAGE_ONRELOAD] = { Name = "Fresh Bullets", Description = "+ Deal +300% extra base damage for 2 seconds on full reload", usePlayerUpgradesTable = true, Cap = SIGNED_INT_LIMIT, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_DAMAGE, WeaponList = WEAPONS_LIST_RELOADABLE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 4, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_MISC, PLAYER_DATA_MISC_DMG_RELOAD, 4, "subtract" ) end }, --Greed [UPGRADE_GREED_DMG] = { Name = "Double Or Nothing", Description = "+ 100% Universal damage mult \n- 100% Damage vuln", Attributes = { { attr = "dmg penalty vs players", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult_dmgtaken_active", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 1, "add" ); print( "apply") end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 1, "subtract" ) end }, [UPGRADE_GREED_DMG_MELEE] = { Name = "Brawler", Description = "+ 2x Melee Damage \n- 0.4x Range Damage", Attributes = { { attr = "dmg penalty vs players", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = 8, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_MULTIPLICATIVE, 0.4, "multiply" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_BASEDMG, PLAYER_DATA_DAMAGE_BASEDMG_MULTIPLICATIVE, 0.4, "divide" ) end }, [UPGRADE_GREED_DMG_KB] = { Name = "Absurd Power", Description = "+ 50% Universal damage mult \n- Shooting displaces you", Attributes = { { attr = "dmg penalty vs players", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "airblast vulnerability multiplier hidden", increment = 200, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 0.5, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 0.5, "subtract" ) end }, [UPGRADE_GREED_SPEED_FIRERATE] = { Name = "Barrage Mode", Description = "+ 3x Primary And Secondary Fire rate \n+ 50% Clip Size Mult (or reserve for weapons like miniguns) \n- 30% Reload Speed", Attributes = { { attr = "melee attack rate bonus", increment = 3, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "divide", cap = 0.33, default = 1 }, { attr = "clip size bonus", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 1.5, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_FIRERATE_EXTREME, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 0.3, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 0.3, "subtract" ) end }, [UPGRADE_GREED_SPEED_MOVESPEED] = { Name = "Speed Demon", Description = "+ 60% Move speed \n- 300% Air Control", Attributes = { { attr = "move speed bonus", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "increased air control", increment = 3, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_GREED_WEAPON_RELOAD] = { Name = "Committed Reload", Description = "+ 0.4x Reload Speed \n- Cannot switch or shoot while reloading", Attributes = { { attr = "faster reload rate", increment = 0.4, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = 1, default = 1 }, { attr = "hold fire until full reload", increment = 2, slot = LOADOUT_POSITION_BODY, type = "set", cap = 2, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_RELOAD, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE_COMMITTED, 0.4, "multiply" ) end, SalvagedFunction = nil }, [UPGRADE_GREED_WEAPON_TURRET] = { Name = "Turret Mode", Description = "+ 33% Accuracy and fire rate while not moving \n- Inverted when moving", Attributes = { { attr = "throwable fire speed", increment = 0.67, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.67, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_FIRERATE, ApplyFunction = function(player,upgrade) StartTurretMode(player) end, SalvagedFunction = function(player,upgrade) StopTurretMode(player) end }, [UPGRADE_GREED_HEALTH_MULT] = { Name = "Tank", Description = "+ 30% Max health multiplier \n+ 10% Max health multiplier the end of an encounter \n- Lose max health when taking damage from enemies", Attributes = { { attr = "sapper health bonus", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.1, default = 0, refund_set = nil }, { attr = "mult max health", increment = 0.3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function(player,upgrade) StartTankMode(player) end, SalvagedFunction = function(player,upgrade) StopTankMode(player) end }, [UPGRADE_GREED_HEALTH_MULT_CLOSE_RANGE] = { Name = "Close Range Specialist", Description = "+ 225 Max health \n+ 75% Health Mult \n- Ranged attacks have limited range", Attributes = { { attr = "max health additive bonus", increment = 225, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 }, { attr = "mult max health", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0.75 }, { attr = "max bullet range", increment = 350, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = nil, default = 0, refund_set = nil }, { attr = "projectile detonate time", increment = 0.318, slot = LOADOUT_POSITION_PRIMARY_AND_SECONDARY, type = "set", cap = nil, default = 0, refund_set = nil }, { attr = "mult medigun range", increment = 0.75, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_GREED_MONEY_PHYSICAL] = { Name = "Physical Cash", Description = "+ Enemies give 3x the cash \n- You have to manually collect it \nTeammates are unaffected", Attributes = { { attr = "unlimited quantity", increment = 3, slot = LOADOUT_POSITION_BODY, type = "set", cap = 3, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function(player,upgrade) player.CashMult = 0 end, SalvagedFunction = function(player,upgrade) player.CashMult = 1 end }, [UPGRADE_GREED_MONEY_HAGGLE] = { Name = "Haggle", Description = "+ First purchase at a shop is 30% Cheaper \n- 2 Shop item for sale", Attributes = { { attr = "Wrench index", increment = 0.7, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.7, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades - 2; player.CanHaggle = true; end, SalvagedFunction = function(player,upgrade) player.DisplayedShopUpgrades = player.DisplayedShopUpgrades + 2; player.CanHaggle = false; end }, [UPGRADE_GREED_MONEY_PERK_UPGRADE] = { Name = "High Roller", Description = "+ 33% Chance to upgrade loot by 1 tier \n- 1 Loot item from encounters", Attributes = { { attr = "freaky fair extra attrib1", increment = 33, slot = LOADOUT_POSITION_BODY, type = "add", cap = 99, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function(player,upgrade) player.DisplayedUpgrades = player.DisplayedUpgrades - 1; end, SalvagedFunction = function(player,upgrade) player.DisplayedUpgrades = player.DisplayedUpgrades + 1; end }, [UPGRADE_GREED_HEALTH_HEALRATE] = { Name = "Fixer Upper", Description = "+ 250% Heal Rate Mult \n- 0.2x Max Overheal", Attributes = { { attr = "heal rate bonus", increment = 2.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "overheal penalty", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = {["tf_weapon_medigun"] = true}, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_HEALTH_REPAIRRATE] = { Name = "Repaired To Last", Description = "+ 200% Repair Rate \n- 0.4x Upgrade Rate", Attributes = { { attr = "Repair rate increased", increment = 2, slot = LOADOUT_POSITION_MELEE, type = "add", cap = nil, default = 1 }, { attr = "upgrade rate decrease", increment = 0.4, slot = LOADOUT_POSITION_MELEE, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true}, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_HEALTH_RESIST] = { Name = "Steel Wall", Description = "+ 20% Universal Damage Resistance \n- 33% Move Speed", Attributes = { { attr = "mult_dmgtaken_active", increment = 1.25, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 }, { attr = "SET BONUS: move speed set bonus", increment = 1.33, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_HEALTH_OVERWHAMMER] = { Name = "Buffer Overflow", Description = "+ Health On Kill Can Overheal \n- 15% Reload Rate", Attributes = { { attr = "overheal from heal on kill", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "faster reload rate", increment = 1.15, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 0.15, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 0.15, "subtract" ) end}, [UPGRADE_GREED_DMG_HEADSHOT] = { Name = "Bullseye", Description = "+ 150% Headshot Damage \n- 0.2x Damage on bodyshot", Attributes = { { attr = "headshot damage increase", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "damage penalty on bodyshot", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = {["tf_weapon_sniperrifle"]=true,["The Ambassador"] = true,["Festive Ambassador"] = true}, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_DMG_POWERSHOT] = { Name = "Ring Of Power", Description = "+ 400% Universal Damage Mult \n- 400% Fire Rate Mult", Attributes = { { attr = "dmg penalty vs players", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "melee attack rate bonus", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 4, "add" ); ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE, 4, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_ADDITIVE, 4, "subtract" ); ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE, 4, "subtract" ) end}, -- [UPGRADE_GREED_DMG_ARMYOFONE] = { Name = "Army Of One", Description = "+ 300% Universal Damage Mult \n- 80% Clip Size Mult (or reserve for weapons like miniguns)", Attributes = { { attr = "dmg penalty vs players", increment = 3, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "clip size penalty", increment = 1.8, slot = LOADOUT_POSITION_BODY, type = "divide", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_DMG_VSBURNING] = { Name = "Smoldering Flames", Description = "+ 50% Damage Vs Burning \n- 0.5x Reserve Ammo", Attributes = { { attr = "damage bonus vs burning", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "maxammo primary reduced", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 }, { attr = "maxammo secondary reduced", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_AFTERBURN, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_SPEED_ABSURD_FIRERATE] = { Name = "Trigger Finger", Description = "+ 5x Fire Rate Mult \n- 0.25x Universal Damage Mult", Attributes = { { attr = "melee attack rate bonus", increment = 1, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 }, { attr = "dmg penalty vs players", increment = 1, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_FIRERATE_EXTREME, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_MULTIPLICATIVE, 0.25, "multiply" ); ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_MULTIPLICATIVE, 5, "multiply" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_DMGMULT, PLAYER_DATA_DAMAGE_DMGMULT_MULTIPLICATIVE, 4, "multiply" ); ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_MULTIPLICATIVE, 5, "divide" ) end}, [UPGRADE_GREED_WEAPON_ROCKETSPEC] = { Name = "Specialized Engineering", Description = "+ Sentry Rocket Has Rocket Specialist \n- 33% Sentry Rocket Fire Rate", Attributes = { { attr = "rocket specialist", increment = 1, slot = LOADOUT_POSITION_MELEE, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "mult firerocket rate", increment = 0.33, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 1.33, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = false}, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_WEAPON_DUCKACC] = { Name = "Duck Hunt", Description = "+ 33% Accuracy When Crouching \n+ 50% Crouch Move Speed \n- 33% Accuracy When Not Crouched", Attributes = { { attr = "weapon spread bonus", increment = 2, slot = LOADOUT_POSITION_BODY, type = "set", cap = 2, default = 0, refund_set = nil }, { attr = "duck accuracy mult", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.5, default = 0, refund_set = nil }, { attr = "mult duck speed", increment = 1.5, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1.5, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_SPREAD, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_WEAPON_RESERVE_MULT] = { Name = "Ammo Belt", Description = "+ 100% Reserve Ammo Mult \n- 40% Fire Rate Mult", Attributes = { { attr = "max ammo primary mult", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "max ammo secondary mult", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "melee attack rate bonus", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE, 0.4, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_FIRERATEMULT, PLAYER_DATA_SPEED_FIRERATEMULT_ADDITIVE, 0.4, "subtract" ) end}, [UPGRADE_GREED_WEAPON_MISC_AMMO] = { Name = "Spares", Description = "+ 500% Misc Ammo \n- 20% Bar Recharge Rate", Attributes = { { attr = "maxammo grenades1 increased", increment = 5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "effect bar recharge rate increased", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult_item_meter_charge_rate", increment = 0.2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_MISCAMMO, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_MONEY_SELLOUT] = { Name = "Sellout", Description = "+ You can infinitely buy the same upgrade from stores \n- You make less money based on the number purchases you made \n ^ resets at next store", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_MONEY_DOUBLEDIP] = { Name = "Double Dip", Description = "+ You can choose + 1 more time from each encounter's loot pool \n- Shops are 4x more expensive", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = function( player, upgrade) player.ShopCostMult = player.ShopCostMult * 4 player.MaxUpgradesBuy = player.MaxUpgradesBuy + 1 end, SalvagedFunction = function( player, upgrade) player.ShopCostMult = player.ShopCostMult / 4 player.MaxUpgradesBuy = player.MaxUpgradesBuy - 1 end }, -- [UPGRADE_GREED_DMG_LOWHP] = { Name = "Fighting Spirit", Description = "+ Deal up to 500% More damage the lower your health \n- You can only heal from health packs and Heal On Kill", Attributes = { { attr = "mult dmg with reduced health", increment = 5, slot = LOADOUT_POSITION_BODY, type = "add", cap = 6, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_RESERVEAMMO, ApplyFunction = function( player, upgrade) player.HealingFromNotKits_Mult = player.HealingFromNotKits_Mult - 1 end, SalvagedFunction = function( player, upgrade) player.HealingFromNotKits_Mult = player.HealingFromNotKits_Mult + 1 end}, -- old ver [UPGRADE_GREED_DMG_LOWHP] = { Name = "Fighting Spirit", Description = "+ Deal up to 200% More damage the lower your health \n- Bullet and projectile spread increases with lower health", Attributes = { { attr = "mult dmg with reduced health", increment = 2, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "panic_attack_negative", increment = 2.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil}, -- max spread penalty 2.5, projectile spread penalty of 5 [UPGRADE_GREED_DMG_PACKETDELAY] = { Name = "Packet Delay", Description = "+ Stacks all damage you deal to an enemy for 3 seconds and deals all stacked damage after the delay at once", Attributes = { { attr = "unlimited quantity hidden", increment = 3, slot = LOADOUT_POSITION_BODY, type = "set", cap = 3, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_DMG_HYBRIDKNIGHT] = { Name = "Dazzling Bombs", Description = "+ Pipe bombs make enemies take 2x melee damage for 3 seconds on hit \n- 40% reserve ammo \n- 50% Reload speed", Attributes = { { attr = "deactive date", increment = 1, slot = LOADOUT_POSITION_PRIMARY, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "maxammo primary reduced", increment = 0.6, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = nil, default = 1 }, { attr = "reload time increased", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = {["TF_WEAPON_GRENADELAUNCHER"] = true}, ApplyFunction = nil, SalvagedFunction = nil}, [UPGRADE_GREED_WEAPON_FULLCLIPRELOAD] = { Name = "Locked And Loaded", Description = "+ Reload full clip at once \n- 800% Reload speed", Attributes = { { attr = "reload full clip at once", increment = 1, slot = LOADOUT_POSITION_BODY, type = "set", cap = 1, default = 0, refund_set = nil }, { attr = "reload time increased", increment = 0, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_GREED, Category = UPGRADE_CATEGORY_GREED, WeaponList = WEAPONS_LIST_RELOAD_FULL, ApplyFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 8, "add" ) end, SalvagedFunction = function( player, data ) ChangePlayerData( player, PLAYER_DATA_TYPE_RELOADMULT, PLAYER_DATA_SPEED_RELOADRATE, 8, "subtract" ) end}, --Bourgeoisie [UPGRADE_BOURGEOISIE_LANDMINES] = { Name = "Landmines", Description = "+ Stickies bombs auto detonate when enemies get close too them", Attributes = { { attr = "proximity bomb", increment = 0.5, slot = LOADOUT_POSITION_SECONDARY, type = "set", cap = 0.5, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = {["tf_weapon_pipebomblauncher"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_GOLDDIGGER] = { Name = "Gold Digger", Description = "+ 10% Chance for enemies to be golden, You get 2x cash from golden enemies but 0 cash from normal enemies", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] + 10 end, SalvagedFunction = function(player, upgrade) ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] = ENCOUNTER_MODIFY_STATS[MODIFY_ENEMY_GOLDEN_CHANCE] - 10 end }, [UPGRADE_BOURGEOISIE_LONGSHOT] = { Name = "Long Shot", Description = "+ Increased ''Close Range'' distance", Attributes = { { attr = "strange part new counter ID", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_EMERALD] = { Name = "Emerald Ring", Description = "+ 1 Perk in encounter loot selection", Cap = 3, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = function(player, upgrade) player.DisplayedUpgrades = player.DisplayedUpgrades + 1; end, SalvagedFunction = function(player, upgrade) player.DisplayedUpgrades = player.DisplayedUpgrades - 1; end }, [UPGRADE_BOURGEOISIE_GEMSTONE] = { Name = "Gemstone", Description = "+ 5% Damage Mult ever encounter", Attributes = { { attr = "strange restriction value 1", increment = 0.05, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 0 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_SPEED] = { Name = "Speed Ring", Description = "+ 3% Fire Rate Mult ever encounter", Attributes = { { attr = "strange restriction type 2", increment = 0.03, slot = LOADOUT_POSITION_BODY, type = "subtract", cap = 0.97, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = WEAPONS_LIST_FIRERATE_EXTREME, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_JUMP] = { Name = "Jump Ring", Description = "+ 3 Mid-air Jumps \n+ You deal mini-crit damage while airborne", Attributes = { { attr = "air dash count", increment = 3, slot = LOADOUT_POSITION_BODY, type = "set", cap = 3, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_THORNS] = { Name = "Ring Of Thorns", Description = "+ On damage taken: Attacker takes the 5x the damage you took", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_SKEWER] = { Name = "Skewer", Description = "+ 50% Damage on each bullet penetration", Attributes = { { attr = "penetration damage penalty", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = WEAPONS_LIST_HITSCAN, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_MARTYRDOM] = { Name = "Martyrdom", Description = "+ On Death: Drop a live grenade that deals 33% of the enemy's max hp in damage", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_UPGRADE] = { Name = "Upgrade Ring", Description = "+ Each shop contains at least one perk you already have", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_MOLE] = { Name = "Mole Tunnel", Description = "+ Press Action Key to teleport to an enemy spawn point \n Can only be used once per encounter", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_RUBY] = { Name = "Ruby Ring", Description = "+ While Last Alive: Gain mini-crits and a speed boost", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_SPOOK] = { Name = "Spook Ring", Description = "+ 15 seconds into a wave: Spook all nearby enemies for 10 seconds \n Only once per wave", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_SAPPHIRE] = { Name = "Sapphire Ring", Description = "+ You always get the loot you voted for (vote still counts for loot for others)", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_BLASTSHIELD] = { Name = "Blast Shield", Description = "+ You take 90% less self damage", Attributes = { { attr = "blast dmg to self increased", increment = 0.1, slot = LOADOUT_POSITION_BODY, type = "multiply", cap = 0.1, default = 1 } }, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = WEAPONS_LIST_SELF_DAMAGE, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_FIRSTSTRIKE] = { Name = "First Strike", Description = "+ 2x Damage vs enemies with 75% hp or higher", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_EPIC, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_PIPE_DIRECT] = { Name = "Direct Hit", Description = "+ Pipes that explode on contact have increased damage and blast radius", Attributes = { { attr = "mult explosion radius direct hit", increment = 0.15, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 }, { attr = "mult dmg direct hit", increment = 0.25, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = {["TF_WEAPON_GRENADELAUNCHER"] = true}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_BUILDING_DMG] = { Name = "Deconstructor", Description = "+ 1000% Damage bonus vs buildings", Attributes = { { attr = "dmg bonus vs buildings", increment = 10, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_ENRAGED] = { Name = "Enraged", Description = "+ 100% Rage gain scale", Attributes = { { attr = "rage receive scale", increment = 1, slot = LOADOUT_POSITION_BODY, type = "add", cap = nil, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = {["tf_weapon_buff_item"] = true,}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_DISPENSER] = { Name = "Mega Dispenser", Description = "+ 500% Dispenser range", Attributes = { { attr = "engy dispenser radius increased", increment = 5, slot = LOADOUT_POSITION_MELEE, type = "add", cap = 6, default = 1 } }, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = {["tf_weapon_wrench"] = true,["tf_weapon_robot_arm"] = true,}, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_RING_PRISMATIC] = { Name = "Prismatic Ring", Description = "+ 50% Damage Multiplier (multiplicative) for every active flex", Attributes = { { attr = "Halloween Spellbook Page: Tumidum", increment = 0.5, slot = LOADOUT_POSITION_BODY, type = "set", cap = 0.5, default = 0, refund_set = nil } }, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_TEAMKILL] = { Name = "Fire Arms Training", Description = "+ On Hit: Make enemies deal friendly fire damage for 5 seconds", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_RARE, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, [UPGRADE_BOURGEOISIE_BOGO] = { Name = "BOGO Card", Description = "+ Has a chance to give you a free 2nd copy of the upgrade you just purchased in a shop (must be stackable)", Cap = 1, usePlayerUpgradesTable = true, Type = UPGRADE_TYPE_LEGENDARY, Category = UPGRADE_CATEGORY_BOURGEOISIE, WeaponList = nil, ApplyFunction = nil, SalvagedFunction = nil }, }