GM.Skills = {} GM.SkillModifiers = {} GM.SkillFunctions = {} GM.SkillModifierFunctions = {} function GM:AddSkill(id, name, description, x, y, connections, tree) local skill = {Connections = table.ToAssoc(connections or {})} if CLIENT then skill.x = x skill.y = y -- TODO: Dynamic skill descriptions based on modifiers on the skill. skill.Description = description end if #name == 0 then name = "Skill "..id skill.Disabled = true end skill.Name = name skill.Tree = tree self.Skills[id] = skill return skill end -- Use this after all skills have been added. It assigns dynamic IDs! function GM:AddTrinket(name, swepaffix, pairedweapon, veles, weles, tier, description, status, stocks) local skill = {Connections = {}} skill.Name = name skill.Trinket = swepaffix skill.Status = status local datatab = {PrintName = name, DroppedEles = weles, Tier = tier, Description = description, Status = status, Stocks = stocks} if pairedweapon then skill.PairedWeapon = "weapon_zs_t_" .. swepaffix end self.ZSInventoryItemData["trinket_" .. swepaffix] = datatab self.Skills[#self.Skills + 1] = skill return #self.Skills, self.ZSInventoryItemData["trinket_" .. swepaffix] end -- I'll leave this here, but I don't think it's needed. function GM:GetTrinketSkillID(trinketname) for skillid, skill in pairs(GM.Skills) do if skill.Trinket and skill.Trinket == trinketname then return skillid end end end function GM:AddSkillModifier(skillid, modifier, amount) self.SkillModifiers[skillid] = self.SkillModifiers[skillid] or {} self.SkillModifiers[skillid][modifier] = (self.SkillModifiers[skillid][modifier] or 0) + amount end function GM:AddSkillFunction(skillid, func) self.SkillFunctions[skillid] = self.SkillFunctions[skillid] or {} table.insert(self.SkillFunctions[skillid], func) end function GM:SetSkillModifierFunction(modid, func) self.SkillModifierFunctions[modid] = func end function GM:MkGenericMod(modifiername) return function(pl, amount) pl[modifiername] = math.Clamp(amount + 1.0, 0.0, 1000.0) end end -- These are used for position on the screen TREE_HEALTHTREE = 1 TREE_SPEEDTREE = 2 TREE_SUPPORTTREE = 3 TREE_BUILDINGTREE = 4 TREE_MELEETREE = 5 TREE_GUNTREE = 6 -- Dummy skill used for "connecting" to their trees. SKILL_NONE = 0 --[[ SKILL_U_AMMOCRATE = 0 -- Unlock alternate arsenal crate that only sells cheap ammo (remove from regular?) SKILL_U_DECOY = 0 -- "Unlock: Decoy", "Unlocks purchasing the Decoy\nZombies believe it is a human\nCan be destroyed\nExplodes when destroyed" SKILL_OVERCHARGEFLASHLIGHT = 0 -- Your flashlight now produces a blinding flash that stuns zombies\nYour flashlight now breaks after one use Unlock: Explosive body armor - Allows you to purchase explosive body armor, which knocks back both you and nearby zombies when you fall below 25 hp. Olympian - +50% throw power\nsomething bad Unlock: Antidote Medic Gun - Unlocks purchasing the Antidote Medic Gun\nTarget poison damage resistance +100%\nTarget immediately cleansed of all debuffs\nTarget is no longer healed or hastened ]] -- unimplemented SKILL_SPEED1 = 1 SKILL_SPEED2 = 2 SKILL_SPEED3 = 3 SKILL_SPEED4 = 4 SKILL_SPEED5 = 5 SKILL_BACKPEDDLER = 18 SKILL_LOADEDHULL = 20 SKILL_REINFORCEDHULL = 21 SKILL_REINFORCEDBLADES = 22 SKILL_AVIATOR = 23 SKILL_U_BLASTTURRET = 24 SKILL_TWINVOLLEY = 26 SKILL_TURRETOVERLOAD = 27 SKILL_LIGHTCONSTRUCT = 34 SKILL_QUICKDRAW = 39 SKILL_QUICKRELOAD = 41 SKILL_VITALITY2 = 45 SKILL_BARRICADEEXPERT = 77 SKILL_BATTLER1 = 48 SKILL_BATTLER2 = 49 SKILL_BATTLER3 = 50 SKILL_BATTLER4 = 51 SKILL_BATTLER5 = 52 SKILL_HEAVYSTRIKES = 53 SKILL_COMBOKNUCKLE = 62 SKILL_U_CRAFTINGPACK = 64 SKILL_JOUSTER = 65 SKILL_SCAVENGER = 67 SKILL_U_ZAPPER_ARC = 68 SKILL_ULTRANIMBLE = 70 SKILL_D_FRAIL = 71 SKILL_U_MEDICCLOUD = 72 SKILL_SMARTTARGETING = 73 SKILL_GOURMET = 76 SKILL_BLOODARMOR = 79 SKILL_REGENERATOR = 80 SKILL_SAFEFALL = 83 SKILL_VITALITY3 = 84 SKILL_TANKER = 86 SKILL_U_CORRUPTEDFRAGMENT = 87 SKILL_WORTHINESS3 = 78 SKILL_WORTHINESS4 = 88 SKILL_FOCUS = 40 SKILL_WORTHINESS1 = 42 SKILL_WORTHINESS2 = 43 SKILL_WOOISM = 46 SKILL_U_DRONE = 28 SKILL_U_NANITECLOUD = 29 SKILL_STOIC1 = 6 SKILL_STOIC2 = 7 SKILL_STOIC3 = 8 SKILL_STOIC4 = 9 SKILL_STOIC5 = 10 SKILL_SURGEON1 = 11 SKILL_SURGEON2 = 12 SKILL_SURGEON3 = 13 SKILL_HANDY1 = 14 SKILL_HANDY2 = 15 SKILL_HANDY3 = 16 SKILL_MOTIONI = 17 SKILL_PHASER = 19 SKILL_TURRETLOCK = 25 SKILL_HAMMERDISCIPLINE = 30 SKILL_FIELDAMP = 31 SKILL_U_ROLLERMINE = 32 SKILL_HAULMODULE = 33 SKILL_TRIGGER_DISCIPLINE1 = 35 SKILL_TRIGGER_DISCIPLINE2 = 36 SKILL_TRIGGER_DISCIPLINE3 = 37 SKILL_D_PALSY = 38 SKILL_EGOCENTRIC = 44 SKILL_D_HEMOPHILIA = 47 SKILL_LASTSTAND = 54 SKILL_D_NOODLEARMS = 55 SKILL_GLASSWEAPONS = 56 SKILL_CANNONBALL = 57 SKILL_D_CLUMSY = 58 SKILL_CHEAPKNUCKLE = 59 SKILL_CRITICALKNUCKLE = 60 SKILL_KNUCKLEMASTER = 61 SKILL_D_LATEBUYER = 63 SKILL_VITALITY1 = 66 SKILL_TAUT = 69 SKILL_INSIGHT = 74 SKILL_GLUTTON = 75 SKILL_D_WEAKNESS = 81 SKILL_PREPAREDNESS = 82 SKILL_D_WIDELOAD = 85 SKILL_FORAGER = 89 SKILL_LANKY = 90 SKILL_PITCHER = 91 SKILL_BLASTPROOF = 92 SKILL_MASTERCHEF = 93 SKILL_SUGARRUSH = 94 SKILL_U_STRENGTHSHOT = 95 SKILL_STABLEHULL = 96 SKILL_LIGHTWEIGHT = 97 SKILL_AGILEI = 98 SKILL_U_CRYGASGREN = 99 SKILL_SOFTDET = 100 SKILL_STOCKPILE = 101 SKILL_ACUITY = 102 SKILL_VISION = 103 SKILL_U_ROCKETTURRET = 104 SKILL_RECLAIMSOL = 105 SKILL_ORPHICFOCUS = 106 SKILL_IRONBLOOD = 107 SKILL_BLOODLETTER = 108 SKILL_HAEMOSTASIS = 109 SKILL_SLEIGHTOFHAND = 110 SKILL_AGILEII = 111 SKILL_AGILEIII = 112 SKILL_BIOLOGYI = 113 SKILL_BIOLOGYII = 114 SKILL_BIOLOGYIII = 115 SKILL_FOCUSII = 116 SKILL_FOCUSIII = 117 SKILL_EQUIPPED = 118 SKILL_SURESTEP = 119 SKILL_INTREPID = 120 SKILL_CARDIOTONIC = 121 SKILL_BLOODLUST = 122 SKILL_SCOURER = 123 SKILL_LANKYII = 124 SKILL_U_ANTITODESHOT = 125 SKILL_DISPERSION = 126 SKILL_MOTIONII = 127 SKILL_MOTIONIII = 128 SKILL_D_SLOW = 129 SKILL_BRASH = 130 SKILL_CONEFFECT = 131 SKILL_CIRCULATION = 132 SKILL_SANGUINE = 133 SKILL_ANTIGEN = 134 SKILL_INSTRUMENTS = 135 SKILL_HANDY4 = 136 SKILL_HANDY5 = 137 SKILL_TECHNICIAN = 138 SKILL_BIOLOGYIV = 139 SKILL_SURGEONIV = 140 SKILL_DELIBRATION = 141 SKILL_DRIFT = 142 SKILL_WARP = 143 SKILL_LEVELHEADED = 144 SKILL_ROBUST = 145 SKILL_STOWAGE = 146 SKILL_TRUEWOOISM = 147 SKILL_UNBOUND = 148 SKILLMOD_HEALTH = 1 SKILLMOD_SPEED = 2 SKILLMOD_WORTH = 3 SKILLMOD_FALLDAMAGE_THRESHOLD_MUL = 4 SKILLMOD_FALLDAMAGE_RECOVERY_MUL = 5 SKILLMOD_FALLDAMAGE_SLOWDOWN_MUL = 6 SKILLMOD_FOODRECOVERY_MUL = 7 SKILLMOD_FOODEATTIME_MUL = 8 SKILLMOD_JUMPPOWER_MUL = 9 SKILLMOD_RELOADSPEED_MUL = 11 SKILLMOD_DEPLOYSPEED_MUL = 12 SKILLMOD_UNARMED_DAMAGE_MUL = 13 SKILLMOD_UNARMED_SWING_DELAY_MUL = 14 SKILLMOD_MELEE_DAMAGE_MUL = 15 SKILLMOD_HAMMER_SWING_DELAY_MUL = 16 SKILLMOD_CONTROLLABLE_SPEED_MUL = 17 SKILLMOD_CONTROLLABLE_HANDLING_MUL = 18 SKILLMOD_CONTROLLABLE_HEALTH_MUL = 19 SKILLMOD_MANHACK_DAMAGE_MUL = 20 SKILLMOD_BARRICADE_PHASE_SPEED_MUL = 21 SKILLMOD_MEDKIT_COOLDOWN_MUL = 22 SKILLMOD_MEDKIT_EFFECTIVENESS_MUL = 23 SKILLMOD_REPAIRRATE_MUL = 24 SKILLMOD_TURRET_HEALTH_MUL = 25 SKILLMOD_TURRET_SCANSPEED_MUL = 26 SKILLMOD_TURRET_SCANANGLE_MUL = 27 SKILLMOD_BLOODARMOR = 28 SKILLMOD_MELEE_KNOCKBACK_MUL = 29 SKILLMOD_SELF_DAMAGE_MUL = 30 SKILLMOD_AIMSPREAD_MUL = 31 SKILLMOD_POINTS = 32 SKILLMOD_POINT_MULTIPLIER = 33 SKILLMOD_FALLDAMAGE_DAMAGE_MUL = 34 SKILLMOD_MANHACK_HEALTH_MUL = 35 SKILLMOD_DEPLOYABLE_HEALTH_MUL = 36 SKILLMOD_DEPLOYABLE_PACKTIME_MUL = 37 SKILLMOD_DRONE_SPEED_MUL = 38 SKILLMOD_DRONE_CARRYMASS_MUL = 39 SKILLMOD_MEDGUN_FIRE_DELAY_MUL = 40 SKILLMOD_RESUPPLY_DELAY_MUL = 41 SKILLMOD_FIELD_RANGE_MUL = 42 SKILLMOD_FIELD_DELAY_MUL = 43 SKILLMOD_DRONE_GUN_RANGE_MUL = 44 SKILLMOD_HEALING_RECEIVED = 45 SKILLMOD_RELOADSPEED_PISTOL_MUL = 46 SKILLMOD_RELOADSPEED_SMG_MUL = 47 SKILLMOD_RELOADSPEED_ASSAULT_MUL = 48 SKILLMOD_RELOADSPEED_SHELL_MUL = 49 SKILLMOD_RELOADSPEED_RIFLE_MUL = 50 SKILLMOD_RELOADSPEED_XBOW_MUL = 51 SKILLMOD_RELOADSPEED_PULSE_MUL = 52 SKILLMOD_RELOADSPEED_EXP_MUL = 53 SKILLMOD_MELEE_ATTACKER_DMG_REFLECT = 54 SKILLMOD_PULSE_WEAPON_SLOW_MUL = 55 SKILLMOD_MELEE_DAMAGE_TAKEN_MUL = 56 SKILLMOD_POISON_DAMAGE_TAKEN_MUL = 57 SKILLMOD_BLEED_DAMAGE_TAKEN_MUL = 58 SKILLMOD_MELEE_SWING_DELAY_MUL = 59 SKILLMOD_MELEE_DAMAGE_TO_BLOODARMOR_MUL = 60 SKILLMOD_MELEE_MOVEMENTSPEED_ON_KILL = 61 SKILLMOD_MELEE_POWERATTACK_MUL = 62 SKILLMOD_KNOCKDOWN_RECOVERY_MUL = 63 SKILLMOD_MELEE_RANGE_MUL = 64 SKILLMOD_SLOW_EFF_TAKEN_MUL = 65 SKILLMOD_EXP_DAMAGE_TAKEN_MUL = 66 SKILLMOD_FIRE_DAMAGE_TAKEN_MUL = 67 SKILLMOD_PROP_CARRY_CAPACITY_MUL = 68 SKILLMOD_PROP_THROW_STRENGTH_MUL = 69 SKILLMOD_PHYSICS_DAMAGE_TAKEN_MUL = 70 SKILLMOD_VISION_ALTER_DURATION_MUL = 71 SKILLMOD_DIMVISION_EFF_MUL = 72 SKILLMOD_PROP_CARRY_SLOW_MUL = 73 SKILLMOD_BLEED_SPEED_MUL = 74 SKILLMOD_MELEE_LEG_DAMAGE_ADD = 75 SKILLMOD_SIGIL_TELEPORT_MUL = 76 SKILLMOD_MELEE_ATTACKER_DMG_REFLECT_PERCENT = 77 SKILLMOD_POISON_SPEED_MUL = 78 SKILLMOD_PROJECTILE_DAMAGE_TAKEN_MUL = 79 SKILLMOD_EXP_DAMAGE_RADIUS = 80 SKILLMOD_MEDGUN_RELOAD_SPEED_MUL = 81 SKILLMOD_WEAPON_WEIGHT_SLOW_MUL = 82 SKILLMOD_FRIGHT_DURATION_MUL = 83 SKILLMOD_IRONSIGHT_EFF_MUL = 84 SKILLMOD_BLOODARMOR_DMG_REDUCTION = 85 SKILLMOD_BLOODARMOR_MUL = 86 SKILLMOD_BLOODARMOR_GAIN_MUL = 87 SKILLMOD_LOW_HEALTH_SLOW_MUL = 88 SKILLMOD_PROJ_SPEED = 89 SKILLMOD_SCRAP_START = 90 SKILLMOD_ENDWAVE_POINTS = 91 SKILLMOD_ARSENAL_DISCOUNT = 92 SKILLMOD_CLOUD_RADIUS = 93 SKILLMOD_CLOUD_TIME = 94 SKILLMOD_PROJECTILE_DAMAGE_MUL = 95 SKILLMOD_EXP_DAMAGE_MUL = 96 SKILLMOD_TURRET_RANGE_MUL = 97 SKILLMOD_AIM_SHAKE_MUL = 98 SKILLMOD_MEDDART_EFFECTIVENESS_MUL = 99 local GOOD = "^"..COLORID_GREEN local BAD = "^"..COLORID_RED -- Health Tree GM:AddSkill(SKILL_STOIC1, "Stoic I", GOOD.."+1 maximum health\n"..BAD.."-0.75 movement speed", -4, -6, {SKILL_NONE, SKILL_STOIC2}, TREE_HEALTHTREE) GM:AddSkill(SKILL_STOIC2, "Stoic II", GOOD.."+2 maximum health\n"..BAD.."-1.5 movement speed", -4, -4, {SKILL_STOIC3, SKILL_VITALITY1, SKILL_REGENERATOR}, TREE_HEALTHTREE) GM:AddSkill(SKILL_STOIC3, "Stoic III", GOOD.."+4 maximum health\n"..BAD.."-3 movement speed", -3, -2, {SKILL_STOIC4}, TREE_HEALTHTREE) GM:AddSkill(SKILL_STOIC4, "Stoic IV", GOOD.."+6 maximum health\n"..BAD.."-4.5 movement speed", -3, 0, {SKILL_STOIC5}, TREE_HEALTHTREE) GM:AddSkill(SKILL_STOIC5, "Stoic V", GOOD.."+7 maximum health\n"..BAD.."-5.25 movement speed", -3, 2, {SKILL_BLOODARMOR, SKILL_TANKER}, TREE_HEALTHTREE) GM:AddSkill(SKILL_D_HEMOPHILIA, "Debuff: Hemophilia", GOOD.."+10 starting Worth\n"..GOOD.."+3 starting scrap\n"..BAD.."Bleed for 25% extra damage when hit", 4, 2, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_GLUTTON, "Glutton", GOOD.."Gain up to 30 blood armor when you eat food\n"..GOOD.."Blood armor gained can exceed the cap by 40\n"..BAD.."-5 maximum health\n"..BAD.."No longer receive health from eating food", 3, -2, {SKILL_GOURMET, SKILL_BLOODARMOR}, TREE_HEALTHTREE) GM:AddSkill(SKILL_PREPAREDNESS, "Preparedness", GOOD.."Your starting item can be a random food item", 4, -6, {SKILL_NONE}, TREE_HEALTHTREE) GM:AddSkill(SKILL_GOURMET, "Gourmet", GOOD.."+100% recovery from food\n"..BAD.."+200% time to eat food", 4, -4, {SKILL_PREPAREDNESS, SKILL_VITALITY1}, TREE_HEALTHTREE) GM:AddSkill(SKILL_HAEMOSTASIS, "Haemostasis", GOOD.."Resist status effects while you have at least 2 blood armor\n"..BAD.."Lose 2 blood armor on resist\n"..BAD.."-25% blood armor damage absorption", 4, 6, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_BLOODLETTER, "Bloodletter", GOOD.."+100% blood armor generated\n"..BAD.."Losing all blood armor inflicts 5 bleed damage", 0, 4, {SKILL_ANTIGEN}, TREE_HEALTHTREE) GM:AddSkill(SKILL_REGENERATOR, "Regenerator", GOOD.."Regenerate 1 health every 6s when below 60% health\n"..BAD.."-6 maximum health", -5, -2, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_BLOODARMOR, "Blood Armor", GOOD.."Regenerate 1 blood armor every 8 seconds upto your blood armor max\nBase blood armor maximum is 20\nBase blood armor damage absorption is 50%\n"..BAD.."-13 maximum health", 2, 2, {SKILL_IRONBLOOD, SKILL_BLOODLETTER, SKILL_D_HEMOPHILIA}, TREE_HEALTHTREE) GM:AddSkill(SKILL_IRONBLOOD, "Iron Blood", GOOD.."+25% damage reduction from blood armor\n"..GOOD.."Bonus doubled when health is 50% or less\n"..BAD.."-50% maximum blood armor", 2, 4, {SKILL_HAEMOSTASIS, SKILL_CIRCULATION}, TREE_HEALTHTREE) GM:AddSkill(SKILL_D_WEAKNESS, "Debuff: Weakness", GOOD.."+15 starting Worth\n"..GOOD.."+1 end of wave points\n"..BAD.."-45 maximum health", 1, -1, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_VITALITY1, "Vitality I", GOOD.."+1 maximum health", 0, -4, {SKILL_VITALITY2}, TREE_HEALTHTREE) GM:AddSkill(SKILL_VITALITY2, "Vitality II", GOOD.."+1 maximum health", 0, -2, {SKILL_VITALITY3}, TREE_HEALTHTREE) GM:AddSkill(SKILL_VITALITY3, "Vitality III", GOOD.."+1 maximum health", 0, -0, {SKILL_D_WEAKNESS}, TREE_HEALTHTREE) GM:AddSkill(SKILL_TANKER, "Tanker", GOOD.."+20 maximum health\n"..BAD.."-15 movement speed", -5, 4, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_FORAGER, "Forager", GOOD.."25% chance to collect food from resupply boxes\n"..BAD.."+20% resupply box delay", 5, -2, {SKILL_GOURMET}, TREE_HEALTHTREE) GM:AddSkill(SKILL_SUGARRUSH, "Sugar Rush", GOOD.."+35 speed boost from food for 14 seconds\n"..BAD.."-35% recovery from food\n", 4, 0, {SKILL_GOURMET}, TREE_HEALTHTREE) GM:AddSkill(SKILL_CIRCULATION, "Circulation", GOOD.."+1 maximum blood armor", 4, 4, {SKILL_SANGUINE}, TREE_HEALTHTREE) GM:AddSkill(SKILL_SANGUINE, "Sanguine", GOOD.."+11 maximum blood armor\n"..BAD.."-9 maximum health", 6, 2, {}, TREE_HEALTHTREE) GM:AddSkill(SKILL_ANTIGEN, "Antigen", GOOD.."+5% blood armor damage absorption\n"..BAD.."-3 maximum health", -2, 4, {}, TREE_HEALTHTREE) -- Speed Tree GM:AddSkill(SKILL_SPEED1, "Speed I", GOOD.."+0.75 movement speed\n"..BAD.."-1 maximum health", -4, 6, {SKILL_NONE, SKILL_SPEED2}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SPEED2, "Speed II", GOOD.."+1.5 movement speed\n"..BAD.."-2 maximum health", -4, 4, {SKILL_SPEED3, SKILL_PHASER, SKILL_SPEED2, SKILL_U_CORRUPTEDFRAGMENT}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SPEED3, "Speed III", GOOD.."+3 movement speed\n"..BAD.."-4 maximum health", -4, 2, {SKILL_SPEED4}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SPEED4, "Speed IV", GOOD.."+4.5 movement speed\n"..BAD.."-6 maximum health", -4, 0, {SKILL_SPEED5, SKILL_SAFEFALL}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SPEED5, "Speed V", GOOD.."+5.25 movement speed\n"..BAD.."-7 maximum health", -4, -2, {SKILL_ULTRANIMBLE, SKILL_BACKPEDDLER, SKILL_MOTIONI, SKILL_CARDIOTONIC, SKILL_UNBOUND}, TREE_SPEEDTREE) GM:AddSkill(SKILL_AGILEI, "Agile I", GOOD.."+4% jumping power\n"..BAD.."-2 movement speed", 4, 6, {SKILL_NONE, SKILL_AGILEII}, TREE_SPEEDTREE) GM:AddSkill(SKILL_AGILEII, "Agile II", GOOD.."+5% jumping power\n"..BAD.."-3 movement speed", 4, 2, {SKILL_AGILEIII, SKILL_WORTHINESS3}, TREE_SPEEDTREE) GM:AddSkill(SKILL_AGILEIII, "Agile III", GOOD.."+6% jumping power\n"..BAD.."-4 movement speed", 4, -2, {SKILL_SAFEFALL, SKILL_ULTRANIMBLE, SKILL_SURESTEP, SKILL_INTREPID}, TREE_SPEEDTREE) GM:AddSkill(SKILL_D_SLOW, "Debuff: Slow", GOOD.."+15 starting Worth\n"..GOOD.."+1 end of wave points\n"..BAD.."-33.75 movement speed", 0, -4, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_MOTIONI, "Motion I", GOOD.."+0.75 movement speed", -2, -2, {SKILL_MOTIONII}, TREE_SPEEDTREE) GM:AddSkill(SKILL_MOTIONII, "Motion II", GOOD.."+0.75 movement speed", -1, -1, {SKILL_MOTIONIII}, TREE_SPEEDTREE) GM:AddSkill(SKILL_MOTIONIII, "Motion III", GOOD.."+0.75 movement speed", 0, -2, {SKILL_D_SLOW}, TREE_SPEEDTREE) GM:AddSkill(SKILL_BACKPEDDLER, "Backpeddler", GOOD.."Move the same speed in all directions\n"..BAD.."-7 movement speed\n"..BAD.."Receive leg damage on any melee hit", -6, 0, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_PHASER, "Phaser", GOOD.."+15% barricade phasing movement speed\n"..BAD.."+15% sigil teleportation time", -1, 4, {SKILL_D_WIDELOAD, SKILL_DRIFT}, TREE_SPEEDTREE) GM:AddSkill(SKILL_DRIFT, "Drift", GOOD.."+5% barricade phasing movement speed", 1, 3, {SKILL_WARP}, TREE_SPEEDTREE) GM:AddSkill(SKILL_WARP, "Warp", GOOD.."-5% sigil teleportation time", 2, 2, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SAFEFALL, "Safe Fall", GOOD.."-40% fall damage taken\n"..GOOD.."+50% faster fall damage knockdown recovery\n"..BAD.."+40% slow down from landing or fall damage", 0, 0, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_D_WIDELOAD, "Debuff: Wide Load", GOOD.."+20 starting Worth\n"..GOOD.."-5% resupply delay\n"..BAD.."Phasing speed limited to 1 for the first 6 seconds of phasing", 1, 1, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_U_CORRUPTEDFRAGMENT, "Unlock: Corrupted Fragment", GOOD.."Unlocks purchasing the Corrupted Fragment\nGoes to corrupted sigils instead", -2, 2, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_ULTRANIMBLE, "Ultra Nimble", GOOD.."+15 movement speed\n"..BAD.."-20 maximum health", 0, -6, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_WORTHINESS3, "Worthiness III", GOOD.."+5 starting worth\n"..BAD.."-3 starting points", 6, 2, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_SURESTEP, "Sure Step", GOOD.."-30% effectiveness of slows\n"..BAD.."-4 movement speed", 6, 0, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_INTREPID, "Intrepid", GOOD.."-35% low health slow intensity\n"..BAD.."-4 movement speed", 6, -4, {SKILL_ROBUST}, TREE_SPEEDTREE) GM:AddSkill(SKILL_ROBUST, "Robust", GOOD.."-6% movement speed reduction with heavy weapons", 5, -5, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_CARDIOTONIC, "Cardiotonic", GOOD.."Hold shift to run whilst draining blood armor\n"..BAD.."-12 movement speed\n"..BAD.."-20% blood armor damage absorption\nSprinting grants +40 move speed", -6, -4, {}, TREE_SPEEDTREE) GM:AddSkill(SKILL_UNBOUND, "Unbound", GOOD.."-60% reduced delay from switching weapons affecting movement speed\n"..BAD.."-4 movement speed", -4, -4, {}, TREE_SPEEDTREE) -- Medic Tree GM:AddSkill(SKILL_SURGEON1, "Surgeon I", GOOD.."-8% medical kit cooldown", -4, 6, {SKILL_NONE, SKILL_SURGEON2}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_SURGEON2, "Surgeon II", GOOD.."-9% medical kit cooldown", -3, 3, {SKILL_WORTHINESS4, SKILL_SURGEON3}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_SURGEON3, "Surgeon III", GOOD.."-10% medical kit cooldown", -2, 0, {SKILL_U_MEDICCLOUD, SKILL_D_FRAIL, SKILL_SURGEONIV}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_SURGEONIV, "Surgeon IV", GOOD.."-11% medical kit cooldown", -2, -3, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_BIOLOGYI, "Biology I", GOOD.."+8% medic tool effectiveness", 4, 6, {SKILL_NONE, SKILL_BIOLOGYII}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_BIOLOGYII, "Biology II", GOOD.."+9% medic tool effectiveness", 3, 3, {SKILL_BIOLOGYIII, SKILL_SMARTTARGETING}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_BIOLOGYIII, "Biology III", GOOD.."+10% medic tool effectiveness", 2, 0, {SKILL_U_MEDICCLOUD, SKILL_U_ANTITODESHOT, SKILL_BIOLOGYIV}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_BIOLOGYIV, "Biology IV", GOOD.."+11% medic tool effectiveness", 2, -3, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_D_FRAIL, "Debuff: Frail", GOOD.."+20 starting Worth\n"..GOOD.."+5 starting points\n"..BAD.."Cannot be healed above 25% health", -4, -2, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_U_MEDICCLOUD, "Unlock: Medic Cloud Bomb", GOOD.."Unlocks purchasing the Medic Cloud Bomb\nSlowly heals all humans inside the cloud", 0, -2, {SKILL_DISPERSION}, TREE_SUPPORTTREE) .AlwaysActive = true GM:AddSkill(SKILL_SMARTTARGETING, "Smart Targeting", GOOD.."Medical weapon darts lock onto targets with right click\n"..BAD.."+75% medic tool fire delay\n"..BAD.."-30% healing effectiveness on medical darts", 0, 2, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_RECLAIMSOL, "Recoverable Solution", GOOD.."60% of wasted medical dart ammo is returned to you\n"..BAD.."+150% medic tool fire delay\n"..BAD.."-40% medic tool reload speed\n"..BAD.."Cannot speed boost full health players", 0, 4, {SKILL_SMARTTARGETING}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_U_STRENGTHSHOT, "Unlock: Strength Shot Gun", GOOD.."Unlocks purchasing the Strength Shot Gun\nTarget damage +25% for 10 seconds\nExtra damage is given to you as points\nTarget is not healed", 0, 0, {SKILL_SMARTTARGETING}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_WORTHINESS4, "Worthiness IV", GOOD.."+5 starting worth\n"..BAD.."-3 starting points", -5, 2, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_U_ANTITODESHOT, "Unlock: Antidote Handgun", GOOD.."Unlocks purchasing the Antidote Handgun\nFires piercing blasts that heal poison greatly\nCleanses statuses from targets with a small point gain\nDoes not heal health", 4, -2, {}, TREE_SUPPORTTREE) GM:AddSkill(SKILL_DISPERSION, "Dispersion", GOOD.."+15% cloud bomb radius\n"..BAD.."-10% cloud bomb time", 0, -4, {}, TREE_SUPPORTTREE) -- Defence Tree GM:AddSkill(SKILL_HANDY1, "Handy I", GOOD.."+4% repair rate", -5, -6, {SKILL_NONE, SKILL_HANDY2}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HANDY2, "Handy II", GOOD.."+5% repair rate", -5, -4, {SKILL_HANDY3, SKILL_U_BLASTTURRET, SKILL_LOADEDHULL}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HANDY3, "Handy III", GOOD.."+6% repair rate", -5, -1, {SKILL_TAUT, SKILL_HAMMERDISCIPLINE, SKILL_D_NOODLEARMS, SKILL_HANDY4}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HANDY4, "Handy IV", GOOD.."+7% repair rate", -3, 1, {SKILL_HANDY5}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HANDY5, "Handy V", GOOD.."+8% repair rate", -3, 3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HAMMERDISCIPLINE, "Hammer Discipline", GOOD.."-20% swing delay with the Carpenter Hammer", 0, 1, {SKILL_BARRICADEEXPERT}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_BARRICADEEXPERT, "Reinforcer", GOOD.."Props hit with a hammer in the last 2 seconds take 8% less damage\n"..GOOD.."Gain points from protected props\n"..BAD.."+30% swing delay with the Carpenter Hammer", 0, 3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_LOADEDHULL, "Loaded Hull", GOOD.."Controllables explode when destroyed, dealing explosive damage\n"..BAD.."-10% Controllable health", -2, -4, {SKILL_REINFORCEDHULL, SKILL_REINFORCEDBLADES, SKILL_AVIATOR}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_REINFORCEDHULL, "Reinforced Hull", GOOD.."+25% Controllable health\n"..BAD.."-20% Controllable handling\n"..BAD.."-20% Controllable speed", -2, -2, {SKILL_STABLEHULL}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_STABLEHULL, "Stable Hull", GOOD.."Controllables are immune to high speed impacts\n"..BAD.."-20% Controllable speed", 0, -3, {SKILL_U_DRONE}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_REINFORCEDBLADES, "Reinforced Blades", GOOD.."+25% Manhack damage\n"..BAD.."-15% Manhack health", 0, -5, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_AVIATOR, "Aviator", GOOD.."+40% Controllable speed and handling\n"..BAD.."-25% Controllable health", -4, -2, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_U_BLASTTURRET, "Unlock: Blast Turret", GOOD.."Unlocks purchasing the Blast Turret\nFires buckshot instead of SMG ammo\nDamage is higher close up\nCannot scan for targets far away", -8, -4, {SKILL_TURRETLOCK, SKILL_TWINVOLLEY, SKILL_TURRETOVERLOAD}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_TURRETLOCK, "Turret Lock", "-90% turret scan angle\n"..BAD.."-90% turret target lock angle", -6, -2, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_TWINVOLLEY, "Twin Volley", GOOD.."Fire twice as many bullets in manual turret mode\n"..BAD.."+100% turret ammo usage in manual turret mode\n"..BAD.."+50% turret fire delay in manual turret mode", -10, -5, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_TURRETOVERLOAD, "Turret Overload", GOOD.." +100% Turret scan speed\n"..BAD.."-30% Turret range", -8, -2, {SKILL_INSTRUMENTS}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_U_DRONE, "Unlock: Pulse Drone", GOOD.."Unlocks the Pulse Drone Variant\nFires short range pulse projectiles instead of bullets", 2, -3, {SKILL_HAULMODULE, SKILL_U_ROLLERMINE}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_U_NANITECLOUD, "Unlock: Nanite Cloud Bomb", GOOD.."Unlocks purchasing the Nanite Cloud Bomb\nSlowly repairs all props and deployables inside the cloud", 3, 1, {SKILL_HAMMERDISCIPLINE}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_FIELDAMP, "Field Amplifier", GOOD.."-20% zapper and repair field delay\n"..BAD.."-40% zapper and repair field range", 6, 4, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_TECHNICIAN, "Field Technician", GOOD.." +3% zapper and repair field range\n"..GOOD.."-3% zapper and repair field delay", 4, 3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_U_ROLLERMINE, "Unlock: Rollermine", GOOD.."Unlocks purchasing Rollermines\nRolls along the ground, shocking zombies and dealing damage", 3, -5, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_HAULMODULE, "Unlock: Hauling Drone", GOOD.."Unlocks the Hauling Drone\nRapidly transports props and items but cannot attack", 2, -1, {SKILL_U_NANITECLOUD}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_LIGHTCONSTRUCT, "Light Construction", GOOD.."-25% deployable pack time\n"..BAD.."-25% deployable health", 8, -1, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_STOCKPILE, "Stockpiling", GOOD.."Collect twice as much from resupplies\n"..BAD.."2.12x resupply box delay", 8, -3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_ACUITY, "Supplier's Acuity", GOOD.."Locate nearby resupply boxes if behind walls\n"..GOOD.."Locate nearby unplaced resupply boxes on players through walls\n"..GOOD.."Locate nearby resupply packs through walls", 6, -3, {SKILL_INSIGHT, SKILL_STOCKPILE, SKILL_U_CRAFTINGPACK, SKILL_STOWAGE}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_VISION, "Refiner's Vision", GOOD.."Locate nearby remantlers if behind walls\n"..GOOD.."Locate nearby unplaced remantlers on players through walls", 6, -6, {SKILL_NONE, SKILL_ACUITY}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_U_ROCKETTURRET, "Unlock: Rocket Turret", GOOD.."Unlocks purchasing the Rocket Turret\nFires explosives instead of SMG ammo\nDeals damage in a radius\nHigh tier deployable", -8, -0, {SKILL_TURRETOVERLOAD}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_INSIGHT, "Buyer's Insight", GOOD.."Locate nearby arsenal crates if behind walls\n"..GOOD.."Locate nearby unplaced arsenal crates on players through walls\n"..GOOD.."Locate nearby arsenal packs through walls", 6, -0, {SKILL_U_NANITECLOUD, SKILL_U_ZAPPER_ARC, SKILL_LIGHTCONSTRUCT, SKILL_D_LATEBUYER}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_U_ZAPPER_ARC, "Unlock: Arc Zapper", GOOD.."Unlocks purchasing the Arc Zapper\nZaps zombies that get nearby, and jumps in an arc\nMid tier deployable and long cooldown\nRequires a steady upkeep of pulse ammo", 6, 2, {SKILL_FIELDAMP, SKILL_TECHNICIAN}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_D_LATEBUYER, "Debuff: Late Buyer", GOOD.."+20 starting Worth\n"..GOOD.."2% arsenal discount\n"..BAD.."Unable to use points at arsenal crates until the second half of the round", 8, 1, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_U_CRAFTINGPACK, "Unlock: Crafting Pack", GOOD.."Unlocks purchasing the Sawblade component\n"..GOOD.."Unlocks purchasing the Electrobattery component\n"..GOOD.."Unlocks purchasing the CPU Parts component", 4, -1, {}, TREE_BUILDINGTREE) .AlwaysActive = true GM:AddSkill(SKILL_TAUT, "Taut", GOOD.."Damage does not make you drop props\n"..BAD.."+40% prop carrying slow down", -5, 3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_D_NOODLEARMS, "Debuff: Noodle Arms", GOOD.."+5 starting Worth\n"..GOOD.."+1 starting scrap\n"..BAD.."Unable to pick up objects", -7, 2, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_INSTRUMENTS, "Instruments", GOOD.."+5% turret range", -10, -3, {}, TREE_BUILDINGTREE) GM:AddSkill(SKILL_STOWAGE, "Stowage", GOOD.."Resupply usages build up when you're not there\n"..BAD.."+15% resupply delay", 4, -3, {}, TREE_BUILDINGTREE) -- Gunnery Tree GM:AddSkill(SKILL_TRIGGER_DISCIPLINE1, "Trigger Discipline I", GOOD.."+2% weapon reload speed\n"..GOOD.."+2% weapon draw speed", -5, 6, {SKILL_TRIGGER_DISCIPLINE2, SKILL_NONE}, TREE_GUNTREE) GM:AddSkill(SKILL_TRIGGER_DISCIPLINE2, "Trigger Discipline II", GOOD.."+3% weapon reload speed\n"..GOOD.."+3% weapon draw speed", -4, 3, {SKILL_TRIGGER_DISCIPLINE3, SKILL_D_PALSY, SKILL_EQUIPPED}, TREE_GUNTREE) GM:AddSkill(SKILL_TRIGGER_DISCIPLINE3, "Trigger Discipline III", GOOD.."+4% weapon reload speed\n"..GOOD.."+4% weapon draw speed", -3, 0, {SKILL_QUICKRELOAD, SKILL_QUICKDRAW, SKILL_WORTHINESS1, SKILL_EGOCENTRIC}, TREE_GUNTREE) GM:AddSkill(SKILL_D_PALSY, "Debuff: Palsy", GOOD.."+10 starting Worth\n"..GOOD.."-3% resupply delay\n"..BAD.."Aiming ability reduced when health is low", 0, 4, {SKILL_LEVELHEADED}, TREE_GUNTREE) GM:AddSkill(SKILL_LEVELHEADED, "Level Headed", GOOD.."-5% reduced effect of aim shake effects", -2, 2, {}, TREE_GUNTREE) GM:AddSkill(SKILL_QUICKDRAW, "Quick Draw", GOOD.."+65% weapon draw speed\n"..BAD.."-15% weapon reload speed", 0, 1, {}, TREE_GUNTREE) GM:AddSkill(SKILL_FOCUS, "Focus I", GOOD.."+3% tighter aiming reticule\n"..BAD.."-3% weapon reload speed", 5, 6, {SKILL_NONE, SKILL_FOCUSII}, TREE_GUNTREE) GM:AddSkill(SKILL_FOCUSII, "Focus II", GOOD.."+4% tighter aiming reticule\n"..BAD.."-4% weapon reload speed", 4, 3, {SKILL_FOCUSIII, SKILL_SCAVENGER, SKILL_D_PALSY, SKILL_PITCHER}, TREE_GUNTREE) GM:AddSkill(SKILL_FOCUSIII, "Focus III", GOOD.."+5% tighter aiming reticule\n"..BAD.."-5% weapon reload speed", 3, 0, {SKILL_EGOCENTRIC, SKILL_WOOISM, SKILL_ORPHICFOCUS, SKILL_SCOURER}, TREE_GUNTREE) GM:AddSkill(SKILL_QUICKRELOAD, "Quick Reload", GOOD.."+10% weapon reload speed\n"..BAD.."-25% weapon draw speed", -5, 1, {SKILL_SLEIGHTOFHAND}, TREE_GUNTREE) GM:AddSkill(SKILL_SLEIGHTOFHAND, "Sleight of Hand", GOOD.."+10% weapon reload speed\n"..BAD.."-5% tighter aiming reticule", -5, -1, {}, TREE_GUNTREE) GM:AddSkill(SKILL_U_CRYGASGREN, "Unlock: Cryo Gas Grenade", GOOD.."Unlocks purchasing the Cryo Gas Grenade\nVariant of the Corrosive Gas Grenade\nCryo gas deals a bit of damage over time\nZombies are slowed in the effect", 2, -3, {SKILL_EGOCENTRIC}, TREE_GUNTREE) GM:AddSkill(SKILL_SOFTDET, "Soft Detonation", GOOD.."-40% explosive damage taken\n"..BAD.."-10% explosive damage radius", 0, -5, {}, TREE_GUNTREE) GM:AddSkill(SKILL_ORPHICFOCUS, "Orphic Focus", GOOD.."90% spread while ironsighting\n"..GOOD.."+2% tighter aiming reticule\n"..BAD.."110% spread at any other time\n"..BAD.."-6% reload speed", 5, -1, {SKILL_DELIBRATION}, TREE_GUNTREE) GM:AddSkill(SKILL_DELIBRATION, "Delibration", GOOD.."+1% tighter aiming reticule", 6, -3, {}, TREE_GUNTREE) GM:AddSkill(SKILL_EGOCENTRIC, "Egocentric", GOOD.."-35% damage vs. yourself\n"..BAD.."-5 health", 0, -1, {SKILL_BLASTPROOF}, TREE_GUNTREE) GM:AddSkill(SKILL_BLASTPROOF, "Blast Proof", GOOD.."-45% damage vs. yourself\n"..BAD.."-7% reload speed\n"..BAD.."-12% weapon draw speed", 0, -3, {SKILL_SOFTDET, SKILL_CANNONBALL, SKILL_CONEFFECT}, TREE_GUNTREE) GM:AddSkill(SKILL_WOOISM, "Zeal", GOOD.."-50% speed reduction from being ironsighted\n"..BAD.."-25% accuracy bonus from ironsighting", 5, 1, {SKILL_TRUEWOOISM}, TREE_GUNTREE) GM:AddSkill(SKILL_SCAVENGER, "Scavenger's Eyes", GOOD.."See nearby weapons, ammo, and items through walls", 7, 4, {}, TREE_GUNTREE) GM:AddSkill(SKILL_PITCHER, "Pitcher", GOOD.."+10% object throw and thrown weapon velocity", 6, 2, {}, TREE_GUNTREE) GM:AddSkill(SKILL_EQUIPPED, "Alacrity", GOOD.."Your starting item can be a random special trinket", -6, 2, {}, TREE_GUNTREE) GM:AddSkill(SKILL_WORTHINESS1, "Worthiness I", GOOD.."+5 starting worth\n"..BAD.."-3 starting points", -4, -3, {}, TREE_GUNTREE) GM:AddSkill(SKILL_CANNONBALL, "Cannonball", "-25% projectile speed\n"..GOOD.."+3% projectile damage", -2, -3, {}, TREE_GUNTREE) GM:AddSkill(SKILL_SCOURER, "Scourer", GOOD.."Earn end of wave points as scrap\n"..BAD.."Earn no end of wave points", 4, -3, {}, TREE_GUNTREE) GM:AddSkill(SKILL_CONEFFECT, "Concentrated Effect", GOOD.."+5% explosive damage\n"..BAD.."-20% explosive damage radius", 2, -5, {}, TREE_GUNTREE) GM:AddSkill(SKILL_TRUEWOOISM, "Wooism", GOOD.."No accuracy penalty from moving or jumping\n"..BAD.."No accuracy bonus from crouching or ironsighting", 7, 0, {}, TREE_GUNTREE) -- Melee Tree GM:AddSkill(SKILL_WORTHINESS2, "Worthiness II", GOOD.."+5 starting worth\n"..BAD.."-3 starting points", 4, 0, {}, TREE_MELEETREE) GM:AddSkill(SKILL_BATTLER1, "Battler I", GOOD.."+4% melee damage", -6, -6, {SKILL_BATTLER2, SKILL_NONE}, TREE_MELEETREE) GM:AddSkill(SKILL_BATTLER2, "Battler II", GOOD.."+5% melee damage", -6, -4, {SKILL_BATTLER3, SKILL_LIGHTWEIGHT}, TREE_MELEETREE) GM:AddSkill(SKILL_BATTLER3, "Battler III", GOOD.."+5% melee damage", -4, -2, {SKILL_BATTLER4, SKILL_LANKY}, TREE_MELEETREE) GM:AddSkill(SKILL_BATTLER4, "Battler IV", GOOD.."+6% melee damage", -2, 0, {SKILL_BATTLER5, SKILL_MASTERCHEF, SKILL_D_CLUMSY}, TREE_MELEETREE) GM:AddSkill(SKILL_BATTLER5, "Battler V", GOOD.."+7% melee damage", 0, 2, {SKILL_GLASSWEAPONS, SKILL_BLOODLUST}, TREE_MELEETREE) GM:AddSkill(SKILL_LASTSTAND, "Last Stand", GOOD.."Double melee damage when below 25% health\n"..BAD.."0.85x melee weapon damage at any other time", 0, 6, {}, TREE_MELEETREE) GM:AddSkill(SKILL_GLASSWEAPONS, "Glass Weapons", GOOD.."3.5x melee weapon damage vs. zombies\n"..BAD.."Your melee weapons have a 50% chance to break when hitting a zombie", 2, 4, {}, TREE_MELEETREE) GM:AddSkill(SKILL_D_CLUMSY, "Debuff: Clumsy", GOOD.."+20 starting Worth\n"..GOOD.."+5 starting points\n"..BAD.."Very easy to be knocked down", -2, 2, {}, TREE_MELEETREE) GM:AddSkill(SKILL_CHEAPKNUCKLE, "Cheap Tactics", GOOD.."Slow targets when striking with a melee weapon from behind\n"..BAD.."-10% melee range", 4, -2, {SKILL_HEAVYSTRIKES, SKILL_WORTHINESS2}, TREE_MELEETREE) GM:AddSkill(SKILL_CRITICALKNUCKLE, "Critical Knuckle", GOOD.."Knockback when using unarmed strikes\n"..BAD.."-25% unarmed strike damage\n"..BAD.."+25% time before next unarmed strike", 6, -2, {SKILL_BRASH}, TREE_MELEETREE) GM:AddSkill(SKILL_KNUCKLEMASTER, "Knuckle Master", GOOD.."+75% unarmed strike damage\n"..GOOD.."Movement speed is no longer slower when using unarmed strikes\n"..BAD.."+35% time before next unarmed strike", 6, -6, {SKILL_NONE, SKILL_COMBOKNUCKLE}, TREE_MELEETREE) GM:AddSkill(SKILL_COMBOKNUCKLE, "Combo Knuckle", GOOD.."Next unarmed strike is 2x faster if hitting something\n"..BAD.."Next unarmed attack is 2x slower if not hitting something", 6, -4, {SKILL_CHEAPKNUCKLE, SKILL_CRITICALKNUCKLE}, TREE_MELEETREE) GM:AddSkill(SKILL_HEAVYSTRIKES, "Heavy Strikes", GOOD.."+100% melee knockback\n"..BAD.."8% of melee damage dealt is reflected back to you\n"..BAD.."100% reflected if using unarmed strikes", 2, 0, {SKILL_BATTLER5, SKILL_JOUSTER}, TREE_MELEETREE) GM:AddSkill(SKILL_JOUSTER, "Jouster", GOOD.."+10% melee damage\n"..BAD.."-100% melee knockback", 2, 2, {}, TREE_MELEETREE) GM:AddSkill(SKILL_LANKY, "Lanky I", GOOD.."+10% melee range\n"..BAD.."-15% melee damage", -4, 0, {SKILL_LANKYII}, TREE_MELEETREE) GM:AddSkill(SKILL_LANKYII, "Lanky II", GOOD.."+10% melee range\n"..BAD.."-15% melee damage", -4, 2, {}, TREE_MELEETREE) GM:AddSkill(SKILL_MASTERCHEF, "Master Chef", GOOD.."Zombies hit by culinary weapons in the past second have a chance to drop food items on death\n"..BAD.."-10% melee damage", 0, -3, {SKILL_BATTLER4}, TREE_MELEETREE) GM:AddSkill(SKILL_LIGHTWEIGHT, "Lightweight", GOOD.."+6 movement speed with a melee weapon equipped\n"..BAD.."-20% melee damage", -6, -2, {}, TREE_MELEETREE) GM:AddSkill(SKILL_BLOODLUST, "Bloodlust", "Gain phantom health equal to half the damage taken from zombies\nLose phantom health equal to any healing received\nPhantom health decreases by 5 per second\n"..GOOD.."Heal 25% of damage done with melee from remaining phantom health\n"..BAD.."-50% healing received", -2, 4, {SKILL_LASTSTAND}, TREE_MELEETREE) GM:AddSkill(SKILL_BRASH, "Brash", GOOD.."-16% melee swing impact delay\n"..BAD.."-15 speed on melee kill for 10 seconds", 6, 0, {}, TREE_MELEETREE) GM:SetSkillModifierFunction(SKILLMOD_SPEED, function(pl, amount) pl.SkillSpeedAdd = amount end) GM:SetSkillModifierFunction(SKILLMOD_MEDKIT_EFFECTIVENESS_MUL, function(pl, amount) pl.MedicHealMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MEDKIT_COOLDOWN_MUL, function(pl, amount) pl.MedicCooldownMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_WORTH, function(pl, amount) pl.ExtraStartingWorth = amount end) GM:SetSkillModifierFunction(SKILLMOD_FALLDAMAGE_THRESHOLD_MUL, function(pl, amount) pl.FallDamageThresholdMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_FALLDAMAGE_SLOWDOWN_MUL, function(pl, amount) pl.FallDamageSlowDownMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_FOODEATTIME_MUL, function(pl, amount) pl.FoodEatTimeMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_JUMPPOWER_MUL, function(pl, amount) pl.JumpPowerMul = math.Clamp(amount + 1.0, 0.0, 10.0) if SERVER then pl:ResetJumpPower() end end) GM:SetSkillModifierFunction(SKILLMOD_DEPLOYSPEED_MUL, function(pl, amount) pl.DeploySpeedMultiplier = math.Clamp(amount + 1.0, 0.05, 100.0) for _, wep in pairs(pl:GetWeapons()) do GAMEMODE:DoChangeDeploySpeed(wep) end end) GM:SetSkillModifierFunction(SKILLMOD_BLOODARMOR, function(pl, amount) local oldarmor = pl:GetBloodArmor() local oldcap = pl.MaxBloodArmor or 20 local new = 20 + math.Clamp(amount, -20, 1000) pl.MaxBloodArmor = new if SERVER then if oldarmor > oldcap then local overcap = oldarmor - oldcap pl:SetBloodArmor(pl.MaxBloodArmor + overcap) else pl:SetBloodArmor(pl:GetBloodArmor() / oldcap * new) end end end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_MUL, function(pl, amount) pl.ReloadSpeedMultiplier = math.Clamp(amount + 1.0, 0.05, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_DAMAGE_MUL, function(pl, amount) pl.MeleeDamageMultiplier = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_SELF_DAMAGE_MUL, function(pl, amount) pl.SelfDamageMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_KNOCKBACK_MUL, function(pl, amount) pl.MeleeKnockbackMultiplier = math.Clamp(amount + 1.0, 0.0, 10000.0) end) GM:SetSkillModifierFunction(SKILLMOD_UNARMED_DAMAGE_MUL, function(pl, amount) pl.UnarmedDamageMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_UNARMED_SWING_DELAY_MUL, function(pl, amount) pl.UnarmedDelayMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_BARRICADE_PHASE_SPEED_MUL, function(pl, amount) pl.BarricadePhaseSpeedMul = math.Clamp(amount + 1.0, 0.05, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_HAMMER_SWING_DELAY_MUL, function(pl, amount) pl.HammerSwingDelayMul = math.Clamp(amount + 1.0, 0.01, 1.0) end) GM:SetSkillModifierFunction(SKILLMOD_REPAIRRATE_MUL, function(pl, amount) pl.RepairRateMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_AIMSPREAD_MUL, function(pl, amount) pl.AimSpreadMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MEDGUN_FIRE_DELAY_MUL, function(pl, amount) pl.MedgunFireDelayMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_MEDGUN_RELOAD_SPEED_MUL, function(pl, amount) pl.MedgunReloadSpeedMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_DRONE_GUN_RANGE_MUL, function(pl, amount) pl.DroneGunRangeMul = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_HEALING_RECEIVED, function(pl, amount) pl.HealingReceived = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_PISTOL_MUL, function(pl, amount) pl.ReloadSpeedMultiplierPISTOL = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_SMG_MUL, function(pl, amount) pl.ReloadSpeedMultiplierSMG1 = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_ASSAULT_MUL, function(pl, amount) pl.ReloadSpeedMultiplierAR2 = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_SHELL_MUL, function(pl, amount) pl.ReloadSpeedMultiplierBUCKSHOT = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_RIFLE_MUL, function(pl, amount) pl.ReloadSpeedMultiplier357 = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_XBOW_MUL, function(pl, amount) pl.ReloadSpeedMultiplierXBOWBOLT = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_PULSE_MUL, function(pl, amount) pl.ReloadSpeedMultiplierPULSE = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_RELOADSPEED_EXP_MUL, function(pl, amount) pl.ReloadSpeedMultiplierIMPACTMINE = math.Clamp(amount + 1.0, 0.0, 100.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_ATTACKER_DMG_REFLECT, function(pl, amount) pl.BarbedArmor = math.Clamp(amount, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PULSE_WEAPON_SLOW_MUL, function(pl, amount) pl.PulseWeaponSlowMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_DAMAGE_TAKEN_MUL, function(pl, amount) pl.MeleeDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_POISON_DAMAGE_TAKEN_MUL, function(pl, amount) pl.PoisonDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_BLEED_DAMAGE_TAKEN_MUL, function(pl, amount) pl.BleedDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_SWING_DELAY_MUL, function(pl, amount) pl.MeleeSwingDelayMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_DAMAGE_TO_BLOODARMOR_MUL, function(pl, amount) pl.MeleeDamageToBloodArmorMul = math.Clamp(amount, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_MOVEMENTSPEED_ON_KILL, function(pl, amount) pl.MeleeMovementSpeedOnKill = math.Clamp(amount, -15, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_POWERATTACK_MUL, function(pl, amount) pl.MeleePowerAttackMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_KNOCKDOWN_RECOVERY_MUL, function(pl, amount) pl.KnockdownRecoveryMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_RANGE_MUL, function(pl, amount) pl.MeleeRangeMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_SLOW_EFF_TAKEN_MUL, function(pl, amount) pl.SlowEffTakenMul = math.Clamp(amount + 1.0, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_EXP_DAMAGE_TAKEN_MUL, function(pl, amount) pl.ExplosiveDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_FIRE_DAMAGE_TAKEN_MUL, function(pl, amount) pl.FireDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PROP_CARRY_CAPACITY_MUL, function(pl, amount) pl.PropCarryCapacityMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PROP_THROW_STRENGTH_MUL, function(pl, amount) pl.ObjectThrowStrengthMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PHYSICS_DAMAGE_TAKEN_MUL, function(pl, amount) pl.PhysicsDamageTakenMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_VISION_ALTER_DURATION_MUL, function(pl, amount) pl.VisionAlterDurationMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_DIMVISION_EFF_MUL, function(pl, amount) pl.DimVisionEffMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PROP_CARRY_SLOW_MUL, function(pl, amount) pl.PropCarrySlowMul = math.Clamp(amount + 1.0, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_BLEED_SPEED_MUL, function(pl, amount) pl.BleedSpeedMul = math.Clamp(amount + 1.0, 0.1, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_LEG_DAMAGE_ADD, function(pl, amount) pl.MeleeLegDamageAdd = math.Clamp(amount, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_SIGIL_TELEPORT_MUL, function(pl, amount) pl.SigilTeleportTimeMul = math.Clamp(amount + 1.0, 0.1, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_MELEE_ATTACKER_DMG_REFLECT_PERCENT, function(pl, amount) pl.BarbedArmorPercent = math.Clamp(amount, 0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_POISON_SPEED_MUL, function(pl, amount) pl.PoisonSpeedMul = math.Clamp(amount + 1.0, 0.1, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_PROJECTILE_DAMAGE_TAKEN_MUL, GM:MkGenericMod("ProjDamageTakenMul")) GM:SetSkillModifierFunction(SKILLMOD_EXP_DAMAGE_RADIUS, GM:MkGenericMod("ExpDamageRadiusMul")) GM:SetSkillModifierFunction(SKILLMOD_WEAPON_WEIGHT_SLOW_MUL, GM:MkGenericMod("WeaponWeightSlowMul")) GM:SetSkillModifierFunction(SKILLMOD_FRIGHT_DURATION_MUL, GM:MkGenericMod("FrightDurationMul")) GM:SetSkillModifierFunction(SKILLMOD_IRONSIGHT_EFF_MUL, GM:MkGenericMod("IronsightEffMul")) GM:SetSkillModifierFunction(SKILLMOD_MEDDART_EFFECTIVENESS_MUL, GM:MkGenericMod("MedDartEffMul")) GM:SetSkillModifierFunction(SKILLMOD_BLOODARMOR_DMG_REDUCTION, function(pl, amount) pl.BloodArmorDamageReductionAdd = amount end) GM:SetSkillModifierFunction(SKILLMOD_BLOODARMOR_MUL, function(pl, amount) local mul = math.Clamp(amount + 1.0, 0.0, 1000.0) pl.MaxBloodArmorMul = mul local oldarmor = pl:GetBloodArmor() local oldcap = pl.MaxBloodArmor or 20 local new = pl.MaxBloodArmor * mul pl.MaxBloodArmor = new if SERVER then if oldarmor > oldcap then local overcap = oldarmor - oldcap pl:SetBloodArmor(pl.MaxBloodArmor + overcap) else pl:SetBloodArmor(pl:GetBloodArmor() / oldcap * new) end end end) GM:SetSkillModifierFunction(SKILLMOD_BLOODARMOR_GAIN_MUL, GM:MkGenericMod("BloodarmorGainMul")) GM:SetSkillModifierFunction(SKILLMOD_LOW_HEALTH_SLOW_MUL, GM:MkGenericMod("LowHealthSlowMul")) GM:SetSkillModifierFunction(SKILLMOD_PROJ_SPEED, GM:MkGenericMod("ProjectileSpeedMul")) GM:SetSkillModifierFunction(SKILLMOD_ENDWAVE_POINTS, function(pl,amount) pl.EndWavePointsExtra = math.Clamp(amount, 0.0, 1000.0) end) GM:SetSkillModifierFunction(SKILLMOD_ARSENAL_DISCOUNT, GM:MkGenericMod("ArsenalDiscount")) GM:SetSkillModifierFunction(SKILLMOD_CLOUD_RADIUS, GM:MkGenericMod("CloudRadius")) GM:SetSkillModifierFunction(SKILLMOD_CLOUD_TIME, GM:MkGenericMod("CloudTime")) GM:SetSkillModifierFunction(SKILLMOD_EXP_DAMAGE_MUL, GM:MkGenericMod("ExplosiveDamageMul")) GM:SetSkillModifierFunction(SKILLMOD_PROJECTILE_DAMAGE_MUL, GM:MkGenericMod("ProjectileDamageMul")) GM:SetSkillModifierFunction(SKILLMOD_TURRET_RANGE_MUL, GM:MkGenericMod("TurretRangeMul")) GM:SetSkillModifierFunction(SKILLMOD_AIM_SHAKE_MUL, GM:MkGenericMod("AimShakeMul")) GM:AddSkillModifier(SKILL_SPEED1, SKILLMOD_SPEED, 0.75) GM:AddSkillModifier(SKILL_SPEED1, SKILLMOD_HEALTH, -1) GM:AddSkillModifier(SKILL_SPEED2, SKILLMOD_SPEED, 1.5) GM:AddSkillModifier(SKILL_SPEED2, SKILLMOD_HEALTH, -2) GM:AddSkillModifier(SKILL_SPEED3, SKILLMOD_SPEED, 3) GM:AddSkillModifier(SKILL_SPEED3, SKILLMOD_HEALTH, -4) GM:AddSkillModifier(SKILL_SPEED4, SKILLMOD_SPEED, 4.5) GM:AddSkillModifier(SKILL_SPEED4, SKILLMOD_HEALTH, -6) GM:AddSkillModifier(SKILL_SPEED5, SKILLMOD_SPEED, 5.25) GM:AddSkillModifier(SKILL_SPEED5, SKILLMOD_HEALTH, -7) GM:AddSkillModifier(SKILL_STOIC1, SKILLMOD_HEALTH, 1) GM:AddSkillModifier(SKILL_STOIC1, SKILLMOD_SPEED, -0.75) GM:AddSkillModifier(SKILL_STOIC2, SKILLMOD_HEALTH, 2) GM:AddSkillModifier(SKILL_STOIC2, SKILLMOD_SPEED, -1.5) GM:AddSkillModifier(SKILL_STOIC3, SKILLMOD_HEALTH, 4) GM:AddSkillModifier(SKILL_STOIC3, SKILLMOD_SPEED, -3) GM:AddSkillModifier(SKILL_STOIC4, SKILLMOD_HEALTH, 6) GM:AddSkillModifier(SKILL_STOIC4, SKILLMOD_SPEED, -4.5) GM:AddSkillModifier(SKILL_STOIC5, SKILLMOD_HEALTH, 7) GM:AddSkillModifier(SKILL_STOIC5, SKILLMOD_SPEED, -5.25) GM:AddSkillModifier(SKILL_VITALITY1, SKILLMOD_HEALTH, 1) GM:AddSkillModifier(SKILL_VITALITY2, SKILLMOD_HEALTH, 1) GM:AddSkillModifier(SKILL_VITALITY3, SKILLMOD_HEALTH, 1) GM:AddSkillModifier(SKILL_MOTIONI, SKILLMOD_SPEED, 0.75) GM:AddSkillModifier(SKILL_MOTIONII, SKILLMOD_SPEED, 0.75) GM:AddSkillModifier(SKILL_MOTIONIII, SKILLMOD_SPEED, 0.75) GM:AddSkillModifier(SKILL_FOCUS, SKILLMOD_AIMSPREAD_MUL, -0.03) GM:AddSkillModifier(SKILL_FOCUS, SKILLMOD_RELOADSPEED_MUL, -0.03) GM:AddSkillModifier(SKILL_FOCUSII, SKILLMOD_AIMSPREAD_MUL, -0.04) GM:AddSkillModifier(SKILL_FOCUSII, SKILLMOD_RELOADSPEED_MUL, -0.04) GM:AddSkillModifier(SKILL_FOCUSIII, SKILLMOD_AIMSPREAD_MUL, -0.05) GM:AddSkillModifier(SKILL_FOCUSIII, SKILLMOD_RELOADSPEED_MUL, -0.05) GM:AddSkillModifier(SKILL_ORPHICFOCUS, SKILLMOD_RELOADSPEED_MUL, -0.06) GM:AddSkillModifier(SKILL_ORPHICFOCUS, SKILLMOD_AIMSPREAD_MUL, -0.02) GM:AddSkillModifier(SKILL_DELIBRATION, SKILLMOD_AIMSPREAD_MUL, -0.01) GM:AddSkillModifier(SKILL_WOOISM, SKILLMOD_IRONSIGHT_EFF_MUL, -0.25) GM:AddSkillModifier(SKILL_GLUTTON, SKILLMOD_HEALTH, -5) GM:AddSkillModifier(SKILL_TANKER, SKILLMOD_HEALTH, 20) GM:AddSkillModifier(SKILL_TANKER, SKILLMOD_SPEED, -15) GM:AddSkillModifier(SKILL_ULTRANIMBLE, SKILLMOD_HEALTH, -20) GM:AddSkillModifier(SKILL_ULTRANIMBLE, SKILLMOD_SPEED, 15) GM:AddSkillModifier(SKILL_EGOCENTRIC, SKILLMOD_SELF_DAMAGE_MUL, -0.35) GM:AddSkillModifier(SKILL_EGOCENTRIC, SKILLMOD_HEALTH, -5) GM:AddSkillModifier(SKILL_BLASTPROOF, SKILLMOD_SELF_DAMAGE_MUL, -0.45) GM:AddSkillModifier(SKILL_BLASTPROOF, SKILLMOD_RELOADSPEED_MUL, -0.07) GM:AddSkillModifier(SKILL_BLASTPROOF, SKILLMOD_DEPLOYSPEED_MUL, -0.12) GM:AddSkillModifier(SKILL_SURGEON1, SKILLMOD_MEDKIT_COOLDOWN_MUL, -0.08) GM:AddSkillModifier(SKILL_SURGEON2, SKILLMOD_MEDKIT_COOLDOWN_MUL, -0.09) GM:AddSkillModifier(SKILL_SURGEON3, SKILLMOD_MEDKIT_COOLDOWN_MUL, -0.10) GM:AddSkillModifier(SKILL_SURGEONIV, SKILLMOD_MEDKIT_COOLDOWN_MUL, -0.11) GM:AddSkillModifier(SKILL_BIOLOGYI, SKILLMOD_MEDKIT_EFFECTIVENESS_MUL, 0.08) GM:AddSkillModifier(SKILL_BIOLOGYII, SKILLMOD_MEDKIT_EFFECTIVENESS_MUL, 0.09) GM:AddSkillModifier(SKILL_BIOLOGYIII, SKILLMOD_MEDKIT_EFFECTIVENESS_MUL, 0.1) GM:AddSkillModifier(SKILL_BIOLOGYIV, SKILLMOD_MEDKIT_EFFECTIVENESS_MUL, 0.11) GM:AddSkillModifier(SKILL_HANDY1, SKILLMOD_REPAIRRATE_MUL, 0.04) GM:AddSkillModifier(SKILL_HANDY2, SKILLMOD_REPAIRRATE_MUL, 0.05) GM:AddSkillModifier(SKILL_HANDY3, SKILLMOD_REPAIRRATE_MUL, 0.06) GM:AddSkillModifier(SKILL_HANDY4, SKILLMOD_REPAIRRATE_MUL, 0.07) GM:AddSkillModifier(SKILL_HANDY5, SKILLMOD_REPAIRRATE_MUL, 0.08) GM:AddSkillModifier(SKILL_D_SLOW, SKILLMOD_WORTH, 15) GM:AddSkillModifier(SKILL_D_SLOW, SKILLMOD_ENDWAVE_POINTS, 1) GM:AddSkillModifier(SKILL_D_SLOW, SKILLMOD_SPEED, -33.75) GM:AddSkillModifier(SKILL_GOURMET, SKILLMOD_FOODEATTIME_MUL, 2.0) GM:AddSkillModifier(SKILL_GOURMET, SKILLMOD_FOODRECOVERY_MUL, 1.0) GM:AddSkillModifier(SKILL_SUGARRUSH, SKILLMOD_FOODRECOVERY_MUL, -0.35) GM:AddSkillModifier(SKILL_BATTLER1, SKILLMOD_MELEE_DAMAGE_MUL, 0.04) GM:AddSkillModifier(SKILL_BATTLER2, SKILLMOD_MELEE_DAMAGE_MUL, 0.05) GM:AddSkillModifier(SKILL_BATTLER3, SKILLMOD_MELEE_DAMAGE_MUL, 0.05) GM:AddSkillModifier(SKILL_BATTLER4, SKILLMOD_MELEE_DAMAGE_MUL, 0.06) GM:AddSkillModifier(SKILL_BATTLER5, SKILLMOD_MELEE_DAMAGE_MUL, 0.07) GM:AddSkillModifier(SKILL_JOUSTER, SKILLMOD_MELEE_DAMAGE_MUL, 0.1) GM:AddSkillModifier(SKILL_JOUSTER, SKILLMOD_MELEE_KNOCKBACK_MUL, -1.0) GM:AddSkillModifier(SKILL_QUICKDRAW, SKILLMOD_DEPLOYSPEED_MUL, 0.65) GM:AddSkillModifier(SKILL_QUICKDRAW, SKILLMOD_RELOADSPEED_MUL, -0.15) GM:AddSkillModifier(SKILL_QUICKRELOAD, SKILLMOD_RELOADSPEED_MUL, 0.10) GM:AddSkillModifier(SKILL_QUICKRELOAD, SKILLMOD_DEPLOYSPEED_MUL, -0.25) GM:AddSkillModifier(SKILL_SLEIGHTOFHAND, SKILLMOD_RELOADSPEED_MUL, 0.10) GM:AddSkillModifier(SKILL_SLEIGHTOFHAND, SKILLMOD_AIMSPREAD_MUL, -0.05) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE1, SKILLMOD_RELOADSPEED_MUL, 0.02) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE1, SKILLMOD_DEPLOYSPEED_MUL, 0.02) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE2, SKILLMOD_RELOADSPEED_MUL, 0.03) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE2, SKILLMOD_DEPLOYSPEED_MUL, 0.03) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE3, SKILLMOD_RELOADSPEED_MUL, 0.04) GM:AddSkillModifier(SKILL_TRIGGER_DISCIPLINE3, SKILLMOD_DEPLOYSPEED_MUL, 0.04) GM:AddSkillModifier(SKILL_PHASER, SKILLMOD_BARRICADE_PHASE_SPEED_MUL, 0.15) GM:AddSkillModifier(SKILL_PHASER, SKILLMOD_SIGIL_TELEPORT_MUL, 0.15) GM:AddSkillModifier(SKILL_DRIFT, SKILLMOD_BARRICADE_PHASE_SPEED_MUL, 0.05) GM:AddSkillModifier(SKILL_WARP, SKILLMOD_SIGIL_TELEPORT_MUL, -0.05) GM:AddSkillModifier(SKILL_HAMMERDISCIPLINE, SKILLMOD_HAMMER_SWING_DELAY_MUL, -0.2) GM:AddSkillModifier(SKILL_BARRICADEEXPERT, SKILLMOD_HAMMER_SWING_DELAY_MUL, 0.3) GM:AddSkillModifier(SKILL_SAFEFALL, SKILLMOD_FALLDAMAGE_DAMAGE_MUL, -0.4) GM:AddSkillModifier(SKILL_SAFEFALL, SKILLMOD_FALLDAMAGE_RECOVERY_MUL, -0.5) GM:AddSkillModifier(SKILL_SAFEFALL, SKILLMOD_FALLDAMAGE_SLOWDOWN_MUL, 0.4) GM:AddSkillModifier(SKILL_BACKPEDDLER, SKILLMOD_SPEED, -7) GM:AddSkillFunction(SKILL_BACKPEDDLER, function(pl, active) pl.NoBWSpeedPenalty = active end) GM:AddSkillModifier(SKILL_D_CLUMSY, SKILLMOD_WORTH, 20) GM:AddSkillModifier(SKILL_D_CLUMSY, SKILLMOD_POINTS, 5) GM:AddSkillFunction(SKILL_D_CLUMSY, function(pl, active) pl.IsClumsy = active end) GM:AddSkillModifier(SKILL_D_NOODLEARMS, SKILLMOD_WORTH, 5) GM:AddSkillModifier(SKILL_D_NOODLEARMS, SKILLMOD_SCRAP_START, 1) GM:AddSkillFunction(SKILL_D_NOODLEARMS, function(pl, active) pl.NoObjectPickup = active end) GM:AddSkillModifier(SKILL_D_PALSY, SKILLMOD_WORTH, 10) GM:AddSkillModifier(SKILL_D_PALSY, SKILLMOD_RESUPPLY_DELAY_MUL, -0.03) GM:AddSkillFunction(SKILL_D_PALSY, function(pl, active) pl.HasPalsy = active end) GM:AddSkillModifier(SKILL_D_HEMOPHILIA, SKILLMOD_WORTH, 10) GM:AddSkillModifier(SKILL_D_HEMOPHILIA, SKILLMOD_SCRAP_START, 3) GM:AddSkillFunction(SKILL_D_HEMOPHILIA, function(pl, active) pl.HasHemophilia = active end) GM:AddSkillModifier(SKILL_D_LATEBUYER, SKILLMOD_WORTH, 20) GM:AddSkillModifier(SKILL_D_LATEBUYER, SKILLMOD_ARSENAL_DISCOUNT, -0.02) GM:AddSkillFunction(SKILL_TAUT, function(pl, active) pl.BuffTaut = active end) GM:AddSkillModifier(SKILL_BLOODARMOR, SKILLMOD_HEALTH, -13) GM:AddSkillModifier(SKILL_HAEMOSTASIS, SKILLMOD_BLOODARMOR_DMG_REDUCTION, -0.25) GM:AddSkillModifier(SKILL_REGENERATOR, SKILLMOD_HEALTH, -6) GM:AddSkillModifier(SKILL_D_WEAKNESS, SKILLMOD_WORTH, 15) GM:AddSkillModifier(SKILL_D_WEAKNESS, SKILLMOD_ENDWAVE_POINTS, 1) GM:AddSkillModifier(SKILL_D_WEAKNESS, SKILLMOD_HEALTH, -45) GM:AddSkillModifier(SKILL_D_WIDELOAD, SKILLMOD_WORTH, 20) GM:AddSkillModifier(SKILL_D_WIDELOAD, SKILLMOD_RESUPPLY_DELAY_MUL, -0.05) GM:AddSkillFunction(SKILL_D_WIDELOAD, function(pl, active) pl.NoGhosting = active end) GM:AddSkillFunction(SKILL_WOOISM, function(pl, active) pl.Wooism = active end) GM:AddSkillFunction(SKILL_ORPHICFOCUS, function(pl, active) pl.Orphic = active end) GM:AddSkillModifier(SKILL_WORTHINESS1, SKILLMOD_WORTH, 5) GM:AddSkillModifier(SKILL_WORTHINESS2, SKILLMOD_WORTH, 5) GM:AddSkillModifier(SKILL_WORTHINESS3, SKILLMOD_WORTH, 5) GM:AddSkillModifier(SKILL_WORTHINESS4, SKILLMOD_WORTH, 5) GM:AddSkillModifier(SKILL_KNUCKLEMASTER, SKILLMOD_UNARMED_SWING_DELAY_MUL, 0.35) GM:AddSkillModifier(SKILL_KNUCKLEMASTER, SKILLMOD_UNARMED_DAMAGE_MUL, 0.75) GM:AddSkillModifier(SKILL_CRITICALKNUCKLE, SKILLMOD_UNARMED_DAMAGE_MUL, -0.25) GM:AddSkillModifier(SKILL_CRITICALKNUCKLE, SKILLMOD_UNARMED_SWING_DELAY_MUL, 0.25) GM:AddSkillModifier(SKILL_SMARTTARGETING, SKILLMOD_MEDGUN_FIRE_DELAY_MUL, 0.75) GM:AddSkillModifier(SKILL_SMARTTARGETING, SKILLMOD_MEDDART_EFFECTIVENESS_MUL, -0.3) GM:AddSkillModifier(SKILL_RECLAIMSOL, SKILLMOD_MEDGUN_FIRE_DELAY_MUL, 1.5) GM:AddSkillModifier(SKILL_RECLAIMSOL, SKILLMOD_MEDGUN_RELOAD_SPEED_MUL, -0.4) GM:AddSkillModifier(SKILL_LANKY, SKILLMOD_MELEE_DAMAGE_MUL, -0.15) GM:AddSkillModifier(SKILL_LANKY, SKILLMOD_MELEE_RANGE_MUL, 0.1) GM:AddSkillModifier(SKILL_LANKYII, SKILLMOD_MELEE_DAMAGE_MUL, -0.15) GM:AddSkillModifier(SKILL_LANKYII, SKILLMOD_MELEE_RANGE_MUL, 0.1) GM:AddSkillModifier(SKILL_D_FRAIL, SKILLMOD_WORTH, 20) GM:AddSkillModifier(SKILL_D_FRAIL, SKILLMOD_POINTS, 5) GM:AddSkillFunction(SKILL_D_FRAIL, function(pl, active) pl:SetDTBool(DT_PLAYER_BOOL_FRAIL, active) end) GM:AddSkillModifier(SKILL_MASTERCHEF, SKILLMOD_MELEE_DAMAGE_MUL, -0.10) GM:AddSkillModifier(SKILL_LIGHTWEIGHT, SKILLMOD_MELEE_DAMAGE_MUL, -0.2) GM:AddSkillModifier(SKILL_AGILEI, SKILLMOD_JUMPPOWER_MUL, 0.04) GM:AddSkillModifier(SKILL_AGILEI, SKILLMOD_SPEED, -2) GM:AddSkillModifier(SKILL_AGILEII, SKILLMOD_JUMPPOWER_MUL, 0.05) GM:AddSkillModifier(SKILL_AGILEII, SKILLMOD_SPEED, -3) GM:AddSkillModifier(SKILL_AGILEIII, SKILLMOD_JUMPPOWER_MUL, 0.06) GM:AddSkillModifier(SKILL_AGILEIII, SKILLMOD_SPEED, -4) GM:AddSkillModifier(SKILL_SOFTDET, SKILLMOD_EXP_DAMAGE_RADIUS, -0.10) GM:AddSkillModifier(SKILL_SOFTDET, SKILLMOD_EXP_DAMAGE_TAKEN_MUL, -0.4) GM:AddSkillModifier(SKILL_IRONBLOOD, SKILLMOD_BLOODARMOR_DMG_REDUCTION, 0.25) GM:AddSkillModifier(SKILL_IRONBLOOD, SKILLMOD_BLOODARMOR_MUL, -0.5) GM:AddSkillModifier(SKILL_BLOODLETTER, SKILLMOD_BLOODARMOR_GAIN_MUL, 1) GM:AddSkillModifier(SKILL_SURESTEP, SKILLMOD_SPEED, -4) GM:AddSkillModifier(SKILL_SURESTEP, SKILLMOD_SLOW_EFF_TAKEN_MUL, -0.35) GM:AddSkillModifier(SKILL_INTREPID, SKILLMOD_SPEED, -4) GM:AddSkillModifier(SKILL_INTREPID, SKILLMOD_LOW_HEALTH_SLOW_MUL, -0.35) GM:AddSkillModifier(SKILL_UNBOUND, SKILLMOD_SPEED, -4) GM:AddSkillModifier(SKILL_CHEAPKNUCKLE, SKILLMOD_MELEE_RANGE_MUL, -0.1) GM:AddSkillModifier(SKILL_HEAVYSTRIKES, SKILLMOD_MELEE_KNOCKBACK_MUL, 1) GM:AddSkillModifier(SKILL_CANNONBALL, SKILLMOD_PROJ_SPEED, -0.25) GM:AddSkillModifier(SKILL_CANNONBALL, SKILLMOD_PROJECTILE_DAMAGE_MUL, 0.03) GM:AddSkillModifier(SKILL_CONEFFECT, SKILLMOD_EXP_DAMAGE_RADIUS, -0.2) GM:AddSkillModifier(SKILL_CONEFFECT, SKILLMOD_EXP_DAMAGE_MUL, 0.05) GM:AddSkillModifier(SKILL_CARDIOTONIC, SKILLMOD_SPEED, -12) GM:AddSkillModifier(SKILL_CARDIOTONIC, SKILLMOD_BLOODARMOR_DMG_REDUCTION, -0.2) GM:AddSkillFunction(SKILL_SCOURER, function(pl, active) pl.Scourer = active end) GM:AddSkillModifier(SKILL_DISPERSION, SKILLMOD_CLOUD_RADIUS, 0.15) GM:AddSkillModifier(SKILL_DISPERSION, SKILLMOD_CLOUD_TIME, -0.1) GM:AddSkillModifier(SKILL_BRASH, SKILLMOD_MELEE_SWING_DELAY_MUL, -0.16) GM:AddSkillModifier(SKILL_BRASH, SKILLMOD_MELEE_MOVEMENTSPEED_ON_KILL, -15) GM:AddSkillModifier(SKILL_CIRCULATION, SKILLMOD_BLOODARMOR, 1) GM:AddSkillModifier(SKILL_SANGUINE, SKILLMOD_BLOODARMOR, 11) GM:AddSkillModifier(SKILL_SANGUINE, SKILLMOD_HEALTH, -9) GM:AddSkillModifier(SKILL_ANTIGEN, SKILLMOD_BLOODARMOR_DMG_REDUCTION, 0.05) GM:AddSkillModifier(SKILL_ANTIGEN, SKILLMOD_HEALTH, -3) GM:AddSkillModifier(SKILL_INSTRUMENTS, SKILLMOD_TURRET_RANGE_MUL, 0.05) GM:AddSkillModifier(SKILL_LEVELHEADED, SKILLMOD_AIM_SHAKE_MUL, -0.05) GM:AddSkillModifier(SKILL_ROBUST, SKILLMOD_WEAPON_WEIGHT_SLOW_MUL, -0.06) GM:AddSkillModifier(SKILL_TAUT, SKILLMOD_PROP_CARRY_SLOW_MUL, 0.4) GM:AddSkillModifier(SKILL_TURRETOVERLOAD, SKILLMOD_TURRET_RANGE_MUL, -0.3) GM:AddSkillModifier(SKILL_STOWAGE, SKILLMOD_RESUPPLY_DELAY_MUL, 0.15) GM:AddSkillFunction(SKILL_STOWAGE, function(pl, active) pl.Stowage = active end) GM:AddSkillFunction(SKILL_TRUEWOOISM, function(pl, active) pl.TrueWooism = active end)