package AbilityObjEditing import NoWurst import Integer import Real import Boolean import BitSet import public ObjEditingNatives import String import public UnitObjEditing import public AbilityIds import Annotations /** Configure this variable to `false` if you don't want the property names to have spaces. */ @configurable constant USE_PROPERTY_SPACING = true public enum AllowWhenFull NEVER LIFE_ONLY MANA_ONLY ALWAYS public enum StackingType DAMAGE MOVEMENT ATTACK_RATE KILL_UNIT public enum StackFlag DAMAGE MOVEMENT ATTACK_RATE KILL_UNIT public enum MorphingFlag UNINTERRUPTABLE IMMEDIATE_LANDING IMMEDIATE_TAKE_OFF PERMANENT REQUIRES_PAYMENT public interface TooltipGenerator function addProperty(string title, StringLevelClosure lc) function applyToDef(AbilityDefinition def) /** Makes an ability able to be cast by a dummy */ public function AbilityDefinition.setDummyAbility() returns AbilityDefinition this..setHeroAbility(false) ..presetManaCost(lvl -> 0) ..presetCooldown(lvl -> 0) ..presetCastRange(lvl -> 99999) ..setCheckDependencies(false) return this public class AbilityDefinition protected ObjectDefinition def protected int lvls = 1 TooltipGenerator tooltipGen = null boolean listen = false protected int newId protected int baseId function getNewId() returns int return newId function getBaseId() returns int return baseId function getLevels() returns int return lvls construct(int newId, int baseId) this.newId = newId this.baseId = baseId def = createObjectDefinition("w3a", newId, baseId) construct(int newId, int baseId, int lvls) this.newId = newId this.baseId = baseId this.lvls = lvls def = createObjectDefinition("w3a", newId, baseId) setLevels(lvls) function addTooltipProperty(string pName, StringLevelClosure lc) if tooltipGen != null and listen if USE_PROPERTY_SPACING tooltipGen.addProperty(pName, lc) else tooltipGen.addProperty(pName.replace(" ", ""), lc) function addTooltipProperty(string pName, IntLevelClosure lc) addTooltipProperty(pName, (int lvl) -> lc.run(lvl).toString()) function addTooltipProperty(string pName, RealLevelClosure lc) addTooltipProperty(pName) (int lvl) -> let s = lc.run(lvl).toString() return s.endsWith(".0") ? s.substring(0, s.length() - 2) : s function addTooltipProperty(string pName, BooleanLevelClosure lc) addTooltipProperty(pName, (int lvl) -> lc.run(lvl).toString()) function registerTooltipGenerator(TooltipGenerator tgen) tooltipGen = tgen function tooltipStartListen() listen = true function tooltipStopListen() tooltipStopListen(true) function tooltipStopListen(boolean build) listen = false if tooltipGen != null and build tooltipGen.applyToDef(this) function setName(string value) def.setLvlDataString("anam", 0, 0, value) addTooltipProperty("Name", (int lvl) -> value) function setEditorSuffix(string value) def.setLvlDataString("ansf", 0, 0, value) function setHeroAbility(bool value) def.setLvlDataBoolean("aher", 0, 0, value) function setItemAbility(bool value) def.setLvlDataBoolean("aite", 0, 0, value) function setRace(Race rce) def.setLvlDataString("arac", 0, 0, rce.toObjectString()) function setButtonPositionNormalX(int value) def.setLvlDataInt("abpx", 0, 0, value) function setButtonPositionNormalY(int value) def.setLvlDataInt("abpy", 0, 0, value) function setButtonPositionTurnOffX(int value) def.setLvlDataInt("aubx", 0, 0, value) function setButtonPositionTurnOffY(int value) def.setLvlDataInt("auby", 0, 0, value) function setButtonPositionResearchX(int value) def.setLvlDataInt("arpx", 0, 0, value) function setButtonPositionResearchY(int value) def.setLvlDataInt("arpy", 0, 0, value) function presetButtonPosNormal(int x, int y) setButtonPositionNormalX(x) setButtonPositionNormalY(y) function presetButtonPosTurnOff(int x, int y) setButtonPositionTurnOffX(x) setButtonPositionTurnOffY(y) function presetButtonPosResearch(int x, int y) setButtonPositionResearchX(x) setButtonPositionResearchY(y) function setIconNormal(string value) def.setLvlDataString("aart", 0, 0, value) function setIconTurnOff(string value) def.setLvlDataString("auar", 0, 0, value) function setIconResearch(string value) def.setLvlDataString("arar", 0, 0, value) function presetIcon(string name) string s = name if name.length() < 20 or not name.startsWith("ReplaceableTextures") s = "ReplaceableTextures\\CommandButtons\\" + s if not name.endsWith(".blp") s += ".blp" setIconResearch(s) setIconNormal(s) function setArtCaster(string value) def.setLvlDataString("acat", 0, 0, value) function setArtTarget(string value) def.setLvlDataString("atat", 0, 0, value) function setArtSpecial(string value) def.setLvlDataString("asat", 0, 0, value) function setArtEffect(string value) def.setLvlDataString("aeat", 0, 0, value) function setAreaEffect(string value) def.setLvlDataString("aaea", 0, 0, value) function setLightningEffects(string value) def.setLvlDataString("alig", 0, 0, value) function setMissileArt(string value) def.setLvlDataString("amat", 0, 0, value) function setMissileSpeed(int value) def.setLvlDataInt("amsp", 0, 0, value) function setMissileArc(real value) def.setLvlDataUnreal("amac", 0, 0, value) function setMissileHomingEnabled(bool value) def.setLvlDataBoolean("amho", 0, 0, value) function setTargetAttachments(int value) def.setLvlDataInt("atac", 0, 0, value) function setTargetAttachmentPoint(string value) def.setLvlDataString("ata0", 0, 0, value) function setTargetAttachmentPoint1(string value) def.setLvlDataString("ata1", 0, 0, value) function setTargetAttachmentPoint2(string value) def.setLvlDataString("ata2", 0, 0, value) function setTargetAttachmentPoint3(string value) def.setLvlDataString("ata3", 0, 0, value) function setTargetAttachmentPoint4(string value) def.setLvlDataString("ata4", 0, 0, value) function setTargetAttachmentPoint5(string value) def.setLvlDataString("ata5", 0, 0, value) function setCasterAttachments(int value) def.setLvlDataInt("acac", 0, 0, value) function setCasterAttachmentPoint(string value) def.setLvlDataString("acap", 0, 0, value) function setCasterAttachmentPoint1(string value) def.setLvlDataString("aca1", 0, 0, value) function setSpecialAttachmentPoint(string value) def.setLvlDataString("aspt", 0, 0, value) function setAnimationNames(string value) def.setLvlDataString("aani", 0, 0, value) function setTooltipNormal(int level, string value) def.setLvlDataString("atp1", level, 0, value) function presetTooltipNormal(StringLevelClosure lc) def.setLevelsDataString("atp1", lvls, 0, lc) addTooltipProperty("Tooltip Normal", lc) function setTooltipTurnOff(int level, string value) def.setLvlDataString("aut1", level, 0, value) function presetTooltipTurnOff(StringLevelClosure lc) def.setLevelsDataString("aut1", lvls, 0, lc) addTooltipProperty("Tooltip Turn Off", lc) function setTooltipNormalExtended(int level, string value) def.setLvlDataString("aub1", level, 0, value) function presetTooltipNormalExtended(StringLevelClosure lc) def.setLevelsDataString("aub1", lvls, 0, lc) addTooltipProperty("Tooltip Normal Extended", lc) function setTooltipTurnOffExtended(int level, string value) def.setLvlDataString("auu1", level, 0, value) function presetTooltipTurnOffExtended(StringLevelClosure lc) def.setLevelsDataString("auu1", lvls, 0, lc) addTooltipProperty("Tooltip Turn Off Extended", lc) function setTooltipLearn(string value) def.setLvlDataString("aret", 0, 0, value) function setTooltipLearnExtended(string value) def.setLvlDataString("arut", 0, 0, value) function setHotkeyLearn(string value) def.setLvlDataString("arhk", 0, 0, value) function setHotkeyNormal(string value) def.setLvlDataString("ahky", 0, 0, value) function setHotkeyTurnOff(string value) def.setLvlDataString("auhk", 0, 0, value) function presetHotkey(string value) setHotkeyNormal(value) setHotkeyLearn(value) setHotkeyTurnOff(value) addTooltipProperty("Hotkey", (int lvl) -> value) function setRequirements(string value) def.setLvlDataString("areq", 0, 0, value) function setRequirementsLevels(string value) def.setLvlDataString("arqa", 0, 0, value) function setCheckDependencies(bool value) def.setLvlDataBoolean("achd", 0, 0, value) function setPriorityforSpellSteal(int value) def.setLvlDataInt("apri", 0, 0, value) function setOrderStringUseTurnOn(string value) def.setLvlDataString("aord", 0, 0, value) function setOrderStringTurnOff(string value) def.setLvlDataString("aoru", 0, 0, value) function setOrderStringActivate(string value) def.setLvlDataString("aoro", 0, 0, value) function setOrderStringDeactivate(string value) def.setLvlDataString("aorf", 0, 0, value) function setEffectSound(string value) def.setLvlDataString("aefs", 0, 0, value) function setEffectSoundLooping(string value) def.setLvlDataString("aefl", 0, 0, value) function setLevels(int value) def.setLvlDataInt("alev", 0, 0, value) lvls = value addTooltipProperty("Levels", (int lvl) -> value) function setRequiredLevel(int value) def.setLvlDataInt("arlv", 0, 0, value) function setLevelSkipRequirement(int value) def.setLvlDataInt("alsk", 0, 0, value) function setTargetsAllowed(int level, string value) def.setLvlDataString("atar", level, 0, value) function presetTargetsAllowed(StringLevelClosure lc) def.setLevelsDataString("atar", lvls, 0, lc) addTooltipProperty("Targets Allowed", lc) function setCastingTime(int level, real value) def.setLvlDataUnreal("acas", level, 0, value) function presetCastingTime(RealLevelClosure lc) def.setLevelsDataUnreal("acas", lvls, 0, lc) addTooltipProperty("Casting Time", lc) function setDurationNormal(int level, real value) def.setLvlDataUnreal("adur", level, 0, value) function presetDurationNormal(RealLevelClosure lc) def.setLevelsDataUnreal("adur", lvls, 0, lc) addTooltipProperty("Duration Normal", lc) function setDurationHero(int level, real value) def.setLvlDataUnreal("ahdu", level, 0, value) function presetDurationHero(RealLevelClosure lc) def.setLevelsDataUnreal("ahdu", lvls, 0, lc) addTooltipProperty("Duration Hero", lc) function setCooldown(int level, real value) def.setLvlDataUnreal("acdn", level, 0, value) function presetCooldown(RealLevelClosure lc) def.setLevelsDataUnreal("acdn", lvls, 0, lc) addTooltipProperty("Cooldown", lc) function setManaCost(int level, int value) def.setLvlDataInt("amcs", level, 0, value) function presetManaCost(IntLevelClosure lc) def.setLevelsDataInt("amcs", lvls, 0, lc) addTooltipProperty("Mana Cost", lc) function setAreaofEffect(int level, real value) def.setLvlDataUnreal("aare", level, 0, value) function presetAreaofEffect(RealLevelClosure lc) def.setLevelsDataUnreal("aare", lvls, 0, lc) addTooltipProperty("Area of Effect", lc) function setCastRange(int level, real value) def.setLvlDataUnreal("aran", level, 0, value) function presetCastRange(RealLevelClosure lc) def.setLevelsDataUnreal("aran", lvls, 0, lc) addTooltipProperty("Cast Range", lc) function setBuffs(int level, string value) def.setLvlDataString("abuf", level, 0, value) function presetBuffs(StringLevelClosure lc) def.setLevelsDataString("abuf", lvls, 0, lc) addTooltipProperty("Buffs", lc) function setEffects(int level, string value) def.setLvlDataString("aeff", level, 0, value) function presetEffects(StringLevelClosure lc) def.setLevelsDataString("aeff", lvls, 0, lc) addTooltipProperty("Effects", lc) public class AbilityDefinitionTaunt extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.taunt) function setPreferFriendlies(int level, int value) def.setLvlDataInt("Tau2", level, 2, value) function presetPreferFriendlies(IntLevelClosure lc) def.setLevelsDataInt("Tau2", lvls, 2, lc) addTooltipProperty("Prefer Friendlies", lc) function setPreferHostiles(int level, int value) def.setLvlDataInt("Tau1", level, 1, value) function presetPreferHostiles(IntLevelClosure lc) def.setLevelsDataInt("Tau1", lvls, 1, lc) addTooltipProperty("Prefer Hostiles", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Tau3", level, 3, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Tau3", lvls, 3, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionPoisonArrows extends AbilityDefinition private bitset stackingTypesSet = bitset(0) construct(int newAbilityId) super(newAbilityId, AbilityIds.poisonArrows) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poa3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poa3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) function setStackingType(int level, int value) def.setLvlDataInt("Poa5", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poa5", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setExtraDamage(int level, real value) def.setLvlDataUnreal("Poa1", level, 1, value) function presetExtraDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Poa1", lvls, 1, lc) addTooltipProperty("Extra Damage", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poa4", level, 4, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poa4", lvls, 4, lc) addTooltipProperty("Movement Speed Factor", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poa2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poa2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionRangerColdArrows extends AbilityDefinition private bitset stackFlagsSet = bitset(7) construct(int newAbilityId) super(newAbilityId, AbilityIds.coldArrows) function setStackFlags(int level, int value) def.setLvlDataInt("Hca4", level, 4, value) function presetStackFlags(IntLevelClosure lc) def.setLevelsDataInt("Hca4", lvls, 4, lc) addTooltipProperty("Stack Flags", lc) function presetStackFlag(StackFlag stackFlag, boolean flag) stackFlagsSet = stackFlagsSet.set(stackFlag castTo int, flag) presetStackFlags(lvl -> stackFlagsSet.val) function hasStackFlag(StackFlag stackFlag) returns boolean return stackFlagsSet.get(stackFlag castTo int) function setExtraDamage(int level, real value) def.setLvlDataUnreal("Hca1", level, 1, value) function presetExtraDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hca1", lvls, 1, lc) addTooltipProperty("Extra Damage", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionSeaWitchTornado extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tornado) function setSummonedUnitType(int level, string value) def.setLvlDataString("Ntou", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Ntou", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionAgilityBonusPlus4 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.agilityBonusPlus4) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAlchemistTransmute extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.transmute) function setLumberCostFactor(int level, real value) def.setLvlDataUnreal("Ntm2", level, 2, value) function presetLumberCostFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ntm2", lvls, 2, lc) addTooltipProperty("Lumber Cost Factor", lc) function setAllowBounty(int level, bool value) def.setLvlDataBoolean("Ntm4", level, 4, value) function presetAllowBounty(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ntm4", lvls, 4, lc) addTooltipProperty("Allow Bounty", lc) function setMaxCreepLevel(int level, int value) def.setLvlDataInt("Ntm3", level, 3, value) function presetMaxCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Ntm3", lvls, 3, lc) addTooltipProperty("Max Creep Level", lc) function setGoldCostFactor(int level, real value) def.setLvlDataUnreal("Ntm1", level, 1, value) function presetGoldCostFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ntm1", lvls, 1, lc) addTooltipProperty("Gold Cost Factor", lc) public class AbilityDefinitionAgilityBonusPlus3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.agilityBonusPlus3) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAgilityBonusPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.agilityBonusPlus1) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionThornyShieldCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.thornyShieldCreep) function setDefenseBonus(int level, real value) def.setLvlDataUnreal("Uts3", level, 3, value) function presetDefenseBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uts3", lvls, 3, lc) addTooltipProperty("Defense Bonus", lc) function setReceivedDamageFactor(int level, real value) def.setLvlDataUnreal("Uts2", level, 2, value) function presetReceivedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Uts2", lvls, 2, lc) addTooltipProperty("Received Damage Factor", lc) function setReturnedDamageFactor(int level, real value) def.setLvlDataUnreal("Uts1", level, 1, value) function presetReturnedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Uts1", lvls, 1, lc) addTooltipProperty("Returned Damage Factor", lc) public class AbilityDefinitionAgilityBonusPlus6 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.agilityBonusPlus6) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionBloodMageSiphonMana extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.siphonMana) function setBonusLifeDecay(int level, real value) def.setLvlDataUnreal("Ndr7", level, 7, value) function presetBonusLifeDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr7", lvls, 7, lc) addTooltipProperty("Bonus Life Decay", lc) function setDrainIntervalseconds(int level, real value) def.setLvlDataUnreal("Ndr3", level, 3, value) function presetDrainIntervalseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr3", lvls, 3, lc) addTooltipProperty("Drain Interval Seconds", lc) function setHitPointsDrained(int level, real value) def.setLvlDataUnreal("Ndr1", level, 1, value) function presetHitPointsDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr1", lvls, 1, lc) addTooltipProperty("Hit Points Drained", lc) function setBonusLifeFactor(int level, real value) def.setLvlDataUnreal("Ndr6", level, 6, value) function presetBonusLifeFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr6", lvls, 6, lc) addTooltipProperty("Bonus Life Factor", lc) function setManaPointsDrained(int level, real value) def.setLvlDataUnreal("Ndr2", level, 2, value) function presetManaPointsDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr2", lvls, 2, lc) addTooltipProperty("Mana Points Drained", lc) function setManaTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr5", level, 5, value) function presetManaTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr5", lvls, 5, lc) addTooltipProperty("Mana Transferred Per Second", lc) function setBonusManaDecay(int level, real value) def.setLvlDataUnreal("Ndr9", level, 9, value) function presetBonusManaDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr9", lvls, 9, lc) addTooltipProperty("Bonus Mana Decay", lc) function setBonusManaFactor(int level, real value) def.setLvlDataUnreal("Ndr8", level, 8, value) function presetBonusManaFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr8", lvls, 8, lc) addTooltipProperty("Bonus Mana Factor", lc) function setLifeTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr4", level, 4, value) function presetLifeTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr4", lvls, 4, lc) addTooltipProperty("Life Transferred Per Second", lc) public class AbilityDefinitionPossessioncreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.possessioncreep) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Pos1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Pos1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionPaladinDivineShield extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.divineShield) function setCanDeactivate(int level, bool value) def.setLvlDataBoolean("Hds1", level, 1, value) function presetCanDeactivate(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hds1", lvls, 1, lc) addTooltipProperty("Can Deactivate", lc) public class AbilityDefinitionPurgeCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.purgeCreep) function setHeroPauseDuration(int level, real value) def.setLvlDataUnreal("Prg5", level, 5, value) function presetHeroPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg5", lvls, 5, lc) addTooltipProperty("Hero Pause Duration", lc) function setUnitPauseDuration(int level, real value) def.setLvlDataUnreal("Prg4", level, 4, value) function presetUnitPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg4", lvls, 4, lc) addTooltipProperty("Unit Pause Duration", lc) function setMovementUpdateFrequency(int level, int value) def.setLvlDataInt("Prg1", level, 1, value) function presetMovementUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg1", lvls, 1, lc) addTooltipProperty("Movement Update Frequency", lc) function setAttackUpdateFrequency(int level, int value) def.setLvlDataInt("Prg2", level, 2, value) function presetAttackUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg2", lvls, 2, lc) addTooltipProperty("Attack Update Frequency", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Prg6", level, 6, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Prg6", lvls, 6, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Prg3", level, 3, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Prg3", lvls, 3, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionRoarcreepSkeletalOrc extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.roarcreepSkeletalOrc) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionTauntCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.taunt1) function setPreferFriendlies(int level, int value) def.setLvlDataInt("Tau2", level, 2, value) function presetPreferFriendlies(IntLevelClosure lc) def.setLevelsDataInt("Tau2", lvls, 2, lc) addTooltipProperty("Prefer Friendlies", lc) function setPreferHostiles(int level, int value) def.setLvlDataInt("Tau1", level, 1, value) function presetPreferHostiles(IntLevelClosure lc) def.setLevelsDataInt("Tau1", lvls, 1, lc) addTooltipProperty("Prefer Hostiles", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Tau3", level, 3, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Tau3", lvls, 3, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionRejuvinationFurbolg extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rejuvenation) function setManaPointsGained(int level, real value) def.setLvlDataUnreal("Rej2", level, 2, value) function presetManaPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej2", lvls, 2, lc) addTooltipProperty("Mana Points Gained", lc) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("Rej4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rej4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Rej1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("Rej3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("Rej3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) public class AbilityDefinitionPulverizecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pulverize1) function setHalfDamageRadius(int level, real value) def.setLvlDataUnreal("War4", level, 4, value) function presetHalfDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("War4", lvls, 4, lc) addTooltipProperty("Half Damage Radius", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("War2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("War2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("War3", level, 3, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("War3", lvls, 3, lc) addTooltipProperty("Full Damage Radius", lc) function setChancetoStomp(int level, real value) def.setLvlDataUnreal("War1", level, 1, value) function presetChancetoStomp(RealLevelClosure lc) def.setLevelsDataUnreal("War1", lvls, 1, lc) addTooltipProperty("Chance to Stomp", lc) public class AbilityDefinitionBeastMasterSummonHawk extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.beastMasterSummonHawk) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionTinkererSummonFactoryLevel0 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererSummonFactoryLevel0) function setSpawnInterval(int level, real value) def.setLvlDataUnreal("Nsy1", level, 1, value) function presetSpawnInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy1", lvls, 1, lc) addTooltipProperty("Spawn Interval", lc) function setLeashRange(int level, real value) def.setLvlDataUnreal("Nsy5", level, 5, value) function presetLeashRange(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy5", lvls, 5, lc) addTooltipProperty("Leash Range", lc) function setSpawnUnitID(int level, string value) def.setLvlDataString("Nsy2", level, 2, value) function presetSpawnUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsy2", lvls, 2, lc) addTooltipProperty("SpawnUnitID", lc) function setFactoryUnitID(int level, string value) def.setLvlDataString("Nsyu", level, 0, value) function presetFactoryUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsyu", lvls, 0, lc) addTooltipProperty("FactoryUnitID", lc) function setSpawnUnitOffset(int level, real value) def.setLvlDataUnreal("Nsy4", level, 4, value) function presetSpawnUnitOffset(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy4", lvls, 4, lc) addTooltipProperty("Spawn Unit Offset", lc) function setSpawnUnitDuration(int level, real value) def.setLvlDataUnreal("Nsy3", level, 3, value) function presetSpawnUnitDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy3", lvls, 3, lc) addTooltipProperty("Spawn Unit Duration", lc) public class AbilityDefinitionPolymorphcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.polymorphcreep) function setMorphUnitsGround(int level, string value) def.setLvlDataString("Ply2", level, 2, value) function presetMorphUnitsGround(StringLevelClosure lc) def.setLevelsDataString("Ply2", lvls, 2, lc) addTooltipProperty("Morph Units Ground", lc) function setMorphUnitsWater(int level, string value) def.setLvlDataString("Ply5", level, 5, value) function presetMorphUnitsWater(StringLevelClosure lc) def.setLevelsDataString("Ply5", lvls, 5, lc) addTooltipProperty("Morph Units Water", lc) function setMorphUnitsAmphibious(int level, string value) def.setLvlDataString("Ply4", level, 4, value) function presetMorphUnitsAmphibious(StringLevelClosure lc) def.setLevelsDataString("Ply4", lvls, 4, lc) addTooltipProperty("Morph Units Amphibious", lc) function setMorphUnitsAir(int level, string value) def.setLvlDataString("Ply3", level, 3, value) function presetMorphUnitsAir(StringLevelClosure lc) def.setLevelsDataString("Ply3", lvls, 3, lc) addTooltipProperty("Morph Units Air", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Ply1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Ply1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionBeastMasterStampede extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.beastMasterStampede) function setBeastsPerSecond(int level, int value) def.setLvlDataInt("Nst1", level, 1, value) function presetBeastsPerSecond(IntLevelClosure lc) def.setLevelsDataInt("Nst1", lvls, 1, lc) addTooltipProperty("Beasts Per Second", lc) function setDamageDelay(int level, real value) def.setLvlDataUnreal("Nst5", level, 5, value) function presetDamageDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nst5", lvls, 5, lc) addTooltipProperty("Damage Delay", lc) function setDamageRadius(int level, real value) def.setLvlDataUnreal("Nst4", level, 4, value) function presetDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Nst4", lvls, 4, lc) addTooltipProperty("Damage Radius", lc) function setBeastCollisionRadius(int level, real value) def.setLvlDataUnreal("Nst2", level, 2, value) function presetBeastCollisionRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Nst2", lvls, 2, lc) addTooltipProperty("Beast Collision Radius", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Nst3", level, 3, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Nst3", lvls, 3, lc) addTooltipProperty("Damage Amount", lc) public class AbilityDefinitionFirelordSoulBurn extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.soulBurn) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Nso5", level, 5, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Nso5", lvls, 5, lc) addTooltipProperty("Attack Speed Reduction", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Nso1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Nso1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setDamagePeriod(int level, real value) def.setLvlDataUnreal("Nso2", level, 2, value) function presetDamagePeriod(RealLevelClosure lc) def.setLevelsDataUnreal("Nso2", lvls, 2, lc) addTooltipProperty("Damage Period", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Nso4", level, 4, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Nso4", lvls, 4, lc) addTooltipProperty("Movement Speed Reduction", lc) function setDamagePenalty(int level, real value) def.setLvlDataUnreal("Nso3", level, 3, value) function presetDamagePenalty(RealLevelClosure lc) def.setLevelsDataUnreal("Nso3", lvls, 3, lc) addTooltipProperty("Damage Penalty", lc) public class AbilityDefinitionBeastMasterSummonQuilbeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.beastMasterSummonQuilbeast) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionFrenzy extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frenzy) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo2", level, 2, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo2", lvls, 2, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) function setScalingFactor(int level, real value) def.setLvlDataUnreal("Blo3", level, 3, value) function presetScalingFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Blo3", lvls, 3, lc) addTooltipProperty("Scaling Factor", lc) public class AbilityDefinitionMalganisSoulPreservation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.soulPreservation) function setUnittoPreserve(int level, string value) def.setLvlDataString("Nsl1", level, 0, value) function presetUnittoPreserve(StringLevelClosure lc) def.setLevelsDataString("Nsl1", lvls, 0, lc) addTooltipProperty("Unit to Preserve", lc) public class AbilityDefinitionBeastMasterSummonBear extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.beastMasterSummonBear) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionDarkRangerSilence extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.silence) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionSanctuary extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sanctuary) function setHitPointsPerSecond(int level, real value) def.setLvlDataUnreal("Nsa5", level, 5, value) function presetHitPointsPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Nsa5", lvls, 5, lc) addTooltipProperty("Hit Points Per Second", lc) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Nsa4", level, 4, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Nsa4", lvls, 4, lc) addTooltipProperty("Magic Damage Reduction", lc) function setBuildingTypesAllowed(int level, string value) def.setLvlDataString("Nsa1", level, 1, value) function presetBuildingTypesAllowed(StringLevelClosure lc) def.setLevelsDataString("Nsa1", lvls, 1, lc) addTooltipProperty("Building Types Allowed", lc) function setHeroRegenerationDelay(int level, real value) def.setLvlDataUnreal("Nsa2", level, 2, value) function presetHeroRegenerationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nsa2", lvls, 2, lc) addTooltipProperty("Hero Regeneration Delay", lc) function setUnitRegenerationDelay(int level, real value) def.setLvlDataUnreal("Nsa3", level, 3, value) function presetUnitRegenerationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nsa3", lvls, 3, lc) addTooltipProperty("Unit Regeneration Delay", lc) public class AbilityDefinitionShadowMeldInstant extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowMeldInstant) function setDayNightDuration(int level, real value) def.setLvlDataUnreal("Shm2", level, 2, value) function presetDayNightDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm2", lvls, 2, lc) addTooltipProperty("Day Night Duration", lc) function setActionDuration(int level, real value) def.setLvlDataUnreal("Shm3", level, 3, value) function presetActionDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm3", lvls, 3, lc) addTooltipProperty("Action Duration", lc) function setFadeDuration(int level, real value) def.setLvlDataUnreal("Shm1", level, 1, value) function presetFadeDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm1", lvls, 1, lc) addTooltipProperty("Fade Duration", lc) public class AbilityDefinitionSpellShieldAOE extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spellShieldAOE) function setShieldCooldownTime(int level, real value) def.setLvlDataUnreal("Nse1", level, 1, value) function presetShieldCooldownTime(RealLevelClosure lc) def.setLevelsDataUnreal("Nse1", lvls, 1, lc) addTooltipProperty("Shield Cooldown Time", lc) public class AbilityDefinitionItemAuraEndurance extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraEndurance) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae2", level, 2, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae2", lvls, 2, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionSpiritPigcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feralSpirit1) function setSummonedUnit(int level, string value) def.setLvlDataString("Osf1", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Osf1", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Osf2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Osf2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionUnstableConcoction extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unstableConcoction) function setPartialDamageAmount(int level, real value) def.setLvlDataUnreal("Dda4", level, 4, value) function presetPartialDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda4", lvls, 4, lc) addTooltipProperty("Partial Damage Amount", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("Dda1", level, 1, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda1", lvls, 1, lc) addTooltipProperty("Full Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Dda2", level, 2, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda2", lvls, 2, lc) addTooltipProperty("Full Damage Amount", lc) function setMoveSpeedBonus(int level, real value) def.setLvlDataUnreal("Uco6", level, 6, value) function presetMoveSpeedBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uco6", lvls, 6, lc) addTooltipProperty("Move Speed Bonus", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Uco5", level, 5, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Uco5", lvls, 5, lc) addTooltipProperty("Max Damage", lc) function setPartialDamageRadius(int level, real value) def.setLvlDataUnreal("Dda3", level, 3, value) function presetPartialDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda3", lvls, 3, lc) addTooltipProperty("Partial Damage Radius", lc) public class AbilityDefinitionItemAuraDevotion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraDevotion) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Had2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Had2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Had1", level, 1, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Had1", lvls, 1, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionAttackMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackDamageGain) function setAttackModification(int level, int value) def.setLvlDataInt("Iaa1", level, 1, value) function presetAttackModification(IntLevelClosure lc) def.setLevelsDataInt("Iaa1", lvls, 1, lc) addTooltipProperty("Attack Modification", lc) public class AbilityDefinitionMountainKingAvatar extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.avatar) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Hav4", level, 4, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hav4", lvls, 4, lc) addTooltipProperty("Magic Damage Reduction", lc) function setDefenseBonus(int level, real value) def.setLvlDataUnreal("Hav1", level, 1, value) function presetDefenseBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hav1", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Hav3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hav3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setHitPointBonus(int level, real value) def.setLvlDataUnreal("Hav2", level, 2, value) function presetHitPointBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hav2", lvls, 2, lc) addTooltipProperty("Hit Point Bonus", lc) public class AbilityDefinitionAIab extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHeroStatBonus) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionMannorothReincarnation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.reincarnation) function setReincarnationDelay(int level, real value) def.setLvlDataUnreal("Ore1", level, 1, value) function presetReincarnationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Ore1", lvls, 1, lc) addTooltipProperty("Reincarnation Delay", lc) public class AbilityDefinitionAnimateDead extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAnimateDead) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) function setNumberofCorpsesRaised(int level, int value) def.setLvlDataInt("Cad1", level, 1, value) function presetNumberofCorpsesRaised(IntLevelClosure lc) def.setLevelsDataInt("Cad1", lvls, 1, lc) addTooltipProperty("Number of Corpses Raised", lc) function setInheritUpgrades(int level, bool value) def.setLvlDataBoolean("Uan3", level, 3, value) function presetInheritUpgrades(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uan3", lvls, 3, lc) addTooltipProperty("Inherit Upgrades", lc) public class AbilityDefinitionAgilityMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAgilityGain) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionRainofFirecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rainofFire1) function setMaximumDamageperWave(int level, real value) def.setLvlDataUnreal("Hbz6", level, 6, value) function presetMaximumDamageperWave(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz6", lvls, 6, lc) addTooltipProperty("Maximum Damage per Wave", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Hbz5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setNumberofWaves(int level, int value) def.setLvlDataInt("Hbz1", level, 1, value) function presetNumberofWaves(IntLevelClosure lc) def.setLevelsDataInt("Hbz1", lvls, 1, lc) addTooltipProperty("Number of Waves", lc) function setNumberofShards(int level, int value) def.setLvlDataInt("Hbz3", level, 3, value) function presetNumberofShards(IntLevelClosure lc) def.setLevelsDataInt("Hbz3", lvls, 3, lc) addTooltipProperty("Number of Shards", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hbz4", level, 4, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz4", lvls, 4, lc) addTooltipProperty("Building Reduction", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Hbz2", level, 2, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz2", lvls, 2, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionDreadlordSleep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sleep2) function setStunDuration(int level, real value) def.setLvlDataUnreal("Usl1", level, 1, value) function presetStunDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Usl1", lvls, 1, lc) addTooltipProperty("Stun Duration", lc) public class AbilityDefinitionRaiseDeadCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.raiseDeadCreep) function setUnitsSummonedTypeOne(int level, int value) def.setLvlDataInt("Rai1", level, 1, value) function presetUnitsSummonedTypeOne(IntLevelClosure lc) def.setLevelsDataInt("Rai1", lvls, 1, lc) addTooltipProperty("Units Summoned Type One", lc) function setUnitTypeForLimitCheck(int level, string value) def.setLvlDataString("Raiu", level, 0, value) function presetUnitTypeForLimitCheck(StringLevelClosure lc) def.setLevelsDataString("Raiu", lvls, 0, lc) addTooltipProperty("UnitTypeForLimitCheck", lc) function setUnitsSummonedTypeTwo(int level, int value) def.setLvlDataInt("Rai2", level, 2, value) function presetUnitsSummonedTypeTwo(IntLevelClosure lc) def.setLevelsDataInt("Rai2", lvls, 2, lc) addTooltipProperty("Units Summoned Type Two", lc) function setUnitTypeTwo(int level, string value) def.setLvlDataString("Rai4", level, 4, value) function presetUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("Rai4", lvls, 4, lc) addTooltipProperty("Unit Type Two", lc) function setUnitTypeOne(int level, string value) def.setLvlDataString("Rai3", level, 3, value) function presetUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("Rai3", lvls, 3, lc) addTooltipProperty("Unit Type One", lc) public class AbilityDefinitionFaerieFireAfa2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.faerieFireAfa2) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Fae2", level, 2, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Fae2", lvls, 2, lc) addTooltipProperty("Always Autocast", lc) function setDefenseReduction(int level, int value) def.setLvlDataInt("Fae1", level, 1, value) function presetDefenseReduction(IntLevelClosure lc) def.setLevelsDataInt("Fae1", lvls, 1, lc) addTooltipProperty("Defense Reduction", lc) public class AbilityDefinitionUnholyFrenzyWarlock extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unholyFrenzy1) function setAttackSpeedBonus(int level, real value) def.setLvlDataUnreal("Uhf1", level, 1, value) function presetAttackSpeedBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf1", lvls, 1, lc) addTooltipProperty("Attack Speed Bonus", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Uhf2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionPaladinDevotionAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devotionAura) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Had2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Had2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Had1", level, 1, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Had1", lvls, 1, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionTinkererRoboGoblinLevel0 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererRoboGoblinLevel0) function setStrengthBonus(int level, int value) def.setLvlDataInt("Nrg5", level, 5, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg5", lvls, 5, lc) addTooltipProperty("Strength Bonus", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setDefenseBonus(int level, int value) def.setLvlDataInt("Nrg6", level, 6, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg6", lvls, 6, lc) addTooltipProperty("Defense Bonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionRejuvinationcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rejuvinationcreep) function setManaPointsGained(int level, real value) def.setLvlDataUnreal("Rej2", level, 2, value) function presetManaPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej2", lvls, 2, lc) addTooltipProperty("Mana Points Gained", lc) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("Rej4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rej4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Rej1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("Rej3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("Rej3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) public class AbilityDefinitionRainofFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rainofFire) function setMaximumDamageperWave(int level, real value) def.setLvlDataUnreal("Hbz6", level, 6, value) function presetMaximumDamageperWave(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz6", lvls, 6, lc) addTooltipProperty("Maximum Damage per Wave", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Hbz5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setNumberofWaves(int level, int value) def.setLvlDataInt("Hbz1", level, 1, value) function presetNumberofWaves(IntLevelClosure lc) def.setLevelsDataInt("Hbz1", lvls, 1, lc) addTooltipProperty("Number of Waves", lc) function setNumberofShards(int level, int value) def.setLvlDataInt("Hbz3", level, 3, value) function presetNumberofShards(IntLevelClosure lc) def.setLevelsDataInt("Hbz3", lvls, 3, lc) addTooltipProperty("Number of Shards", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hbz4", level, 4, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz4", lvls, 4, lc) addTooltipProperty("Building Reduction", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Hbz2", level, 2, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz2", lvls, 2, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionItemAuraVampiric extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraVampiric) function setAttackDamageStolen(int level, real value) def.setLvlDataUnreal("Uav1", level, 1, value) function presetAttackDamageStolen(RealLevelClosure lc) def.setLevelsDataUnreal("Uav1", lvls, 1, lc) addTooltipProperty("Attack Damage Stolen", lc) public class AbilityDefinitionItemAuraUnholy extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraUnholy) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Uau3", level, 3, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uau3", lvls, 3, lc) addTooltipProperty("Percent Bonus", lc) function setLifeRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Uau2", level, 2, value) function presetLifeRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau2", lvls, 2, lc) addTooltipProperty("Life Regeneration Increase", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Uau1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) public class AbilityDefinitionArchMageBrillianceAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brillianceAura) function setManaRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Hab1", level, 1, value) function presetManaRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Hab1", lvls, 1, lc) addTooltipProperty("Mana Regeneration Increase", lc) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Hab2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hab2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) public class AbilityDefinitionNeutralRegenmanaonly extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaRegeneration) function setPercentage(int level, bool value) def.setLvlDataBoolean("Arm2", level, 2, value) function presetPercentage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Arm2", lvls, 2, lc) addTooltipProperty("Percentage", lc) function setAmountRegenerated(int level, real value) def.setLvlDataUnreal("Arm1", level, 1, value) function presetAmountRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("Arm1", lvls, 1, lc) addTooltipProperty("Amount Regenerated", lc) public class AbilityDefinitionRoarcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.roarcreep) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionAttackBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDamageBonus) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionAIas extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackSpeedBonus) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Isx1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Isx1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionReincarnationcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.reincarnation1) function setReincarnationDelay(int level, real value) def.setLvlDataUnreal("Ore1", level, 1, value) function presetReincarnationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Ore1", lvls, 1, lc) addTooltipProperty("Reincarnation Delay", lc) public class AbilityDefinitionItemAuraTrueshot extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraTrueshot) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ear1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ear1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionThunderClapThunderLizard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slam1) function setDamage(int level, real value) def.setLvlDataUnreal("Ctc1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setExtraDamageToTarget(int level, real value) def.setLvlDataUnreal("Ctc2", level, 2, value) function presetExtraDamageToTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc2", lvls, 2, lc) addTooltipProperty("ExtraDamageToTarget", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Ctc4", level, 4, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc4", lvls, 4, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Ctc3", level, 3, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc3", lvls, 3, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionWardenShadowStrike extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowStrike) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Esh2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Esh2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) function setInitialDamage(int level, real value) def.setLvlDataUnreal("Esh5", level, 5, value) function presetInitialDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Esh5", lvls, 5, lc) addTooltipProperty("Initial Damage", lc) function setDecayPower(int level, real value) def.setLvlDataUnreal("Esh4", level, 4, value) function presetDecayPower(RealLevelClosure lc) def.setLevelsDataUnreal("Esh4", lvls, 4, lc) addTooltipProperty("Decay Power", lc) function setDecayingDamage(int level, real value) def.setLvlDataUnreal("Esh1", level, 1, value) function presetDecayingDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Esh1", lvls, 1, lc) addTooltipProperty("Decaying Damage", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Esh3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Esh3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionBloodMageBanish extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.banish) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Hbn2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbn2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Hbn1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbn1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionItemAuraBrilliance extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraBrilliance) function setManaRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Hab1", level, 1, value) function presetManaRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Hab1", lvls, 1, lc) addTooltipProperty("Mana Regeneration Increase", lc) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Hab2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hab2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) public class AbilityDefinitionRainofChaos extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rainofChaos) function setAbilityforUnitCreation(int level, string value) def.setLvlDataString("Nrc1", level, 1, value) function presetAbilityforUnitCreation(StringLevelClosure lc) def.setLevelsDataString("Nrc1", lvls, 1, lc) addTooltipProperty("Abilityfor Unit Creation", lc) function setNumberofUnitsCreated(int level, int value) def.setLvlDataInt("Nrc2", level, 2, value) function presetNumberofUnitsCreated(IntLevelClosure lc) def.setLevelsDataInt("Nrc2", lvls, 2, lc) addTooltipProperty("Number of Units Created", lc) public class AbilityDefinitionBuildTinyGreatHall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.buildTinyGreatHall) function setUnitCreatedperplayerrace(int level, string value) def.setLvlDataString("Ibl1", level, 0, value) function presetUnitCreatedperplayerrace(StringLevelClosure lc) def.setLevelsDataString("Ibl1", lvls, 0, lc) addTooltipProperty("Unit Created per player race", lc) public class AbilityDefinitionCryptLordSpikedCarapace extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cryptLordSpikedCarapace) function setDefenseBonus(int level, real value) def.setLvlDataUnreal("Uts3", level, 3, value) function presetDefenseBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uts3", lvls, 3, lc) addTooltipProperty("Defense Bonus", lc) function setReceivedDamageFactor(int level, real value) def.setLvlDataUnreal("Uts2", level, 2, value) function presetReceivedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Uts2", lvls, 2, lc) addTooltipProperty("Received Damage Factor", lc) function setReturnedDamageFactor(int level, real value) def.setLvlDataUnreal("Uts1", level, 1, value) function presetReturnedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Uts1", lvls, 1, lc) addTooltipProperty("Returned Damage Factor", lc) public class AbilityDefinitionCenariusBeefyStarfall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.starfall1) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Esf1", level, 1, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Esf1", lvls, 1, lc) addTooltipProperty("Damage Dealt", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Esf2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Esf2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Esf3", level, 3, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Esf3", lvls, 3, lc) addTooltipProperty("Building Reduction", lc) public class AbilityDefinitionMoonPriestessStarfall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.starfall) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Esf1", level, 1, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Esf1", lvls, 1, lc) addTooltipProperty("Damage Dealt", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Esf2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Esf2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Esf3", level, 3, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Esf3", lvls, 3, lc) addTooltipProperty("Building Reduction", lc) public class AbilityDefinitionArchMageBlizzard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blizzard) function setMaximumDamageperWave(int level, real value) def.setLvlDataUnreal("Hbz6", level, 6, value) function presetMaximumDamageperWave(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz6", lvls, 6, lc) addTooltipProperty("Maximum Damage per Wave", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Hbz5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setNumberofWaves(int level, int value) def.setLvlDataInt("Hbz1", level, 1, value) function presetNumberofWaves(IntLevelClosure lc) def.setLevelsDataInt("Hbz1", lvls, 1, lc) addTooltipProperty("Number of Waves", lc) function setNumberofShards(int level, int value) def.setLvlDataInt("Hbz3", level, 3, value) function presetNumberofShards(IntLevelClosure lc) def.setLevelsDataInt("Hbz3", lvls, 3, lc) addTooltipProperty("Number of Shards", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hbz4", level, 4, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz4", lvls, 4, lc) addTooltipProperty("Building Reduction", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Hbz2", level, 2, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz2", lvls, 2, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionDefenseBonusPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defenseBonusPlus1) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionSearingArrowscreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.searingArrows) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Hfa1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hfa1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) public class AbilityDefinitionTinkererSummonFactoryLevel1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererSummonFactoryLevel1) function setSpawnInterval(int level, real value) def.setLvlDataUnreal("Nsy1", level, 1, value) function presetSpawnInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy1", lvls, 1, lc) addTooltipProperty("Spawn Interval", lc) function setLeashRange(int level, real value) def.setLvlDataUnreal("Nsy5", level, 5, value) function presetLeashRange(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy5", lvls, 5, lc) addTooltipProperty("Leash Range", lc) function setSpawnUnitID(int level, string value) def.setLvlDataString("Nsy2", level, 2, value) function presetSpawnUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsy2", lvls, 2, lc) addTooltipProperty("SpawnUnitID", lc) function setFactoryUnitID(int level, string value) def.setLvlDataString("Nsyu", level, 0, value) function presetFactoryUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsyu", lvls, 0, lc) addTooltipProperty("FactoryUnitID", lc) function setSpawnUnitOffset(int level, real value) def.setLvlDataUnreal("Nsy4", level, 4, value) function presetSpawnUnitOffset(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy4", lvls, 4, lc) addTooltipProperty("Spawn Unit Offset", lc) function setSpawnUnitDuration(int level, real value) def.setLvlDataUnreal("Nsy3", level, 3, value) function presetSpawnUnitDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy3", lvls, 3, lc) addTooltipProperty("Spawn Unit Duration", lc) public class AbilityDefinitionDefenseBonusPlus3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defenseBonusPlus3) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionDefenseBonusPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defenseBonusPlus2) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionTinkererSummonFactoryLevel3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererSummonFactoryLevel3) function setSpawnInterval(int level, real value) def.setLvlDataUnreal("Nsy1", level, 1, value) function presetSpawnInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy1", lvls, 1, lc) addTooltipProperty("Spawn Interval", lc) function setLeashRange(int level, real value) def.setLvlDataUnreal("Nsy5", level, 5, value) function presetLeashRange(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy5", lvls, 5, lc) addTooltipProperty("Leash Range", lc) function setSpawnUnitID(int level, string value) def.setLvlDataString("Nsy2", level, 2, value) function presetSpawnUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsy2", lvls, 2, lc) addTooltipProperty("SpawnUnitID", lc) function setFactoryUnitID(int level, string value) def.setLvlDataString("Nsyu", level, 0, value) function presetFactoryUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsyu", lvls, 0, lc) addTooltipProperty("FactoryUnitID", lc) function setSpawnUnitOffset(int level, real value) def.setLvlDataUnreal("Nsy4", level, 4, value) function presetSpawnUnitOffset(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy4", lvls, 4, lc) addTooltipProperty("Spawn Unit Offset", lc) function setSpawnUnitDuration(int level, real value) def.setLvlDataUnreal("Nsy3", level, 3, value) function presetSpawnUnitDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy3", lvls, 3, lc) addTooltipProperty("Spawn Unit Duration", lc) public class AbilityDefinitionSpiritWolfcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feralSpirit) function setSummonedUnit(int level, string value) def.setLvlDataString("Osf1", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Osf1", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Osf2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Osf2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionTinkererSummonFactoryLevel2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererSummonFactoryLevel2) function setSpawnInterval(int level, real value) def.setLvlDataUnreal("Nsy1", level, 1, value) function presetSpawnInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy1", lvls, 1, lc) addTooltipProperty("Spawn Interval", lc) function setLeashRange(int level, real value) def.setLvlDataUnreal("Nsy5", level, 5, value) function presetLeashRange(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy5", lvls, 5, lc) addTooltipProperty("Leash Range", lc) function setSpawnUnitID(int level, string value) def.setLvlDataString("Nsy2", level, 2, value) function presetSpawnUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsy2", lvls, 2, lc) addTooltipProperty("SpawnUnitID", lc) function setFactoryUnitID(int level, string value) def.setLvlDataString("Nsyu", level, 0, value) function presetFactoryUnitID(StringLevelClosure lc) def.setLevelsDataString("Nsyu", lvls, 0, lc) addTooltipProperty("FactoryUnitID", lc) function setSpawnUnitOffset(int level, real value) def.setLvlDataUnreal("Nsy4", level, 4, value) function presetSpawnUnitOffset(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy4", lvls, 4, lc) addTooltipProperty("Spawn Unit Offset", lc) function setSpawnUnitDuration(int level, real value) def.setLvlDataUnreal("Nsy3", level, 3, value) function presetSpawnUnitDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Nsy3", lvls, 3, lc) addTooltipProperty("Spawn Unit Duration", lc) public class AbilityDefinitionMaxManaBonusMost extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.maxManaBonusMost) function setMaxManaGained(int level, int value) def.setLvlDataInt("Iman", level, 1, value) function presetMaxManaGained(IntLevelClosure lc) def.setLevelsDataInt("Iman", lvls, 1, lc) addTooltipProperty("Max Mana Gained", lc) public class AbilityDefinitionShockwaveCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shockwave) function setDamage(int level, real value) def.setLvlDataUnreal("Osh1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Osh3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Osh3", lvls, 3, lc) addTooltipProperty("Distance", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Osh4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Osh4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Osh2", level, 2, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh2", lvls, 2, lc) addTooltipProperty("Maximum Damage", lc) public class AbilityDefinitionBuildTinyCastle extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.buildTinyCastle) function setUnitCreatedperplayerrace(int level, string value) def.setLvlDataString("Ibl1", level, 0, value) function presetUnitCreatedperplayerrace(StringLevelClosure lc) def.setLevelsDataString("Ibl1", lvls, 0, lc) addTooltipProperty("Unit Created per player race", lc) public class AbilityDefinitionSilenceCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.silenceCreep) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionSleepcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sleep1) function setStunDuration(int level, real value) def.setLvlDataUnreal("Usl1", level, 1, value) function presetStunDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Usl1", lvls, 1, lc) addTooltipProperty("Stun Duration", lc) public class AbilityDefinitionBashitem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bashitem) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Hbh5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hbh5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionDefenseBonusPlus5 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defenseBonusPlus5) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionMountainKingBash extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bash) function setChancetoBash(int level, real value) def.setLvlDataUnreal("Hbh1", level, 1, value) function presetChancetoBash(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh1", lvls, 1, lc) addTooltipProperty("Chance to Bash", lc) function setChancetoMiss(int level, real value) def.setLvlDataUnreal("Hbh4", level, 4, value) function presetChancetoMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh4", lvls, 4, lc) addTooltipProperty("Chance to Miss", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Hbh3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Hbh5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hbh5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) function setDamageMultiplier(int level, real value) def.setLvlDataUnreal("Hbh2", level, 2, value) function presetDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh2", lvls, 2, lc) addTooltipProperty("Damage Multiplier", lc) public class AbilityDefinitionSiphonManaCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.siphonManaCreep) function setBonusLifeDecay(int level, real value) def.setLvlDataUnreal("Ndr7", level, 7, value) function presetBonusLifeDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr7", lvls, 7, lc) addTooltipProperty("Bonus Life Decay", lc) function setManaTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr5", level, 5, value) function presetManaTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr5", lvls, 5, lc) addTooltipProperty("Mana Transferred Per Second", lc) function setBonusManaDecay(int level, real value) def.setLvlDataUnreal("Ndr9", level, 9, value) function presetBonusManaDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr9", lvls, 9, lc) addTooltipProperty("Bonus Mana Decay", lc) function setBonusLifeFactor(int level, real value) def.setLvlDataUnreal("Ndr6", level, 6, value) function presetBonusLifeFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr6", lvls, 6, lc) addTooltipProperty("Bonus Life Factor", lc) function setBonusManaFactor(int level, real value) def.setLvlDataUnreal("Ndr8", level, 8, value) function presetBonusManaFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr8", lvls, 8, lc) addTooltipProperty("Bonus Mana Factor", lc) function setLifeTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr4", level, 4, value) function presetLifeTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr4", lvls, 4, lc) addTooltipProperty("Life Transferred Per Second", lc) public class AbilityDefinitionDefenseBonusPlus4 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defenseBonusPlus4) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionBuildTinyScoutTower extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.buildTinyScoutTower) function setUnitCreatedperplayerrace(int level, string value) def.setLvlDataString("Ibl1", level, 0, value) function presetUnitCreatedperplayerrace(StringLevelClosure lc) def.setLevelsDataString("Ibl1", lvls, 0, lc) addTooltipProperty("Unit Created per player race", lc) public class AbilityDefinitionItemCloakOfFlames extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemImmolation) function setExtraManaRequired(int level, int value) def.setLvlDataInt("Icfx", level, 3, value) function presetExtraManaRequired(IntLevelClosure lc) def.setLevelsDataInt("Icfx", lvls, 3, lc) addTooltipProperty("Extra Mana Required", lc) function setDamagePerDuration(int level, int value) def.setLvlDataInt("Icfd", level, 1, value) function presetDamagePerDuration(IntLevelClosure lc) def.setLevelsDataInt("Icfd", lvls, 1, lc) addTooltipProperty("Damage Per Duration", lc) function setManaUsedPerSecond(int level, int value) def.setLvlDataInt("Icfm", level, 2, value) function presetManaUsedPerSecond(IntLevelClosure lc) def.setLevelsDataInt("Icfm", lvls, 2, lc) addTooltipProperty("Mana Used Per Second", lc) public class AbilityDefinitionItemAuraCommand extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAuraCommand) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setAttackDamageIncrease(int level, real value) def.setLvlDataUnreal("Cac1", level, 1, value) function presetAttackDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Cac1", lvls, 1, lc) addTooltipProperty("Attack Damage Increase", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionHarvest extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.harvest) function setGoldCapacity(int level, int value) def.setLvlDataInt("Har3", level, 3, value) function presetGoldCapacity(IntLevelClosure lc) def.setLevelsDataInt("Har3", lvls, 3, lc) addTooltipProperty("Gold Capacity", lc) function setLumberCapacity(int level, int value) def.setLvlDataInt("Har2", level, 2, value) function presetLumberCapacity(IntLevelClosure lc) def.setLevelsDataInt("Har2", lvls, 2, lc) addTooltipProperty("Lumber Capacity", lc) function setDamagetoTree(int level, int value) def.setLvlDataInt("Har1", level, 1, value) function presetDamagetoTree(IntLevelClosure lc) def.setLevelsDataInt("Har1", lvls, 1, lc) addTooltipProperty("Damage to Tree", lc) public class AbilityDefinitionMagicImmunityDragons extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spellImmunity1) function setMagicDamageFactor(int level, real value) def.setLvlDataUnreal("mim1", level, 1, value) function presetMagicDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("mim1", lvls, 1, lc) addTooltipProperty("Magic Damage Factor", lc) public class AbilityDefinitionMagicImmunityArchimonde extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spellImmunity) function setMagicDamageFactor(int level, real value) def.setLvlDataUnreal("mim1", level, 1, value) function presetMagicDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("mim1", lvls, 1, lc) addTooltipProperty("Magic Damage Factor", lc) public class AbilityDefinitionOrbofCorruption extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofCorruption) function setArmorPenalty(int level, int value) def.setLvlDataInt("Iarp", level, 2, value) function presetArmorPenalty(IntLevelClosure lc) def.setLevelsDataInt("Iarp", lvls, 2, lc) addTooltipProperty("Armor Penalty", lc) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonusDice(int level, int value) def.setLvlDataInt("Idic", level, 1, value) function presetDamageBonusDice(IntLevelClosure lc) def.setLevelsDataInt("Idic", lvls, 1, lc) addTooltipProperty("Damage Bonus Dice", lc) public class AbilityDefinitionWardenSpiritofVengeance extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.wardenSpiritofVengeance) function setSummonedUnitType(int level, string value) def.setLvlDataString("Esvu", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Esvu", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Esv1", level, 1, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Esv1", lvls, 1, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionItemChangeTOD extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemChangeTOD) function setNewTimeofDayMinute(int level, int value) def.setLvlDataInt("ict2", level, 2, value) function presetNewTimeofDayMinute(IntLevelClosure lc) def.setLevelsDataInt("ict2", lvls, 2, lc) addTooltipProperty("New Time of Day Minute", lc) function setNewTimeofDayHour(int level, int value) def.setLvlDataInt("ict1", level, 1, value) function presetNewTimeofDayHour(IntLevelClosure lc) def.setLevelsDataInt("ict1", lvls, 1, lc) addTooltipProperty("New Time of Day Hour", lc) public class AbilityDefinitionMoonPriestessScout extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.scout) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionCycloneAIcy extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cycloneAIcy) function setCanBeDispelled(int level, bool value) def.setLvlDataBoolean("cyc1", level, 1, value) function presetCanBeDispelled(BooleanLevelClosure lc) def.setLevelsDataBoolean("cyc1", lvls, 1, lc) addTooltipProperty("CanBeDispelled", lc) public class AbilityDefinitionExhume extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.exhume) function setUnitType(int level, string value) def.setLvlDataString("exhu", level, 0, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("exhu", lvls, 0, lc) addTooltipProperty("Unit Type", lc) function setMaximumNumberofCorpses(int level, int value) def.setLvlDataInt("exh1", level, 1, value) function presetMaximumNumberofCorpses(IntLevelClosure lc) def.setLevelsDataInt("exh1", lvls, 1, lc) addTooltipProperty("Maximum Number of Corpses", lc) public class AbilityDefinitionItemCommand extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemCommand) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Icre", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Icre", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionExperienceModgreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.experienceModgreater) function setExperienceGained(int level, int value) def.setLvlDataInt("Ixpg", level, 1, value) function presetExperienceGained(IntLevelClosure lc) def.setLevelsDataInt("Ixpg", lvls, 1, lc) addTooltipProperty("Experience Gained", lc) public class AbilityDefinitionAIde extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemArmorBonus) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionDefendItem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defendItem) function setDamageTaken(int level, real value) def.setLvlDataUnreal("Def1", level, 1, value) function presetDamageTaken(RealLevelClosure lc) def.setLevelsDataUnreal("Def1", lvls, 1, lc) addTooltipProperty("Damage Taken", lc) function setChancetoDeflect(int level, real value) def.setLvlDataUnreal("Def6", level, 6, value) function presetChancetoDeflect(RealLevelClosure lc) def.setLevelsDataUnreal("Def6", lvls, 6, lc) addTooltipProperty("Chance to Deflect", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Def3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Def4", level, 4, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def4", lvls, 4, lc) addTooltipProperty("Attack Speed Factor", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Def2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Def2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setDeflectDamageTakenSpells(int level, real value) def.setLvlDataUnreal("Def8", level, 8, value) function presetDeflectDamageTakenSpells(RealLevelClosure lc) def.setLevelsDataUnreal("Def8", lvls, 8, lc) addTooltipProperty("Deflect Damage Taken Spells", lc) function setDeflectDamageTakenPiercing(int level, real value) def.setLvlDataUnreal("Def7", level, 7, value) function presetDeflectDamageTakenPiercing(RealLevelClosure lc) def.setLevelsDataUnreal("Def7", lvls, 7, lc) addTooltipProperty("Deflect Damage Taken Piercing", lc) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Def5", level, 5, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Def5", lvls, 5, lc) addTooltipProperty("Magic Damage Reduction", lc) public class AbilityDefinitionOrbofDarkness extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofDarkness) function setChanceToHitUnits(int level, real value) def.setLvlDataUnreal("Iob2", level, 2, value) function presetChanceToHitUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Iob2", lvls, 2, lc) addTooltipProperty("Chance To Hit Units", lc) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setChanceToHitSummons(int level, real value) def.setLvlDataUnreal("Iob4", level, 4, value) function presetChanceToHitSummons(RealLevelClosure lc) def.setLevelsDataUnreal("Iob4", lvls, 4, lc) addTooltipProperty("Chance To Hit Summons", lc) function setChanceToHitHeros(int level, real value) def.setLvlDataUnreal("Iob3", level, 3, value) function presetChanceToHitHeros(RealLevelClosure lc) def.setLevelsDataUnreal("Iob3", lvls, 3, lc) addTooltipProperty("Chance To Hit Heros", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setEffectAbility(int level, string value) def.setLvlDataString("Iobu", level, 0, value) function presetEffectAbility(StringLevelClosure lc) def.setLevelsDataString("Iobu", lvls, 0, lc) addTooltipProperty("Effect Ability", lc) public class AbilityDefinitionItemDispelAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDispel) function setDamageToSummonedUnits(int level, int value) def.setLvlDataInt("Idid", level, 2, value) function presetDamageToSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Idid", lvls, 2, lc) addTooltipProperty("DamageToSummonedUnits", lc) function setManaLossPerUnit(int level, int value) def.setLvlDataInt("Idim", level, 1, value) function presetManaLossPerUnit(IntLevelClosure lc) def.setLevelsDataInt("Idim", lvls, 1, lc) addTooltipProperty("Mana Loss Per Unit", lc) public class AbilityDefinitionLightningShieldcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lightningShieldcreep) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Lsh1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Lsh1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionCargoHoldShip extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHoldShip) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionCannibalize extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cannibalize) function setMaxHitPoints(int level, real value) def.setLvlDataUnreal("Can2", level, 2, value) function presetMaxHitPoints(RealLevelClosure lc) def.setLevelsDataUnreal("Can2", lvls, 2, lc) addTooltipProperty("Max Hit Points", lc) function setHitPointsperSecond(int level, real value) def.setLvlDataUnreal("Can1", level, 1, value) function presetHitPointsperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Can1", lvls, 1, lc) addTooltipProperty("Hit Points per Second", lc) public class AbilityDefinitionCargoHoldTank extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHoldTank) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionItemDefenseAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemTemporaryAreaArmorBonus) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihp2", level, 2, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihp2", lvls, 2, lc) addTooltipProperty("Hit Points Gained", lc) function setManaPointsGained(int level, int value) def.setLvlDataInt("Imp2", level, 3, value) function presetManaPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Imp2", lvls, 3, lc) addTooltipProperty("Mana Points Gained", lc) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionCargoHoldTransport extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHoldTransport) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionCargoHoldMeatWagon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHoldMeatWagon) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionItemDispelChain extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDispelChain) function setMaximumDispelledUnits(int level, int value) def.setLvlDataInt("idc3", level, 3, value) function presetMaximumDispelledUnits(IntLevelClosure lc) def.setLevelsDataInt("idc3", lvls, 3, lc) addTooltipProperty("Maximum Dispelled Units", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("idc2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("idc2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) function setManaLossPerUnit(int level, real value) def.setLvlDataUnreal("idc1", level, 1, value) function presetManaLossPerUnit(RealLevelClosure lc) def.setLevelsDataUnreal("idc1", lvls, 1, lc) addTooltipProperty("Mana Loss Per Unit", lc) public class AbilityDefinitionTaurenChieftainEnduranceAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.enduranceAura1) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae2", level, 2, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae2", lvls, 2, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionItemDefenseAoePlusHealing extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDefenseAoePlusHealing) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihp2", level, 2, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihp2", lvls, 2, lc) addTooltipProperty("Hit Points Gained", lc) function setManaPointsGained(int level, int value) def.setLvlDataInt("Imp2", level, 3, value) function presetManaPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Imp2", lvls, 3, lc) addTooltipProperty("Mana Points Gained", lc) function setDefenseBonus(int level, int value) def.setLvlDataInt("Idef", level, 1, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Idef", lvls, 1, lc) addTooltipProperty("Defense Bonus", lc) public class AbilityDefinitionMagicImmunityCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.magicImmunityCreep) function setMagicDamageFactor(int level, real value) def.setLvlDataUnreal("mim1", level, 1, value) function presetMagicDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("mim1", lvls, 1, lc) addTooltipProperty("Magic Damage Factor", lc) public class AbilityDefinitionKeeperoftheGroveTranquility extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tranquility) function setHealInterval(int level, real value) def.setLvlDataUnreal("Etq2", level, 2, value) function presetHealInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Etq2", lvls, 2, lc) addTooltipProperty("Heal Interval", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Etq3", level, 3, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Etq3", lvls, 3, lc) addTooltipProperty("Building Reduction", lc) function setLifeHealed(int level, real value) def.setLvlDataUnreal("Etq1", level, 1, value) function presetLifeHealed(RealLevelClosure lc) def.setLevelsDataUnreal("Etq1", lvls, 1, lc) addTooltipProperty("Life Healed", lc) public class AbilityDefinitionWindWalk extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.windWalk1) function setBackstabDamage(int level, real value) def.setLvlDataUnreal("Owk3", level, 3, value) function presetBackstabDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Owk3", lvls, 3, lc) addTooltipProperty("Backstab Damage", lc) function setBackstabDamage(int level, bool value) def.setLvlDataBoolean("Owk4", level, 4, value) function presetBackstabDamage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Owk4", lvls, 4, lc) addTooltipProperty("Backstab Damage Enabled", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Owk2", level, 2, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Owk2", lvls, 2, lc) addTooltipProperty("Movement Speed Increase", lc) function setTransitionTime(int level, real value) def.setLvlDataUnreal("Owk1", level, 1, value) function presetTransitionTime(RealLevelClosure lc) def.setLevelsDataUnreal("Owk1", lvls, 1, lc) addTooltipProperty("Transition Time", lc) public class AbilityDefinitionManaShieldCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaShieldCreep) function setDamageAbsorbed(int level, real value) def.setLvlDataUnreal("Nms2", level, 2, value) function presetDamageAbsorbed(RealLevelClosure lc) def.setLevelsDataUnreal("Nms2", lvls, 2, lc) addTooltipProperty("Damage Absorbed", lc) function setManaperHitPoint(int level, real value) def.setLvlDataUnreal("Nms1", level, 1, value) function presetManaperHitPoint(RealLevelClosure lc) def.setLevelsDataUnreal("Nms1", lvls, 1, lc) addTooltipProperty("Mana per Hit Point", lc) public class AbilityDefinitionWateryMinion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.wateryMinion) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionItemDispelAoeWithCooldown extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDispelAoeWithCooldown) function setDamageToSummonedUnits(int level, int value) def.setLvlDataInt("Idid", level, 2, value) function presetDamageToSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Idid", lvls, 2, lc) addTooltipProperty("DamageToSummonedUnits", lc) function setManaLossPerUnit(int level, int value) def.setLvlDataInt("Idim", level, 1, value) function presetManaLossPerUnit(IntLevelClosure lc) def.setLevelsDataInt("Idim", lvls, 1, lc) addTooltipProperty("Mana Loss Per Unit", lc) public class AbilityDefinitionEvilIllidanMetamorphosis extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.evilIllidanMetamorphosis) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormHitPointBonus(int level, real value) def.setLvlDataUnreal("Eme5", level, 5, value) function presetAlternateFormHitPointBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Eme5", lvls, 5, lc) addTooltipProperty("AlternateFormHitPointBonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionImpaleCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.impaleCreep) function setWaveTimeseconds(int level, real value) def.setLvlDataUnreal("Uim2", level, 2, value) function presetWaveTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uim2", lvls, 2, lc) addTooltipProperty("Wave Time Seconds", lc) function setAirTimeseconds(int level, real value) def.setLvlDataUnreal("Uim4", level, 4, value) function presetAirTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uim4", lvls, 4, lc) addTooltipProperty("Air Time Seconds", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Uim3", level, 3, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Uim3", lvls, 3, lc) addTooltipProperty("Damage Dealt", lc) function setWaveDistance(int level, real value) def.setLvlDataUnreal("Uim1", level, 1, value) function presetWaveDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Uim1", lvls, 1, lc) addTooltipProperty("Wave Distance", lc) public class AbilityDefinitionMonsooncreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.monsooncreep) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Esf1", level, 1, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Esf1", lvls, 1, lc) addTooltipProperty("Damage Dealt", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Esf2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Esf2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Esf3", level, 3, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Esf3", lvls, 3, lc) addTooltipProperty("Building Reduction", lc) public class AbilityDefinitionDevourMagic extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devourMagic) function setManaPerBuff(int level, real value) def.setLvlDataUnreal("dvm4", level, 4, value) function presetManaPerBuff(RealLevelClosure lc) def.setLevelsDataUnreal("dvm4", lvls, 4, lc) addTooltipProperty("Mana Per Buff", lc) function setLifePerUnit(int level, real value) def.setLvlDataUnreal("dvm1", level, 1, value) function presetLifePerUnit(RealLevelClosure lc) def.setLevelsDataUnreal("dvm1", lvls, 1, lc) addTooltipProperty("Life Per Unit", lc) function setManaPerUnit(int level, real value) def.setLvlDataUnreal("dvm2", level, 2, value) function presetManaPerUnit(RealLevelClosure lc) def.setLevelsDataUnreal("dvm2", lvls, 2, lc) addTooltipProperty("Mana Per Unit", lc) function setIgnoreFriendlyBuffs(int level, bool value) def.setLvlDataBoolean("dvm6", level, 6, value) function presetIgnoreFriendlyBuffs(BooleanLevelClosure lc) def.setLevelsDataBoolean("dvm6", lvls, 6, lc) addTooltipProperty("Ignore Friendly Buffs", lc) function setLifePerBuff(int level, real value) def.setLvlDataUnreal("dvm3", level, 3, value) function presetLifePerBuff(RealLevelClosure lc) def.setLevelsDataUnreal("dvm3", lvls, 3, lc) addTooltipProperty("Life Per Buff", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("dvm5", level, 5, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("dvm5", lvls, 5, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionEvasion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.evasion) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Eev1", level, 1, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Eev1", lvls, 1, lc) addTooltipProperty("Chance to Evade", lc) public class AbilityDefinitionCargoHoldDevour extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devourCargo) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Dev2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Dev2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Dev3", level, 3, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Dev3", lvls, 3, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionExperienceMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemExperienceGain) function setExperienceGained(int level, int value) def.setLvlDataInt("Ixpg", level, 1, value) function presetExperienceGained(IntLevelClosure lc) def.setLevelsDataInt("Ixpg", lvls, 1, lc) addTooltipProperty("Experience Gained", lc) public class AbilityDefinitionCloudofFogItem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cloudofFogItem) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionDisenchantold extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.disenchantold) function setManaLoss(int level, real value) def.setLvlDataUnreal("Adm1", level, 1, value) function presetManaLoss(RealLevelClosure lc) def.setLevelsDataUnreal("Adm1", lvls, 1, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Adm2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Adm2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionPillage extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pillage) function setAccumulationStep(int level, int value) def.setLvlDataInt("Sal2", level, 2, value) function presetAccumulationStep(IntLevelClosure lc) def.setLevelsDataInt("Sal2", lvls, 2, lc) addTooltipProperty("Accumulation Step", lc) function setSalvageCostRatio(int level, real value) def.setLvlDataUnreal("Sal1", level, 1, value) function presetSalvageCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Sal1", lvls, 1, lc) addTooltipProperty("Salvage Cost Ratio", lc) public class AbilityDefinitionInventoryPackMule extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inventoryPackMule) function setCanDropItems(int level, bool value) def.setLvlDataBoolean("inv5", level, 5, value) function presetCanDropItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv5", lvls, 5, lc) addTooltipProperty("Can Drop Items", lc) function setCanUseItems(int level, bool value) def.setLvlDataBoolean("inv3", level, 3, value) function presetCanUseItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv3", lvls, 3, lc) addTooltipProperty("Can Use Items", lc) function setDropItemsOnDeath(int level, bool value) def.setLvlDataBoolean("inv2", level, 2, value) function presetDropItemsOnDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv2", lvls, 2, lc) addTooltipProperty("DropItemsOnDeath", lc) function setCanGetItems(int level, bool value) def.setLvlDataBoolean("inv4", level, 4, value) function presetCanGetItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv4", lvls, 4, lc) addTooltipProperty("Can Get Items", lc) function setItemCapacity(int level, int value) def.setLvlDataInt("inv1", level, 1, value) function presetItemCapacity(IntLevelClosure lc) def.setLevelsDataInt("inv1", lvls, 1, lc) addTooltipProperty("Item Capacity", lc) public class AbilityDefinitionFigurineFurbolg extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemFurbolgSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionFigurineFelHound extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemFelhoundSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionFireDamageBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackFireBonus) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) public class AbilityDefinitionHealReductionBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackHealReduction) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setHealingMultiplier(int level, real value) def.setLvlDataUnreal("Iofr", level, 2, value) function presetHealingMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Iofr", lvls, 2, lc) addTooltipProperty("Heal Reduction", lc) public class AbilityDefinitionDetectMagicSentinel extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.magicSentry) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionFirelordVolcano extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.volcano) function setDestructibleID(int level, string value) def.setLvlDataString("Nvcu", level, 0, value) function presetDestructibleID(StringLevelClosure lc) def.setLevelsDataString("Nvcu", lvls, 0, lc) addTooltipProperty("DestructibleID", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Nvc4", level, 4, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Nvc4", lvls, 4, lc) addTooltipProperty("Building Damage Factor", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Nvc5", level, 5, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Nvc5", lvls, 5, lc) addTooltipProperty("Full Damage Amount", lc) function setRockRingCount(int level, int value) def.setLvlDataInt("Nvc1", level, 1, value) function presetRockRingCount(IntLevelClosure lc) def.setLevelsDataInt("Nvc1", lvls, 1, lc) addTooltipProperty("Rock Ring Count", lc) function setWaveInterval(int level, real value) def.setLvlDataUnreal("Nvc3", level, 3, value) function presetWaveInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nvc3", lvls, 3, lc) addTooltipProperty("Wave Interval", lc) function setHalfDamageFactor(int level, real value) def.setLvlDataUnreal("Nvc6", level, 6, value) function presetHalfDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Nvc6", lvls, 6, lc) addTooltipProperty("Half Damage Factor", lc) function setWaveCount(int level, int value) def.setLvlDataInt("Nvc2", level, 2, value) function presetWaveCount(IntLevelClosure lc) def.setLevelsDataInt("Nvc2", lvls, 2, lc) addTooltipProperty("Wave Count", lc) public class AbilityDefinitionFigurineRedDrake extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemRedDrakeSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionHealingWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healingWard1) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionFlareGun extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.flareGun) function setDetectionType(int level, string value) def.setLvlDataString("Ifa1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Ifa1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) function setDelayForTargetEffect(int level, real value) def.setLvlDataUnreal("Idel", level, 2, value) function presetDelayForTargetEffect(RealLevelClosure lc) def.setLevelsDataUnreal("Idel", lvls, 2, lc) addTooltipProperty("Delay For Target Effect", lc) public class AbilityDefinitionLoadEntangledGoldMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.loadWisp) function setAllowedUnitType(int level, string value) def.setLvlDataString("Loa1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Loa1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionNeutralRegenhealthonly extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lifeRegenerationAura) function setPercentage(int level, bool value) def.setLvlDataBoolean("Oar2", level, 2, value) function presetPercentage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Oar2", lvls, 2, lc) addTooltipProperty("Percentage", lc) function setAmountofHitPointsRegenerated(int level, real value) def.setLvlDataUnreal("Oar1", level, 1, value) function presetAmountofHitPointsRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("Oar1", lvls, 1, lc) addTooltipProperty("Amount of Hit Points Regenerated", lc) public class AbilityDefinitionAuraRegenerationHealingWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healingWardAura) function setPercentage(int level, bool value) def.setLvlDataBoolean("Oar2", level, 2, value) function presetPercentage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Oar2", lvls, 2, lc) addTooltipProperty("Percentage", lc) function setAmountofHitPointsRegenerated(int level, real value) def.setLvlDataUnreal("Oar1", level, 1, value) function presetAmountofHitPointsRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("Oar1", lvls, 1, lc) addTooltipProperty("Amount of Hit Points Regenerated", lc) public class AbilityDefinitionLoadNavies extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.loadNavies) function setAllowedUnitType(int level, string value) def.setLvlDataString("Loa1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Loa1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionInvisibility extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.invisibility) function setTransitionTimeseconds(int level, real value) def.setLvlDataUnreal("Ivs1", level, 1, value) function presetTransitionTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Ivs1", lvls, 1, lc) addTooltipProperty("Transition Time Seconds", lc) public class AbilityDefinitionSentryWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sentryWard) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionFigurineRockGolem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemRockGolemSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionFigurineSkeleton extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemSkeletonSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionSubmergeMyrmidon extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.submergeMyrmidon) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionSubmergeRoyalGuard extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.submergeRoyalGuard) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionFigurineDoomGuard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemDoomGuardSummon) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionSubmergeSnapDragon extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.submergeSnapDragon) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionItemHealLesser extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealLesser) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionItemHealGreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealGreater) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionItemHealLeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealLeast) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionGiveGold extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.giveGold) function setGoldGiven(int level, int value) def.setLvlDataInt("Igol", level, 1, value) function presetGoldGiven(IntLevelClosure lc) def.setLevelsDataInt("Igol", lvls, 1, lc) addTooltipProperty("Gold Given", lc) public class AbilityDefinitionIntelligenceBonusPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.intelligenceBonusPlus1) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionBurrowscarablvl2 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.burrowscarablvl2) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionIntelligenceBonusPlus4 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.intelligenceBonusPlus4) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionFirelordSummonLavaSpawn extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.summonLavaSpawn) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setLifeDurationSplitBonus(int level, real value) def.setLvlDataUnreal("Nlm5", level, 5, value) function presetLifeDurationSplitBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Nlm5", lvls, 5, lc) addTooltipProperty("Life Duration Split Bonus", lc) function setMaxHitpointFactor(int level, real value) def.setLvlDataUnreal("Nlm4", level, 4, value) function presetMaxHitpointFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Nlm4", lvls, 4, lc) addTooltipProperty("Max Hitpoint Factor", lc) function setGenerationCount(int level, int value) def.setLvlDataInt("Nlm6", level, 6, value) function presetGenerationCount(IntLevelClosure lc) def.setLevelsDataInt("Nlm6", lvls, 6, lc) addTooltipProperty("Generation Count", lc) function setSplitDelay(int level, real value) def.setLvlDataUnreal("Nlm2", level, 2, value) function presetSplitDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nlm2", lvls, 2, lc) addTooltipProperty("Split Delay", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setSplitAttackCount(int level, int value) def.setLvlDataInt("Nlm3", level, 3, value) function presetSplitAttackCount(IntLevelClosure lc) def.setLevelsDataInt("Nlm3", lvls, 3, lc) addTooltipProperty("Split Attack Count", lc) public class AbilityDefinitionBurrowscarablvl3 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.burrowscarablvl3) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionHeal extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.heal) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Hea1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Hea1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionIntelligenceBonusPlus3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.intelligenceBonusPlus3) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionIntelligenceBonusPlus6 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.intelligenceBonusPlus6) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionBerserk extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.berserkerRage1) function setDamageTakenIncrease(int level, real value) def.setLvlDataUnreal("bsk3", level, 3, value) function presetDamageTakenIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("bsk3", lvls, 3, lc) addTooltipProperty("Damage Taken Increase", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("bsk1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("bsk1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("bsk2", level, 2, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("bsk2", lvls, 2, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionBeserk extends AbilityDefinitionBerserk construct(int newAbilityId) super(newAbilityId) public class AbilityDefinitionReplenishLifeMana extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.replenishLifeMana) function setMinimumManaRequired(int level, real value) def.setLvlDataUnreal("Rpb4", level, 4, value) function presetMinimumManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Rpb4", lvls, 4, lc) addTooltipProperty("Minimum Mana Required", lc) function setMaximumUnitsChargedToCaster(int level, int value) def.setLvlDataInt("Rpb5", level, 5, value) function presetMaximumUnitsChargedToCaster(IntLevelClosure lc) def.setLevelsDataInt("Rpb5", lvls, 5, lc) addTooltipProperty("MaximumUnitsChargedToCaster", lc) function setMinimumLifeRequired(int level, real value) def.setLvlDataUnreal("Rpb3", level, 3, value) function presetMinimumLifeRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Rpb3", lvls, 3, lc) addTooltipProperty("Minimum Life Required", lc) function setManaPointsGained(int level, real value) def.setLvlDataUnreal("Rej2", level, 2, value) function presetManaPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej2", lvls, 2, lc) addTooltipProperty("Mana Points Gained", lc) function setMaximumUnitsAffected(int level, int value) def.setLvlDataInt("Rpb6", level, 0, value) function presetMaximumUnitsAffected(IntLevelClosure lc) def.setLevelsDataInt("Rpb6", lvls, 0, lc) addTooltipProperty("Maximum Units Affected", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Rej1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionUltraVisionGlyph extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ultraVisionGlyph) function setUpgradeLevels(int level, int value) def.setLvlDataInt("Igl1", level, 1, value) function presetUpgradeLevels(IntLevelClosure lc) def.setLevelsDataInt("Igl1", lvls, 1, lc) addTooltipProperty("Upgrade Levels", lc) function setUpgradeType(int level, string value) def.setLvlDataString("Iglu", level, 0, value) function presetUpgradeType(StringLevelClosure lc) def.setLevelsDataString("Iglu", lvls, 0, lc) addTooltipProperty("Upgrade Type", lc) public class AbilityDefinitionReplenishLife extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.replenishLife) function setMinimumLifeRequired(int level, real value) def.setLvlDataUnreal("Rpb3", level, 3, value) function presetMinimumLifeRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Rpb3", lvls, 3, lc) addTooltipProperty("Minimum Life Required", lc) function setMaximumUnitsChargedToCaster(int level, int value) def.setLvlDataInt("Rpb5", level, 5, value) function presetMaximumUnitsChargedToCaster(IntLevelClosure lc) def.setLevelsDataInt("Rpb5", lvls, 5, lc) addTooltipProperty("MaximumUnitsChargedToCaster", lc) function setMaximumUnitsAffected(int level, int value) def.setLvlDataInt("Rpb6", level, 0, value) function presetMaximumUnitsAffected(IntLevelClosure lc) def.setLevelsDataInt("Rpb6", lvls, 0, lc) addTooltipProperty("Maximum Units Affected", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Rej1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionInventory2slotunitUndead extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inventory2slotunitUndead) function setCanDropItems(int level, bool value) def.setLvlDataBoolean("inv5", level, 5, value) function presetCanDropItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv5", lvls, 5, lc) addTooltipProperty("Can Drop Items", lc) function setCanUseItems(int level, bool value) def.setLvlDataBoolean("inv3", level, 3, value) function presetCanUseItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv3", lvls, 3, lc) addTooltipProperty("Can Use Items", lc) function setDropItemsOnDeath(int level, bool value) def.setLvlDataBoolean("inv2", level, 2, value) function presetDropItemsOnDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv2", lvls, 2, lc) addTooltipProperty("DropItemsOnDeath", lc) function setCanGetItems(int level, bool value) def.setLvlDataBoolean("inv4", level, 4, value) function presetCanGetItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv4", lvls, 4, lc) addTooltipProperty("Can Get Items", lc) function setItemCapacity(int level, int value) def.setLvlDataInt("inv1", level, 1, value) function presetItemCapacity(IntLevelClosure lc) def.setLevelsDataInt("inv1", lvls, 1, lc) addTooltipProperty("Item Capacity", lc) public class AbilityDefinitionManaBattery extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.replenishManaandLife) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Mbt2", level, 2, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt2", lvls, 2, lc) addTooltipProperty("Hit Points Gained", lc) function setWaterHeight(int level, real value) def.setLvlDataUnreal("Mbt4", level, 4, value) function presetWaterHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt4", lvls, 4, lc) addTooltipProperty("Water Height", lc) function setAutocastRequirement(int level, real value) def.setLvlDataUnreal("Mbt3", level, 3, value) function presetAutocastRequirement(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt3", lvls, 3, lc) addTooltipProperty("Autocast Requirement", lc) function setManaGained(int level, real value) def.setLvlDataUnreal("Mbt1", level, 1, value) function presetManaGained(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt1", lvls, 1, lc) addTooltipProperty("Mana Gained", lc) function setRegenerateOnlyAtNight(int level, bool value) def.setLvlDataBoolean("Mbt5", level, 5, value) function presetRegenerateOnlyAtNight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Mbt5", lvls, 5, lc) addTooltipProperty("RegenerateOnlyAtNight", lc) public class AbilityDefinitionReplenishMana extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.replenishMana) function setMinimumManaRequired(int level, real value) def.setLvlDataUnreal("Rpb4", level, 4, value) function presetMinimumManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Rpb4", lvls, 4, lc) addTooltipProperty("Minimum Mana Required", lc) function setMaximumUnitsChargedToCaster(int level, int value) def.setLvlDataInt("Rpb5", level, 5, value) function presetMaximumUnitsChargedToCaster(IntLevelClosure lc) def.setLevelsDataInt("Rpb5", lvls, 5, lc) addTooltipProperty("MaximumUnitsChargedToCaster", lc) function setManaPointsGained(int level, real value) def.setLvlDataUnreal("Rej2", level, 2, value) function presetManaPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej2", lvls, 2, lc) addTooltipProperty("Mana Points Gained", lc) function setMaximumUnitsAffected(int level, int value) def.setLvlDataInt("Rpb6", level, 0, value) function presetMaximumUnitsAffected(IntLevelClosure lc) def.setLevelsDataInt("Rpb6", lvls, 0, lc) addTooltipProperty("Maximum Units Affected", lc) public class AbilityDefinitionHealCreepNormal extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healCreepNormal) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Hea1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Hea1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionHealCreepHigh extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healCreepHigh) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Hea1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Hea1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionAuraSlow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slowAura) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo1", level, 1, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo1", lvls, 1, lc) addTooltipProperty("Movement Speed Factor", lc) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Slo3", level, 3, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Slo3", lvls, 3, lc) addTooltipProperty("Always Autocast", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionCurse extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.curse) function setChancetoMiss(int level, real value) def.setLvlDataUnreal("Crs", level, 1, value) function presetChancetoMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Crs", lvls, 1, lc) addTooltipProperty("Chance to Miss", lc) public class AbilityDefinitionSuperEarthquake extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.earthquake) function setUnitsSlowed(int level, real value) def.setLvlDataUnreal("Oeq3", level, 3, value) function presetUnitsSlowed(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq3", lvls, 3, lc) addTooltipProperty("Units Slowed", lc) function setEffectDelay(int level, real value) def.setLvlDataUnreal("Oeq1", level, 1, value) function presetEffectDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq1", lvls, 1, lc) addTooltipProperty("Effect Delay", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Oeq4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDamageperSecondtoBuildings(int level, real value) def.setLvlDataUnreal("Oeq2", level, 2, value) function presetDamageperSecondtoBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq2", lvls, 2, lc) addTooltipProperty("Damage per Second to Buildings", lc) public class AbilityDefinitionFortificationGlyph extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.fortificationGlyph) function setUpgradeLevels(int level, int value) def.setLvlDataInt("Igl1", level, 1, value) function presetUpgradeLevels(IntLevelClosure lc) def.setLevelsDataInt("Igl1", lvls, 1, lc) addTooltipProperty("Upgrade Levels", lc) function setUpgradeType(int level, string value) def.setLvlDataString("Iglu", level, 0, value) function presetUpgradeType(StringLevelClosure lc) def.setLevelsDataString("Iglu", lvls, 0, lc) addTooltipProperty("Upgrade Type", lc) public class AbilityDefinitionManaBurndemonAmbd extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaBurn) function setMaxManaDrained(int level, real value) def.setLvlDataUnreal("Emb1", level, 1, value) function presetMaxManaDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Emb1", lvls, 1, lc) addTooltipProperty("Max Mana Drained", lc) function setBoltLifetime(int level, real value) def.setLvlDataUnreal("Emb3", level, 3, value) function presetBoltLifetime(RealLevelClosure lc) def.setLevelsDataUnreal("Emb3", lvls, 3, lc) addTooltipProperty("Bolt Lifetime", lc) function setBoltDelay(int level, real value) def.setLvlDataUnreal("Emb2", level, 2, value) function presetBoltDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Emb2", lvls, 2, lc) addTooltipProperty("Bolt Delay", lc) public class AbilityDefinitionFarseerFarSight extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.farSight) function setDetectionType(int level, string value) def.setLvlDataString("Ofs1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Ofs1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionAgilityModPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.agilityModPlus2) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionHarvestLumberArchimondeghouls extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.harvestLumberArchimondeghouls) function setLumberCapacity(int level, int value) def.setLvlDataInt("Har2", level, 2, value) function presetLumberCapacity(IntLevelClosure lc) def.setLevelsDataInt("Har2", lvls, 2, lc) addTooltipProperty("Lumber Capacity", lc) function setDamagetoTree(int level, int value) def.setLvlDataInt("Har1", level, 1, value) function presetDamagetoTree(IntLevelClosure lc) def.setLevelsDataInt("Har1", lvls, 1, lc) addTooltipProperty("Damage to Tree", lc) public class AbilityDefinitionHealingWardAIhw extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healingWardAIhw) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionIllidanMetamorphosis extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.metamorphosis1) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormHitPointBonus(int level, real value) def.setLvlDataUnreal("Eme5", level, 5, value) function presetAlternateFormHitPointBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Eme5", lvls, 5, lc) addTooltipProperty("AlternateFormHitPointBonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionHexCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.hexCreep) function setMorphUnitsGround(int level, string value) def.setLvlDataString("Ply2", level, 2, value) function presetMorphUnitsGround(StringLevelClosure lc) def.setLevelsDataString("Ply2", lvls, 2, lc) addTooltipProperty("Morph Units Ground", lc) function setMorphUnitsWater(int level, string value) def.setLvlDataString("Ply5", level, 5, value) function presetMorphUnitsWater(StringLevelClosure lc) def.setLevelsDataString("Ply5", lvls, 5, lc) addTooltipProperty("Morph Units Water", lc) function setMorphUnitsAmphibious(int level, string value) def.setLvlDataString("Ply4", level, 4, value) function presetMorphUnitsAmphibious(StringLevelClosure lc) def.setLevelsDataString("Ply4", lvls, 4, lc) addTooltipProperty("Morph Units Amphibious", lc) function setMorphUnitsAir(int level, string value) def.setLvlDataString("Ply3", level, 3, value) function presetMorphUnitsAir(StringLevelClosure lc) def.setLevelsDataString("Ply3", lvls, 3, lc) addTooltipProperty("Morph Units Air", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Ply1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Ply1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionHealingWardcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healingWard) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionBattlestations extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.battleStations) function setSummonBusyUnits(int level, bool value) def.setLvlDataBoolean("Btl2", level, 2, value) function presetSummonBusyUnits(BooleanLevelClosure lc) def.setLevelsDataBoolean("Btl2", lvls, 2, lc) addTooltipProperty("Summon Busy Units", lc) function setAllowedUnitType(int level, string value) def.setLvlDataString("Btl1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Btl1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionHealingWaveCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.healingWaveCreep) function setDamageperTarget(int level, real value) def.setLvlDataUnreal("Ocl1", level, 1, value) function presetDamageperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl1", lvls, 1, lc) addTooltipProperty("Damage per Target", lc) function setNumberofTargetsHit(int level, int value) def.setLvlDataInt("Ocl2", level, 2, value) function presetNumberofTargetsHit(IntLevelClosure lc) def.setLevelsDataInt("Ocl2", lvls, 2, lc) addTooltipProperty("Number of Targets Hit", lc) function setDamageReductionperTarget(int level, real value) def.setLvlDataUnreal("Ocl3", level, 3, value) function presetDamageReductionperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl3", lvls, 3, lc) addTooltipProperty("Damage Reduction per Target", lc) public class AbilityDefinitionInnerFireCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.innerFireCreep) function setAutocastRange(int level, real value) def.setLvlDataUnreal("Inf3", level, 3, value) function presetAutocastRange(RealLevelClosure lc) def.setLevelsDataUnreal("Inf3", lvls, 3, lc) addTooltipProperty("Autocast Range", lc) function setLifeRegenRate(int level, real value) def.setLvlDataUnreal("Inf4", level, 4, value) function presetLifeRegenRate(RealLevelClosure lc) def.setLevelsDataUnreal("Inf4", lvls, 4, lc) addTooltipProperty("Life Regen Rate", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Inf2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Inf2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Inf1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Inf1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) public class AbilityDefinitionAncestralSpirit extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ancestralSpirit) function setLifeRestoredFactor(int level, real value) def.setLvlDataUnreal("ast1", level, 1, value) function presetLifeRestoredFactor(RealLevelClosure lc) def.setLevelsDataUnreal("ast1", lvls, 1, lc) addTooltipProperty("Life Restored Factor", lc) function setManaRestoredFactor(int level, real value) def.setLvlDataUnreal("ast2", level, 2, value) function presetManaRestoredFactor(RealLevelClosure lc) def.setLevelsDataUnreal("ast2", lvls, 2, lc) addTooltipProperty("Mana Restored Factor", lc) public class AbilityDefinitionHarvestLumbershredder extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.harvest2) function setLumberCapacity(int level, int value) def.setLvlDataInt("Har2", level, 2, value) function presetLumberCapacity(IntLevelClosure lc) def.setLevelsDataInt("Har2", lvls, 2, lc) addTooltipProperty("Lumber Capacity", lc) function setDamagetoTree(int level, int value) def.setLvlDataInt("Har1", level, 1, value) function presetDamagetoTree(IntLevelClosure lc) def.setLevelsDataInt("Har1", lvls, 1, lc) addTooltipProperty("Damageto Tree", lc) public class AbilityDefinitionItemHealAoeGreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealAoeGreater) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionPulverize extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pulverize) function setHalfDamageRadius(int level, real value) def.setLvlDataUnreal("War4", level, 4, value) function presetHalfDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("War4", lvls, 4, lc) addTooltipProperty("Half Damage Radius", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("War2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("War2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("War3", level, 3, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("War3", lvls, 3, lc) addTooltipProperty("Full Damage Radius", lc) function setChancetoStomp(int level, real value) def.setLvlDataUnreal("War1", level, 1, value) function presetChancetoStomp(RealLevelClosure lc) def.setLevelsDataUnreal("War1", lvls, 1, lc) addTooltipProperty("Chance to Stomp", lc) public class AbilityDefinitionItemHealAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAreaHealing) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionAIhe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealing) function setHitPointsGained(int level, int value) def.setLvlDataInt("Ihpg", level, 1, value) function presetHitPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Ihpg", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionFarseerEarthquake extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.earthquake1) function setUnitsSlowed(int level, real value) def.setLvlDataUnreal("Oeq3", level, 3, value) function presetUnitsSlowed(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq3", lvls, 3, lc) addTooltipProperty("Units Slowed", lc) function setEffectDelay(int level, real value) def.setLvlDataUnreal("Oeq1", level, 1, value) function presetEffectDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq1", lvls, 1, lc) addTooltipProperty("Effect Delay", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Oeq4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDamageperSecondtoBuildings(int level, real value) def.setLvlDataUnreal("Oeq2", level, 2, value) function presetDamageperSecondtoBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Oeq2", lvls, 2, lc) addTooltipProperty("Damage per Second to Buildings", lc) public class AbilityDefinitionDemonHunterImmolation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.immolation1) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Eim2", level, 2, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eim2", lvls, 2, lc) addTooltipProperty("Mana Drained per Second", lc) function setBufferManaRequired(int level, real value) def.setLvlDataUnreal("Eim3", level, 3, value) function presetBufferManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Eim3", lvls, 3, lc) addTooltipProperty("Buffer Mana Required", lc) function setDamageperInterval(int level, real value) def.setLvlDataUnreal("Eim1", level, 1, value) function presetDamageperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Eim1", lvls, 1, lc) addTooltipProperty("Damage per Interval", lc) public class AbilityDefinitionNeutralDetectionRevealability extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.reveal1) function setLumberCost(int level, int value) def.setLvlDataInt("Ndt2", level, 2, value) function presetLumberCost(IntLevelClosure lc) def.setLevelsDataInt("Ndt2", lvls, 2, lc) addTooltipProperty("Lumber Cost", lc) function setDetectionType(int level, string value) def.setLvlDataString("Ndt3", level, 3, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Ndt3", lvls, 3, lc) addTooltipProperty("Detection Type", lc) function setGoldCost(int level, int value) def.setLvlDataInt("Ndt1", level, 1, value) function presetGoldCost(IntLevelClosure lc) def.setLevelsDataInt("Ndt1", lvls, 1, lc) addTooltipProperty("Gold Cost", lc) public class AbilityDefinitionWeb extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.web) function setAirUnitHeight(int level, real value) def.setLvlDataUnreal("Ens2", level, 2, value) function presetAirUnitHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Ens2", lvls, 2, lc) addTooltipProperty("Air Unit Height", lc) function setAirUnitLowerDuration(int level, real value) def.setLvlDataUnreal("Ens1", level, 1, value) function presetAirUnitLowerDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ens1", lvls, 1, lc) addTooltipProperty("Air Unit Lower Duration", lc) function setMeleeAttackRange(int level, real value) def.setLvlDataUnreal("Ens3", level, 3, value) function presetMeleeAttackRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ens3", lvls, 3, lc) addTooltipProperty("Melee Attack Range", lc) public class AbilityDefinitionFigurineIceRevenant extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.figurineIceRevenant) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionSuperDeathandDecay extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathAndDecay) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Udd2", level, 2, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Udd2", lvls, 2, lc) addTooltipProperty("Building Reduction", lc) function setMaxLifeDrainedperSecond(int level, real value) def.setLvlDataUnreal("Udd1", level, 1, value) function presetMaxLifeDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Udd1", lvls, 1, lc) addTooltipProperty("Max Life Drained per Second", lc) public class AbilityDefinitionDarkConversionFast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkConversionFast) function setConversionUnit(int level, string value) def.setLvlDataString("Ndc2", level, 0, value) function presetConversionUnit(StringLevelClosure lc) def.setLevelsDataString("Ndc2", lvls, 0, lc) addTooltipProperty("Conversion Unit", lc) function setRacetoConvert(int level, string value) def.setLvlDataString("Ndc1", level, 1, value) function presetRacetoConvert(StringLevelClosure lc) def.setLevelsDataString("Ndc1", lvls, 1, lc) addTooltipProperty("Race to Convert", lc) public class AbilityDefinitionImmolationcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.immolation) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Eim2", level, 2, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eim2", lvls, 2, lc) addTooltipProperty("Mana Drained per Second", lc) function setBufferManaRequired(int level, real value) def.setLvlDataUnreal("Eim3", level, 3, value) function presetBufferManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Eim3", lvls, 3, lc) addTooltipProperty("Buffer Mana Required", lc) function setDamageperInterval(int level, real value) def.setLvlDataUnreal("Eim1", level, 1, value) function presetDamageperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Eim1", lvls, 1, lc) addTooltipProperty("Damage per Interval", lc) public class AbilityDefinitionIntelligenceMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemIntelligenceGain) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionItemInferno extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemInferno) function setDuration(int level, real value) def.setLvlDataUnreal("Uin2", level, 2, value) function presetDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Uin2", lvls, 2, lc) addTooltipProperty("Duration", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Uin1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Uin1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setSummonedUnit(int level, string value) def.setLvlDataString("Uin4", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Uin4", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setImpactDelay(int level, real value) def.setLvlDataUnreal("Uin3", level, 3, value) function presetImpactDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Uin3", lvls, 3, lc) addTooltipProperty("Impact Delay", lc) public class AbilityDefinitionItemIllusion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemIllusions) function setDamageReceivedMultiplier(int level, real value) def.setLvlDataUnreal("Iilw", level, 2, value) function presetDamageReceivedMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Iilw", lvls, 2, lc) addTooltipProperty("Damage Received Multiplier", lc) function setDamageDealtofnormal(int level, real value) def.setLvlDataUnreal("Iild", level, 1, value) function presetDamageDealtofnormal(RealLevelClosure lc) def.setLevelsDataUnreal("Iild", lvls, 1, lc) addTooltipProperty("Damage Dealt of normal", lc) public class AbilityDefinitionMagicDefense extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.magicDefense) function setDamageTaken(int level, real value) def.setLvlDataUnreal("Def1", level, 1, value) function presetDamageTaken(RealLevelClosure lc) def.setLevelsDataUnreal("Def1", lvls, 1, lc) addTooltipProperty("Damage Taken", lc) function setChancetoDeflect(int level, real value) def.setLvlDataUnreal("Def6", level, 6, value) function presetChancetoDeflect(RealLevelClosure lc) def.setLevelsDataUnreal("Def6", lvls, 6, lc) addTooltipProperty("Chance to Deflect", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Def3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Def4", level, 4, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def4", lvls, 4, lc) addTooltipProperty("Attack Speed Factor", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Def2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Def2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setDeflectDamageTakenSpells(int level, real value) def.setLvlDataUnreal("Def8", level, 8, value) function presetDeflectDamageTakenSpells(RealLevelClosure lc) def.setLevelsDataUnreal("Def8", lvls, 8, lc) addTooltipProperty("Deflect Damage Taken Spells", lc) function setDeflectDamageTakenPiercing(int level, real value) def.setLvlDataUnreal("Def7", level, 7, value) function presetDeflectDamageTakenPiercing(RealLevelClosure lc) def.setLevelsDataUnreal("Def7", lvls, 7, lc) addTooltipProperty("Deflect Damage Taken Piercing", lc) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Def5", level, 5, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Def5", lvls, 5, lc) addTooltipProperty("Magic Damage Reduction", lc) public class AbilityDefinitionAvengerForm extends AbilityDefinition private bitset morphingFlagsSet = bitset(31) construct(int newAbilityId) super(newAbilityId, AbilityIds.avengerForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setLifeRegenerationRatepersecond(int level, real value) def.setLvlDataUnreal("ave5", level, 5, value) function presetLifeRegenerationRatepersecond(RealLevelClosure lc) def.setLevelsDataUnreal("ave5", lvls, 5, lc) addTooltipProperty("Life Regeneration Rate per second", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionHarvestLumber extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.harvest1) function setLumberCapacity(int level, int value) def.setLvlDataInt("Har2", level, 2, value) function presetLumberCapacity(IntLevelClosure lc) def.setLevelsDataInt("Har2", lvls, 2, lc) addTooltipProperty("Lumber Capacity", lc) function setDamagetoTree(int level, int value) def.setLvlDataInt("Har1", level, 1, value) function presetDamagetoTree(IntLevelClosure lc) def.setLevelsDataInt("Har1", lvls, 1, lc) addTooltipProperty("Damageto Tree", lc) public class AbilityDefinitionNeutralBuilding extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.selectHero) function setShowUnitIndicator(int level, bool value) def.setLvlDataBoolean("Neu4", level, 4, value) function presetShowUnitIndicator(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu4", lvls, 4, lc) addTooltipProperty("Show Unit Indicator", lc) function setActivationRadius(int level, real value) def.setLvlDataUnreal("Neu1", level, 1, value) function presetActivationRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Neu1", lvls, 1, lc) addTooltipProperty("Activation Radius", lc) function setShowSelectUnitButton(int level, bool value) def.setLvlDataBoolean("Neu3", level, 3, value) function presetShowSelectUnitButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu3", lvls, 3, lc) addTooltipProperty("Show Select Unit Button", lc) function setInteractionType(int level, string value) def.setLvlDataString("Neu2", level, 2, value) function presetInteractionType(StringLevelClosure lc) def.setLevelsDataString("Neu2", lvls, 2, lc) addTooltipProperty("Interaction Type", lc) public class AbilityDefinitionShopSharing extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shopSharingAlliedBldg) function setShowUnitIndicator(int level, bool value) def.setLvlDataBoolean("Neu4", level, 4, value) function presetShowUnitIndicator(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu4", lvls, 4, lc) addTooltipProperty("Show Unit Indicator", lc) function setActivationRadius(int level, real value) def.setLvlDataUnreal("Neu1", level, 1, value) function presetActivationRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Neu1", lvls, 1, lc) addTooltipProperty("Activation Radius", lc) function setShowSelectUnitButton(int level, bool value) def.setLvlDataBoolean("Neu3", level, 3, value) function presetShowSelectUnitButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu3", lvls, 3, lc) addTooltipProperty("Show Select Unit Button", lc) function setInteractionType(int level, string value) def.setLvlDataString("Neu2", level, 2, value) function presetInteractionType(StringLevelClosure lc) def.setLevelsDataString("Neu2", lvls, 2, lc) addTooltipProperty("Interaction Type", lc) public class AbilityDefinitionRepairHuman extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.repairHuman) function setPowerbuildRate(int level, real value) def.setLvlDataUnreal("Rep4", level, 4, value) function presetPowerbuildRate(RealLevelClosure lc) def.setLevelsDataUnreal("Rep4", lvls, 4, lc) addTooltipProperty("Powerbuild Rate", lc) function setNavalRangeBonus(int level, real value) def.setLvlDataUnreal("Rep5", level, 5, value) function presetNavalRangeBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Rep5", lvls, 5, lc) addTooltipProperty("Naval Range Bonus", lc) function setRepairTimeRatio(int level, real value) def.setLvlDataUnreal("Rep2", level, 2, value) function presetRepairTimeRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep2", lvls, 2, lc) addTooltipProperty("Repair Time Ratio", lc) function setRepairCostRatio(int level, real value) def.setLvlDataUnreal("Rep1", level, 1, value) function presetRepairCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep1", lvls, 1, lc) addTooltipProperty("Repair Cost Ratio", lc) function setPowerbuildCost(int level, real value) def.setLvlDataUnreal("Rep3", level, 3, value) function presetPowerbuildCost(RealLevelClosure lc) def.setLevelsDataUnreal("Rep3", lvls, 3, lc) addTooltipProperty("Powerbuild Cost", lc) public class AbilityDefinitionAhrs extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ahrs) function setTerrainDeformationAmplitude(int level, real value) def.setLvlDataUnreal("Wrs2", level, 2, value) function presetTerrainDeformationAmplitude(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs2", lvls, 2, lc) addTooltipProperty("Terrain Deformation Amplitude", lc) function setTerrainDeformationDurationms(int level, int value) def.setLvlDataInt("Wrs3", level, 3, value) function presetTerrainDeformationDurationms(IntLevelClosure lc) def.setLevelsDataInt("Wrs3", lvls, 3, lc) addTooltipProperty("Terrain Deformation Duration ms", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Wrs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionFirelordIncinerate extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.firelordIncinerate) function setDeathDamageHalfAmount(int level, real value) def.setLvlDataUnreal("Nic4", level, 4, value) function presetDeathDamageHalfAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Nic4", lvls, 4, lc) addTooltipProperty("Death Damage Half Amount", lc) function setDeathDamageFullArea(int level, real value) def.setLvlDataUnreal("Nic3", level, 3, value) function presetDeathDamageFullArea(RealLevelClosure lc) def.setLevelsDataUnreal("Nic3", lvls, 3, lc) addTooltipProperty("Death Damage Full Area", lc) function setBonusDamageMultiplier(int level, real value) def.setLvlDataUnreal("Nic1", level, 1, value) function presetBonusDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Nic1", lvls, 1, lc) addTooltipProperty("Bonus Damage Multiplier", lc) function setDeathDamageFullAmount(int level, real value) def.setLvlDataUnreal("Nic2", level, 2, value) function presetDeathDamageFullAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Nic2", lvls, 2, lc) addTooltipProperty("Death Damage Full Amount", lc) function setDeathDamageDelay(int level, real value) def.setLvlDataUnreal("Nic6", level, 6, value) function presetDeathDamageDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nic6", lvls, 6, lc) addTooltipProperty("Death Damage Delay", lc) function setDeathDamageHalfArea(int level, real value) def.setLvlDataUnreal("Nic5", level, 5, value) function presetDeathDamageHalfArea(RealLevelClosure lc) def.setLevelsDataUnreal("Nic5", lvls, 5, lc) addTooltipProperty("Death Damage Half Area", lc) public class AbilityDefinitionBearform extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.bearForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionCryptLordLocustSwarm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cryptLordLocustSwarm) function setNumberofSwarmUnits(int level, int value) def.setLvlDataInt("Uls1", level, 1, value) function presetNumberofSwarmUnits(IntLevelClosure lc) def.setLevelsDataInt("Uls1", lvls, 1, lc) addTooltipProperty("Number of Swarm Units", lc) function setUnitReleaseIntervalseconds(int level, real value) def.setLvlDataUnreal("Uls2", level, 2, value) function presetUnitReleaseIntervalseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uls2", lvls, 2, lc) addTooltipProperty("Unit Release Interval Seconds", lc) function setMaxSwarmUnitsPerTarget(int level, int value) def.setLvlDataInt("Uls3", level, 3, value) function presetMaxSwarmUnitsPerTarget(IntLevelClosure lc) def.setLevelsDataInt("Uls3", lvls, 3, lc) addTooltipProperty("MaxSwarmUnitsPerTarget", lc) function setSwarmUnitType(int level, string value) def.setLvlDataString("Ulsu", level, 0, value) function presetSwarmUnitType(StringLevelClosure lc) def.setLevelsDataString("Ulsu", lvls, 0, lc) addTooltipProperty("Swarm Unit Type", lc) function setDamageReturnThreshold(int level, real value) def.setLvlDataUnreal("Uls5", level, 5, value) function presetDamageReturnThreshold(RealLevelClosure lc) def.setLevelsDataUnreal("Uls5", lvls, 5, lc) addTooltipProperty("Damage Return Threshold", lc) function setDamageReturnFactor(int level, real value) def.setLvlDataUnreal("Uls4", level, 4, value) function presetDamageReturnFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Uls4", lvls, 4, lc) addTooltipProperty("Damage Return Factor", lc) public class AbilityDefinitionRestoration extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.restore) function setPowerbuildRate(int level, real value) def.setLvlDataUnreal("Rep4", level, 4, value) function presetPowerbuildRate(RealLevelClosure lc) def.setLevelsDataUnreal("Rep4", lvls, 4, lc) addTooltipProperty("Powerbuild Rate", lc) function setNavalRangeBonus(int level, real value) def.setLvlDataUnreal("Rep5", level, 5, value) function presetNavalRangeBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Rep5", lvls, 5, lc) addTooltipProperty("Naval Range Bonus", lc) function setRepairTimeRatio(int level, real value) def.setLvlDataUnreal("Rep2", level, 2, value) function presetRepairTimeRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep2", lvls, 2, lc) addTooltipProperty("Repair Time Ratio", lc) function setRepairCostRatio(int level, real value) def.setLvlDataUnreal("Rep1", level, 1, value) function presetRepairCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep1", lvls, 1, lc) addTooltipProperty("Repair Cost Ratio", lc) function setPowerbuildCost(int level, real value) def.setLvlDataUnreal("Rep3", level, 3, value) function presetPowerbuildCost(RealLevelClosure lc) def.setLevelsDataUnreal("Rep3", lvls, 3, lc) addTooltipProperty("Powerbuild Cost", lc) public class AbilityDefinitionFarseerChainLightning extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chainLightning1) function setDamageperTarget(int level, real value) def.setLvlDataUnreal("Ocl1", level, 1, value) function presetDamageperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl1", lvls, 1, lc) addTooltipProperty("Damage per Target", lc) function setNumberofTargetsHit(int level, int value) def.setLvlDataInt("Ocl2", level, 2, value) function presetNumberofTargetsHit(IntLevelClosure lc) def.setLevelsDataInt("Ocl2", lvls, 2, lc) addTooltipProperty("Number of Targets Hit", lc) function setDamageReductionperTarget(int level, real value) def.setLvlDataUnreal("Ocl3", level, 3, value) function presetDamageReductionperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl3", lvls, 3, lc) addTooltipProperty("Damage Reduction per Target", lc) public class AbilityDefinitionMaxLifeBonusGreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.maxLifeBonusGreater) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionInferno extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inferno1) function setDuration(int level, real value) def.setLvlDataUnreal("Uin2", level, 2, value) function presetDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Uin2", lvls, 2, lc) addTooltipProperty("Duration", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Uin1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Uin1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setSummonedUnit(int level, string value) def.setLvlDataString("Uin4", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Uin4", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setImpactDelay(int level, real value) def.setLvlDataUnreal("Uin3", level, 3, value) function presetImpactDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Uin3", lvls, 3, lc) addTooltipProperty("Impact Delay", lc) public class AbilityDefinitionMechanicalCritter extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.mechanicalCritter) function setNumberofUnitsCreated(int level, int value) def.setLvlDataInt("mec1", level, 1, value) function presetNumberofUnitsCreated(IntLevelClosure lc) def.setLevelsDataInt("mec1", lvls, 1, lc) addTooltipProperty("Number of Units Created", lc) public class AbilityDefinitionMaxLifeBonusLesser extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.maxLifeBonusLesser) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionPurgeApg2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.purgeApg2) function setManaLoss(int level, int value) def.setLvlDataInt("Prg6", level, 6, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Prg6", lvls, 6, lc) addTooltipProperty("Mana Loss", lc) public class AbilityDefinitionBladeMasterCriticalStrike extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.criticalStrike1) function setDamageMultiplier(int level, real value) def.setLvlDataUnreal("Ocr2", level, 2, value) function presetDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr2", lvls, 2, lc) addTooltipProperty("Damage Multiplier", lc) function setChancetoCriticalStrike(int level, real value) def.setLvlDataUnreal("Ocr1", level, 1, value) function presetChancetoCriticalStrike(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr1", lvls, 1, lc) addTooltipProperty("Chance to Critical Strike", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ocr3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Ocr4", level, 4, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr4", lvls, 4, lc) addTooltipProperty("Chance to Evade", lc) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Ocr5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ocr5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionAuraPlagueAbomination extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.auraPlagueAbomination) function setPlagueWardUnitType(int level, string value) def.setLvlDataString("Aplu", level, 0, value) function presetPlagueWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Aplu", lvls, 0, lc) addTooltipProperty("Plague Ward Unit Type", lc) function setDurationofPlagueWard(int level, real value) def.setLvlDataUnreal("Apl3", level, 3, value) function presetDurationofPlagueWard(RealLevelClosure lc) def.setLevelsDataUnreal("Apl3", lvls, 3, lc) addTooltipProperty("Duration of Plague Ward", lc) function setAuraDuration(int level, real value) def.setLvlDataUnreal("Apl1", level, 1, value) function presetAuraDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Apl1", lvls, 1, lc) addTooltipProperty("Aura Duration", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Apl2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Apl2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionAuraPlagueCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.auraPlagueCreep) function setPlagueWardUnitType(int level, string value) def.setLvlDataString("Aplu", level, 0, value) function presetPlagueWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Aplu", lvls, 0, lc) addTooltipProperty("Plague Ward Unit Type", lc) function setDurationofPlagueWard(int level, real value) def.setLvlDataUnreal("Apl3", level, 3, value) function presetDurationofPlagueWard(RealLevelClosure lc) def.setLevelsDataUnreal("Apl3", lvls, 3, lc) addTooltipProperty("Duration of Plague Ward", lc) function setAuraDuration(int level, real value) def.setLvlDataUnreal("Apl1", level, 1, value) function presetAuraDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Apl1", lvls, 1, lc) addTooltipProperty("Aura Duration", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Apl2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Apl2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionPermanentImmolation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.permanentImmolation) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Eim2", level, 2, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eim2", lvls, 2, lc) addTooltipProperty("Mana Drained per Second", lc) function setBufferManaRequired(int level, real value) def.setLvlDataUnreal("Eim3", level, 3, value) function presetBufferManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Eim3", lvls, 3, lc) addTooltipProperty("Buffer Mana Required", lc) function setDamageperInterval(int level, real value) def.setLvlDataUnreal("Eim1", level, 1, value) function presetDamageperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Eim1", lvls, 1, lc) addTooltipProperty("Damage per Interval", lc) public class AbilityDefinitionAuraPlaguePlagueWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.diseaseCloud) function setPlagueWardUnitType(int level, string value) def.setLvlDataString("Aplu", level, 0, value) function presetPlagueWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Aplu", lvls, 0, lc) addTooltipProperty("Plague Ward Unit Type", lc) function setDurationofPlagueWard(int level, real value) def.setLvlDataUnreal("Apl3", level, 3, value) function presetDurationofPlagueWard(RealLevelClosure lc) def.setLevelsDataUnreal("Apl3", lvls, 3, lc) addTooltipProperty("Duration of Plague Ward", lc) function setAuraDuration(int level, real value) def.setLvlDataUnreal("Apl1", level, 1, value) function presetAuraDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Apl1", lvls, 1, lc) addTooltipProperty("Aura Duration", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Apl2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Apl2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionCyclonecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cyclonecreep) function setCanBeDispelled(int level, bool value) def.setLvlDataBoolean("cyc1", level, 1, value) function presetCanBeDispelled(BooleanLevelClosure lc) def.setLevelsDataBoolean("cyc1", lvls, 1, lc) addTooltipProperty("CanBeDispelled", lc) public class AbilityDefinitionAuraPlagueCreepnodamage extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.auraPlagueCreepnodamage) function setPlagueWardUnitType(int level, string value) def.setLvlDataString("Aplu", level, 0, value) function presetPlagueWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Aplu", lvls, 0, lc) addTooltipProperty("Plague Ward Unit Type", lc) function setDurationofPlagueWard(int level, real value) def.setLvlDataUnreal("Apl3", level, 3, value) function presetDurationofPlagueWard(RealLevelClosure lc) def.setLevelsDataUnreal("Apl3", lvls, 3, lc) addTooltipProperty("Duration of Plague Ward", lc) function setAuraDuration(int level, real value) def.setLvlDataUnreal("Apl1", level, 1, value) function presetAuraDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Apl1", lvls, 1, lc) addTooltipProperty("Aura Duration", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Apl2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Apl2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionLightningDamageBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackLightningBonus) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setDamageBonusDice(int level, int value) def.setLvlDataInt("Idic", level, 1, value) function presetDamageBonusDice(IntLevelClosure lc) def.setLevelsDataInt("Idic", lvls, 1, lc) addTooltipProperty("Damage Bonus Dice", lc) public class AbilityDefinitionArtn extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.return111) function setAcceptsGold(int level, bool value) def.setLvlDataBoolean("Rtn1", level, 1, value) function presetAcceptsGold(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn1", lvls, 1, lc) addTooltipProperty("Accepts Gold", lc) function setAcceptsLumber(int level, bool value) def.setLvlDataBoolean("Rtn2", level, 2, value) function presetAcceptsLumber(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn2", lvls, 2, lc) addTooltipProperty("Accepts Lumber", lc) public class AbilityDefinitionCrushingWave extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.crushingWave) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionColdArrowscreep extends AbilityDefinition private bitset stackFlagsSet = bitset(0) construct(int newAbilityId) super(newAbilityId, AbilityIds.coldArrows1) function setStackFlags(int level, int value) def.setLvlDataInt("Hca4", level, 4, value) function presetStackFlags(IntLevelClosure lc) def.setLevelsDataInt("Hca4", lvls, 4, lc) addTooltipProperty("Stack Flags", lc) function presetStackFlag(StackFlag stackFlag, boolean flag) stackFlagsSet = stackFlagsSet.set(stackFlag castTo int, flag) presetStackFlags(lvl -> stackFlagsSet.val) function hasStackFlag(StackFlag stackFlag) returns boolean return stackFlagsSet.get(stackFlag castTo int) function setExtraDamage(int level, real value) def.setLvlDataUnreal("Hca1", level, 1, value) function presetExtraDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hca1", lvls, 1, lc) addTooltipProperty("Extra Damage", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionEatTree extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.eatTree) function setEatDelay(int level, real value) def.setLvlDataUnreal("Eat2", level, 2, value) function presetEatDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Eat2", lvls, 2, lc) addTooltipProperty("Eat Delay", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Eat3", level, 3, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Eat3", lvls, 3, lc) addTooltipProperty("Hit Points Gained", lc) function setRipDelay(int level, real value) def.setLvlDataUnreal("Eat1", level, 1, value) function presetRipDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Eat1", lvls, 1, lc) addTooltipProperty("Rip Delay", lc) public class AbilityDefinitionPreservation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.preservation) function setBuildingTypesAllowed(int level, string value) def.setLvlDataString("Npr1", level, 1, value) function presetBuildingTypesAllowed(StringLevelClosure lc) def.setLevelsDataString("Npr1", lvls, 1, lc) addTooltipProperty("Building Types Allowed", lc) public class AbilityDefinitionShadowMeldAkama extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowMeldAkama) function setDayNightDuration(int level, real value) def.setLvlDataUnreal("Shm2", level, 2, value) function presetDayNightDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm2", lvls, 2, lc) addTooltipProperty("Day Night Duration", lc) function setActionDuration(int level, real value) def.setLvlDataUnreal("Shm3", level, 3, value) function presetActionDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm3", lvls, 3, lc) addTooltipProperty("Action Duration", lc) function setFadeDuration(int level, real value) def.setLvlDataUnreal("Shm1", level, 1, value) function presetFadeDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm1", lvls, 1, lc) addTooltipProperty("Fade Duration", lc) public class AbilityDefinitionCripplecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cripplecreep) function setDamageReduction(int level, real value) def.setLvlDataUnreal("Cri3", level, 3, value) function presetDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri3", lvls, 3, lc) addTooltipProperty("Damage Reduction", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionCursecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cursecreep) function setChancetoMiss(int level, real value) def.setLvlDataUnreal("Crs", level, 1, value) function presetChancetoMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Crs", lvls, 1, lc) addTooltipProperty("Chance to Miss", lc) public class AbilityDefinitionCriticalStrikecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.criticalStrike) function setDamageMultiplier(int level, real value) def.setLvlDataUnreal("Ocr2", level, 2, value) function presetDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr2", lvls, 2, lc) addTooltipProperty("Damage Multiplier", lc) function setChancetoCriticalStrike(int level, real value) def.setLvlDataUnreal("Ocr1", level, 1, value) function presetChancetoCriticalStrike(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr1", lvls, 1, lc) addTooltipProperty("Chance to Critical Strike", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ocr3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Ocr4", level, 4, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr4", lvls, 4, lc) addTooltipProperty("Chance to Evade", lc) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Ocr5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ocr5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionCannibalizecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cannibalizecreep) function setMaxHitPoints(int level, real value) def.setLvlDataUnreal("Can2", level, 2, value) function presetMaxHitPoints(RealLevelClosure lc) def.setLevelsDataUnreal("Can2", lvls, 2, lc) addTooltipProperty("Max Hit Points", lc) function setHitPointsperSecond(int level, real value) def.setLvlDataUnreal("Can1", level, 1, value) function presetHitPointsperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Can1", lvls, 1, lc) addTooltipProperty("Hit Points per Second", lc) public class AbilityDefinitionCycloneCenarius extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cyclone) function setCanBeDispelled(int level, bool value) def.setLvlDataBoolean("cyc1", level, 1, value) function presetCanBeDispelled(BooleanLevelClosure lc) def.setLevelsDataBoolean("cyc1", lvls, 1, lc) addTooltipProperty("CanBeDispelled", lc) public class AbilityDefinitionItemManaRestoreGreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemManaRestoreGreater) function setManaPointsGained(int level, int value) def.setLvlDataInt("Impg", level, 1, value) function presetManaPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Impg", lvls, 1, lc) addTooltipProperty("Mana Points Gained", lc) public class AbilityDefinitionItemManaRestoreLesser extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemManaRestoreLesser) function setManaPointsGained(int level, int value) def.setLvlDataInt("Impg", level, 1, value) function presetManaPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Impg", lvls, 1, lc) addTooltipProperty("Mana Points Gained", lc) public class AbilityDefinitionStoneForm extends AbilityDefinition private bitset morphingFlagsSet = bitset(7) construct(int newAbilityId) super(newAbilityId, AbilityIds.stoneForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setLifeRegenerationRatepersecond(int level, real value) def.setLvlDataUnreal("ave5", level, 5, value) function presetLifeRegenerationRatepersecond(RealLevelClosure lc) def.setLevelsDataUnreal("ave5", lvls, 5, lc) addTooltipProperty("Life Regeneration Rate per second", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionChainLightningcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chainLightning) function setDamageperTarget(int level, real value) def.setLvlDataUnreal("Ocl1", level, 1, value) function presetDamageperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl1", lvls, 1, lc) addTooltipProperty("Damage per Target", lc) function setNumberofTargetsHit(int level, int value) def.setLvlDataInt("Ocl2", level, 2, value) function presetNumberofTargetsHit(IntLevelClosure lc) def.setLevelsDataInt("Ocl2", lvls, 2, lc) addTooltipProperty("Number of Targets Hit", lc) function setDamageReductionperTarget(int level, real value) def.setLvlDataUnreal("Ocl3", level, 3, value) function presetDamageReductionperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl3", lvls, 3, lc) addTooltipProperty("Damage Reduction per Target", lc) public class AbilityDefinitionFaerieFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.faerieFire) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Fae2", level, 2, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Fae2", lvls, 2, lc) addTooltipProperty("Always Autocast", lc) function setDefenseReduction(int level, int value) def.setLvlDataInt("Fae1", level, 1, value) function presetDefenseReduction(IntLevelClosure lc) def.setLevelsDataInt("Fae1", lvls, 1, lc) addTooltipProperty("Defense Reduction", lc) public class AbilityDefinitionCharm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.charm) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Nch1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Nch1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionManaSteal extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaSteal) function setLeaveTargetAlive(int level, bool value) def.setLvlDataBoolean("Udp5", level, 5, value) function presetLeaveTargetAlive(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp5", lvls, 5, lc) addTooltipProperty("Leave Target Alive", lc) function setLifeConvertedtoMana(int level, real value) def.setLvlDataUnreal("Udp1", level, 1, value) function presetLifeConvertedtoMana(RealLevelClosure lc) def.setLevelsDataUnreal("Udp1", lvls, 1, lc) addTooltipProperty("Life Converted to Mana", lc) function setLifeConvertedtoLife(int level, real value) def.setLvlDataUnreal("Udp2", level, 2, value) function presetLifeConvertedtoLife(RealLevelClosure lc) def.setLevelsDataUnreal("Udp2", lvls, 2, lc) addTooltipProperty("Life Converted to Life", lc) function setLifeConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp4", level, 4, value) function presetLifeConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp4", lvls, 4, lc) addTooltipProperty("LifeConversionAsPercent", lc) function setManaConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp3", level, 3, value) function presetManaConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp3", lvls, 3, lc) addTooltipProperty("ManaConversionAsPercent", lc) public class AbilityDefinitionAuraEnduranceCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.enduranceAura) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Oae2", level, 2, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Oae2", lvls, 2, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionTichondriusInferno extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inferno) function setDuration(int level, real value) def.setLvlDataUnreal("Uin2", level, 2, value) function presetDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Uin2", lvls, 2, lc) addTooltipProperty("Duration", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Uin1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Uin1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setSummonedUnit(int level, string value) def.setLvlDataString("Uin4", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Uin4", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setImpactDelay(int level, real value) def.setLvlDataUnreal("Uin3", level, 3, value) function presetImpactDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Uin3", lvls, 3, lc) addTooltipProperty("Impact Delay", lc) public class AbilityDefinitionCryptLordImpale extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cryptLordImpale) function setWaveTimeseconds(int level, real value) def.setLvlDataUnreal("Uim2", level, 2, value) function presetWaveTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uim2", lvls, 2, lc) addTooltipProperty("Wave Time Seconds", lc) function setAirTimeseconds(int level, real value) def.setLvlDataUnreal("Uim4", level, 4, value) function presetAirTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uim4", lvls, 4, lc) addTooltipProperty("Air Time Seconds", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Uim3", level, 3, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Uim3", lvls, 3, lc) addTooltipProperty("Damage Dealt", lc) function setWaveDistance(int level, real value) def.setLvlDataUnreal("Uim1", level, 1, value) function presetWaveDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Uim1", lvls, 1, lc) addTooltipProperty("Wave Distance", lc) public class AbilityDefinitionFrostBolt extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frostBolt) function setDamage(int level, real value) def.setLvlDataUnreal("Htb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionCarrionSwarmcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.carrionSwarm) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionDreadlordInferno extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inferno2) function setDuration(int level, real value) def.setLvlDataUnreal("Uin2", level, 2, value) function presetDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Uin2", lvls, 2, lc) addTooltipProperty("Duration", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Uin1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Uin1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setSummonedUnit(int level, string value) def.setLvlDataString("Uin4", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Uin4", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setImpactDelay(int level, real value) def.setLvlDataUnreal("Uin3", level, 3, value) function presetImpactDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Uin3", lvls, 3, lc) addTooltipProperty("Impact Delay", lc) public class AbilityDefinitionWispHarvestInvulnerable extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.gather1) function setArtAttachmentHeight(int level, real value) def.setLvlDataUnreal("Wha3", level, 3, value) function presetArtAttachmentHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Wha3", lvls, 3, lc) addTooltipProperty("Art Attachment Height", lc) function setIntervalsBeforeChangingTrees(int level, int value) def.setLvlDataInt("Wha2", level, 2, value) function presetIntervalsBeforeChangingTrees(IntLevelClosure lc) def.setLevelsDataInt("Wha2", lvls, 2, lc) addTooltipProperty("Intervals Before Changing Trees", lc) function setLumberperInterval(int level, real value) def.setLvlDataUnreal("Wha1", level, 1, value) function presetLumberperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Wha1", lvls, 1, lc) addTooltipProperty("Lumber per Interval", lc) public class AbilityDefinitionOrbofAnnihilation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofAnnihilation) function setSmallDamageFactor(int level, real value) def.setLvlDataUnreal("fak3", level, 3, value) function presetSmallDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("fak3", lvls, 3, lc) addTooltipProperty("Small Damage Factor", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("fak1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("fak1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setHalfDamageRadius(int level, real value) def.setLvlDataUnreal("fak5", level, 5, value) function presetHalfDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("fak5", lvls, 5, lc) addTooltipProperty("Half Damage Radius", lc) function setMediumDamageFactor(int level, real value) def.setLvlDataUnreal("fak2", level, 2, value) function presetMediumDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("fak2", lvls, 2, lc) addTooltipProperty("Medium Damage Factor", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("fak4", level, 4, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("fak4", lvls, 4, lc) addTooltipProperty("Full Damage Radius", lc) public class AbilityDefinitionMaxManaBonusLeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.maxManaBonusLeast) function setMaxManaGained(int level, int value) def.setLvlDataInt("Iman", level, 1, value) function presetMaxManaGained(IntLevelClosure lc) def.setLevelsDataInt("Iman", lvls, 1, lc) addTooltipProperty("Max Mana Gained", lc) public class AbilityDefinitionNeutralBuildinganyunit extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.neutralBuildinganyunit) function setShowUnitIndicator(int level, bool value) def.setLvlDataBoolean("Neu4", level, 4, value) function presetShowUnitIndicator(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu4", lvls, 4, lc) addTooltipProperty("Show Unit Indicator", lc) function setActivationRadius(int level, real value) def.setLvlDataUnreal("Neu1", level, 1, value) function presetActivationRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Neu1", lvls, 1, lc) addTooltipProperty("Activation Radius", lc) function setShowSelectUnitButton(int level, bool value) def.setLvlDataBoolean("Neu3", level, 3, value) function presetShowSelectUnitButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu3", lvls, 3, lc) addTooltipProperty("Show Select Unit Button", lc) function setInteractionType(int level, string value) def.setLvlDataString("Neu2", level, 2, value) function presetInteractionType(StringLevelClosure lc) def.setLevelsDataString("Neu2", lvls, 2, lc) addTooltipProperty("Interaction Type", lc) public class AbilityDefinitionGhost extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ghost) function setDoesNotBlockBuildings(int level, bool value) def.setLvlDataBoolean("Gho3", level, 3, value) function presetDoesNotBlockBuildings(BooleanLevelClosure lc) def.setLevelsDataBoolean("Gho3", lvls, 3, lc) addTooltipProperty("Does Not Block Buildings", lc) function setImmunetoMorphEffects(int level, bool value) def.setLvlDataBoolean("Gho2", level, 2, value) function presetImmunetoMorphEffects(BooleanLevelClosure lc) def.setLevelsDataBoolean("Gho2", lvls, 2, lc) addTooltipProperty("Immune to Morph Effects", lc) function setAutoAcquireAttackTargets(int level, bool value) def.setLvlDataBoolean("Gho1", level, 1, value) function presetAutoAcquireAttackTargets(BooleanLevelClosure lc) def.setLevelsDataBoolean("Gho1", lvls, 1, lc) addTooltipProperty("Auto Acquire Attack Targets", lc) public class AbilityDefinitionDevourCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devour) function setMaxCreepLevel(int level, int value) def.setLvlDataInt("Dev1", level, 1, value) function presetMaxCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Dev1", lvls, 1, lc) addTooltipProperty("Max Creep Level", lc) public class AbilityDefinitionGiveLumber extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.giveLumber) function setLumberGiven(int level, int value) def.setLvlDataInt("Ilum", level, 1, value) function presetLumberGiven(IntLevelClosure lc) def.setLevelsDataInt("Ilum", lvls, 1, lc) addTooltipProperty("Lumber Given", lc) public class AbilityDefinitionFireBoltwarlock extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.firebolt2) function setDamage(int level, real value) def.setLvlDataUnreal("Htb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionDrainLifeCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.drainLifeCreep) function setBonusLifeDecay(int level, real value) def.setLvlDataUnreal("Ndr7", level, 7, value) function presetBonusLifeDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr7", lvls, 7, lc) addTooltipProperty("Bonus Life Decay", lc) function setManaTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr5", level, 5, value) function presetManaTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr5", lvls, 5, lc) addTooltipProperty("Mana Transferred Per Second", lc) function setBonusManaDecay(int level, real value) def.setLvlDataUnreal("Ndr9", level, 9, value) function presetBonusManaDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr9", lvls, 9, lc) addTooltipProperty("Bonus Mana Decay", lc) function setBonusLifeFactor(int level, real value) def.setLvlDataUnreal("Ndr6", level, 6, value) function presetBonusLifeFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr6", lvls, 6, lc) addTooltipProperty("Bonus Life Factor", lc) function setBonusManaFactor(int level, real value) def.setLvlDataUnreal("Ndr8", level, 8, value) function presetBonusManaFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr8", lvls, 8, lc) addTooltipProperty("Bonus Mana Factor", lc) function setLifeTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr4", level, 4, value) function presetLifeTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr4", lvls, 4, lc) addTooltipProperty("Life Transferred Per Second", lc) public class AbilityDefinitionPaladinHolyLight extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.holyLight) function setAmountHealedDamaged(int level, real value) def.setLvlDataUnreal("Hhb1", level, 1, value) function presetAmountHealedDamaged(RealLevelClosure lc) def.setLevelsDataUnreal("Hhb1", lvls, 1, lc) addTooltipProperty("Amount Healed Damaged", lc) public class AbilityDefinitionLevelMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemLevelGain) function setLevelsGained(int level, int value) def.setLvlDataInt("Ilev", level, 1, value) function presetLevelsGained(IntLevelClosure lc) def.setLevelsDataInt("Ilev", lvls, 1, lc) addTooltipProperty("Levels Gained", lc) public class AbilityDefinitionOrbofLightning extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofLightning) function setChanceToHitUnits(int level, real value) def.setLvlDataUnreal("Iob2", level, 2, value) function presetChanceToHitUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Iob2", lvls, 2, lc) addTooltipProperty("Chance To Hit Units", lc) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setChanceToHitSummons(int level, real value) def.setLvlDataUnreal("Iob4", level, 4, value) function presetChanceToHitSummons(RealLevelClosure lc) def.setLevelsDataUnreal("Iob4", lvls, 4, lc) addTooltipProperty("Chance To Hit Summons", lc) function setChanceToHitHeros(int level, real value) def.setLvlDataUnreal("Iob3", level, 3, value) function presetChanceToHitHeros(RealLevelClosure lc) def.setLevelsDataUnreal("Iob3", lvls, 3, lc) addTooltipProperty("Chance To Hit Heros", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setEffectAbility(int level, string value) def.setLvlDataString("Iobu", level, 0, value) function presetEffectAbility(StringLevelClosure lc) def.setLevelsDataString("Iobu", lvls, 0, lc) addTooltipProperty("Effect Ability", lc) public class AbilityDefinitionLightningShieldAIls extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lightningShieldAIls) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Idps", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Idps", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionAbolishMagicCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.abolishMagicCreep) function setManaLoss(int level, real value) def.setLvlDataUnreal("Adm1", level, 1, value) function presetManaLoss(RealLevelClosure lc) def.setLevelsDataUnreal("Adm1", lvls, 1, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Adm2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Adm2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionLightningPurge extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemPurge) function setHeroPauseDuration(int level, real value) def.setLvlDataUnreal("Prg5", level, 5, value) function presetHeroPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg5", lvls, 5, lc) addTooltipProperty("Hero Pause Duration", lc) function setUnitPauseDuration(int level, real value) def.setLvlDataUnreal("Prg4", level, 4, value) function presetUnitPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg4", lvls, 4, lc) addTooltipProperty("Unit Pause Duration", lc) function setMovementUpdateFrequency(int level, int value) def.setLvlDataInt("Prg1", level, 1, value) function presetMovementUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg1", lvls, 1, lc) addTooltipProperty("Movement Update Frequency", lc) function setAttackUpdateFrequency(int level, int value) def.setLvlDataInt("Prg2", level, 2, value) function presetAttackUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg2", lvls, 2, lc) addTooltipProperty("Attack Update Frequency", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Prg6", level, 6, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Prg6", lvls, 6, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Prg3", level, 3, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Prg3", lvls, 3, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionMaxLifeBonusLeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.maxLifeBonusLeast) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionParasite extends AbilityDefinition private bitset stackingTypesSet = bitset(8) construct(int newAbilityId) super(newAbilityId, AbilityIds.parasite) function setStackingType(int level, int value) def.setLvlDataInt("Poi4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setSummonedUnitDuration(int level, real value) def.setLvlDataUnreal("Npa6", level, 0, value) function presetSummonedUnitDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Npa6", lvls, 0, lc) addTooltipProperty("Summoned Unit Duration", lc) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Npa5", level, 5, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Npa5", lvls, 5, lc) addTooltipProperty("Summoned Unit Count", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poi1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poi1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) function setUnitType(int level, string value) def.setLvlDataString("ipmu", level, 0, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("ipmu", lvls, 0, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionDemonHunterMetamorphosis extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.metamorphosis) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormHitPointBonus(int level, real value) def.setLvlDataUnreal("Eme5", level, 5, value) function presetAlternateFormHitPointBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Eme5", lvls, 5, lc) addTooltipProperty("AlternateFormHitPointBonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionDevourMagiccreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devourMagiccreep) function setIgnoreFriendlyBuffs(int level, bool value) def.setLvlDataBoolean("dvm6", level, 6, value) function presetIgnoreFriendlyBuffs(BooleanLevelClosure lc) def.setLevelsDataBoolean("dvm6", lvls, 6, lc) addTooltipProperty("Ignore Friendly Buffs", lc) public class AbilityDefinitionAapl extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.diseaseCloud1) function setPlagueWardUnitType(int level, string value) def.setLvlDataString("Aplu", level, 0, value) function presetPlagueWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Aplu", lvls, 0, lc) addTooltipProperty("Plague Ward Unit Type", lc) function setDurationofPlagueWard(int level, real value) def.setLvlDataUnreal("Apl3", level, 3, value) function presetDurationofPlagueWard(RealLevelClosure lc) def.setLevelsDataUnreal("Apl3", lvls, 3, lc) addTooltipProperty("Duration of Plague Ward", lc) function setAuraDuration(int level, real value) def.setLvlDataUnreal("Apl1", level, 1, value) function presetAuraDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Apl1", lvls, 1, lc) addTooltipProperty("Aura Duration", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Apl2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Apl2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionDeathCoilcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathCoil) function setAmountHealedDamaged(int level, real value) def.setLvlDataUnreal("Udc1", level, 1, value) function presetAmountHealedDamaged(RealLevelClosure lc) def.setLevelsDataUnreal("Udc1", lvls, 1, lc) addTooltipProperty("Amount Healed Damaged", lc) public class AbilityDefinitionDemonHunterManaBurn extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaBurn1) function setMaxManaDrained(int level, real value) def.setLvlDataUnreal("Emb1", level, 1, value) function presetMaxManaDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Emb1", lvls, 1, lc) addTooltipProperty("Max Mana Drained", lc) function setBoltLifetime(int level, real value) def.setLvlDataUnreal("Emb3", level, 3, value) function presetBoltLifetime(RealLevelClosure lc) def.setLevelsDataUnreal("Emb3", lvls, 3, lc) addTooltipProperty("Bolt Lifetime", lc) function setBoltDelay(int level, real value) def.setLvlDataUnreal("Emb2", level, 2, value) function presetBoltDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Emb2", lvls, 2, lc) addTooltipProperty("Bolt Delay", lc) public class AbilityDefinitionLichFrostArmorAutocast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lichFrostArmorAutocast) function setArmorDuration(int level, real value) def.setLvlDataUnreal("Ufa1", level, 1, value) function presetArmorDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa1", lvls, 1, lc) addTooltipProperty("Armor Duration", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Ufa2", level, 2, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa2", lvls, 2, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionAnimateDeaditemspecial extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.animateDeaditemspecial) function setInheritUpgrades(int level, bool value) def.setLvlDataBoolean("Uan3", level, 3, value) function presetInheritUpgrades(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uan3", lvls, 3, lc) addTooltipProperty("Inherit Upgrades", lc) public class AbilityDefinitionFrostArmorcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frostArmor) function setArmorDuration(int level, real value) def.setLvlDataUnreal("Ufa1", level, 1, value) function presetArmorDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa1", lvls, 1, lc) addTooltipProperty("Armor Duration", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Ufa2", level, 2, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa2", lvls, 2, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionManaBatteryObsidianStatue extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaBatteryObsidianStatue) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Mbt2", level, 2, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt2", lvls, 2, lc) addTooltipProperty("Hit Points Gained", lc) function setWaterHeight(int level, real value) def.setLvlDataUnreal("Mbt4", level, 4, value) function presetWaterHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt4", lvls, 4, lc) addTooltipProperty("Water Height", lc) function setAutocastRequirement(int level, real value) def.setLvlDataUnreal("Mbt3", level, 3, value) function presetAutocastRequirement(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt3", lvls, 3, lc) addTooltipProperty("Autocast Requirement", lc) function setManaGained(int level, real value) def.setLvlDataUnreal("Mbt1", level, 1, value) function presetManaGained(RealLevelClosure lc) def.setLevelsDataUnreal("Mbt1", lvls, 1, lc) addTooltipProperty("Mana Gained", lc) function setRegenerateOnlyAtNight(int level, bool value) def.setLvlDataBoolean("Mbt5", level, 5, value) function presetRegenerateOnlyAtNight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Mbt5", lvls, 5, lc) addTooltipProperty("RegenerateOnlyAtNight", lc) public class AbilityDefinitionFireBoltcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.firebolt1) function setDamage(int level, real value) def.setLvlDataUnreal("Htb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionEvasioncreep100 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.evasion1) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Eev1", level, 1, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Eev1", lvls, 1, lc) addTooltipProperty("Chance to Evade", lc) public class AbilityDefinitionVenomSpears extends AbilityDefinition private bitset stackingTypesSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.envenomedSpears) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) function setStackingType(int level, int value) def.setLvlDataInt("Poi4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poi1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poi1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionEvasioncreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.evasion3) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Eev1", level, 1, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Eev1", lvls, 1, lc) addTooltipProperty("Chance to Evade", lc) public class AbilityDefinitionCargoHoldBurrow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHold) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionMagicImmunityAImx extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.magicImmunityAImx) function setMagicDamageFactor(int level, real value) def.setLvlDataUnreal("mim1", level, 1, value) function presetMagicDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("mim1", lvls, 1, lc) addTooltipProperty("Magic Damage Factor", lc) public class AbilityDefinitionBurrow extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.burrow) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionCyclone extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cyclone1) function setCanBeDispelled(int level, bool value) def.setLvlDataBoolean("cyc1", level, 1, value) function presetCanBeDispelled(BooleanLevelClosure lc) def.setLevelsDataBoolean("cyc1", lvls, 1, lc) addTooltipProperty("CanBeDispelled", lc) public class AbilityDefinitionItemManaRestoreAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAreaManaRegain) function setManaPointsGained(int level, int value) def.setLvlDataInt("Impg", level, 1, value) function presetManaPointsGained(IntLevelClosure lc) def.setLevelsDataInt("Impg", lvls, 1, lc) addTooltipProperty("Mana Points Gained", lc) public class AbilityDefinitionStaffoTeleportation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.staffoTeleportation) function setUseTeleportClustering(int level, bool value) def.setLvlDataBoolean("Hmt3", level, 3, value) function presetUseTeleportClustering(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hmt3", lvls, 3, lc) addTooltipProperty("Use Teleport Clustering", lc) function setCastingDelay(int level, real value) def.setLvlDataUnreal("Hmt2", level, 2, value) function presetCastingDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Hmt2", lvls, 2, lc) addTooltipProperty("Casting Delay", lc) function setNumberofUnitsTeleported(int level, int value) def.setLvlDataInt("Hmt1", level, 1, value) function presetNumberofUnitsTeleported(IntLevelClosure lc) def.setLevelsDataInt("Hmt1", lvls, 1, lc) addTooltipProperty("Number of Units Teleported", lc) public class AbilityDefinitionEnsnareCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ensnare) function setAirUnitHeight(int level, real value) def.setLvlDataUnreal("Ens2", level, 2, value) function presetAirUnitHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Ens2", lvls, 2, lc) addTooltipProperty("Air Unit Height", lc) function setAirUnitLowerDuration(int level, real value) def.setLvlDataUnreal("Ens1", level, 1, value) function presetAirUnitLowerDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ens1", lvls, 1, lc) addTooltipProperty("Air Unit Lower Duration", lc) function setMeleeAttackRange(int level, real value) def.setLvlDataUnreal("Ens3", level, 3, value) function presetMeleeAttackRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ens3", lvls, 3, lc) addTooltipProperty("Melee Attack Range", lc) public class AbilityDefinitionMoveSpeedBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemMoveSpeedBonus) function setMovementSpeedBonus(int level, int value) def.setLvlDataInt("Imvb", level, 1, value) function presetMovementSpeedBonus(IntLevelClosure lc) def.setLevelsDataInt("Imvb", lvls, 1, lc) addTooltipProperty("Movement Speed Bonus", lc) public class AbilityDefinitionPhoenix extends AbilityDefinition private bitset morphingFlagsSet = bitset(7) construct(int newAbilityId) super(newAbilityId, AbilityIds.phoenix2) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionNeutralSpell extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.neutralSpell) function setChargeOwningPlayer(int level, bool value) def.setLvlDataBoolean("Ans6", level, 6, value) function presetChargeOwningPlayer(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ans6", lvls, 6, lc) addTooltipProperty("Charge Owning Player", lc) function setGoldCost(int level, int value) def.setLvlDataInt("Ndt1", level, 1, value) function presetGoldCost(IntLevelClosure lc) def.setLevelsDataInt("Ndt1", lvls, 1, lc) addTooltipProperty("Gold Cost", lc) function setBaseOrderID(int level, string value) def.setLvlDataString("Ans5", level, 5, value) function presetBaseOrderID(StringLevelClosure lc) def.setLevelsDataString("Ans5", lvls, 5, lc) addTooltipProperty("BaseOrderID", lc) function setLumberCost(int level, int value) def.setLvlDataInt("Ndt2", level, 2, value) function presetLumberCost(IntLevelClosure lc) def.setLevelsDataInt("Ndt2", lvls, 2, lc) addTooltipProperty("Lumber Cost", lc) public class AbilityDefinitionAImm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemManaBonus) function setMaxManaGained(int level, int value) def.setLvlDataInt("Iman", level, 1, value) function presetMaxManaGained(IntLevelClosure lc) def.setLevelsDataInt("Iman", lvls, 1, lc) addTooltipProperty("Max Mana Gained", lc) public class AbilityDefinitionShadowHunterHealingWave extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowHunterHealingWave) function setDamageperTarget(int level, real value) def.setLvlDataUnreal("Ocl1", level, 1, value) function presetDamageperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl1", lvls, 1, lc) addTooltipProperty("Damage per Target", lc) function setNumberofTargetsHit(int level, int value) def.setLvlDataInt("Ocl2", level, 2, value) function presetNumberofTargetsHit(IntLevelClosure lc) def.setLevelsDataInt("Ocl2", lvls, 2, lc) addTooltipProperty("Number of Targets Hit", lc) function setDamageReductionperTarget(int level, real value) def.setLvlDataUnreal("Ocl3", level, 3, value) function presetDamageReductionperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl3", lvls, 3, lc) addTooltipProperty("Damage Reduction per Target", lc) public class AbilityDefinitionShadowHunterHex extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowHunterHex) function setMorphUnitsGround(int level, string value) def.setLvlDataString("Ply2", level, 2, value) function presetMorphUnitsGround(StringLevelClosure lc) def.setLevelsDataString("Ply2", lvls, 2, lc) addTooltipProperty("Morph Units Ground", lc) function setMorphUnitsWater(int level, string value) def.setLvlDataString("Ply5", level, 5, value) function presetMorphUnitsWater(StringLevelClosure lc) def.setLevelsDataString("Ply5", lvls, 5, lc) addTooltipProperty("Morph Units Water", lc) function setMorphUnitsAmphibious(int level, string value) def.setLvlDataString("Ply4", level, 4, value) function presetMorphUnitsAmphibious(StringLevelClosure lc) def.setLevelsDataString("Ply4", lvls, 4, lc) addTooltipProperty("Morph Units Amphibious", lc) function setMorphUnitsAir(int level, string value) def.setLvlDataString("Ply3", level, 3, value) function presetMorphUnitsAir(StringLevelClosure lc) def.setLevelsDataString("Ply3", lvls, 3, lc) addTooltipProperty("Morph Units Air", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Ply1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Ply1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionItemMonsterLure extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemMonsterLure) function setLureUnitType(int level, string value) def.setLvlDataString("imou", level, 0, value) function presetLureUnitType(StringLevelClosure lc) def.setLevelsDataString("imou", lvls, 0, lc) addTooltipProperty("Lure Unit Type", lc) function setNumberofLures(int level, int value) def.setLvlDataInt("imo1", level, 1, value) function presetNumberofLures(IntLevelClosure lc) def.setLevelsDataInt("imo1", lvls, 1, lc) addTooltipProperty("Number of Lures", lc) function setActivationDelay(int level, real value) def.setLvlDataUnreal("imo2", level, 2, value) function presetActivationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("imo2", lvls, 2, lc) addTooltipProperty("Activation Delay", lc) function setLureIntervalseconds(int level, real value) def.setLvlDataUnreal("imo3", level, 3, value) function presetLureIntervalseconds(RealLevelClosure lc) def.setLevelsDataUnreal("imo3", lvls, 3, lc) addTooltipProperty("Lure Interval Seconds", lc) public class AbilityDefinitionAImi extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemLifeGain) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionAIml extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemLifeBonus) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionPermanentHitpointBonusfromchargeditem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.permanentHitpointBonusfromchargeditem) function setMaxLifeGained(int level, int value) def.setLvlDataInt("Ilif", level, 1, value) function presetMaxLifeGained(IntLevelClosure lc) def.setLevelsDataInt("Ilif", lvls, 1, lc) addTooltipProperty("Max Life Gained", lc) public class AbilityDefinitionFeedbackArcaneTower extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feedbackArcaneTower) function setSummonedDamage(int level, real value) def.setLvlDataUnreal("fbk5", level, 5, value) function presetSummonedDamage(RealLevelClosure lc) def.setLevelsDataUnreal("fbk5", lvls, 5, lc) addTooltipProperty("Summoned Damage", lc) public class AbilityDefinitionChaosGrunt extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosGrunt) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionChaosRaider extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosRaider) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionStasisTrap extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.stasisTrap) function setWardUnitType(int level, string value) def.setLvlDataString("Stau", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("Stau", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) function setActivationDelay(int level, real value) def.setLvlDataUnreal("Sta1", level, 1, value) function presetActivationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Sta1", lvls, 1, lc) addTooltipProperty("Activation Delay", lc) function setDetectionRadius(int level, real value) def.setLvlDataUnreal("Sta2", level, 2, value) function presetDetectionRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Sta2", lvls, 2, lc) addTooltipProperty("Detection Radius", lc) function setDetonationRadius(int level, real value) def.setLvlDataUnreal("Sta3", level, 3, value) function presetDetonationRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Sta3", lvls, 3, lc) addTooltipProperty("Detonation Radius", lc) function setStunDuration(int level, real value) def.setLvlDataUnreal("Sta4", level, 4, value) function presetStunDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Sta4", lvls, 4, lc) addTooltipProperty("Stun Duration", lc) function setDetonationDelay(int level, real value) def.setLvlDataUnreal("Sta5", level, 5, value) function presetDetonationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Sta5", lvls, 5, lc) addTooltipProperty("Detonation Delay", lc) public class AbilityDefinitionPermanentImmolationgraphic extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.permanentImmolationgraphic) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Eim2", level, 2, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eim2", lvls, 2, lc) addTooltipProperty("Mana Drained per Second", lc) function setBufferManaRequired(int level, real value) def.setLvlDataUnreal("Eim3", level, 3, value) function presetBufferManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Eim3", lvls, 3, lc) addTooltipProperty("Buffer Mana Required", lc) function setDamageperInterval(int level, real value) def.setLvlDataUnreal("Eim1", level, 1, value) function presetDamageperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Eim1", lvls, 1, lc) addTooltipProperty("Damage per Interval", lc) public class AbilityDefinitionChaosShaman extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosShaman) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionChaosKodo extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosKodo) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionChaosPeon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosPeon) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionFrostDamageBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAttackFrostBonus) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) public class AbilityDefinitionChaosGrom extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosGrom) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionInnerFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.innerFire) function setAutocastRange(int level, real value) def.setLvlDataUnreal("Inf3", level, 3, value) function presetAutocastRange(RealLevelClosure lc) def.setLevelsDataUnreal("Inf3", lvls, 3, lc) addTooltipProperty("Autocast Range", lc) function setLifeRegenRate(int level, real value) def.setLvlDataUnreal("Inf4", level, 4, value) function presetLifeRegenRate(RealLevelClosure lc) def.setLevelsDataUnreal("Inf4", lvls, 4, lc) addTooltipProperty("Life Regen Rate", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Inf2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Inf2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Inf1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Inf1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) public class AbilityDefinitionMoonPriestessSearingArrows extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.searingArrows1) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Hfa1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hfa1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) public class AbilityDefinitionMonsoon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.monsoon) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Esf1", level, 1, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Esf1", lvls, 1, lc) addTooltipProperty("Damage Dealt", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Esf2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Esf2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Esf3", level, 3, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Esf3", lvls, 3, lc) addTooltipProperty("Building Reduction", lc) public class AbilityDefinitionInventory extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.inventory) function setCanDropItems(int level, bool value) def.setLvlDataBoolean("inv5", level, 5, value) function presetCanDropItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv5", lvls, 5, lc) addTooltipProperty("Can Drop Items", lc) function setCanUseItems(int level, bool value) def.setLvlDataBoolean("inv3", level, 3, value) function presetCanUseItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv3", lvls, 3, lc) addTooltipProperty("Can Use Items", lc) function setDropItemsOnDeath(int level, bool value) def.setLvlDataBoolean("inv2", level, 2, value) function presetDropItemsOnDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv2", lvls, 2, lc) addTooltipProperty("DropItemsOnDeath", lc) function setCanGetItems(int level, bool value) def.setLvlDataBoolean("inv4", level, 4, value) function presetCanGetItems(BooleanLevelClosure lc) def.setLevelsDataBoolean("inv4", lvls, 4, lc) addTooltipProperty("Can Get Items", lc) function setItemCapacity(int level, int value) def.setLvlDataInt("inv1", level, 1, value) function presetItemCapacity(IntLevelClosure lc) def.setLevelsDataInt("inv1", lvls, 1, lc) addTooltipProperty("Item Capacity", lc) public class AbilityDefinitionnullroarsummoner extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.nullroarsummoner) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) public class AbilityDefinitionSeaWitchManaShield extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.seaWitchManaShield) function setDamageAbsorbed(int level, real value) def.setLvlDataUnreal("Nms2", level, 2, value) function presetDamageAbsorbed(RealLevelClosure lc) def.setLevelsDataUnreal("Nms2", lvls, 2, lc) addTooltipProperty("Damage Absorbed", lc) function setManaperHitPoint(int level, real value) def.setLvlDataUnreal("Nms1", level, 1, value) function presetManaperHitPoint(RealLevelClosure lc) def.setLevelsDataUnreal("Nms1", lvls, 1, lc) addTooltipProperty("Mana per Hit Point", lc) public class AbilityDefinitionSpawnSpiderlingOnDeath extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spawnSpiderlings) function setNumberofUnits(int level, int value) def.setLvlDataInt("Sod1", level, 1, value) function presetNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Sod1", lvls, 1, lc) addTooltipProperty("Number of Units", lc) function setUnitType(int level, string value) def.setLvlDataString("Sod2", level, 2, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("Sod2", lvls, 2, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionScrollofRejuvII extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.scrollofRejuvII) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionMindRot extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.mindRot) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Nmr1", level, 1, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Nmr1", lvls, 1, lc) addTooltipProperty("Mana Drained per Second", lc) public class AbilityDefinitionFrostNovacreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frostNova) function setAreaofEffectDamage(int level, real value) def.setLvlDataUnreal("Ufn1", level, 1, value) function presetAreaofEffectDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ufn1", lvls, 1, lc) addTooltipProperty("Area of Effect Damage", lc) function setSpecificTargetDamage(int level, real value) def.setLvlDataUnreal("Ufn2", level, 2, value) function presetSpecificTargetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ufn2", lvls, 2, lc) addTooltipProperty("Specific Target Damage", lc) public class AbilityDefinitionScrollofRejuvI extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.scrollofRejuvI) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionPermanentInvisibility extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.permanentInvisibility) function setAutoAcquireAttackTargets(int level, bool value) def.setLvlDataBoolean("Gho1", level, 1, value) function presetAutoAcquireAttackTargets(BooleanLevelClosure lc) def.setLevelsDataBoolean("Gho1", lvls, 1, lc) addTooltipProperty("Auto Acquire Attack Targets", lc) public class AbilityDefinitionFeedbackSpiritBeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feedbackSpiritBeast) function setSummonedDamage(int level, real value) def.setLvlDataUnreal("fbk5", level, 5, value) function presetSummonedDamage(RealLevelClosure lc) def.setLevelsDataUnreal("fbk5", lvls, 5, lc) addTooltipProperty("Summoned Damage", lc) public class AbilityDefinitionPotionofRejuvIV extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofRejuvIV) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionPotionofRejuvIII extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofRejuvIII) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionFlameStrikeCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.flameStrikeCreep) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hfs5", level, 5, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs5", lvls, 5, lc) addTooltipProperty("Building Reduction", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Hfs6", level, 6, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs6", lvls, 6, lc) addTooltipProperty("Maximum Damage", lc) function setHalfDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs3", level, 3, value) function presetHalfDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs3", lvls, 3, lc) addTooltipProperty("Half Damage Dealt", lc) function setFullDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs1", level, 1, value) function presetFullDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs1", lvls, 1, lc) addTooltipProperty("Full Damage Dealt", lc) function setHalfDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs4", level, 4, value) function presetHalfDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs4", lvls, 4, lc) addTooltipProperty("Half Damage Interval", lc) function setFullDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs2", level, 2, value) function presetFullDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs2", lvls, 2, lc) addTooltipProperty("Full Damage Interval", lc) public class AbilityDefinitionWispHarvest extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.gather) function setArtAttachmentHeight(int level, real value) def.setLvlDataUnreal("Wha3", level, 3, value) function presetArtAttachmentHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Wha3", lvls, 3, lc) addTooltipProperty("Art Attachment Height", lc) function setIntervalsBeforeChangingTrees(int level, int value) def.setLvlDataInt("Wha2", level, 2, value) function presetIntervalsBeforeChangingTrees(IntLevelClosure lc) def.setLevelsDataInt("Wha2", lvls, 2, lc) addTooltipProperty("Intervals Before Changing Trees", lc) function setLumberperInterval(int level, real value) def.setLvlDataUnreal("Wha1", level, 1, value) function presetLumberperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Wha1", lvls, 1, lc) addTooltipProperty("Lumber per Interval", lc) public class AbilityDefinitionPotionofRejuvII extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofRejuvII) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionHardenedSkin extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.hardenedSkin) function setIncludeRangedDamage(int level, bool value) def.setLvlDataBoolean("Ssk4", level, 4, value) function presetIncludeRangedDamage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ssk4", lvls, 4, lc) addTooltipProperty("Include Ranged Damage", lc) function setMinimumDamage(int level, real value) def.setLvlDataUnreal("Ssk2", level, 2, value) function presetMinimumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ssk2", lvls, 2, lc) addTooltipProperty("Minimum Damage", lc) function setIgnoredDamage(int level, real value) def.setLvlDataUnreal("Ssk3", level, 3, value) function presetIgnoredDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ssk3", lvls, 3, lc) addTooltipProperty("Ignored Damage", lc) function setChancetoReduceDamage(int level, real value) def.setLvlDataUnreal("Ssk1", level, 1, value) function presetChancetoReduceDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ssk1", lvls, 1, lc) addTooltipProperty("Chance to Reduce Damage", lc) function setIncludeMeleeDamage(int level, bool value) def.setLvlDataBoolean("Ssk5", level, 5, value) function presetIncludeMeleeDamage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ssk5", lvls, 5, lc) addTooltipProperty("Include Melee Damage", lc) public class AbilityDefinitionForceofNaturecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.forceofNature) function setSummonedUnitType(int level, string value) def.setLvlDataString("Efnu", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Efnu", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Efn1", level, 1, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Efn1", lvls, 1, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionPotionofRejuvI extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofRejuvI) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionFeedback extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feedback) function setSummonedDamage(int level, real value) def.setLvlDataUnreal("fbk5", level, 5, value) function presetSummonedDamage(RealLevelClosure lc) def.setLevelsDataUnreal("fbk5", lvls, 5, lc) addTooltipProperty("Summoned Damage", lc) function setDamageRatioUnits(int level, real value) def.setLvlDataUnreal("fbk2", level, 2, value) function presetDamageRatioUnits(RealLevelClosure lc) def.setLevelsDataUnreal("fbk2", lvls, 2, lc) addTooltipProperty("Damage Ratio Units", lc) function setMaxManaDrainedHeros(int level, real value) def.setLvlDataUnreal("fbk3", level, 3, value) function presetMaxManaDrainedHeros(RealLevelClosure lc) def.setLevelsDataUnreal("fbk3", lvls, 3, lc) addTooltipProperty("Max Mana Drained Heros", lc) function setMaxManaDrainedUnits(int level, real value) def.setLvlDataUnreal("fbk1", level, 1, value) function presetMaxManaDrainedUnits(RealLevelClosure lc) def.setLevelsDataUnreal("fbk1", lvls, 1, lc) addTooltipProperty("Max Mana Drained Units", lc) function setDamageRatioHeros(int level, real value) def.setLvlDataUnreal("fbk4", level, 4, value) function presetDamageRatioHeros(RealLevelClosure lc) def.setLevelsDataUnreal("fbk4", lvls, 4, lc) addTooltipProperty("Damage Ratio Heros", lc) public class AbilityDefinitionStrengthModPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.strengthModPlus2) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionFaerieFirecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.faerieFirecreep) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Fae2", level, 2, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Fae2", lvls, 2, lc) addTooltipProperty("Always Autocast", lc) function setDefenseReduction(int level, int value) def.setLvlDataInt("Fae1", level, 1, value) function presetDefenseReduction(IntLevelClosure lc) def.setLevelsDataInt("Fae1", lvls, 1, lc) addTooltipProperty("Defense Reduction", lc) public class AbilityDefinitionAarm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaRegenerationAura) function setPercentage(int level, bool value) def.setLvlDataBoolean("Arm2", level, 2, value) function presetPercentage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Arm2", lvls, 2, lc) addTooltipProperty("Percentage", lc) function setAmountRegenerated(int level, real value) def.setLvlDataUnreal("Arm1", level, 1, value) function presetAmountRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("Arm1", lvls, 1, lc) addTooltipProperty("Amount Regenerated", lc) public class AbilityDefinitionBloodMageFlameStrike extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bloodMageFlameStrike) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hfs5", level, 5, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs5", lvls, 5, lc) addTooltipProperty("Building Reduction", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Hfs6", level, 6, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs6", lvls, 6, lc) addTooltipProperty("Maximum Damage", lc) function setHalfDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs3", level, 3, value) function presetHalfDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs3", lvls, 3, lc) addTooltipProperty("Half Damage Dealt", lc) function setFullDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs1", level, 1, value) function presetFullDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs1", lvls, 1, lc) addTooltipProperty("Full Damage Dealt", lc) function setHalfDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs4", level, 4, value) function presetHalfDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs4", lvls, 4, lc) addTooltipProperty("Half Damage Interval", lc) function setFullDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs2", level, 2, value) function presetFullDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs2", lvls, 2, lc) addTooltipProperty("Full Damage Interval", lc) public class AbilityDefinitionBloodlustCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bloodlust) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo2", level, 2, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo2", lvls, 2, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) function setScalingFactor(int level, real value) def.setLvlDataUnreal("Blo3", level, 3, value) function presetScalingFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Blo3", lvls, 3, lc) addTooltipProperty("Scaling Factor", lc) public class AbilityDefinitionRoarAIrr extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.roarAIrr) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionResurrection extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemResurrection) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) function setNumberofCorpsesRaised(int level, int value) def.setLvlDataInt("Hre1", level, 1, value) function presetNumberofCorpsesRaised(IntLevelClosure lc) def.setLevelsDataInt("Hre1", lvls, 1, lc) addTooltipProperty("Number of Corpses Raised", lc) public class AbilityDefinitionItemRecall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemRecall) function setMaximumNumberofUnits(int level, int value) def.setLvlDataInt("Irec", level, 1, value) function presetMaximumNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Irec", lvls, 1, lc) addTooltipProperty("Maximum Number of Units", lc) function setUseTeleportClustering(int level, bool value) def.setLvlDataBoolean("Itp2", level, 2, value) function presetUseTeleportClustering(BooleanLevelClosure lc) def.setLevelsDataBoolean("Itp2", lvls, 2, lc) addTooltipProperty("Use Teleport Clustering", lc) public class AbilityDefinitionAttackBonusAIt6 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusAIt6) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionItemRevealMap extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemRevealMap) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionBashcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bash1) function setChancetoBash(int level, real value) def.setLvlDataUnreal("Hbh1", level, 1, value) function presetChancetoBash(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh1", lvls, 1, lc) addTooltipProperty("Chance to Bash", lc) function setChancetoMiss(int level, real value) def.setLvlDataUnreal("Hbh4", level, 4, value) function presetChancetoMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh4", lvls, 4, lc) addTooltipProperty("Chance to Miss", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Hbh3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Hbh5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hbh5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) function setDamageMultiplier(int level, real value) def.setLvlDataUnreal("Hbh2", level, 2, value) function presetDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Hbh2", lvls, 2, lc) addTooltipProperty("Damage Multiplier", lc) public class AbilityDefinitionAlchemistChemicalRage extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.alchemistChemicalRage) function setAttackSpeedBonusInfoPanelOnly(int level, real value) def.setLvlDataUnreal("Ncr6", level, 6, value) function presetAttackSpeedBonusInfoPanelOnly(RealLevelClosure lc) def.setLevelsDataUnreal("Ncr6", lvls, 6, lc) addTooltipProperty("AttackSpeedBonusInfoPanelOnly", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setMoveSpeedBonusInfoPanelOnly(int level, real value) def.setLvlDataUnreal("Ncr5", level, 5, value) function presetMoveSpeedBonusInfoPanelOnly(RealLevelClosure lc) def.setLevelsDataUnreal("Ncr5", lvls, 5, lc) addTooltipProperty("MoveSpeedBonusInfoPanelOnly", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionTinkererClusterRocketsLevel0 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererClusterRocketsLevel0) function setEffectDuration(int level, real value) def.setLvlDataUnreal("Ncs6", level, 6, value) function presetEffectDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs6", lvls, 6, lc) addTooltipProperty("Effect Duration", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Ncs2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ncs4", level, 4, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs4", lvls, 4, lc) addTooltipProperty("Max Damage", lc) function setMissileCount(int level, int value) def.setLvlDataInt("Ncs3", level, 3, value) function presetMissileCount(IntLevelClosure lc) def.setLevelsDataInt("Ncs3", lvls, 3, lc) addTooltipProperty("Missile Count", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Ncs1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Ncs5", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs5", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) public class AbilityDefinitionAttackBonusAIt9 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusAIt9) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionPossession extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.possession) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Pos1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Pos1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionPotionofLifeRegen extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofLifeRegen) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionDarkRangerCharm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkRangerCharm) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Nch1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Nch1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionBreathofFrostCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.breathofFrostCreep) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Nbf5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Nbf5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionItemRegenMana extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemManaRegeneration) function setManaRegenerationBonusasfractionofnormal(int level, real value) def.setLvlDataUnreal("Imrp", level, 1, value) function presetManaRegenerationBonusasfractionofnormal(RealLevelClosure lc) def.setLevelsDataUnreal("Imrp", lvls, 1, lc) addTooltipProperty("Mana Regeneration Bonus as fraction of normal", lc) public class AbilityDefinitionItemRegenManalesser extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemRegenManalesser) function setManaRegenerationBonusasfractionofnormal(int level, real value) def.setLvlDataUnreal("Imrp", level, 1, value) function presetManaRegenerationBonusasfractionofnormal(RealLevelClosure lc) def.setLevelsDataUnreal("Imrp", lvls, 1, lc) addTooltipProperty("Mana Regeneration Bonus as fraction of normal", lc) public class AbilityDefinitionAuraBrilliancecreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brillianceAura1) function setManaRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Hab1", level, 1, value) function presetManaRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Hab1", lvls, 1, lc) addTooltipProperty("Mana Regeneration Increase", lc) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Hab2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hab2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) public class AbilityDefinitionIllidanChannel extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.channel) function setArtDuration(int level, real value) def.setLvlDataUnreal("Ncl4", level, 4, value) function presetArtDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ncl4", lvls, 4, lc) addTooltipProperty("Art Duration", lc) function setBaseOrderID(int level, string value) def.setLvlDataString("Ncl6", level, 6, value) function presetBaseOrderID(StringLevelClosure lc) def.setLevelsDataString("Ncl6", lvls, 6, lc) addTooltipProperty("BaseOrderID", lc) function setDisableOtherAbilities(int level, bool value) def.setLvlDataBoolean("Ncl5", level, 5, value) function presetDisableOtherAbilities(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ncl5", lvls, 5, lc) addTooltipProperty("Disable Other Abilities", lc) function setFollowThroughTime(int level, real value) def.setLvlDataUnreal("Ncl1", level, 1, value) function presetFollowThroughTime(RealLevelClosure lc) def.setLevelsDataUnreal("Ncl1", lvls, 1, lc) addTooltipProperty("Follow Through Time", lc) function setTargetType(int level, int value) def.setLvlDataInt("Ncl2", level, 2, value) function presetTargetType(IntLevelClosure lc) def.setLevelsDataInt("Ncl2", lvls, 2, lc) addTooltipProperty("Target Type", lc) function setOptions(int level, int value) def.setLvlDataInt("Ncl3", level, 3, value) function presetOptions(IntLevelClosure lc) def.setLevelsDataInt("Ncl3", lvls, 3, lc) addTooltipProperty("Options", lc) public class AbilityDefinitionBreathofFireCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.breathofFireCreep) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Nbf5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Nbf5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionPitLordCleavingAttack extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pitLordCleavingAttack) function setDistributedDamageFactor(int level, real value) def.setLvlDataUnreal("nca1", level, 1, value) function presetDistributedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("nca1", lvls, 1, lc) addTooltipProperty("Distributed Damage Factor", lc) public class AbilityDefinitionSilenceItem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.silenceItem) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionSummonHeadhunteritem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.summonHeadhunteritem) function setSummonedUnit(int level, string value) def.setLvlDataString("Osf1", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Osf1", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Osf2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Osf2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionSightBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemSightRangeBonus) function setSightRangeBonus(int level, int value) def.setLvlDataInt("Isib", level, 1, value) function presetSightRangeBonus(IntLevelClosure lc) def.setLevelsDataInt("Isib", lvls, 1, lc) addTooltipProperty("Sight Range Bonus", lc) public class AbilityDefinitionBlizzardcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blizzard1) function setMaximumDamageperWave(int level, real value) def.setLvlDataUnreal("Hbz6", level, 6, value) function presetMaximumDamageperWave(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz6", lvls, 6, lc) addTooltipProperty("Maximum Damage per Wave", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Hbz5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setNumberofWaves(int level, int value) def.setLvlDataInt("Hbz1", level, 1, value) function presetNumberofWaves(IntLevelClosure lc) def.setLevelsDataInt("Hbz1", lvls, 1, lc) addTooltipProperty("Number of Waves", lc) function setNumberofShards(int level, int value) def.setLvlDataInt("Hbz3", level, 3, value) function presetNumberofShards(IntLevelClosure lc) def.setLevelsDataInt("Hbz3", lvls, 3, lc) addTooltipProperty("Number of Shards", lc) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hbz4", level, 4, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz4", lvls, 4, lc) addTooltipProperty("Building Reduction", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Hbz2", level, 2, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hbz2", lvls, 2, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionCloudofFog extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cloudofFog) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionAntimagicShieldMatrix extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.antimagicShieldMatrix) function setManaLoss(int level, int value) def.setLvlDataInt("Ams4", level, 4, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Ams4", lvls, 4, lc) addTooltipProperty("Mana Loss", lc) public class AbilityDefinitionLoad extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.load) function setAllowedUnitType(int level, string value) def.setLvlDataString("Loa1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Loa1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionBladeMasterMirrorImage extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.mirrorImage) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Omi2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Omi2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setNumberofImages(int level, int value) def.setLvlDataInt("Omi1", level, 1, value) function presetNumberofImages(IntLevelClosure lc) def.setLevelsDataInt("Omi1", lvls, 1, lc) addTooltipProperty("Number of Images", lc) function setDamageTaken(int level, real value) def.setLvlDataUnreal("Omi3", level, 3, value) function presetDamageTaken(RealLevelClosure lc) def.setLevelsDataUnreal("Omi3", lvls, 3, lc) addTooltipProperty("Damage Taken", lc) function setAnimationDelay(int level, real value) def.setLvlDataUnreal("Omi4", level, 4, value) function presetAnimationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Omi4", lvls, 4, lc) addTooltipProperty("Animation Delay", lc) public class AbilityDefinitionWardenBlink extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.wardenBlink) function setMaximumRange(int level, real value) def.setLvlDataUnreal("Ebl1", level, 1, value) function presetMaximumRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ebl1", lvls, 1, lc) addTooltipProperty("Maximum Range", lc) function setMinimumRange(int level, real value) def.setLvlDataUnreal("Ebl2", level, 2, value) function presetMinimumRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ebl2", lvls, 2, lc) addTooltipProperty("Minimum Range", lc) public class AbilityDefinitionPoisonAttack extends AbilityDefinition private bitset stackingTypesSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.poisonSting) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) function setStackingType(int level, int value) def.setLvlDataInt("Poi4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poi1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poi1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionOrbofSpells extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofSpells) function setChanceToHitUnits(int level, real value) def.setLvlDataUnreal("Iob2", level, 2, value) function presetChanceToHitUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Iob2", lvls, 2, lc) addTooltipProperty("Chance To Hit Units", lc) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setChanceToHitSummons(int level, real value) def.setLvlDataUnreal("Iob4", level, 4, value) function presetChanceToHitSummons(RealLevelClosure lc) def.setLevelsDataUnreal("Iob4", lvls, 4, lc) addTooltipProperty("Chance To Hit Summons", lc) function setChanceToHitHeros(int level, real value) def.setLvlDataUnreal("Iob3", level, 3, value) function presetChanceToHitHeros(RealLevelClosure lc) def.setLevelsDataUnreal("Iob3", lvls, 3, lc) addTooltipProperty("Chance To Hit Heros", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setEffectAbility(int level, string value) def.setLvlDataString("Iobu", level, 0, value) function presetEffectAbility(StringLevelClosure lc) def.setLevelsDataString("Iobu", lvls, 0, lc) addTooltipProperty("Effect Ability", lc) public class AbilityDefinitionItemSpeedAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemSpeedAoe) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Ispi", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Ispi", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) public class AbilityDefinitionUnholyFrenzy extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unholyFrenzy) function setAttackSpeedBonus(int level, real value) def.setLvlDataUnreal("Uhf1", level, 1, value) function presetAttackSpeedBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf1", lvls, 1, lc) addTooltipProperty("Attack Speed Bonus", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Uhf2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionAntimagicShieldcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.antimagicShell) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Ams2", level, 2, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ams2", lvls, 2, lc) addTooltipProperty("Magic Damage Reduction", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Ams4", level, 4, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Ams4", lvls, 4, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Ams1", level, 1, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ams1", lvls, 1, lc) addTooltipProperty("Summoned Unit Damage", lc) function setShieldLife(int level, int value) def.setLvlDataInt("Ams3", level, 3, value) function presetShieldLife(IntLevelClosure lc) def.setLevelsDataInt("Ams3", lvls, 3, lc) addTooltipProperty("Shield Life", lc) public class AbilityDefinitionSpawnSpiderOnDeath extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spawnSpiders) function setNumberofUnits(int level, int value) def.setLvlDataInt("Sod1", level, 1, value) function presetNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Sod1", lvls, 1, lc) addTooltipProperty("Number of Units", lc) function setUnitType(int level, string value) def.setLvlDataString("Sod2", level, 2, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("Sod2", lvls, 2, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionDarkRangerDrain extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkRangerDrain) function setBonusLifeDecay(int level, real value) def.setLvlDataUnreal("Ndr7", level, 7, value) function presetBonusLifeDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr7", lvls, 7, lc) addTooltipProperty("Bonus Life Decay", lc) function setDrainIntervalseconds(int level, real value) def.setLvlDataUnreal("Ndr3", level, 3, value) function presetDrainIntervalseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr3", lvls, 3, lc) addTooltipProperty("Drain Interval Seconds", lc) function setHitPointsDrained(int level, real value) def.setLvlDataUnreal("Ndr1", level, 1, value) function presetHitPointsDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr1", lvls, 1, lc) addTooltipProperty("Hit Points Drained", lc) function setBonusLifeFactor(int level, real value) def.setLvlDataUnreal("Ndr6", level, 6, value) function presetBonusLifeFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr6", lvls, 6, lc) addTooltipProperty("Bonus Life Factor", lc) function setManaPointsDrained(int level, real value) def.setLvlDataUnreal("Ndr2", level, 2, value) function presetManaPointsDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr2", lvls, 2, lc) addTooltipProperty("Mana Points Drained", lc) function setManaTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr5", level, 5, value) function presetManaTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr5", lvls, 5, lc) addTooltipProperty("Mana Transferred Per Second", lc) function setBonusManaDecay(int level, real value) def.setLvlDataUnreal("Ndr9", level, 9, value) function presetBonusManaDecay(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr9", lvls, 9, lc) addTooltipProperty("Bonus Mana Decay", lc) function setBonusManaFactor(int level, real value) def.setLvlDataUnreal("Ndr8", level, 8, value) function presetBonusManaFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr8", lvls, 8, lc) addTooltipProperty("Bonus Mana Factor", lc) function setLifeTransferredPerSecond(int level, real value) def.setLvlDataUnreal("Ndr4", level, 4, value) function presetLifeTransferredPerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndr4", lvls, 4, lc) addTooltipProperty("Life Transferred Per Second", lc) public class AbilityDefinitionFlare extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.flare) function setDetectionType(int level, string value) def.setLvlDataString("Fla1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Fla1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) function setFlareCount(int level, int value) def.setLvlDataInt("Fla3", level, 3, value) function presetFlareCount(IntLevelClosure lc) def.setLevelsDataInt("Fla3", lvls, 3, lc) addTooltipProperty("Flare Count", lc) function setEffectDelay(int level, real value) def.setLvlDataUnreal("Fla2", level, 2, value) function presetEffectDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Fla2", lvls, 2, lc) addTooltipProperty("Effect Delay", lc) public class AbilityDefinitionStrengthBonusPlus6 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.strengthBonusPlus6) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionPitLordDoom extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pitLordDoom) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Ndo1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Ndo1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Ndo2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Ndo2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Ndou", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Ndou", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setSummonedUnitDurationseconds(int level, real value) def.setLvlDataUnreal("Ndo3", level, 3, value) function presetSummonedUnitDurationseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Ndo3", lvls, 3, lc) addTooltipProperty("Summoned Unit Duration Seconds", lc) public class AbilityDefinitionSpellBook extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spellBook) function setMaximumSpells(int level, int value) def.setLvlDataInt("spb4", level, 4, value) function presetMaximumSpells(IntLevelClosure lc) def.setLevelsDataInt("spb4", lvls, 4, lc) addTooltipProperty("Maximum Spells", lc) function setSharedSpellCooldown(int level, bool value) def.setLvlDataBoolean("spb2", level, 2, value) function presetSharedSpellCooldown(BooleanLevelClosure lc) def.setLevelsDataBoolean("spb2", lvls, 2, lc) addTooltipProperty("Shared Spell Cooldown", lc) function setSpellList(int level, string value) def.setLvlDataString("spb1", level, 1, value) function presetSpellList(StringLevelClosure lc) def.setLevelsDataString("spb1", lvls, 1, lc) addTooltipProperty("Spell List", lc) function setMinimumSpells(int level, int value) def.setLvlDataInt("spb3", level, 3, value) function presetMinimumSpells(IntLevelClosure lc) def.setLevelsDataInt("spb3", lvls, 3, lc) addTooltipProperty("Minimum Spells", lc) function setBaseOrderID(int level, string value) def.setLvlDataString("spb5", level, 5, value) function presetBaseOrderID(StringLevelClosure lc) def.setLevelsDataString("spb5", lvls, 5, lc) addTooltipProperty("BaseOrderID", lc) public class AbilityDefinitionStrengthBonusPlus3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.strengthBonusPlus3) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionDarkPortal extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkPortal) function setSpawnedUnits(int level, string value) def.setLvlDataString("Ndp1", level, 1, value) function presetSpawnedUnits(StringLevelClosure lc) def.setLevelsDataString("Ndp1", lvls, 1, lc) addTooltipProperty("Spawned Units", lc) function setMaximumNumberofUnits(int level, int value) def.setLvlDataInt("Ndp3", level, 3, value) function presetMaximumNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Ndp3", lvls, 3, lc) addTooltipProperty("Maximum Number of Units", lc) function setMinimumNumberofUnits(int level, int value) def.setLvlDataInt("Ndp2", level, 2, value) function presetMinimumNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Ndp2", lvls, 2, lc) addTooltipProperty("Minimum Number of Units", lc) public class AbilityDefinitionMoonPriestessTrueshotAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.trueshotAura1) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ear1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ear1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionStrengthBonusPlus4 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.strengthBonusPlus4) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionSpiderAttack extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spiderAttack) function setSpiderCapacity(int level, int value) def.setLvlDataInt("Spa1", level, 1, value) function presetSpiderCapacity(IntLevelClosure lc) def.setLevelsDataInt("Spa1", lvls, 1, lc) addTooltipProperty("Spider Capacity", lc) public class AbilityDefinitionSpiritLink extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spiritLink) function setMaximumNumberofTargets(int level, int value) def.setLvlDataInt("spl2", level, 2, value) function presetMaximumNumberofTargets(IntLevelClosure lc) def.setLevelsDataInt("spl2", lvls, 2, lc) addTooltipProperty("Maximum Number of Targets", lc) function setDistributedDamageFactor(int level, real value) def.setLvlDataUnreal("spl1", level, 1, value) function presetDistributedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("spl1", lvls, 1, lc) addTooltipProperty("Distributed Damage Factor", lc) public class AbilityDefinitionAuraWarDrumsKodobeast extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.warDrums) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setAttackDamageIncrease(int level, real value) def.setLvlDataUnreal("Akb1", level, 1, value) function presetAttackDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Akb1", lvls, 1, lc) addTooltipProperty("Attack Damage Increase", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionArchMageMassTeleport extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.massTeleport) function setUseTeleportClustering(int level, bool value) def.setLvlDataBoolean("Hmt3", level, 3, value) function presetUseTeleportClustering(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hmt3", lvls, 3, lc) addTooltipProperty("Use Teleport Clustering", lc) function setCastingDelay(int level, real value) def.setLvlDataUnreal("Hmt2", level, 2, value) function presetCastingDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Hmt2", lvls, 2, lc) addTooltipProperty("Casting Delay", lc) function setNumberofUnitsTeleported(int level, int value) def.setLvlDataInt("Hmt1", level, 1, value) function presetNumberofUnitsTeleported(IntLevelClosure lc) def.setLevelsDataInt("Hmt1", lvls, 1, lc) addTooltipProperty("Number of Units Teleported", lc) public class AbilityDefinitionGoldMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.goldMineability) function setMiningCapacity(int level, int value) def.setLvlDataInt("Gld3", level, 3, value) function presetMiningCapacity(IntLevelClosure lc) def.setLevelsDataInt("Gld3", lvls, 3, lc) addTooltipProperty("Mining Capacity", lc) function setMaxGold(int level, int value) def.setLvlDataInt("Gld1", level, 1, value) function presetMaxGold(IntLevelClosure lc) def.setLevelsDataInt("Gld1", lvls, 1, lc) addTooltipProperty("Max Gold", lc) function setMiningDuration(int level, real value) def.setLvlDataUnreal("Gld2", level, 2, value) function presetMiningDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Gld2", lvls, 2, lc) addTooltipProperty("Mining Duration", lc) public class AbilityDefinitionAuraCommandCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.auraCommandCreep) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setAttackDamageIncrease(int level, real value) def.setLvlDataUnreal("Cac1", level, 1, value) function presetAttackDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Cac1", lvls, 1, lc) addTooltipProperty("Attack Damage Increase", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionBrewmasterDrunkenHaze extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brewmasterDrunkenHaze) function setAttackSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi4", level, 4, value) function presetAttackSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi4", lvls, 4, lc) addTooltipProperty("Attack Speed Modifier", lc) function setMovementSpeedModifier(int level, real value) def.setLvlDataUnreal("Nsi3", level, 3, value) function presetMovementSpeedModifier(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi3", lvls, 3, lc) addTooltipProperty("Movement Speed Modifier", lc) function setChanceToMiss(int level, real value) def.setLvlDataUnreal("Nsi2", level, 2, value) function presetChanceToMiss(RealLevelClosure lc) def.setLevelsDataUnreal("Nsi2", lvls, 2, lc) addTooltipProperty("Chance To Miss", lc) function setAttacksPrevented(int level, int value) def.setLvlDataInt("Nsi1", level, 1, value) function presetAttacksPrevented(IntLevelClosure lc) def.setLevelsDataInt("Nsi1", lvls, 1, lc) addTooltipProperty("Attacks Prevented", lc) public class AbilityDefinitionAnimateDeadcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.animateDead) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) function setNumberofCorpsesRaised(int level, int value) def.setLvlDataInt("Cad1", level, 1, value) function presetNumberofCorpsesRaised(IntLevelClosure lc) def.setLevelsDataInt("Cad1", lvls, 1, lc) addTooltipProperty("Number of Corpses Raised", lc) function setInheritUpgrades(int level, bool value) def.setLvlDataBoolean("Uan3", level, 3, value) function presetInheritUpgrades(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uan3", lvls, 3, lc) addTooltipProperty("Inherit Upgrades", lc) public class AbilityDefinitionStrengthBonusPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.strengthBonusPlus1) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAttackSpeedIncreaseGreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackSpeedIncreaseGreater) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Isx1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Isx1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionItemRestore extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemHealManaRegain) function setManaPointsRestored(int level, int value) def.setLvlDataInt("Imps", level, 2, value) function presetManaPointsRestored(IntLevelClosure lc) def.setLevelsDataInt("Imps", lvls, 2, lc) addTooltipProperty("Mana Points Restored", lc) function setHitPointsRestored(int level, int value) def.setLvlDataInt("Ihps", level, 1, value) function presetHitPointsRestored(IntLevelClosure lc) def.setLevelsDataInt("Ihps", lvls, 1, lc) addTooltipProperty("Hit Points Restored", lc) public class AbilityDefinitionBrewmasterDrunkenBrawler extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brewmasterDrunkenBrawler) function setDamageMultiplier(int level, real value) def.setLvlDataUnreal("Ocr2", level, 2, value) function presetDamageMultiplier(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr2", lvls, 2, lc) addTooltipProperty("Damage Multiplier", lc) function setChancetoCriticalStrike(int level, real value) def.setLvlDataUnreal("Ocr1", level, 1, value) function presetChancetoCriticalStrike(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr1", lvls, 1, lc) addTooltipProperty("Chance to Critical Strike", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ocr3", level, 3, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr3", lvls, 3, lc) addTooltipProperty("Damage Bonus", lc) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Ocr4", level, 4, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Ocr4", lvls, 4, lc) addTooltipProperty("Chance to Evade", lc) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Ocr5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ocr5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionRaiseDeadItem extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.raiseDeadItem) function setUnitsSummonedTypeOne(int level, int value) def.setLvlDataInt("Rai1", level, 1, value) function presetUnitsSummonedTypeOne(IntLevelClosure lc) def.setLevelsDataInt("Rai1", lvls, 1, lc) addTooltipProperty("Units Summoned Type One", lc) function setUnitTypeForLimitCheck(int level, string value) def.setLvlDataString("Raiu", level, 0, value) function presetUnitTypeForLimitCheck(StringLevelClosure lc) def.setLevelsDataString("Raiu", lvls, 0, lc) addTooltipProperty("UnitTypeForLimitCheck", lc) function setUnitsSummonedTypeTwo(int level, int value) def.setLvlDataInt("Rai2", level, 2, value) function presetUnitsSummonedTypeTwo(IntLevelClosure lc) def.setLevelsDataInt("Rai2", lvls, 2, lc) addTooltipProperty("Units Summoned Type Two", lc) function setUnitTypeTwo(int level, string value) def.setLvlDataString("Rai4", level, 4, value) function presetUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("Rai4", lvls, 4, lc) addTooltipProperty("Unit Type Two", lc) function setUnitTypeOne(int level, string value) def.setLvlDataString("Rai3", level, 3, value) function presetUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("Rai3", lvls, 3, lc) addTooltipProperty("Unit Type One", lc) public class AbilityDefinitionSpawnHydraHatchling extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spawnHydraHatchling) function setNumberofUnits(int level, int value) def.setLvlDataInt("Sod1", level, 1, value) function presetNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Sod1", lvls, 1, lc) addTooltipProperty("Number of Units", lc) function setUnitType(int level, string value) def.setLvlDataString("Sod2", level, 2, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("Sod2", lvls, 2, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionItemReincarnation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemReincarnation) function setRestoredLife(int level, int value) def.setLvlDataInt("irc2", level, 2, value) function presetRestoredLife(IntLevelClosure lc) def.setLevelsDataInt("irc2", lvls, 2, lc) addTooltipProperty("Restored Life", lc) function setDelayAfterDeathseconds(int level, int value) def.setLvlDataInt("Ircd", level, 1, value) function presetDelayAfterDeathseconds(IntLevelClosure lc) def.setLevelsDataInt("Ircd", lvls, 1, lc) addTooltipProperty("Delay After Death Seconds", lc) function setRestoredManaforcurrent(int level, int value) def.setLvlDataInt("irc3", level, 3, value) function presetRestoredManaforcurrent(IntLevelClosure lc) def.setLevelsDataInt("irc3", lvls, 3, lc) addTooltipProperty("Restored Mana for current", lc) public class AbilityDefinitionTinkererDemolishLevel0 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererDemolishLevel0) function setDamageMultiplierBuildings(int level, real value) def.setLvlDataUnreal("Nde2", level, 2, value) function presetDamageMultiplierBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Nde2", lvls, 2, lc) addTooltipProperty("Damage Multiplier Buildings", lc) function setDamageMultiplierUnits(int level, real value) def.setLvlDataUnreal("Nde3", level, 3, value) function presetDamageMultiplierUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Nde3", lvls, 3, lc) addTooltipProperty("Damage Multiplier Units", lc) function setDamageMultiplierHeroes(int level, real value) def.setLvlDataUnreal("Nde4", level, 4, value) function presetDamageMultiplierHeroes(RealLevelClosure lc) def.setLevelsDataUnreal("Nde4", lvls, 4, lc) addTooltipProperty("Damage Multiplier Heroes", lc) function setChancetoDemolish(int level, real value) def.setLvlDataUnreal("Nde1", level, 1, value) function presetChancetoDemolish(RealLevelClosure lc) def.setLevelsDataUnreal("Nde1", lvls, 1, lc) addTooltipProperty("Chance to Demolish", lc) public class AbilityDefinitionRuneofSpiritLink extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.runeofSpiritLink) function setDistributedDamageFactor(int level, real value) def.setLvlDataUnreal("spl1", level, 1, value) function presetDistributedDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("spl1", lvls, 1, lc) addTooltipProperty("Distributed Damage Factor", lc) public class AbilityDefinitionSlowPoison extends AbilityDefinition private bitset stackingTypesSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.slowPoison) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Spo1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Spo1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) function setStackingType(int level, int value) def.setLvlDataInt("Spo4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Spo4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Spo3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Spo3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Spo2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Spo2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionMalganisDarkConversion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkConversion) function setConversionUnit(int level, string value) def.setLvlDataString("Ndc2", level, 0, value) function presetConversionUnit(StringLevelClosure lc) def.setLevelsDataString("Ndc2", lvls, 0, lc) addTooltipProperty("Conversion Unit", lc) function setRacetoConvert(int level, string value) def.setLvlDataString("Ndc1", level, 1, value) function presetRacetoConvert(StringLevelClosure lc) def.setLevelsDataString("Ndc1", lvls, 1, lc) addTooltipProperty("Race to Convert", lc) public class AbilityDefinitionAuraDevotionCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devotionAura1) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Had2", level, 2, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Had2", lvls, 2, lc) addTooltipProperty("Percent Bonus", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Had1", level, 1, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Had1", lvls, 1, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionAuraTrueshotCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.trueshotAura) function setFlatBonus(int level, bool value) def.setLvlDataBoolean("Ear4", level, 4, value) function presetFlatBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear4", lvls, 4, lc) addTooltipProperty("Flat Bonus", lc) function setRangedBonus(int level, bool value) def.setLvlDataBoolean("Ear3", level, 3, value) function presetRangedBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear3", lvls, 3, lc) addTooltipProperty("Ranged Bonus", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Ear1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ear1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setMeleeBonus(int level, bool value) def.setLvlDataBoolean("Ear2", level, 2, value) function presetMeleeBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ear2", lvls, 2, lc) addTooltipProperty("Melee Bonus", lc) public class AbilityDefinitionItemRestoreAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAreaHealManaRegain) function setManaPointsRestored(int level, int value) def.setLvlDataInt("Imps", level, 2, value) function presetManaPointsRestored(IntLevelClosure lc) def.setLevelsDataInt("Imps", lvls, 2, lc) addTooltipProperty("Mana Points Restored", lc) function setHitPointsRestored(int level, int value) def.setLvlDataInt("Ihps", level, 1, value) function presetHitPointsRestored(IntLevelClosure lc) def.setLevelsDataInt("Ihps", lvls, 1, lc) addTooltipProperty("Hit Points Restored", lc) public class AbilityDefinitionKeeperoftheGroveThornsAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.thornsAura1) function setDamageisPercentReceived(int level, bool value) def.setLvlDataBoolean("Eah2", level, 2, value) function presetDamageisPercentReceived(BooleanLevelClosure lc) def.setLevelsDataBoolean("Eah2", lvls, 2, lc) addTooltipProperty("Damageis Percent Received", lc) function setDamageDealttoAttackers(int level, real value) def.setLvlDataUnreal("Eah1", level, 1, value) function presetDamageDealttoAttackers(RealLevelClosure lc) def.setLevelsDataUnreal("Eah1", lvls, 1, lc) addTooltipProperty("Damage Dealt to Attackers", lc) public class AbilityDefinitionSpawnHydra extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spawnHydra) function setNumberofUnits(int level, int value) def.setLvlDataInt("Sod1", level, 1, value) function presetNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Sod1", lvls, 1, lc) addTooltipProperty("Number of Units", lc) function setUnitType(int level, string value) def.setLvlDataString("Sod2", level, 2, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("Sod2", lvls, 2, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionAspx extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.aspx) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionTinkererClusterRocketsLevel2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererClusterRocketsLevel2) function setEffectDuration(int level, real value) def.setLvlDataUnreal("Ncs6", level, 6, value) function presetEffectDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs6", lvls, 6, lc) addTooltipProperty("Effect Duration", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Ncs2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ncs4", level, 4, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs4", lvls, 4, lc) addTooltipProperty("Max Damage", lc) function setMissileCount(int level, int value) def.setLvlDataInt("Ncs3", level, 3, value) function presetMissileCount(IntLevelClosure lc) def.setLevelsDataInt("Ncs3", lvls, 3, lc) addTooltipProperty("Missile Count", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Ncs1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Ncs5", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs5", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) public class AbilityDefinitionDreadlordVampiricAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.vampiricAura1) function setAttackDamageStolen(int level, real value) def.setLvlDataUnreal("Uav1", level, 1, value) function presetAttackDamageStolen(RealLevelClosure lc) def.setLevelsDataUnreal("Uav1", lvls, 1, lc) addTooltipProperty("Attack Damage Stolen", lc) public class AbilityDefinitionTinkererClusterRocketsLevel3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererClusterRocketsLevel3) function setEffectDuration(int level, real value) def.setLvlDataUnreal("Ncs6", level, 6, value) function presetEffectDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs6", lvls, 6, lc) addTooltipProperty("Effect Duration", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Ncs2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ncs4", level, 4, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs4", lvls, 4, lc) addTooltipProperty("Max Damage", lc) function setMissileCount(int level, int value) def.setLvlDataInt("Ncs3", level, 3, value) function presetMissileCount(IntLevelClosure lc) def.setLevelsDataInt("Ncs3", lvls, 3, lc) addTooltipProperty("Missile Count", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Ncs1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Ncs5", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs5", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) public class AbilityDefinitionDeathKnightUnholyAura extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unholyAura1) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Uau3", level, 3, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uau3", lvls, 3, lc) addTooltipProperty("Percent Bonus", lc) function setLifeRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Uau2", level, 2, value) function presetLifeRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau2", lvls, 2, lc) addTooltipProperty("Life Regeneration Increase", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Uau1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) public class AbilityDefinitionItemPotionVampirism extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemPotionVampirism) function setAmountIsRawValue(int level, bool value) def.setLvlDataBoolean("ipv3", level, 3, value) function presetAmountIsRawValue(BooleanLevelClosure lc) def.setLevelsDataBoolean("ipv3", lvls, 3, lc) addTooltipProperty("AmountIsRawValue", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("ipv1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("ipv1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setLifeStealAmount(int level, real value) def.setLvlDataUnreal("ipv2", level, 2, value) function presetLifeStealAmount(RealLevelClosure lc) def.setLevelsDataUnreal("ipv2", lvls, 2, lc) addTooltipProperty("Life Steal Amount", lc) public class AbilityDefinitionOrbofVenomPoisonAttack extends AbilityDefinition private bitset stackingTypesSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofVenomPoisonAttack) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) function setStackingType(int level, int value) def.setLvlDataInt("Poi4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poi1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poi1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionCoupleInstantArcher extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.coupleInstantArcher) function setMoveToPartner(int level, bool value) def.setLvlDataBoolean("coa2", level, 2, value) function presetMoveToPartner(BooleanLevelClosure lc) def.setLevelsDataBoolean("coa2", lvls, 2, lc) addTooltipProperty("MoveToPartner", lc) function setResultingUnitType(int level, string value) def.setLvlDataString("coau", level, 0, value) function presetResultingUnitType(StringLevelClosure lc) def.setLevelsDataString("coau", lvls, 0, lc) addTooltipProperty("Resulting Unit Type", lc) function setPartnerUnitType(int level, string value) def.setLvlDataString("coa1", level, 1, value) function presetPartnerUnitType(StringLevelClosure lc) def.setLevelsDataString("coa1", lvls, 1, lc) addTooltipProperty("Partner Unit Type", lc) public class AbilityDefinitionPotionofManaRegengreater extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofManaRegengreater) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionTinkererClusterRocketsLevel1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererClusterRocketsLevel1) function setEffectDuration(int level, real value) def.setLvlDataUnreal("Ncs6", level, 6, value) function presetEffectDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs6", lvls, 6, lc) addTooltipProperty("Effect Duration", lc) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Ncs2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ncs4", level, 4, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs4", lvls, 4, lc) addTooltipProperty("Max Damage", lc) function setMissileCount(int level, int value) def.setLvlDataInt("Ncs3", level, 3, value) function presetMissileCount(IntLevelClosure lc) def.setLevelsDataInt("Ncs3", lvls, 3, lc) addTooltipProperty("Missile Count", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Ncs1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Ncs5", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs5", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) public class AbilityDefinitionCoupleInstantHippogryph extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.coupleInstantHippogryph) function setMoveToPartner(int level, bool value) def.setLvlDataBoolean("coa2", level, 2, value) function presetMoveToPartner(BooleanLevelClosure lc) def.setLevelsDataBoolean("coa2", lvls, 2, lc) addTooltipProperty("MoveToPartner", lc) function setResultingUnitType(int level, string value) def.setLvlDataString("coau", level, 0, value) function presetResultingUnitType(StringLevelClosure lc) def.setLevelsDataString("coau", lvls, 0, lc) addTooltipProperty("Resulting Unit Type", lc) function setPartnerUnitType(int level, string value) def.setLvlDataString("coa1", level, 1, value) function presetPartnerUnitType(StringLevelClosure lc) def.setLevelsDataString("coa1", lvls, 1, lc) addTooltipProperty("Partner Unit Type", lc) public class AbilityDefinitionSpawnOnDeathskeleton extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spawnOnDeathskeleton) function setNumberofUnits(int level, int value) def.setLvlDataInt("Sod1", level, 1, value) function presetNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Sod1", lvls, 1, lc) addTooltipProperty("Number of Units", lc) function setUnitType(int level, string value) def.setLvlDataString("Sod2", level, 2, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("Sod2", lvls, 2, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionPotionofManaRegenlesser extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.potionofManaRegenlesser) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionDeathKnightAnimateDead extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.animateDead1) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) function setInheritUpgrades(int level, bool value) def.setLvlDataBoolean("Uan3", level, 3, value) function presetInheritUpgrades(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uan3", lvls, 3, lc) addTooltipProperty("Inherit Upgrades", lc) function setNumberofCorpsesRaised(int level, int value) def.setLvlDataInt("Uan1", level, 1, value) function presetNumberofCorpsesRaised(IntLevelClosure lc) def.setLevelsDataInt("Uan1", lvls, 1, lc) addTooltipProperty("Number of Corpses Raised", lc) public class AbilityDefinitionItemPlaceMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemPlaceGoblinLandMine) function setUnitType(int level, string value) def.setLvlDataString("ipmu", level, 0, value) function presetUnitType(StringLevelClosure lc) def.setLevelsDataString("ipmu", lvls, 0, lc) addTooltipProperty("Unit Type", lc) public class AbilityDefinitionBloodMagePhoenix extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.phoenix) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionAlchemistAcidBomb extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.acidBomb) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Nab6", level, 6, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nab6", lvls, 6, lc) addTooltipProperty("Damage Interval", lc) function setPrimaryDamage(int level, real value) def.setLvlDataUnreal("Nab4", level, 4, value) function presetPrimaryDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Nab4", lvls, 4, lc) addTooltipProperty("Primary Damage", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Nab1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Nab1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) function setArmorPenalty(int level, int value) def.setLvlDataInt("Nab3", level, 3, value) function presetArmorPenalty(IntLevelClosure lc) def.setLevelsDataInt("Nab3", lvls, 3, lc) addTooltipProperty("Armor Penalty", lc) function setSecondaryDamage(int level, real value) def.setLvlDataUnreal("Nab5", level, 5, value) function presetSecondaryDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Nab5", lvls, 5, lc) addTooltipProperty("Secondary Damage", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Nab2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Nab2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) public class AbilityDefinitionPermanentImmolationflying extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.permanentImmolationflying) function setManaDrainedperSecond(int level, real value) def.setLvlDataUnreal("Eim2", level, 2, value) function presetManaDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eim2", lvls, 2, lc) addTooltipProperty("Mana Drained per Second", lc) function setBufferManaRequired(int level, real value) def.setLvlDataUnreal("Eim3", level, 3, value) function presetBufferManaRequired(RealLevelClosure lc) def.setLevelsDataUnreal("Eim3", lvls, 3, lc) addTooltipProperty("Buffer Mana Required", lc) function setDamageperInterval(int level, real value) def.setLvlDataUnreal("Eim1", level, 1, value) function presetDamageperInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Eim1", lvls, 1, lc) addTooltipProperty("Damage per Interval", lc) public class AbilityDefinitionTornadoSpin extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tornadoSpin) function setMinimumHitIntervalseconds(int level, real value) def.setLvlDataUnreal("Tsp2", level, 2, value) function presetMinimumHitIntervalseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Tsp2", lvls, 2, lc) addTooltipProperty("Minimum Hit Interval Seconds", lc) function setAirTimeseconds(int level, real value) def.setLvlDataUnreal("Tsp1", level, 1, value) function presetAirTimeseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Tsp1", lvls, 1, lc) addTooltipProperty("Air Time Seconds", lc) public class AbilityDefinitionAntimagicShield extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.antimagicShell1) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Ams2", level, 2, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ams2", lvls, 2, lc) addTooltipProperty("Magic Damage Reduction", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Ams4", level, 4, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Ams4", lvls, 4, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Ams1", level, 1, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ams1", lvls, 1, lc) addTooltipProperty("Summoned Unit Damage", lc) function setShieldLife(int level, int value) def.setLvlDataInt("Ams3", level, 3, value) function presetShieldLife(IntLevelClosure lc) def.setLevelsDataInt("Ams3", lvls, 3, lc) addTooltipProperty("Shield Life", lc) public class AbilityDefinitionOrbofDarknessBlackArrow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofDarknessBlackArrow) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Nba2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Nba2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Nba1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Nba1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Nbau", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Nbau", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setSummonedUnitDurationseconds(int level, real value) def.setLvlDataUnreal("Nba3", level, 3, value) function presetSummonedUnitDurationseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Nba3", lvls, 3, lc) addTooltipProperty("Summoned Unit Duration Seconds", lc) public class AbilityDefinitionTinkererDemolishLevel3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererDemolishLevel3) function setDamageMultiplierBuildings(int level, real value) def.setLvlDataUnreal("Nde2", level, 2, value) function presetDamageMultiplierBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Nde2", lvls, 2, lc) addTooltipProperty("Damage Multiplier Buildings", lc) function setDamageMultiplierUnits(int level, real value) def.setLvlDataUnreal("Nde3", level, 3, value) function presetDamageMultiplierUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Nde3", lvls, 3, lc) addTooltipProperty("Damage Multiplier Units", lc) function setDamageMultiplierHeroes(int level, real value) def.setLvlDataUnreal("Nde4", level, 4, value) function presetDamageMultiplierHeroes(RealLevelClosure lc) def.setLevelsDataUnreal("Nde4", lvls, 4, lc) addTooltipProperty("Damage Multiplier Heroes", lc) function setChancetoDemolish(int level, real value) def.setLvlDataUnreal("Nde1", level, 1, value) function presetChancetoDemolish(RealLevelClosure lc) def.setLevelsDataUnreal("Nde1", lvls, 1, lc) addTooltipProperty("Chance to Demolish", lc) public class AbilityDefinitionSlowAIos extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slowAIos) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo1", level, 1, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo1", lvls, 1, lc) addTooltipProperty("Movement Speed Factor", lc) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Slo3", level, 3, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Slo3", lvls, 3, lc) addTooltipProperty("Always Autocast", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionBattleRoar extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.battleRoar) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Nbr1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Nbr1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionTinkererDemolishLevel1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererDemolishLevel1) function setDamageMultiplierBuildings(int level, real value) def.setLvlDataUnreal("Nde2", level, 2, value) function presetDamageMultiplierBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Nde2", lvls, 2, lc) addTooltipProperty("Damage Multiplier Buildings", lc) function setDamageMultiplierUnits(int level, real value) def.setLvlDataUnreal("Nde3", level, 3, value) function presetDamageMultiplierUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Nde3", lvls, 3, lc) addTooltipProperty("Damage Multiplier Units", lc) function setDamageMultiplierHeroes(int level, real value) def.setLvlDataUnreal("Nde4", level, 4, value) function presetDamageMultiplierHeroes(RealLevelClosure lc) def.setLevelsDataUnreal("Nde4", lvls, 4, lc) addTooltipProperty("Damage Multiplier Heroes", lc) function setChancetoDemolish(int level, real value) def.setLvlDataUnreal("Nde1", level, 1, value) function presetChancetoDemolish(RealLevelClosure lc) def.setLevelsDataUnreal("Nde1", lvls, 1, lc) addTooltipProperty("Chance to Demolish", lc) public class AbilityDefinitionTinkererDemolishLevel2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererDemolishLevel2) function setDamageMultiplierBuildings(int level, real value) def.setLvlDataUnreal("Nde2", level, 2, value) function presetDamageMultiplierBuildings(RealLevelClosure lc) def.setLevelsDataUnreal("Nde2", lvls, 2, lc) addTooltipProperty("Damage Multiplier Buildings", lc) function setDamageMultiplierUnits(int level, real value) def.setLvlDataUnreal("Nde3", level, 3, value) function presetDamageMultiplierUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Nde3", lvls, 3, lc) addTooltipProperty("Damage Multiplier Units", lc) function setDamageMultiplierHeroes(int level, real value) def.setLvlDataUnreal("Nde4", level, 4, value) function presetDamageMultiplierHeroes(RealLevelClosure lc) def.setLevelsDataUnreal("Nde4", lvls, 4, lc) addTooltipProperty("Damage Multiplier Heroes", lc) function setChancetoDemolish(int level, real value) def.setLvlDataUnreal("Nde1", level, 1, value) function presetChancetoDemolish(RealLevelClosure lc) def.setLevelsDataUnreal("Nde1", lvls, 1, lc) addTooltipProperty("Chance to Demolish", lc) public class AbilityDefinitionAttributeModifierSkill extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attributeModifierSkill) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionDispelMagic extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.dispelMagic) function setManaLoss(int level, real value) def.setLvlDataUnreal("Adm1", level, 1, value) function presetManaLoss(RealLevelClosure lc) def.setLevelsDataUnreal("Adm1", lvls, 1, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Adm2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Adm2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionBashBeastmasterBear extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bashBeastmasterBear) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Hbh5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hbh5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionBrewmasterBreathofFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brewmasterBreathofFire) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Nbf5", level, 5, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Nbf5", lvls, 5, lc) addTooltipProperty("Damage Per Second", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionPolymorph extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.polymorph) function setMorphUnitsGround(int level, string value) def.setLvlDataString("Ply2", level, 2, value) function presetMorphUnitsGround(StringLevelClosure lc) def.setLevelsDataString("Ply2", lvls, 2, lc) addTooltipProperty("Morph Units Ground", lc) function setMorphUnitsWater(int level, string value) def.setLvlDataString("Ply5", level, 5, value) function presetMorphUnitsWater(StringLevelClosure lc) def.setLevelsDataString("Ply5", lvls, 5, lc) addTooltipProperty("Morph Units Water", lc) function setMorphUnitsAmphibious(int level, string value) def.setLvlDataString("Ply4", level, 4, value) function presetMorphUnitsAmphibious(StringLevelClosure lc) def.setLevelsDataString("Ply4", lvls, 4, lc) addTooltipProperty("Morph Units Amphibious", lc) function setMorphUnitsAir(int level, string value) def.setLvlDataString("Ply3", level, 3, value) function presetMorphUnitsAir(StringLevelClosure lc) def.setLevelsDataString("Ply3", lvls, 3, lc) addTooltipProperty("Morph Units Air", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Ply1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Ply1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionPurgeorb extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.purgeorb) function setHeroPauseDuration(int level, real value) def.setLvlDataUnreal("Prg5", level, 5, value) function presetHeroPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg5", lvls, 5, lc) addTooltipProperty("Hero Pause Duration", lc) function setUnitPauseDuration(int level, real value) def.setLvlDataUnreal("Prg4", level, 4, value) function presetUnitPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg4", lvls, 4, lc) addTooltipProperty("Unit Pause Duration", lc) function setMovementUpdateFrequency(int level, int value) def.setLvlDataInt("Prg1", level, 1, value) function presetMovementUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg1", lvls, 1, lc) addTooltipProperty("Movement Update Frequency", lc) function setAttackUpdateFrequency(int level, int value) def.setLvlDataInt("Prg2", level, 2, value) function presetAttackUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg2", lvls, 2, lc) addTooltipProperty("Attack Update Frequency", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Prg6", level, 6, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Prg6", lvls, 6, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Prg3", level, 3, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Prg3", lvls, 3, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionDarkRangerBlackArrow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkRangerBlackArrow) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Nba2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Nba2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Nba1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Nba1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Nbau", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Nbau", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setSummonedUnitDurationseconds(int level, real value) def.setLvlDataUnreal("Nba3", level, 3, value) function presetSummonedUnitDurationseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Nba3", lvls, 3, lc) addTooltipProperty("Summoned Unit Duration Seconds", lc) public class AbilityDefinitionCargoHoldEntangledGoldMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.load1) function setCargoCapacity(int level, int value) def.setLvlDataInt("Car1", level, 1, value) function presetCargoCapacity(IntLevelClosure lc) def.setLevelsDataInt("Car1", lvls, 1, lc) addTooltipProperty("Cargo Capacity", lc) public class AbilityDefinitionAerialShackles extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.aerialShackles) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("mls1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("mls1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionOrbofVenom extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.orbofVenom) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setDamageBonusDice(int level, int value) def.setLvlDataInt("Idic", level, 1, value) function presetDamageBonusDice(IntLevelClosure lc) def.setLevelsDataInt("Idic", lvls, 1, lc) addTooltipProperty("Damage Bonus Dice", lc) public class AbilityDefinitionDetectShade extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.trueSight2) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionAlliedBuilding extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.alliedBuilding) function setShowUnitIndicator(int level, bool value) def.setLvlDataBoolean("Neu4", level, 4, value) function presetShowUnitIndicator(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu4", lvls, 4, lc) addTooltipProperty("Show Unit Indicator", lc) function setActivationRadius(int level, real value) def.setLvlDataUnreal("Neu1", level, 1, value) function presetActivationRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Neu1", lvls, 1, lc) addTooltipProperty("Activation Radius", lc) function setShowSelectUnitButton(int level, bool value) def.setLvlDataBoolean("Neu3", level, 3, value) function presetShowSelectUnitButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Neu3", lvls, 3, lc) addTooltipProperty("Show Select Unit Button", lc) function setInteractionType(int level, string value) def.setLvlDataString("Neu2", level, 2, value) function presetInteractionType(StringLevelClosure lc) def.setLevelsDataString("Neu2", lvls, 2, lc) addTooltipProperty("Interaction Type", lc) public class AbilityDefinitionControlMagic extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.controlMagic) function setChargeforCurrentLife(int level, real value) def.setLvlDataUnreal("Cmg3", level, 3, value) function presetChargeforCurrentLife(RealLevelClosure lc) def.setLevelsDataUnreal("Cmg3", lvls, 3, lc) addTooltipProperty("Charge for Current Life", lc) function setManaperSummonedHitpoint(int level, real value) def.setLvlDataUnreal("Cmg2", level, 2, value) function presetManaperSummonedHitpoint(RealLevelClosure lc) def.setLevelsDataUnreal("Cmg2", lvls, 2, lc) addTooltipProperty("Mana per Summoned Hitpoint", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Nch1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Nch1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) public class AbilityDefinitionDreadlordCarrionSwarm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.carrionSwarm1) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ucs2", level, 2, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs2", lvls, 2, lc) addTooltipProperty("Max Damage", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Ucs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionAllPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.allPlus1) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAllPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.allPlus2) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionCrownofKingsAllPlus5 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.crownofKingsAllPlus5) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionCorrosiveBreath extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.corrosiveBreath) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Cor1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Cor1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionRootAncients extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rootAncients) function setUprootedDefenseType(int level, string value) def.setLvlDataString("Roo4", level, 4, value) function presetUprootedDefenseType(StringLevelClosure lc) def.setLevelsDataString("Roo4", lvls, 4, lc) addTooltipProperty("Uprooted Defense Type", lc) function setRootedTurning(int level, bool value) def.setLvlDataBoolean("Roo3", level, 3, value) function presetRootedTurning(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roo3", lvls, 3, lc) addTooltipProperty("Rooted Turning", lc) function setUprootedWeapons(int level, string value) def.setLvlDataString("Roo2", level, 2, value) function presetUprootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo2", lvls, 2, lc) addTooltipProperty("Uprooted Weapons", lc) function setRootedWeapons(int level, string value) def.setLvlDataString("Roo1", level, 1, value) function presetRootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo1", lvls, 1, lc) addTooltipProperty("Rooted Weapons", lc) public class AbilityDefinitionRootAncientProtector extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rootAncientProtector) function setUprootedDefenseType(int level, string value) def.setLvlDataString("Roo4", level, 4, value) function presetUprootedDefenseType(StringLevelClosure lc) def.setLevelsDataString("Roo4", lvls, 4, lc) addTooltipProperty("Uprooted Defense Type", lc) function setRootedTurning(int level, bool value) def.setLvlDataBoolean("Roo3", level, 3, value) function presetRootedTurning(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roo3", lvls, 3, lc) addTooltipProperty("Rooted Turning", lc) function setUprootedWeapons(int level, string value) def.setLvlDataString("Roo2", level, 2, value) function presetUprootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo2", lvls, 2, lc) addTooltipProperty("Uprooted Weapons", lc) function setRootedWeapons(int level, string value) def.setLvlDataString("Roo1", level, 1, value) function presetRootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo1", lvls, 1, lc) addTooltipProperty("Rooted Weapons", lc) public class AbilityDefinitionFactory extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.factory) function setSpawnUnitID(int level, string value) def.setLvlDataString("Nfyu", level, 0, value) function presetSpawnUnitID(StringLevelClosure lc) def.setLevelsDataString("Nfyu", lvls, 0, lc) addTooltipProperty("SpawnUnitID", lc) function setLeashRange(int level, real value) def.setLvlDataUnreal("Nfy2", level, 2, value) function presetLeashRange(RealLevelClosure lc) def.setLevelsDataUnreal("Nfy2", lvls, 2, lc) addTooltipProperty("Leash Range", lc) function setSpawnInterval(int level, real value) def.setLvlDataUnreal("Nfy1", level, 1, value) function presetSpawnInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Nfy1", lvls, 1, lc) addTooltipProperty("Spawn Interval", lc) public class AbilityDefinitionKeeperoftheGroveForceofNature extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.forceofNature1) function setSummonedUnitType(int level, string value) def.setLvlDataString("Efnu", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Efnu", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Efn1", level, 1, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Efn1", lvls, 1, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionLichDeathandDecay extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathAndDecay1) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Udd2", level, 2, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Udd2", lvls, 2, lc) addTooltipProperty("Building Reduction", lc) function setMaxLifeDrainedperSecond(int level, real value) def.setLvlDataUnreal("Udd1", level, 1, value) function presetMaxLifeDrainedperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Udd1", lvls, 1, lc) addTooltipProperty("Max Life Drained per Second", lc) public class AbilityDefinitionItemWeb extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemWeb) function setAirUnitHeight(int level, real value) def.setLvlDataUnreal("Ens2", level, 2, value) function presetAirUnitHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Ens2", lvls, 2, lc) addTooltipProperty("Air Unit Height", lc) function setAirUnitLowerDuration(int level, real value) def.setLvlDataUnreal("Ens1", level, 1, value) function presetAirUnitLowerDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ens1", lvls, 1, lc) addTooltipProperty("Air Unit Lower Duration", lc) function setMeleeAttackRange(int level, real value) def.setLvlDataUnreal("Ens3", level, 3, value) function presetMeleeAttackRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ens3", lvls, 3, lc) addTooltipProperty("Melee Attack Range", lc) public class AbilityDefinitionWardenFanofKnives extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.wardenFanofKnives) function setMaximumSpeedAdjustment(int level, real value) def.setLvlDataUnreal("Efk4", level, 4, value) function presetMaximumSpeedAdjustment(RealLevelClosure lc) def.setLevelsDataUnreal("Efk4", lvls, 4, lc) addTooltipProperty("Maximum Speed Adjustment", lc) function setMaximumNumberofTargets(int level, int value) def.setLvlDataInt("Efk3", level, 3, value) function presetMaximumNumberofTargets(IntLevelClosure lc) def.setLevelsDataInt("Efk3", lvls, 3, lc) addTooltipProperty("Maximum Number of Targets", lc) function setDamagePerTarget(int level, real value) def.setLvlDataUnreal("Efk1", level, 1, value) function presetDamagePerTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Efk1", lvls, 1, lc) addTooltipProperty("Damage Per Target", lc) function setMaximumTotalDamage(int level, real value) def.setLvlDataUnreal("Efk2", level, 2, value) function presetMaximumTotalDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Efk2", lvls, 2, lc) addTooltipProperty("Maximum Total Damage", lc) public class AbilityDefinitionBattlestationsChaos extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.battlestationsChaos) function setSummonBusyUnits(int level, bool value) def.setLvlDataBoolean("Btl2", level, 2, value) function presetSummonBusyUnits(BooleanLevelClosure lc) def.setLevelsDataBoolean("Btl2", lvls, 2, lc) addTooltipProperty("Summon Busy Units", lc) function setAllowedUnitType(int level, string value) def.setLvlDataString("Btl1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Btl1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionCorporealForm extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.corporealForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionDeathKnightDeathCoil extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathCoil1) function setAmountHealedDamaged(int level, real value) def.setLvlDataUnreal("Udc1", level, 1, value) function presetAmountHealedDamaged(RealLevelClosure lc) def.setLevelsDataUnreal("Udc1", lvls, 1, lc) addTooltipProperty("Amount Healed Damaged", lc) public class AbilityDefinitionPhaseShift extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.phaseShift) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Hbn2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbn2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Hbn1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hbn1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionSleepAlways extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sleepAlways) function setSleepOnce(int level, bool value) def.setLvlDataBoolean("sla1", level, 1, value) function presetSleepOnce(BooleanLevelClosure lc) def.setLevelsDataBoolean("sla1", lvls, 1, lc) addTooltipProperty("Sleep Once", lc) function setAllowOnAnyPlayerSlot(int level, bool value) def.setLvlDataBoolean("sla2", level, 2, value) function presetAllowOnAnyPlayerSlot(BooleanLevelClosure lc) def.setLevelsDataBoolean("sla2", lvls, 2, lc) addTooltipProperty("AllowOnAnyPlayerSlot", lc) public class AbilityDefinitionFigurineUrsaWarrior extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.figurineUrsaWarrior) function setSummonUnitType(int level, string value) def.setLvlDataString("Ist2", level, 4, value) function presetSummonUnitType(StringLevelClosure lc) def.setLevelsDataString("Ist2", lvls, 4, lc) addTooltipProperty("Summon Unit Type", lc) function setSummonAmount(int level, int value) def.setLvlDataInt("Isn2", level, 2, value) function presetSummonAmount(IntLevelClosure lc) def.setLevelsDataInt("Isn2", lvls, 2, lc) addTooltipProperty("Summon Amount", lc) function setSummonUnitType1(int level, string value) def.setLvlDataString("Ist1", level, 3, value) function presetSummonUnitType1(StringLevelClosure lc) def.setLevelsDataString("Ist1", lvls, 3, lc) addTooltipProperty("SummonUnitType1", lc) function setSummonAmount1(int level, int value) def.setLvlDataInt("Isn1", level, 1, value) function presetSummonAmount1(IntLevelClosure lc) def.setLevelsDataInt("Isn1", lvls, 1, lc) addTooltipProperty("SummonAmount1", lc) public class AbilityDefinitionElunesGrace extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.elunesGrace) function setChancetoDeflect(int level, real value) def.setLvlDataUnreal("Def6", level, 6, value) function presetChancetoDeflect(RealLevelClosure lc) def.setLevelsDataUnreal("Def6", lvls, 6, lc) addTooltipProperty("Chance to Deflect", lc) function setDeflectDamageTakenSpells(int level, real value) def.setLvlDataUnreal("Def8", level, 8, value) function presetDeflectDamageTakenSpells(RealLevelClosure lc) def.setLevelsDataUnreal("Def8", lvls, 8, lc) addTooltipProperty("Deflect Damage Taken Spells", lc) function setDeflectDamageTakenPiercing(int level, real value) def.setLvlDataUnreal("Def7", level, 7, value) function presetDeflectDamageTakenPiercing(RealLevelClosure lc) def.setLevelsDataUnreal("Def7", lvls, 7, lc) addTooltipProperty("Deflect Damage Taken Piercing", lc) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Def5", level, 5, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Def5", lvls, 5, lc) addTooltipProperty("Magic Damage Reduction", lc) function setDamageTaken(int level, real value) def.setLvlDataUnreal("Def1", level, 1, value) function presetDamageTaken(RealLevelClosure lc) def.setLevelsDataUnreal("Def1", lvls, 1, lc) addTooltipProperty("Damage Taken", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Def2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Def2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) public class AbilityDefinitionReturnLumber extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.returnLumber) function setAcceptsGold(int level, bool value) def.setLvlDataBoolean("Rtn1", level, 1, value) function presetAcceptsGold(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn1", lvls, 1, lc) addTooltipProperty("Accepts Gold", lc) function setAcceptsLumber(int level, bool value) def.setLvlDataBoolean("Rtn2", level, 2, value) function presetAcceptsLumber(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn2", lvls, 2, lc) addTooltipProperty("Accepts Lumber", lc) public class AbilityDefinitionRegenLifeArll extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.regenLifeArll) function setHitPointsRegeneratedPerSecond(int level, int value) def.setLvlDataInt("Ihpr", level, 1, value) function presetHitPointsRegeneratedPerSecond(IntLevelClosure lc) def.setLevelsDataInt("Ihpr", lvls, 1, lc) addTooltipProperty("HitPointsRegeneratedPerSecond", lc) public class AbilityDefinitionDemonHunterEvasion extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.evasion2) function setChancetoEvade(int level, real value) def.setLvlDataUnreal("Eev1", level, 1, value) function presetChancetoEvade(RealLevelClosure lc) def.setLevelsDataUnreal("Eev1", lvls, 1, lc) addTooltipProperty("Chance to Evade", lc) public class AbilityDefinitionPitLordHowlofTerror extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pitLordHowlofTerror) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionAlchemistHealingSpray extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.alchemistHealingSpray) function setDamageInterval(int level, real value) def.setLvlDataUnreal("Ncs2", level, 2, value) function presetDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs2", lvls, 2, lc) addTooltipProperty("Damage Interval", lc) function setMaxDamage(int level, real value) def.setLvlDataUnreal("Ncs4", level, 4, value) function presetMaxDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs4", lvls, 4, lc) addTooltipProperty("Max Damage", lc) function setMissileCount(int level, int value) def.setLvlDataInt("Ncs3", level, 3, value) function presetMissileCount(IntLevelClosure lc) def.setLevelsDataInt("Ncs3", lvls, 3, lc) addTooltipProperty("Missile Count", lc) function setWaveCount(int level, int value) def.setLvlDataInt("Nhs6", level, 6, value) function presetWaveCount(IntLevelClosure lc) def.setLevelsDataInt("Nhs6", lvls, 6, lc) addTooltipProperty("Wave Count", lc) function setDamageAmount(int level, real value) def.setLvlDataUnreal("Ncs1", level, 1, value) function presetDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs1", lvls, 1, lc) addTooltipProperty("Damage Amount", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Ncs5", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Ncs5", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) public class AbilityDefinitionEntangledGoldMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.entangledGoldMineAbility) function setIntervalDuration(int level, real value) def.setLvlDataUnreal("Egm2", level, 2, value) function presetIntervalDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Egm2", lvls, 2, lc) addTooltipProperty("Interval Duration", lc) function setGoldperInterval(int level, int value) def.setLvlDataInt("Egm1", level, 1, value) function presetGoldperInterval(IntLevelClosure lc) def.setLevelsDataInt("Egm1", lvls, 1, lc) addTooltipProperty("Gold per Interval", lc) public class AbilityDefinitionKeeperoftheGroveEntanglingRoots extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.entanglingRoots1) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Eer1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eer1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionLightningShield extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lightningShield) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Lsh1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Lsh1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionVampiricattackAIva extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemLifeSteal) function setLifeStolenPerAttack(int level, real value) def.setLvlDataUnreal("Ivam", level, 1, value) function presetLifeStolenPerAttack(RealLevelClosure lc) def.setLevelsDataUnreal("Ivam", lvls, 1, lc) addTooltipProperty("Life Stolen Per Attack", lc) public class AbilityDefinitionCoupleHippogryph extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pickupArcher) function setResultingUnitType(int level, string value) def.setLvlDataString("coau", level, 0, value) function presetResultingUnitType(StringLevelClosure lc) def.setLevelsDataString("coau", lvls, 0, lc) addTooltipProperty("Resulting Unit Type", lc) function setPartnerUnitType(int level, string value) def.setLvlDataString("coa1", level, 1, value) function presetPartnerUnitType(StringLevelClosure lc) def.setLevelsDataString("coa1", lvls, 1, lc) addTooltipProperty("Partner Unit Type", lc) public class AbilityDefinitionPaladinResurrection extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.resurrection) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) function setNumberofCorpsesRaised(int level, int value) def.setLvlDataInt("Hre1", level, 1, value) function presetNumberofCorpsesRaised(IntLevelClosure lc) def.setLevelsDataInt("Hre1", lvls, 1, lc) addTooltipProperty("Number of Corpses Raised", lc) public class AbilityDefinitionCryptLordCarrionScarabs extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cryptLordCarrionScarabs) function setUnitsSummonedTypeOne(int level, int value) def.setLvlDataInt("Rai1", level, 1, value) function presetUnitsSummonedTypeOne(IntLevelClosure lc) def.setLevelsDataInt("Rai1", lvls, 1, lc) addTooltipProperty("Units Summoned Type One", lc) function setUnitsSummonedTypeTwo(int level, int value) def.setLvlDataInt("Rai2", level, 2, value) function presetUnitsSummonedTypeTwo(IntLevelClosure lc) def.setLevelsDataInt("Rai2", lvls, 2, lc) addTooltipProperty("Units Summoned Type Two", lc) function setKillOnCasterDeath(int level, bool value) def.setLvlDataBoolean("Ucb6", level, 6, value) function presetKillOnCasterDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ucb6", lvls, 6, lc) addTooltipProperty("KillOnCasterDeath", lc) function setMaxUnitsSummoned(int level, int value) def.setLvlDataInt("Ucb5", level, 5, value) function presetMaxUnitsSummoned(IntLevelClosure lc) def.setLevelsDataInt("Ucb5", lvls, 5, lc) addTooltipProperty("Max Units Summoned", lc) function setUnitTypeTwo(int level, string value) def.setLvlDataString("Rai4", level, 4, value) function presetUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("Rai4", lvls, 4, lc) addTooltipProperty("Unit Type Two", lc) function setUnitTypeOne(int level, string value) def.setLvlDataString("Rai3", level, 3, value) function presetUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("Rai3", lvls, 3, lc) addTooltipProperty("Unit Type One", lc) public class AbilityDefinitionBerserkerUpgrade extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.berserkerUpgrade) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionRuneofGreaterResurrection extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.runeofGreaterResurrection) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) public class AbilityDefinitionManaFlare extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaFlare) function setHeroMaximumDamage(int level, real value) def.setLvlDataUnreal("mfl4", level, 4, value) function presetHeroMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("mfl4", lvls, 4, lc) addTooltipProperty("Hero Maximum Damage", lc) function setHeroDamagePerManaPoint(int level, real value) def.setLvlDataUnreal("mfl2", level, 2, value) function presetHeroDamagePerManaPoint(RealLevelClosure lc) def.setLevelsDataUnreal("mfl2", lvls, 2, lc) addTooltipProperty("HeroDamagePerManaPoint", lc) function setCasterOnlySplash(int level, bool value) def.setLvlDataBoolean("mfl6", level, 6, value) function presetCasterOnlySplash(BooleanLevelClosure lc) def.setLevelsDataBoolean("mfl6", lvls, 6, lc) addTooltipProperty("Caster Only Splash", lc) function setDamageCooldown(int level, real value) def.setLvlDataUnreal("mfl5", level, 5, value) function presetDamageCooldown(RealLevelClosure lc) def.setLevelsDataUnreal("mfl5", lvls, 5, lc) addTooltipProperty("Damage Cooldown", lc) function setUnitDamagePerManaPoint(int level, real value) def.setLvlDataUnreal("mfl1", level, 1, value) function presetUnitDamagePerManaPoint(RealLevelClosure lc) def.setLevelsDataUnreal("mfl1", lvls, 1, lc) addTooltipProperty("UnitDamagePerManaPoint", lc) function setUnitMaximumDamage(int level, real value) def.setLvlDataUnreal("mfl3", level, 3, value) function presetUnitMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("mfl3", lvls, 3, lc) addTooltipProperty("Unit Maximum Damage", lc) public class AbilityDefinitionTaurenChieftainReincarnation extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.reincarnation2) function setReincarnationDelay(int level, real value) def.setLvlDataUnreal("Ore1", level, 1, value) function presetReincarnationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Ore1", lvls, 1, lc) addTooltipProperty("Reincarnation Delay", lc) public class AbilityDefinitionCoupleArcher extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.mountHippogryph) function setResultingUnitType(int level, string value) def.setLvlDataString("coau", level, 0, value) function presetResultingUnitType(StringLevelClosure lc) def.setLevelsDataString("coau", lvls, 0, lc) addTooltipProperty("Resulting Unit Type", lc) function setPartnerUnitType(int level, string value) def.setLvlDataString("coa1", level, 1, value) function presetPartnerUnitType(StringLevelClosure lc) def.setLevelsDataString("coa1", lvls, 1, lc) addTooltipProperty("Partner Unit Type", lc) public class AbilityDefinitionBallsofFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ballsofFire) function setBuildingReduction(int level, real value) def.setLvlDataUnreal("Hfs5", level, 5, value) function presetBuildingReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs5", lvls, 5, lc) addTooltipProperty("Building Reduction", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Hfs6", level, 6, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs6", lvls, 6, lc) addTooltipProperty("Maximum Damage", lc) function setHalfDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs3", level, 3, value) function presetHalfDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs3", lvls, 3, lc) addTooltipProperty("Half Damage Dealt", lc) function setFullDamageDealt(int level, real value) def.setLvlDataUnreal("Hfs1", level, 1, value) function presetFullDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs1", lvls, 1, lc) addTooltipProperty("Full Damage Dealt", lc) function setHalfDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs4", level, 4, value) function presetHalfDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs4", lvls, 4, lc) addTooltipProperty("Half Damage Interval", lc) function setFullDamageInterval(int level, real value) def.setLvlDataUnreal("Hfs2", level, 2, value) function presetFullDamageInterval(RealLevelClosure lc) def.setLevelsDataUnreal("Hfs2", lvls, 2, lc) addTooltipProperty("Full Damage Interval", lc) public class AbilityDefinitionPurge extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.purge) function setHeroPauseDuration(int level, real value) def.setLvlDataUnreal("Prg5", level, 5, value) function presetHeroPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg5", lvls, 5, lc) addTooltipProperty("Hero Pause Duration", lc) function setUnitPauseDuration(int level, real value) def.setLvlDataUnreal("Prg4", level, 4, value) function presetUnitPauseDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Prg4", lvls, 4, lc) addTooltipProperty("Unit Pause Duration", lc) function setMovementUpdateFrequency(int level, int value) def.setLvlDataInt("Prg1", level, 1, value) function presetMovementUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg1", lvls, 1, lc) addTooltipProperty("Movement Update Frequency", lc) function setAttackUpdateFrequency(int level, int value) def.setLvlDataInt("Prg2", level, 2, value) function presetAttackUpdateFrequency(IntLevelClosure lc) def.setLevelsDataInt("Prg2", lvls, 2, lc) addTooltipProperty("Attack Update Frequency", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Prg6", level, 6, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Prg6", lvls, 6, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Prg3", level, 3, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Prg3", lvls, 3, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionSlow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slow) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo1", level, 1, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo1", lvls, 1, lc) addTooltipProperty("Movement Speed Factor", lc) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Slo3", level, 3, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Slo3", lvls, 3, lc) addTooltipProperty("Always Autocast", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionRuneofLesserResurrection extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.runeofLesserResurrection) function setRaisedUnitsAreInvulnerable(int level, bool value) def.setLvlDataBoolean("Hre2", level, 2, value) function presetRaisedUnitsAreInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hre2", lvls, 2, lc) addTooltipProperty("Raised Units Are Invulnerable", lc) public class AbilityDefinitionItemTownPortal extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemTownPortal) function setMaximumNumberofUnits(int level, int value) def.setLvlDataInt("Itpm", level, 1, value) function presetMaximumNumberofUnits(IntLevelClosure lc) def.setLevelsDataInt("Itpm", lvls, 1, lc) addTooltipProperty("Maximum Number of Units", lc) function setUseTeleportClustering(int level, bool value) def.setLvlDataBoolean("Itp2", level, 2, value) function presetUseTeleportClustering(BooleanLevelClosure lc) def.setLevelsDataBoolean("Itp2", lvls, 2, lc) addTooltipProperty("Use Teleport Clustering", lc) public class AbilityDefinitionTinkererRoboGoblinLevel1 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererRoboGoblinLevel1) function setStrengthBonus(int level, int value) def.setLvlDataInt("Nrg5", level, 5, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg5", lvls, 5, lc) addTooltipProperty("Strength Bonus", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setDefenseBonus(int level, int value) def.setLvlDataInt("Nrg6", level, 6, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg6", lvls, 6, lc) addTooltipProperty("Defense Bonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionMilitia extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.calltoArms) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Mil2", level, 2, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Mil2", lvls, 2, lc) addTooltipProperty("Alternate Form Unit", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Mil1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Mil1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) public class AbilityDefinitionVengeance extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.vengeance) function setUnitsSummonedTypeTwo(int level, int value) def.setLvlDataInt("Rai2", level, 2, value) function presetUnitsSummonedTypeTwo(IntLevelClosure lc) def.setLevelsDataInt("Rai2", lvls, 2, lc) addTooltipProperty("Units Summoned Type Two", lc) function setKillOnCasterDeath(int level, bool value) def.setLvlDataBoolean("Ucb6", level, 6, value) function presetKillOnCasterDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ucb6", lvls, 6, lc) addTooltipProperty("KillOnCasterDeath", lc) function setMaxUnitsSummoned(int level, int value) def.setLvlDataInt("Ucb5", level, 5, value) function presetMaxUnitsSummoned(IntLevelClosure lc) def.setLevelsDataInt("Ucb5", lvls, 5, lc) addTooltipProperty("Max Units Summoned", lc) function setUnitTypeOne(int level, string value) def.setLvlDataString("Rai3", level, 3, value) function presetUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("Rai3", lvls, 3, lc) addTooltipProperty("Unit Type One", lc) function setUnitsSummonedTypeOne(int level, int value) def.setLvlDataInt("Rai1", level, 1, value) function presetUnitsSummonedTypeOne(IntLevelClosure lc) def.setLevelsDataInt("Rai1", lvls, 1, lc) addTooltipProperty("Units Summoned Type One", lc) function setUnitTypeForLimitCheck(int level, string value) def.setLvlDataString("Raiu", level, 0, value) function presetUnitTypeForLimitCheck(StringLevelClosure lc) def.setLevelsDataString("Raiu", lvls, 0, lc) addTooltipProperty("UnitTypeForLimitCheck", lc) function setUnitTypeTwo(int level, string value) def.setLvlDataString("Rai4", level, 4, value) function presetUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("Rai4", lvls, 4, lc) addTooltipProperty("Unit Type Two", lc) public class AbilityDefinitionIntelligenceModPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.intelligenceModPlus2) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAttackBonusPlus8 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus8) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionAttackBonusPlus10 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus10) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionTinkererRoboGoblinLevel3 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererRoboGoblinLevel3) function setStrengthBonus(int level, int value) def.setLvlDataInt("Nrg5", level, 5, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg5", lvls, 5, lc) addTooltipProperty("Strength Bonus", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setDefenseBonus(int level, int value) def.setLvlDataInt("Nrg6", level, 6, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg6", lvls, 6, lc) addTooltipProperty("Defense Bonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionDeathDamageAOEsapper extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.aOEdamageupondeath) function setPartialDamageAmount(int level, real value) def.setLvlDataUnreal("Dda4", level, 4, value) function presetPartialDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda4", lvls, 4, lc) addTooltipProperty("Partial Damage Amount", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("Dda1", level, 1, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda1", lvls, 1, lc) addTooltipProperty("Full Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Dda2", level, 2, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda2", lvls, 2, lc) addTooltipProperty("Full Damage Amount", lc) function setPartialDamageRadius(int level, real value) def.setLvlDataUnreal("Dda3", level, 3, value) function presetPartialDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda3", lvls, 3, lc) addTooltipProperty("Partial Damage Radius", lc) public class AbilityDefinitionAroo extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.root) function setUprootedDefenseType(int level, string value) def.setLvlDataString("Roo4", level, 4, value) function presetUprootedDefenseType(StringLevelClosure lc) def.setLevelsDataString("Roo4", lvls, 4, lc) addTooltipProperty("Uprooted Defense Type", lc) function setRootedTurning(int level, bool value) def.setLvlDataBoolean("Roo3", level, 3, value) function presetRootedTurning(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roo3", lvls, 3, lc) addTooltipProperty("Rooted Turning", lc) function setUprootedWeapons(int level, string value) def.setLvlDataString("Roo2", level, 2, value) function presetUprootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo2", lvls, 2, lc) addTooltipProperty("Uprooted Weapons", lc) function setRootedWeapons(int level, string value) def.setLvlDataString("Roo1", level, 1, value) function presetRootedWeapons(StringLevelClosure lc) def.setLevelsDataString("Roo1", lvls, 1, lc) addTooltipProperty("Rooted Weapons", lc) public class AbilityDefinitionTinkererRoboGoblinLevel2 extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererRoboGoblinLevel2) function setStrengthBonus(int level, int value) def.setLvlDataInt("Nrg5", level, 5, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg5", lvls, 5, lc) addTooltipProperty("Strength Bonus", lc) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setDefenseBonus(int level, int value) def.setLvlDataInt("Nrg6", level, 6, value) function presetDefenseBonus(IntLevelClosure lc) def.setLevelsDataInt("Nrg6", lvls, 6, lc) addTooltipProperty("Defense Bonus", lc) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionLichFrostArmor extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frostArmor1) function setArmorDuration(int level, real value) def.setLvlDataUnreal("Ufa1", level, 1, value) function presetArmorDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa1", lvls, 1, lc) addTooltipProperty("Armor Duration", lc) function setArmorBonus(int level, real value) def.setLvlDataUnreal("Ufa2", level, 2, value) function presetArmorBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Ufa2", lvls, 2, lc) addTooltipProperty("Armor Bonus", lc) public class AbilityDefinitionTankUpgrade extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tankUpgrade) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionCripple extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cripple) function setDamageReduction(int level, real value) def.setLvlDataUnreal("Cri3", level, 3, value) function presetDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri3", lvls, 3, lc) addTooltipProperty("Damage Reduction", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionFlakCannon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.flakCannon) function setSmallDamageRadius(int level, real value) def.setLvlDataUnreal("flk2", level, 2, value) function presetSmallDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("flk2", lvls, 2, lc) addTooltipProperty("Small Damage Radius", lc) function setSmallDamageAmount(int level, real value) def.setLvlDataUnreal("flk5", level, 5, value) function presetSmallDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk5", lvls, 5, lc) addTooltipProperty("Small Damage Amount", lc) function setMediumDamageAmount(int level, real value) def.setLvlDataUnreal("flk4", level, 4, value) function presetMediumDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk4", lvls, 4, lc) addTooltipProperty("Medium Damage Amount", lc) function setMediumDamageRadius(int level, real value) def.setLvlDataUnreal("flk1", level, 1, value) function presetMediumDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("flk1", lvls, 1, lc) addTooltipProperty("Medium Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("flk3", level, 3, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk3", lvls, 3, lc) addTooltipProperty("Full Damage Amount", lc) public class AbilityDefinitionPossessionChanneling extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.possessionChanneling) function setTargetIsMagicImmune(int level, bool value) def.setLvlDataBoolean("Pos4", level, 4, value) function presetTargetIsMagicImmune(BooleanLevelClosure lc) def.setLevelsDataBoolean("Pos4", lvls, 4, lc) addTooltipProperty("TargetIsMagicImmune", lc) function setMaximumCreepLevel(int level, int value) def.setLvlDataInt("Pos1", level, 1, value) function presetMaximumCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Pos1", lvls, 1, lc) addTooltipProperty("Maximum Creep Level", lc) function setDamageAmplification(int level, real value) def.setLvlDataUnreal("Pos2", level, 2, value) function presetDamageAmplification(RealLevelClosure lc) def.setLevelsDataUnreal("Pos2", lvls, 2, lc) addTooltipProperty("Damage Amplification", lc) function setTargetIsInvulnerable(int level, bool value) def.setLvlDataBoolean("Pos3", level, 3, value) function presetTargetIsInvulnerable(BooleanLevelClosure lc) def.setLevelsDataBoolean("Pos3", lvls, 3, lc) addTooltipProperty("TargetIsInvulnerable", lc) public class AbilityDefinitionRocketAttack extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rocketAttack) function setMaximumNumberofTargets(int level, int value) def.setLvlDataInt("Efk3", level, 3, value) function presetMaximumNumberofTargets(IntLevelClosure lc) def.setLevelsDataInt("Efk3", lvls, 3, lc) addTooltipProperty("Maximum Number of Targets", lc) function setDamagePerTarget(int level, real value) def.setLvlDataUnreal("Efk1", level, 1, value) function presetDamagePerTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Efk1", lvls, 1, lc) addTooltipProperty("Damage Per Target", lc) function setMaximumTotalDamage(int level, real value) def.setLvlDataUnreal("Efk2", level, 2, value) function presetMaximumTotalDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Efk2", lvls, 2, lc) addTooltipProperty("Maximum Total Damage", lc) public class AbilityDefinitionBrewmasterStormEarthandFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.brewmasterStormEarthandFire) function setSummonedUnitTypes(int level, string value) def.setLvlDataString("Nef1", level, 1, value) function presetSummonedUnitTypes(StringLevelClosure lc) def.setLevelsDataString("Nef1", lvls, 1, lc) addTooltipProperty("Summoned Unit Types", lc) public class AbilityDefinitionTinkererEngineeringUpgrade extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tinkererEngineeringUpgrade) function setAbilityUpgrade(int level, string value) def.setLvlDataString("Neg5", level, 5, value) function presetAbilityUpgrade(StringLevelClosure lc) def.setLevelsDataString("Neg5", lvls, 5, lc) addTooltipProperty("Ability Upgrade", lc) function setAbilityUpgrade1(int level, string value) def.setLvlDataString("Neg4", level, 4, value) function presetAbilityUpgrade1(StringLevelClosure lc) def.setLevelsDataString("Neg4", lvls, 4, lc) addTooltipProperty("AbilityUpgrade1", lc) function setAbilityUpgrade2(int level, string value) def.setLvlDataString("Neg6", level, 6, value) function presetAbilityUpgrade2(StringLevelClosure lc) def.setLevelsDataString("Neg6", lvls, 6, lc) addTooltipProperty("AbilityUpgrade2", lc) function setMoveSpeedBonus(int level, real value) def.setLvlDataUnreal("Neg1", level, 1, value) function presetMoveSpeedBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Neg1", lvls, 1, lc) addTooltipProperty("Move Speed Bonus", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Neg2", level, 2, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Neg2", lvls, 2, lc) addTooltipProperty("Damage Bonus", lc) function setAbilityUpgrade3(int level, string value) def.setLvlDataString("Neg3", level, 3, value) function presetAbilityUpgrade3(StringLevelClosure lc) def.setLevelsDataString("Neg3", lvls, 3, lc) addTooltipProperty("AbilityUpgrade3", lc) public class AbilityDefinitionMine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.mineexploding) function setActivationDelay(int level, real value) def.setLvlDataUnreal("Min1", level, 1, value) function presetActivationDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Min1", lvls, 1, lc) addTooltipProperty("Activation Delay", lc) function setInvisibilityTransitionTime(int level, real value) def.setLvlDataUnreal("Min2", level, 2, value) function presetInvisibilityTransitionTime(RealLevelClosure lc) def.setLevelsDataUnreal("Min2", lvls, 2, lc) addTooltipProperty("Invisibility Transition Time", lc) public class AbilityDefinitionMagicImmunity extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.spellImmunity2) function setMagicDamageFactor(int level, real value) def.setLvlDataUnreal("mim1", level, 1, value) function presetMagicDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("mim1", lvls, 1, lc) addTooltipProperty("Magic Damage Factor", lc) public class AbilityDefinitionLichFrostNova extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.frostNova1) function setAreaofEffectDamage(int level, real value) def.setLvlDataUnreal("Ufn1", level, 1, value) function presetAreaofEffectDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ufn1", lvls, 1, lc) addTooltipProperty("Area of Effect Damage", lc) function setSpecificTargetDamage(int level, real value) def.setLvlDataUnreal("Ufn2", level, 2, value) function presetSpecificTargetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ufn2", lvls, 2, lc) addTooltipProperty("Specific Target Damage", lc) public class AbilityDefinitionRoar extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.roar) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionRunedBracers extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.runedBracers) function setDamageBonus(int level, real value) def.setLvlDataUnreal("isr1", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("isr1", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) function setDamageReduction(int level, real value) def.setLvlDataUnreal("isr2", level, 2, value) function presetDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("isr2", lvls, 2, lc) addTooltipProperty("Damage Reduction", lc) public class AbilityDefinitionLichDarkRitual extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkRitual) function setLeaveTargetAlive(int level, bool value) def.setLvlDataBoolean("Udp5", level, 5, value) function presetLeaveTargetAlive(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp5", lvls, 5, lc) addTooltipProperty("Leave Target Alive", lc) function setLifeConvertedtoMana(int level, real value) def.setLvlDataUnreal("Udp1", level, 1, value) function presetLifeConvertedtoMana(RealLevelClosure lc) def.setLevelsDataUnreal("Udp1", lvls, 1, lc) addTooltipProperty("Life Converted to Mana", lc) function setLifeConvertedtoLife(int level, real value) def.setLvlDataUnreal("Udp2", level, 2, value) function presetLifeConvertedtoLife(RealLevelClosure lc) def.setLevelsDataUnreal("Udp2", lvls, 2, lc) addTooltipProperty("Life Converted to Life", lc) function setLifeConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp4", level, 4, value) function presetLifeConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp4", lvls, 4, lc) addTooltipProperty("LifeConversionAsPercent", lc) function setManaConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp3", level, 3, value) function presetManaConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp3", lvls, 3, lc) addTooltipProperty("ManaConversionAsPercent", lc) public class AbilityDefinitionTichondriusDarkSummoning extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.darkSummoning1) function setMaximumUnits(int level, int value) def.setLvlDataInt("Uds1", level, 1, value) function presetMaximumUnits(IntLevelClosure lc) def.setLevelsDataInt("Uds1", lvls, 1, lc) addTooltipProperty("Maximum Units", lc) function setUseTeleportClustering(int level, bool value) def.setLvlDataBoolean("Hmt3", level, 3, value) function presetUseTeleportClustering(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hmt3", lvls, 3, lc) addTooltipProperty("Use Teleport Clustering", lc) function setCastingDelayseconds(int level, real value) def.setLvlDataUnreal("Uds2", level, 2, value) function presetCastingDelayseconds(RealLevelClosure lc) def.setLevelsDataUnreal("Uds2", lvls, 2, lc) addTooltipProperty("Casting Delay Seconds", lc) public class AbilityDefinitionItemSpeed extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemTemporarySpeedBonus) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Ispi", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Ispi", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) public class AbilityDefinitionBloodlust extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bloodlust1) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo2", level, 2, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo2", lvls, 2, lc) addTooltipProperty("Movement Speed Increase", lc) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Blo1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Blo1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) function setScalingFactor(int level, real value) def.setLvlDataUnreal("Blo3", level, 3, value) function presetScalingFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Blo3", lvls, 3, lc) addTooltipProperty("Scaling Factor", lc) public class AbilityDefinitionDeathKnightDeathPact extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathPact) function setLeaveTargetAlive(int level, bool value) def.setLvlDataBoolean("Udp5", level, 5, value) function presetLeaveTargetAlive(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp5", lvls, 5, lc) addTooltipProperty("Leave Target Alive", lc) function setLifeConvertedtoMana(int level, real value) def.setLvlDataUnreal("Udp1", level, 1, value) function presetLifeConvertedtoMana(RealLevelClosure lc) def.setLevelsDataUnreal("Udp1", lvls, 1, lc) addTooltipProperty("Life Converted to Mana", lc) function setLifeConvertedtoLife(int level, real value) def.setLvlDataUnreal("Udp2", level, 2, value) function presetLifeConvertedtoLife(RealLevelClosure lc) def.setLevelsDataUnreal("Udp2", lvls, 2, lc) addTooltipProperty("Life Converted to Life", lc) function setLifeConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp4", level, 4, value) function presetLifeConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp4", lvls, 4, lc) addTooltipProperty("LifeConversionAsPercent", lc) function setManaConversionAsPercent(int level, bool value) def.setLvlDataBoolean("Udp3", level, 3, value) function presetManaConversionAsPercent(BooleanLevelClosure lc) def.setLevelsDataBoolean("Udp3", lvls, 3, lc) addTooltipProperty("ManaConversionAsPercent", lc) public class AbilityDefinitionBlightPlacement extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightPlacement) function setCreatesBlight(int level, bool value) def.setLvlDataBoolean("Bli2", level, 2, value) function presetCreatesBlight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Bli2", lvls, 2, lc) addTooltipProperty("Creates Blight", lc) function setExpansionAmount(int level, real value) def.setLvlDataUnreal("Bli1", level, 1, value) function presetExpansionAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Bli1", lvls, 1, lc) addTooltipProperty("Expansion Amount", lc) public class AbilityDefinitionSeaWitchForkedLightning extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.seaWitchForkedLightning) function setNumberofTargetsHit(int level, int value) def.setLvlDataInt("Ocl2", level, 2, value) function presetNumberofTargetsHit(IntLevelClosure lc) def.setLevelsDataInt("Ocl2", lvls, 2, lc) addTooltipProperty("Number of Targets Hit", lc) function setDamageperTarget(int level, real value) def.setLvlDataUnreal("Ocl1", level, 1, value) function presetDamageperTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ocl1", lvls, 1, lc) addTooltipProperty("Damage per Target", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Ucs4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Ucs3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Ucs3", lvls, 3, lc) addTooltipProperty("Distance", lc) public class AbilityDefinitionStrengthMod extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemStrengthGain) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionScrollofLifeRegen extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.scrollofLifeRegen) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("irl4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setDispelOnAttack(int level, bool value) def.setLvlDataBoolean("irl5", level, 5, value) function presetDispelOnAttack(BooleanLevelClosure lc) def.setLevelsDataBoolean("irl5", lvls, 5, lc) addTooltipProperty("DispelOnAttack", lc) function setManaRegenerated(int level, real value) def.setLvlDataUnreal("irl2", level, 2, value) function presetManaRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl2", lvls, 2, lc) addTooltipProperty("Mana Regenerated", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("irl3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("irl3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) function setLifeRegenerated(int level, real value) def.setLvlDataUnreal("irl1", level, 1, value) function presetLifeRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("irl1", lvls, 1, lc) addTooltipProperty("Life Regenerated", lc) public class AbilityDefinitionHealCreepNormalAnhe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.heal1) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Hea1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Hea1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) public class AbilityDefinitionAttackSpeedIncrease extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackSpeedIncrease) function setAttackSpeedIncrease(int level, real value) def.setLvlDataUnreal("Isx1", level, 1, value) function presetAttackSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Isx1", lvls, 1, lc) addTooltipProperty("Attack Speed Increase", lc) public class AbilityDefinitionDefend extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.defend) function setDamageTaken(int level, real value) def.setLvlDataUnreal("Def1", level, 1, value) function presetDamageTaken(RealLevelClosure lc) def.setLevelsDataUnreal("Def1", lvls, 1, lc) addTooltipProperty("Damage Taken", lc) function setChancetoDeflect(int level, real value) def.setLvlDataUnreal("Def6", level, 6, value) function presetChancetoDeflect(RealLevelClosure lc) def.setLevelsDataUnreal("Def6", lvls, 6, lc) addTooltipProperty("Chance to Deflect", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Def3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Def4", level, 4, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Def4", lvls, 4, lc) addTooltipProperty("Attack Speed Factor", lc) function setDamageDealt(int level, real value) def.setLvlDataUnreal("Def2", level, 2, value) function presetDamageDealt(RealLevelClosure lc) def.setLevelsDataUnreal("Def2", lvls, 2, lc) addTooltipProperty("Damage Dealt", lc) function setDeflectDamageTakenSpells(int level, real value) def.setLvlDataUnreal("Def8", level, 8, value) function presetDeflectDamageTakenSpells(RealLevelClosure lc) def.setLevelsDataUnreal("Def8", lvls, 8, lc) addTooltipProperty("Deflect Damage Taken Spells", lc) function setDeflectDamageTakenPiercing(int level, real value) def.setLvlDataUnreal("Def7", level, 7, value) function presetDeflectDamageTakenPiercing(RealLevelClosure lc) def.setLevelsDataUnreal("Def7", lvls, 7, lc) addTooltipProperty("Deflect Damage Taken Piercing", lc) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Def5", level, 5, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Def5", lvls, 5, lc) addTooltipProperty("Magic Damage Reduction", lc) public class AbilityDefinitionSentryWardAIsw extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sentryWardAIsw) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionGrabTree extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.grabTree) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("gra4", level, 4, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("gra4", lvls, 4, lc) addTooltipProperty("Enabled Attack Index", lc) function setMaximumAttacks(int level, int value) def.setLvlDataInt("gra5", level, 5, value) function presetMaximumAttacks(IntLevelClosure lc) def.setLevelsDataInt("gra5", lvls, 5, lc) addTooltipProperty("Maximum Attacks", lc) function setAttachDelay(int level, real value) def.setLvlDataUnreal("gra1", level, 1, value) function presetAttachDelay(RealLevelClosure lc) def.setLevelsDataUnreal("gra1", lvls, 1, lc) addTooltipProperty("Attach Delay", lc) function setDisabledAttackIndex(int level, int value) def.setLvlDataInt("gra3", level, 3, value) function presetDisabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("gra3", lvls, 3, lc) addTooltipProperty("Disabled Attack Index", lc) function setRemoveDelay(int level, real value) def.setLvlDataUnreal("gra2", level, 2, value) function presetRemoveDelay(RealLevelClosure lc) def.setLevelsDataUnreal("gra2", lvls, 2, lc) addTooltipProperty("Remove Delay", lc) public class AbilityDefinitionDecouple extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.decouple) function setPartnerUnitTypeOne(int level, string value) def.setLvlDataString("dcp1", level, 1, value) function presetPartnerUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("dcp1", lvls, 1, lc) addTooltipProperty("Partner Unit Type One", lc) function setPartnerUnitTypeTwo(int level, string value) def.setLvlDataString("dcp2", level, 2, value) function presetPartnerUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("dcp2", lvls, 2, lc) addTooltipProperty("Partner Unit Type Two", lc) public class AbilityDefinitionDustofAppearance extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.dustofAppearance) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionAttackBonusAItc extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusAItc) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionItemDetectAoe extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemAreaDetection) function setDetectionRadius(int level, string value) def.setLvlDataString("Idet", level, 1, value) function presetDetectionRadius(StringLevelClosure lc) def.setLevelsDataString("Idet", lvls, 1, lc) addTooltipProperty("Detection Radius", lc) public class AbilityDefinitionAttackBonusPlus5 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus5) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionAttackBonusPlus7 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus7) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionAttackBonusPlus2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus2) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionDevour extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.devour1) function setMaxCreepLevel(int level, int value) def.setLvlDataInt("Dev1", level, 1, value) function presetMaxCreepLevel(IntLevelClosure lc) def.setLevelsDataInt("Dev1", lvls, 1, lc) addTooltipProperty("Max Creep Level", lc) public class AbilityDefinitionAttackBonusPlus4 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus4) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionMountainKingThunderClap extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.thunderClap) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Htc4", level, 4, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Htc4", lvls, 4, lc) addTooltipProperty("Attack Speed Reduction", lc) function setSpecificTargetDamage(int level, real value) def.setLvlDataUnreal("Htc2", level, 2, value) function presetSpecificTargetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htc2", lvls, 2, lc) addTooltipProperty("Specific Target Damage", lc) function setAOEDamage(int level, real value) def.setLvlDataUnreal("Htc1", level, 1, value) function presetAOEDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htc1", lvls, 1, lc) addTooltipProperty("AOEDamage", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Htc5", level, 1, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htc5", lvls, 1, lc) addTooltipProperty("Maximum Damage", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Htc3", level, 3, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Htc3", lvls, 3, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionAttackBonusAItf extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusAItf) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionAdet extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.detector) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionFingerofDeath extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.fingerofDeath) function setGraphicDelay(int level, real value) def.setLvlDataUnreal("Nfd1", level, 1, value) function presetGraphicDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Nfd1", lvls, 1, lc) addTooltipProperty("Graphic Delay", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Nfd3", level, 3, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Nfd3", lvls, 3, lc) addTooltipProperty("Damage", lc) function setGraphicDuration(int level, real value) def.setLvlDataUnreal("Nfd2", level, 2, value) function presetGraphicDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Nfd2", lvls, 2, lc) addTooltipProperty("Graphic Duration", lc) public class AbilityDefinitionAttackBonusPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.attackBonusPlus1) function setAttackBonus(int level, int value) def.setLvlDataInt("Iatt", level, 1, value) function presetAttackBonus(IntLevelClosure lc) def.setLevelsDataInt("Iatt", lvls, 1, lc) addTooltipProperty("Attack Bonus", lc) public class AbilityDefinitionSeaWitchFrostArrows extends AbilityDefinition private bitset stackFlagsSet = bitset(7) construct(int newAbilityId) super(newAbilityId, AbilityIds.seaWitchFrostArrows) function setStackFlags(int level, int value) def.setLvlDataInt("Hca4", level, 4, value) function presetStackFlags(IntLevelClosure lc) def.setLevelsDataInt("Hca4", lvls, 4, lc) addTooltipProperty("Stack Flags", lc) function presetStackFlag(StackFlag stackFlag, boolean flag) stackFlagsSet = stackFlagsSet.set(stackFlag castTo int, flag) presetStackFlags(lvl -> stackFlagsSet.val) function hasStackFlag(StackFlag stackFlag) returns boolean return stackFlagsSet.get(stackFlag castTo int) function setExtraDamage(int level, real value) def.setLvlDataUnreal("Hca1", level, 1, value) function presetExtraDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Hca1", lvls, 1, lc) addTooltipProperty("Extra Damage", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Hca2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Hca2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionFireBolt extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.firebolt) function setDamage(int level, real value) def.setLvlDataUnreal("Htb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionMountainKingThunderBolt extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.stormBolt) function setDamage(int level, real value) def.setLvlDataUnreal("Htb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Htb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionSentinel extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.sentinel) function setHoveringSightRadius(int level, real value) def.setLvlDataUnreal("Esn2", level, 2, value) function presetHoveringSightRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Esn2", lvls, 2, lc) addTooltipProperty("Hovering Sight Radius", lc) function setInFlightSightRadius(int level, real value) def.setLvlDataUnreal("Esn1", level, 1, value) function presetInFlightSightRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Esn1", lvls, 1, lc) addTooltipProperty("InFlightSightRadius", lc) function setNumberofOwls(int level, int value) def.setLvlDataInt("Esn4", level, 4, value) function presetNumberofOwls(IntLevelClosure lc) def.setLevelsDataInt("Esn4", lvls, 4, lc) addTooltipProperty("Number of Owls", lc) function setHoveringHeight(int level, real value) def.setLvlDataUnreal("Esn3", level, 3, value) function presetHoveringHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Esn3", lvls, 3, lc) addTooltipProperty("Hovering Height", lc) public class AbilityDefinitionArchMageSummonWaterElemental extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.summonWaterElemental) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionLoadBurrow extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.loadBurrow) function setAllowedUnitType(int level, string value) def.setLvlDataString("Loa1", level, 0, value) function presetAllowedUnitType(StringLevelClosure lc) def.setLevelsDataString("Loa1", lvls, 0, lc) addTooltipProperty("Allowed Unit Type", lc) public class AbilityDefinitionDispelMagiccreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.dispelMagic1) function setManaLoss(int level, real value) def.setLvlDataUnreal("Adm1", level, 1, value) function presetManaLoss(RealLevelClosure lc) def.setLevelsDataUnreal("Adm1", lvls, 1, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Adm2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Adm2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionFragShards extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.fragShards) function setSmallDamageRadius(int level, real value) def.setLvlDataUnreal("flk2", level, 2, value) function presetSmallDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("flk2", lvls, 2, lc) addTooltipProperty("Small Damage Radius", lc) function setSmallDamageAmount(int level, real value) def.setLvlDataUnreal("flk5", level, 5, value) function presetSmallDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk5", lvls, 5, lc) addTooltipProperty("Small Damage Amount", lc) function setMediumDamageAmount(int level, real value) def.setLvlDataUnreal("flk4", level, 4, value) function presetMediumDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk4", lvls, 4, lc) addTooltipProperty("Medium Damage Amount", lc) function setMediumDamageRadius(int level, real value) def.setLvlDataUnreal("flk1", level, 1, value) function presetMediumDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("flk1", lvls, 1, lc) addTooltipProperty("Medium Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("flk3", level, 3, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("flk3", lvls, 3, lc) addTooltipProperty("Full Damage Amount", lc) public class AbilityDefinitionDetectSentryWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.detectSentryWard) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionPhoenixFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.phoenixFire) function setInitialDamage(int level, real value) def.setLvlDataUnreal("pxf1", level, 1, value) function presetInitialDamage(RealLevelClosure lc) def.setLevelsDataUnreal("pxf1", lvls, 1, lc) addTooltipProperty("Initial Damage", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("pxf2", level, 2, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("pxf2", lvls, 2, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionRaiseDead extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.raiseDead) function setUnitsSummonedTypeOne(int level, int value) def.setLvlDataInt("Rai1", level, 1, value) function presetUnitsSummonedTypeOne(IntLevelClosure lc) def.setLevelsDataInt("Rai1", lvls, 1, lc) addTooltipProperty("Units Summoned Type One", lc) function setUnitTypeForLimitCheck(int level, string value) def.setLvlDataString("Raiu", level, 0, value) function presetUnitTypeForLimitCheck(StringLevelClosure lc) def.setLevelsDataString("Raiu", lvls, 0, lc) addTooltipProperty("UnitTypeForLimitCheck", lc) function setUnitsSummonedTypeTwo(int level, int value) def.setLvlDataInt("Rai2", level, 2, value) function presetUnitsSummonedTypeTwo(IntLevelClosure lc) def.setLevelsDataInt("Rai2", lvls, 2, lc) addTooltipProperty("Units Summoned Type Two", lc) function setUnitTypeTwo(int level, string value) def.setLvlDataString("Rai4", level, 4, value) function presetUnitTypeTwo(StringLevelClosure lc) def.setLevelsDataString("Rai4", lvls, 4, lc) addTooltipProperty("Unit Type Two", lc) function setUnitTypeOne(int level, string value) def.setLvlDataString("Rai3", level, 3, value) function presetUnitTypeOne(StringLevelClosure lc) def.setLevelsDataString("Rai3", lvls, 3, lc) addTooltipProperty("Unit Type One", lc) public class AbilityDefinitionAnwm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.anwm) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionRayOfDisruption extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rayofDisruption) function setManaLossPerUnit(int level, real value) def.setLvlDataUnreal("idc1", level, 1, value) function presetManaLossPerUnit(RealLevelClosure lc) def.setLevelsDataUnreal("idc1", lvls, 1, lc) addTooltipProperty("Mana Loss Per Unit", lc) function setMaximumDispelledUnits(int level, int value) def.setLvlDataInt("idc3", level, 1, value) function presetMaximumDispelledUnits(IntLevelClosure lc) def.setLevelsDataInt("idc3", lvls, 1, lc) addTooltipProperty("Maximum Dispelled Units", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("idc2", level, 1, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("idc2", lvls, 1, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionShadowMeld extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowMeld) function setDayNightDuration(int level, real value) def.setLvlDataUnreal("Shm2", level, 2, value) function presetDayNightDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm2", lvls, 2, lc) addTooltipProperty("Day Night Duration", lc) function setActionDuration(int level, real value) def.setLvlDataUnreal("Shm3", level, 3, value) function presetActionDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm3", lvls, 3, lc) addTooltipProperty("Action Duration", lc) function setFadeDuration(int level, real value) def.setLvlDataUnreal("Shm1", level, 1, value) function presetFadeDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Shm1", lvls, 1, lc) addTooltipProperty("Fade Duration", lc) public class AbilityDefinitionRoarAra2 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.roarAra2) function setDamageIncrease(int level, real value) def.setLvlDataUnreal("Roa1", level, 1, value) function presetDamageIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Roa1", lvls, 1, lc) addTooltipProperty("Damage Increase", lc) function setDefenseIncrease(int level, int value) def.setLvlDataInt("Roa2", level, 2, value) function presetDefenseIncrease(IntLevelClosure lc) def.setLevelsDataInt("Roa2", lvls, 2, lc) addTooltipProperty("Defense Increase", lc) function setPreferHostiles(int level, bool value) def.setLvlDataBoolean("Roa5", level, 5, value) function presetPreferHostiles(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa5", lvls, 5, lc) addTooltipProperty("Prefer Hostiles", lc) function setManaRegen(int level, real value) def.setLvlDataUnreal("Roa4", level, 4, value) function presetManaRegen(RealLevelClosure lc) def.setLevelsDataUnreal("Roa4", lvls, 4, lc) addTooltipProperty("Mana Regen", lc) function setLifeRegenerationRate(int level, real value) def.setLvlDataUnreal("Roa3", level, 3, value) function presetLifeRegenerationRate(RealLevelClosure lc) def.setLevelsDataUnreal("Roa3", lvls, 3, lc) addTooltipProperty("Life Regeneration Rate", lc) function setPreferFriendlies(int level, bool value) def.setLvlDataBoolean("Roa6", level, 6, value) function presetPreferFriendlies(BooleanLevelClosure lc) def.setLevelsDataBoolean("Roa6", lvls, 6, lc) addTooltipProperty("Prefer Friendlies", lc) function setMaxUnits(int level, int value) def.setLvlDataInt("Roa7", level, 7, value) function presetMaxUnits(IntLevelClosure lc) def.setLevelsDataInt("Roa7", lvls, 7, lc) addTooltipProperty("Max Units", lc) public class AbilityDefinitionGhostVisible extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ghostVisible) function setDoesNotBlockBuildings(int level, bool value) def.setLvlDataBoolean("Eth2", level, 2, value) function presetDoesNotBlockBuildings(BooleanLevelClosure lc) def.setLevelsDataBoolean("Eth2", lvls, 2, lc) addTooltipProperty("Does Not Block Buildings", lc) function setImmunetoMorphEffects(int level, bool value) def.setLvlDataBoolean("Eth1", level, 1, value) function presetImmunetoMorphEffects(BooleanLevelClosure lc) def.setLevelsDataBoolean("Eth1", lvls, 1, lc) addTooltipProperty("Immune to Morph Effects", lc) public class AbilityDefinitionDetectgeneral extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.trueSight1) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionPIlotTankRifleman extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pIlotTankRifleman) function setConvertedUnitType(int level, string value) def.setLvlDataString("tpi2", level, 2, value) function presetConvertedUnitType(StringLevelClosure lc) def.setLevelsDataString("tpi2", lvls, 2, lc) addTooltipProperty("Converted Unit Type", lc) function setRequiredUnitType(int level, string value) def.setLvlDataString("tpi1", level, 1, value) function presetRequiredUnitType(StringLevelClosure lc) def.setLevelsDataString("tpi1", lvls, 1, lc) addTooltipProperty("Required Unit Type", lc) public class AbilityDefinitionFreezeDamageBonus extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemFreezeDamageBonus) function setEnabledAttackIndex(int level, int value) def.setLvlDataInt("Iob5", level, 5, value) function presetEnabledAttackIndex(IntLevelClosure lc) def.setLevelsDataInt("Iob5", lvls, 5, lc) addTooltipProperty("Enabled Attack Index", lc) function setDamageBonus(int level, real value) def.setLvlDataUnreal("Idam", level, 1, value) function presetDamageBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Idam", lvls, 1, lc) addTooltipProperty("Damage Bonus", lc) public class AbilityDefinitionEtherealForm extends AbilityDefinition private bitset morphingFlagsSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.etherealForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionDetonate extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.detonate) function setDamagetoSummonedUnits(int level, real value) def.setLvlDataUnreal("Dtn2", level, 2, value) function presetDamagetoSummonedUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Dtn2", lvls, 2, lc) addTooltipProperty("Damage to Summoned Units", lc) function setManaLossperunit(int level, real value) def.setLvlDataUnreal("Dtn1", level, 1, value) function presetManaLossperunit(RealLevelClosure lc) def.setLevelsDataUnreal("Dtn1", lvls, 1, lc) addTooltipProperty("Mana Loss per unit", lc) public class AbilityDefinitionRavenFormMedivh extends AbilityDefinition private bitset morphingFlagsSet = bitset(5) construct(int newAbilityId) super(newAbilityId, AbilityIds.crowForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionShadowHunterSerpentWard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowHunterSerpentWard) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionAbsorbMana extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.absorbMana) function setMaximumManaAbsorbed(int level, real value) def.setLvlDataUnreal("abs2", level, 2, value) function presetMaximumManaAbsorbed(RealLevelClosure lc) def.setLevelsDataUnreal("abs2", lvls, 2, lc) addTooltipProperty("Maximum Mana Absorbed", lc) function setMaximumLifeAbsorbed(int level, real value) def.setLvlDataUnreal("abs1", level, 1, value) function presetMaximumLifeAbsorbed(RealLevelClosure lc) def.setLevelsDataUnreal("abs1", lvls, 1, lc) addTooltipProperty("Maximum Life Absorbed", lc) public class AbilityDefinitionAuraRegenerationStatue extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.auraRegenerationStatue) function setPercentage(int level, bool value) def.setLvlDataBoolean("Oar2", level, 2, value) function presetPercentage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Oar2", lvls, 2, lc) addTooltipProperty("Percentage", lc) function setAmountofHitPointsRegenerated(int level, real value) def.setLvlDataUnreal("Oar1", level, 1, value) function presetAmountofHitPointsRegenerated(RealLevelClosure lc) def.setLevelsDataUnreal("Oar1", lvls, 1, lc) addTooltipProperty("Amount of Hit Points Regenerated", lc) public class AbilityDefinitionUnsummon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unsummonBuilding) function setAccumulationStep(int level, int value) def.setLvlDataInt("Sal2", level, 2, value) function presetAccumulationStep(IntLevelClosure lc) def.setLevelsDataInt("Sal2", lvls, 2, lc) addTooltipProperty("Accumulation Step", lc) function setSalvageCostRatio(int level, real value) def.setLvlDataUnreal("Sal1", level, 1, value) function presetSalvageCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Sal1", lvls, 1, lc) addTooltipProperty("Salvage Cost Ratio", lc) public class AbilityDefinitionTaurenChieftainShockWave extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shockwave2) function setDamage(int level, real value) def.setLvlDataUnreal("Osh1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Osh3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Osh3", lvls, 3, lc) addTooltipProperty("Distance", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Osh4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Osh4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Osh2", level, 2, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh2", lvls, 2, lc) addTooltipProperty("Maximum Damage", lc) public class AbilityDefinitionCrippleWarlock extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cripple1) function setDamageReduction(int level, real value) def.setLvlDataUnreal("Cri3", level, 3, value) function presetDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri3", lvls, 3, lc) addTooltipProperty("Damage Reduction", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri2", level, 2, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri2", lvls, 2, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Cri1", level, 1, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Cri1", lvls, 1, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionFarseerSpiritWolf extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.feralSpirit2) function setSummonedUnit(int level, string value) def.setLvlDataString("Osf1", level, 0, value) function presetSummonedUnit(StringLevelClosure lc) def.setLevelsDataString("Osf1", lvls, 0, lc) addTooltipProperty("Summoned Unit", lc) function setNumberofSummonedUnits(int level, int value) def.setLvlDataInt("Osf2", level, 2, value) function presetNumberofSummonedUnits(IntLevelClosure lc) def.setLevelsDataInt("Osf2", lvls, 2, lc) addTooltipProperty("Number of Summoned Units", lc) public class AbilityDefinitionPilotTankMortarTeam extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.pilotTankMortarTeam) function setConvertedUnitType(int level, string value) def.setLvlDataString("tpi2", level, 2, value) function presetConvertedUnitType(StringLevelClosure lc) def.setLevelsDataString("tpi2", lvls, 2, lc) addTooltipProperty("Converted Unit Type", lc) function setRequiredUnitType(int level, string value) def.setLvlDataString("tpi1", level, 1, value) function presetRequiredUnitType(StringLevelClosure lc) def.setLevelsDataString("tpi1", lvls, 1, lc) addTooltipProperty("Required Unit Type", lc) public class AbilityDefinitionAntimagicShieldAIxs extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.antimagicShieldAIxs) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Ixs2", level, 2, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ixs2", lvls, 2, lc) addTooltipProperty("Magic Damage Reduction", lc) function setDamageToSummonedUnits(int level, real value) def.setLvlDataUnreal("Ixs1", level, 1, value) function presetDamageToSummonedUnits(RealLevelClosure lc) def.setLevelsDataUnreal("Ixs1", lvls, 1, lc) addTooltipProperty("DamageToSummonedUnits", lc) function setManaLoss(int level, int value) def.setLvlDataInt("Ams4", level, 4, value) function presetManaLoss(IntLevelClosure lc) def.setLevelsDataInt("Ams4", lvls, 4, lc) addTooltipProperty("Mana Loss", lc) function setShieldLife(int level, int value) def.setLvlDataInt("Ams3", level, 3, value) function presetShieldLife(IntLevelClosure lc) def.setLevelsDataInt("Ams3", lvls, 3, lc) addTooltipProperty("Shield Life", lc) public class AbilityDefinitionPermanentAllPlus1 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemIntAgiStrgain) function setHideButton(int level, bool value) def.setLvlDataBoolean("Ihid", level, 4, value) function presetHideButton(BooleanLevelClosure lc) def.setLevelsDataBoolean("Ihid", lvls, 4, lc) addTooltipProperty("Hide Button", lc) function setIntelligenceBonus(int level, int value) def.setLvlDataInt("Iint", level, 2, value) function presetIntelligenceBonus(IntLevelClosure lc) def.setLevelsDataInt("Iint", lvls, 2, lc) addTooltipProperty("Intelligence Bonus", lc) function setAgilityBonus(int level, int value) def.setLvlDataInt("Iagi", level, 1, value) function presetAgilityBonus(IntLevelClosure lc) def.setLevelsDataInt("Iagi", lvls, 1, lc) addTooltipProperty("Agility Bonus", lc) function setStrengthBonus(int level, int value) def.setLvlDataInt("Istr", level, 3, value) function presetStrengthBonus(IntLevelClosure lc) def.setLevelsDataInt("Istr", lvls, 3, lc) addTooltipProperty("Strength Bonus", lc) public class AbilityDefinitionAbolishMagic extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.abolishMagic) function setManaLoss(int level, real value) def.setLvlDataUnreal("Adm1", level, 1, value) function presetManaLoss(RealLevelClosure lc) def.setLevelsDataUnreal("Adm1", lvls, 1, lc) addTooltipProperty("Mana Loss", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Adm2", level, 2, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Adm2", lvls, 2, lc) addTooltipProperty("Summoned Unit Damage", lc) public class AbilityDefinitionRavenFormDruidoftheTalon extends AbilityDefinition private bitset morphingFlagsSet = bitset(5) construct(int newAbilityId) super(newAbilityId, AbilityIds.stormCrowForm) function setNormalFormUnit(int level, string value) def.setLvlDataString("Eme1", level, 1, value) function presetNormalFormUnit(StringLevelClosure lc) def.setLevelsDataString("Eme1", lvls, 1, lc) addTooltipProperty("Normal Form Unit", lc) function setLandingDelayTime(int level, real value) def.setLvlDataUnreal("Eme4", level, 4, value) function presetLandingDelayTime(RealLevelClosure lc) def.setLevelsDataUnreal("Eme4", lvls, 4, lc) addTooltipProperty("Landing Delay Time", lc) function setAltitudeAdjustmentDuration(int level, real value) def.setLvlDataUnreal("Eme3", level, 3, value) function presetAltitudeAdjustmentDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Eme3", lvls, 3, lc) addTooltipProperty("Altitude Adjustment Duration", lc) function setMorphingFlags(int level, int value) def.setLvlDataInt("Eme2", level, 2, value) function presetMorphingFlags(IntLevelClosure lc) def.setLevelsDataInt("Eme2", lvls, 2, lc) addTooltipProperty("Morphing Flags", lc) function presetMorphingFlag(MorphingFlag morphingFlag, boolean flag) morphingFlagsSet = morphingFlagsSet.set(morphingFlag castTo int, flag) presetMorphingFlags(lvl -> morphingFlagsSet.val) function hasMorphingFlag(MorphingFlag morphingFlag) returns boolean return morphingFlagsSet.get(morphingFlag castTo int) function setAlternateFormUnit(int level, string value) def.setLvlDataString("Emeu", level, 0, value) function presetAlternateFormUnit(StringLevelClosure lc) def.setLevelsDataString("Emeu", lvls, 0, lc) addTooltipProperty("Alternate Form Unit", lc) public class AbilityDefinitionPlagueToss extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.diseaseCloud2) function setWardUnitType(int level, string value) def.setLvlDataString("hwdu", level, 0, value) function presetWardUnitType(StringLevelClosure lc) def.setLevelsDataString("hwdu", lvls, 0, lc) addTooltipProperty("Ward Unit Type", lc) public class AbilityDefinitionVampiricattack extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.vampiricattack) function setLifeStolenPerAttack(int level, real value) def.setLvlDataUnreal("Ivam", level, 1, value) function presetLifeStolenPerAttack(RealLevelClosure lc) def.setLevelsDataUnreal("Ivam", lvls, 1, lc) addTooltipProperty("Life Stolen Per Attack", lc) public class AbilityDefinitionCargoHoldDeath extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.cargoHoldDeath) function setMovementUpdateFrequency(int level, real value) def.setLvlDataUnreal("Chd1", level, 1, value) function presetMovementUpdateFrequency(RealLevelClosure lc) def.setLevelsDataUnreal("Chd1", lvls, 1, lc) addTooltipProperty("Movement Update Frequency", lc) function setSummonedUnitDamage(int level, real value) def.setLvlDataUnreal("Chd3", level, 3, value) function presetSummonedUnitDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Chd3", lvls, 3, lc) addTooltipProperty("Summoned Unit Damage", lc) function setAttackUpdateFrequency(int level, real value) def.setLvlDataUnreal("Chd2", level, 2, value) function presetAttackUpdateFrequency(RealLevelClosure lc) def.setLevelsDataUnreal("Chd2", lvls, 2, lc) addTooltipProperty("Attack Update Frequency", lc) public class AbilityDefinitionAcha extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaos) function setNewUnitType(int level, string value) def.setLvlDataString("Cha1", level, 0, value) function presetNewUnitType(StringLevelClosure lc) def.setLevelsDataString("Cha1", lvls, 0, lc) addTooltipProperty("New Unit Type", lc) public class AbilityDefinitionUnholyFrenzycreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unholyFrenzycreep) function setAttackSpeedBonus(int level, real value) def.setLvlDataUnreal("Uhf1", level, 1, value) function presetAttackSpeedBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf1", lvls, 1, lc) addTooltipProperty("Attack Speed Bonus", lc) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Uhf2", level, 2, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Uhf2", lvls, 2, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionRenew extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.renew) function setPowerbuildRate(int level, real value) def.setLvlDataUnreal("Rep4", level, 4, value) function presetPowerbuildRate(RealLevelClosure lc) def.setLevelsDataUnreal("Rep4", lvls, 4, lc) addTooltipProperty("Powerbuild Rate", lc) function setNavalRangeBonus(int level, real value) def.setLvlDataUnreal("Rep5", level, 5, value) function presetNavalRangeBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Rep5", lvls, 5, lc) addTooltipProperty("Naval Range Bonus", lc) function setRepairTimeRatio(int level, real value) def.setLvlDataUnreal("Rep2", level, 2, value) function presetRepairTimeRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep2", lvls, 2, lc) addTooltipProperty("Repair Time Ratio", lc) function setRepairCostRatio(int level, real value) def.setLvlDataUnreal("Rep1", level, 1, value) function presetRepairCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep1", lvls, 1, lc) addTooltipProperty("Repair Cost Ratio", lc) function setPowerbuildCost(int level, real value) def.setLvlDataUnreal("Rep3", level, 3, value) function presetPowerbuildCost(RealLevelClosure lc) def.setLevelsDataUnreal("Rep3", lvls, 3, lc) addTooltipProperty("Powerbuild Cost", lc) public class AbilityDefinitionRegenLife extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.itemLifeRegeneration) function setHitPointsRegeneratedPerSecond(int level, int value) def.setLvlDataInt("Ihpr", level, 1, value) function presetHitPointsRegeneratedPerSecond(IntLevelClosure lc) def.setLevelsDataInt("Ihpr", lvls, 1, lc) addTooltipProperty("HitPointsRegeneratedPerSecond", lc) public class AbilityDefinitionBlightGrowthLarge extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightGrowthLarge) function setCreatesBlight(int level, bool value) def.setLvlDataBoolean("Bli2", level, 2, value) function presetCreatesBlight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Bli2", lvls, 2, lc) addTooltipProperty("Creates Blight", lc) function setExpansionAmount(int level, real value) def.setLvlDataUnreal("Bli1", level, 1, value) function presetExpansionAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Bli1", lvls, 1, lc) addTooltipProperty("Expansion Amount", lc) public class AbilityDefinitionBlightedGoldmine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightedGoldMineAbility) function setGoldperInterval(int level, int value) def.setLvlDataInt("Bgm1", level, 1, value) function presetGoldperInterval(IntLevelClosure lc) def.setLevelsDataInt("Bgm1", lvls, 1, lc) addTooltipProperty("Gold per Interval", lc) function setRadiusofMiningRing(int level, real value) def.setLvlDataUnreal("Bgm4", level, 4, value) function presetRadiusofMiningRing(RealLevelClosure lc) def.setLevelsDataUnreal("Bgm4", lvls, 4, lc) addTooltipProperty("Radius of Mining Ring", lc) function setIntervalDuration(int level, real value) def.setLvlDataUnreal("Bgm2", level, 2, value) function presetIntervalDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Bgm2", lvls, 2, lc) addTooltipProperty("Interval Duration", lc) function setMaxNumberofMiners(int level, int value) def.setLvlDataInt("Bgm3", level, 3, value) function presetMaxNumberofMiners(IntLevelClosure lc) def.setLevelsDataInt("Bgm3", lvls, 3, lc) addTooltipProperty("Max Number of Miners", lc) public class AbilityDefinitionUnholyAuracreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.unholyAura) function setPercentBonus(int level, bool value) def.setLvlDataBoolean("Uau3", level, 3, value) function presetPercentBonus(BooleanLevelClosure lc) def.setLevelsDataBoolean("Uau3", lvls, 3, lc) addTooltipProperty("Percent Bonus", lc) function setLifeRegenerationIncrease(int level, real value) def.setLvlDataUnreal("Uau2", level, 2, value) function presetLifeRegenerationIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau2", lvls, 2, lc) addTooltipProperty("Life Regeneration Increase", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Uau1", level, 1, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Uau1", lvls, 1, lc) addTooltipProperty("Movement Speed Increase", lc) public class AbilityDefinitionRepairOrc extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.repair) function setPowerbuildRate(int level, real value) def.setLvlDataUnreal("Rep4", level, 4, value) function presetPowerbuildRate(RealLevelClosure lc) def.setLevelsDataUnreal("Rep4", lvls, 4, lc) addTooltipProperty("Powerbuild Rate", lc) function setNavalRangeBonus(int level, real value) def.setLvlDataUnreal("Rep5", level, 5, value) function presetNavalRangeBonus(RealLevelClosure lc) def.setLevelsDataUnreal("Rep5", lvls, 5, lc) addTooltipProperty("Naval Range Bonus", lc) function setRepairTimeRatio(int level, real value) def.setLvlDataUnreal("Rep2", level, 2, value) function presetRepairTimeRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep2", lvls, 2, lc) addTooltipProperty("Repair Time Ratio", lc) function setRepairCostRatio(int level, real value) def.setLvlDataUnreal("Rep1", level, 1, value) function presetRepairCostRatio(RealLevelClosure lc) def.setLevelsDataUnreal("Rep1", lvls, 1, lc) addTooltipProperty("Repair Cost Ratio", lc) function setPowerbuildCost(int level, real value) def.setLvlDataUnreal("Rep3", level, 3, value) function presetPowerbuildCost(RealLevelClosure lc) def.setLevelsDataUnreal("Rep3", lvls, 3, lc) addTooltipProperty("Powerbuild Cost", lc) public class AbilityDefinitionEntanglingSeaweed extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.entanglingSeaweed) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Eer1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eer1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionNeutralSpies extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.neutralSpies) function setGoldCostperStructure(int level, int value) def.setLvlDataInt("Nsp1", level, 1, value) function presetGoldCostperStructure(IntLevelClosure lc) def.setLevelsDataInt("Nsp1", lvls, 1, lc) addTooltipProperty("Gold Cost per Structure", lc) function setLumberCostperUse(int level, int value) def.setLvlDataInt("Nsp2", level, 2, value) function presetLumberCostperUse(IntLevelClosure lc) def.setLevelsDataInt("Nsp2", lvls, 2, lc) addTooltipProperty("Lumber Cost per Use", lc) function setDetectionType(int level, string value) def.setLvlDataString("Nsp3", level, 3, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Nsp3", lvls, 3, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionEntangle extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.entangleGoldMine) function setResultingUnitType(int level, string value) def.setLvlDataString("ent1", level, 0, value) function presetResultingUnitType(StringLevelClosure lc) def.setLevelsDataString("ent1", lvls, 0, lc) addTooltipProperty("Resulting Unit Type", lc) public class AbilityDefinitionRejuvination extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.rejuvenation1) function setManaPointsGained(int level, real value) def.setLvlDataUnreal("Rej2", level, 2, value) function presetManaPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej2", lvls, 2, lc) addTooltipProperty("Mana Points Gained", lc) function setNoTargetRequired(int level, bool value) def.setLvlDataBoolean("Rej4", level, 4, value) function presetNoTargetRequired(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rej4", lvls, 4, lc) addTooltipProperty("NoTargetRequired", lc) function setHitPointsGained(int level, real value) def.setLvlDataUnreal("Rej1", level, 1, value) function presetHitPointsGained(RealLevelClosure lc) def.setLevelsDataUnreal("Rej1", lvls, 1, lc) addTooltipProperty("Hit Points Gained", lc) function setAllowWhenFull(int level, AllowWhenFull value) def.setLvlDataInt("Rej3", level, 3, value castTo int) function presetAllowWhenFull(IntLevelClosure lc) def.setLevelsDataInt("Rej3", lvls, 3, lc) addTooltipProperty("Allow When Full", lc) public class AbilityDefinitionEntanglingRootscreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.entanglingRoots) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Eer1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Eer1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) public class AbilityDefinitionSelfDestruct extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.kaboom) function setPartialDamageAmount(int level, real value) def.setLvlDataUnreal("Dda4", level, 4, value) function presetPartialDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda4", lvls, 4, lc) addTooltipProperty("Partial Damage Amount", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("Dda1", level, 1, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda1", lvls, 1, lc) addTooltipProperty("Full Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Dda2", level, 2, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda2", lvls, 2, lc) addTooltipProperty("Full Damage Amount", lc) function setExplodesonDeath(int level, bool value) def.setLvlDataBoolean("Sds6", level, 6, value) function presetExplodesonDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Sds6", lvls, 6, lc) addTooltipProperty("Explodes on Death", lc) function setBuildingDamageFactor(int level, real value) def.setLvlDataUnreal("Sds1", level, 5, value) function presetBuildingDamageFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Sds1", lvls, 5, lc) addTooltipProperty("Building Damage Factor", lc) function setPartialDamageRadius(int level, real value) def.setLvlDataUnreal("Dda3", level, 3, value) function presetPartialDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda3", lvls, 3, lc) addTooltipProperty("Partial Damage Radius", lc) public class AbilityDefinitionBlightGrowthSmall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightGrowthSmall) function setCreatesBlight(int level, bool value) def.setLvlDataBoolean("Bli2", level, 2, value) function presetCreatesBlight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Bli2", lvls, 2, lc) addTooltipProperty("Creates Blight", lc) function setExpansionAmount(int level, real value) def.setLvlDataUnreal("Bli1", level, 1, value) function presetExpansionAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Bli1", lvls, 1, lc) addTooltipProperty("Expansion Amount", lc) public class AbilityDefinitionEnsnare extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.ensnare1) function setAirUnitHeight(int level, real value) def.setLvlDataUnreal("Ens2", level, 2, value) function presetAirUnitHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Ens2", lvls, 2, lc) addTooltipProperty("Air Unit Height", lc) function setAirUnitLowerDuration(int level, real value) def.setLvlDataUnreal("Ens1", level, 1, value) function presetAirUnitLowerDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ens1", lvls, 1, lc) addTooltipProperty("Air Unit Lower Duration", lc) function setMeleeAttackRange(int level, real value) def.setLvlDataUnreal("Ens3", level, 3, value) function presetMeleeAttackRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ens3", lvls, 3, lc) addTooltipProperty("Melee Attack Range", lc) public class AbilityDefinitionDeathDamageAOEmineBIG extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathDamageAOEmineBIG) function setPartialDamageAmount(int level, real value) def.setLvlDataUnreal("Dda4", level, 4, value) function presetPartialDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda4", lvls, 4, lc) addTooltipProperty("Partial Damage Amount", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("Dda1", level, 1, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda1", lvls, 1, lc) addTooltipProperty("Full Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Dda2", level, 2, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda2", lvls, 2, lc) addTooltipProperty("Full Damage Amount", lc) function setPartialDamageRadius(int level, real value) def.setLvlDataUnreal("Dda3", level, 3, value) function presetPartialDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda3", lvls, 3, lc) addTooltipProperty("Partial Damage Radius", lc) public class AbilityDefinitionSerpentWardtentacleForgottenone extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.serpentWardtentacleForgottenone) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionTornadoDamage extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.tornadoDamage) function setMediumDamageRadius(int level, real value) def.setLvlDataUnreal("Tdg2", level, 2, value) function presetMediumDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Tdg2", lvls, 2, lc) addTooltipProperty("Medium Damage Radius", lc) function setMediumDamagePerSecond(int level, real value) def.setLvlDataUnreal("Tdg3", level, 3, value) function presetMediumDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Tdg3", lvls, 3, lc) addTooltipProperty("Medium Damage Per Second", lc) function setSmallDamageRadius(int level, real value) def.setLvlDataUnreal("Tdg4", level, 4, value) function presetSmallDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Tdg4", lvls, 4, lc) addTooltipProperty("Small Damage Radius", lc) function setSmallDamagePerSecond(int level, real value) def.setLvlDataUnreal("Tdg5", level, 5, value) function presetSmallDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Tdg5", lvls, 5, lc) addTooltipProperty("Small Damage Per Second", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Tdg1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Tdg1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionThunderBoltCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.hurlBoulder) function setDamage(int level, real value) def.setLvlDataUnreal("Ctb1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ctb1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionThunderClapCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slam) function setDamage(int level, real value) def.setLvlDataUnreal("Ctc1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setExtraDamageToTarget(int level, real value) def.setLvlDataUnreal("Ctc2", level, 2, value) function presetExtraDamageToTarget(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc2", lvls, 2, lc) addTooltipProperty("ExtraDamageToTarget", lc) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("Ctc4", level, 4, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc4", lvls, 4, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("Ctc3", level, 3, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Ctc3", lvls, 3, lc) addTooltipProperty("Movement Speed Reduction", lc) public class AbilityDefinitionSelfDestructClockwerkGoblins extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.selfDestructClockwerkGoblins) function setExplodesonDeath(int level, bool value) def.setLvlDataBoolean("Sds6", level, 6, value) function presetExplodesonDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Sds6", lvls, 6, lc) addTooltipProperty("Explodes on Death", lc) public class AbilityDefinitionDeathDamageAOEmine extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.deathDamageAOEmine) function setPartialDamageAmount(int level, real value) def.setLvlDataUnreal("Dda4", level, 4, value) function presetPartialDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda4", lvls, 4, lc) addTooltipProperty("Partial Damage Amount", lc) function setFullDamageRadius(int level, real value) def.setLvlDataUnreal("Dda1", level, 1, value) function presetFullDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda1", lvls, 1, lc) addTooltipProperty("Full Damage Radius", lc) function setFullDamageAmount(int level, real value) def.setLvlDataUnreal("Dda2", level, 2, value) function presetFullDamageAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Dda2", lvls, 2, lc) addTooltipProperty("Full Damage Amount", lc) function setPartialDamageRadius(int level, real value) def.setLvlDataUnreal("Dda3", level, 3, value) function presetPartialDamageRadius(RealLevelClosure lc) def.setLevelsDataUnreal("Dda3", lvls, 3, lc) addTooltipProperty("Partial Damage Radius", lc) public class AbilityDefinitionManaBurndemon extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.manaBurndemon) function setMaxManaDrained(int level, real value) def.setLvlDataUnreal("Emb1", level, 1, value) function presetMaxManaDrained(RealLevelClosure lc) def.setLevelsDataUnreal("Emb1", lvls, 1, lc) addTooltipProperty("Max Mana Drained", lc) function setBoltLifetime(int level, real value) def.setLvlDataUnreal("Emb3", level, 3, value) function presetBoltLifetime(RealLevelClosure lc) def.setLevelsDataUnreal("Emb3", lvls, 3, lc) addTooltipProperty("Bolt Lifetime", lc) function setBoltDelay(int level, real value) def.setLvlDataUnreal("Emb2", level, 2, value) function presetBoltDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Emb2", lvls, 2, lc) addTooltipProperty("Bolt Delay", lc) public class AbilityDefinitionShockwaveTrap extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shockwave1) function setDamage(int level, real value) def.setLvlDataUnreal("Osh1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh1", lvls, 1, lc) addTooltipProperty("Damage", lc) function setDistance(int level, real value) def.setLvlDataUnreal("Osh3", level, 3, value) function presetDistance(RealLevelClosure lc) def.setLevelsDataUnreal("Osh3", lvls, 3, lc) addTooltipProperty("Distance", lc) function setFinalArea(int level, real value) def.setLvlDataUnreal("Osh4", level, 4, value) function presetFinalArea(RealLevelClosure lc) def.setLevelsDataUnreal("Osh4", lvls, 4, lc) addTooltipProperty("Final Area", lc) function setMaximumDamage(int level, real value) def.setLvlDataUnreal("Osh2", level, 2, value) function presetMaximumDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Osh2", lvls, 2, lc) addTooltipProperty("Maximum Damage", lc) public class AbilityDefinitionShadowStrikeCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.shadowStrikeCreep) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Esh2", level, 2, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Esh2", lvls, 2, lc) addTooltipProperty("Movement Speed Factor", lc) function setInitialDamage(int level, real value) def.setLvlDataUnreal("Esh5", level, 5, value) function presetInitialDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Esh5", lvls, 5, lc) addTooltipProperty("Initial Damage", lc) function setDecayPower(int level, real value) def.setLvlDataUnreal("Esh4", level, 4, value) function presetDecayPower(RealLevelClosure lc) def.setLevelsDataUnreal("Esh4", lvls, 4, lc) addTooltipProperty("Decay Power", lc) function setDecayingDamage(int level, real value) def.setLvlDataUnreal("Esh1", level, 1, value) function presetDecayingDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Esh1", lvls, 1, lc) addTooltipProperty("Decaying Damage", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Esh3", level, 3, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Esh3", lvls, 3, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionBashmaulSPBearlevel3 extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bashmaulSPBearlevel3) function setNeverMiss(int level, bool value) def.setLvlDataBoolean("Hbh5", level, 5, value) function presetNeverMiss(BooleanLevelClosure lc) def.setLevelsDataBoolean("Hbh5", lvls, 5, lc) addTooltipProperty("Never Miss", lc) public class AbilityDefinitionSlowCreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.slow1) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo1", level, 1, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo1", lvls, 1, lc) addTooltipProperty("Movement Speed Factor", lc) function setAlwaysAutocast(int level, bool value) def.setLvlDataBoolean("Slo3", level, 3, value) function presetAlwaysAutocast(BooleanLevelClosure lc) def.setLevelsDataBoolean("Slo3", lvls, 3, lc) addTooltipProperty("Always Autocast", lc) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Slo2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Slo2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) public class AbilityDefinitionReturnGold extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.returnGold) function setAcceptsGold(int level, bool value) def.setLvlDataBoolean("Rtn1", level, 1, value) function presetAcceptsGold(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn1", lvls, 1, lc) addTooltipProperty("Accepts Gold", lc) function setAcceptsLumber(int level, bool value) def.setLvlDataBoolean("Rtn2", level, 2, value) function presetAcceptsLumber(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn2", lvls, 2, lc) addTooltipProperty("Accepts Lumber", lc) public class AbilityDefinitionWarStompseagiant extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.warStompseagiant) function setTerrainDeformationAmplitude(int level, real value) def.setLvlDataUnreal("Wrs2", level, 2, value) function presetTerrainDeformationAmplitude(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs2", lvls, 2, lc) addTooltipProperty("Terrain Deformation Amplitude", lc) function setTerrainDeformationDurationms(int level, int value) def.setLvlDataInt("Wrs3", level, 3, value) function presetTerrainDeformationDurationms(IntLevelClosure lc) def.setLevelsDataInt("Wrs3", lvls, 3, lc) addTooltipProperty("Terrain Deformation Duration ms", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Wrs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionBladeMasterBladestorm extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.bladestorm) function setMagicDamageReduction(int level, real value) def.setLvlDataUnreal("Oww2", level, 2, value) function presetMagicDamageReduction(RealLevelClosure lc) def.setLevelsDataUnreal("Oww2", lvls, 2, lc) addTooltipProperty("Magic Damage Reduction", lc) function setDamagePerSecond(int level, real value) def.setLvlDataUnreal("Oww1", level, 1, value) function presetDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Oww1", lvls, 1, lc) addTooltipProperty("Damage Per Second", lc) public class AbilityDefinitionTaurenChieftainWarStomp extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.warStomp1) function setDamage(int level, real value) def.setLvlDataUnreal("Wrs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionWarStomphydra extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.warStomphydra) function setTerrainDeformationAmplitude(int level, real value) def.setLvlDataUnreal("Wrs2", level, 2, value) function presetTerrainDeformationAmplitude(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs2", lvls, 2, lc) addTooltipProperty("Terrain Deformation Amplitude", lc) function setTerrainDeformationDurationms(int level, int value) def.setLvlDataInt("Wrs3", level, 3, value) function presetTerrainDeformationDurationms(IntLevelClosure lc) def.setLevelsDataInt("Wrs3", lvls, 3, lc) addTooltipProperty("Terrain Deformation Duration ms", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Wrs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionBladeMasterWindWalk extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.windWalk) function setBackstabDamage(int level, bool value) def.setLvlDataBoolean("Owk4", level, 4, value) function presetBackstabDamage(BooleanLevelClosure lc) def.setLevelsDataBoolean("Owk4", lvls, 4, lc) addTooltipProperty("Backstab Damage", lc) function setMovementSpeedIncrease(int level, real value) def.setLvlDataUnreal("Owk2", level, 2, value) function presetMovementSpeedIncrease(RealLevelClosure lc) def.setLevelsDataUnreal("Owk2", lvls, 2, lc) addTooltipProperty("Movement Speed Increase", lc) function setTransitionTime(int level, real value) def.setLvlDataUnreal("Owk1", level, 1, value) function presetTransitionTime(RealLevelClosure lc) def.setLevelsDataUnreal("Owk1", lvls, 1, lc) addTooltipProperty("Transition Time", lc) function setBackstabDamage1(int level, real value) def.setLvlDataUnreal("Owk3", level, 3, value) function presetBackstabDamage1(RealLevelClosure lc) def.setLevelsDataUnreal("Owk3", lvls, 3, lc) addTooltipProperty("BackstabDamage1", lc) public class AbilityDefinitionSummonSeaElemental extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.summonSeaElemental) function setSummonedUnitCount(int level, int value) def.setLvlDataInt("Hwe2", level, 1, value) function presetSummonedUnitCount(IntLevelClosure lc) def.setLevelsDataInt("Hwe2", lvls, 1, lc) addTooltipProperty("Summoned Unit Count", lc) function setSummonedUnitType(int level, string value) def.setLvlDataString("Hwe1", level, 0, value) function presetSummonedUnitType(StringLevelClosure lc) def.setLevelsDataString("Hwe1", lvls, 0, lc) addTooltipProperty("Summoned Unit Type", lc) public class AbilityDefinitionWebcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.webcreep) function setAirUnitHeight(int level, real value) def.setLvlDataUnreal("Ens2", level, 2, value) function presetAirUnitHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Ens2", lvls, 2, lc) addTooltipProperty("Air Unit Height", lc) function setAirUnitLowerDuration(int level, real value) def.setLvlDataUnreal("Ens1", level, 1, value) function presetAirUnitLowerDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Ens1", lvls, 1, lc) addTooltipProperty("Air Unit Lower Duration", lc) function setMeleeAttackRange(int level, real value) def.setLvlDataUnreal("Ens3", level, 3, value) function presetMeleeAttackRange(RealLevelClosure lc) def.setLevelsDataUnreal("Ens3", lvls, 3, lc) addTooltipProperty("Melee Attack Range", lc) public class AbilityDefinitionReturnGoldLumber extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.returnGoldLumber) function setAcceptsGold(int level, bool value) def.setLvlDataBoolean("Rtn1", level, 1, value) function presetAcceptsGold(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn1", lvls, 1, lc) addTooltipProperty("Accepts Gold", lc) function setAcceptsLumber(int level, bool value) def.setLvlDataBoolean("Rtn2", level, 2, value) function presetAcceptsLumber(BooleanLevelClosure lc) def.setLevelsDataBoolean("Rtn2", lvls, 2, lc) addTooltipProperty("Accepts Lumber", lc) public class AbilityDefinitionSelfDestruct3ClockwerkGoblins extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.selfDestruct3ClockwerkGoblins) function setExplodesonDeath(int level, bool value) def.setLvlDataBoolean("Sds6", level, 6, value) function presetExplodesonDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Sds6", lvls, 6, lc) addTooltipProperty("Explodes on Death", lc) public class AbilityDefinitionSelfDestruct2ClockwerkGoblins extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.selfDestruct2ClockwerkGoblins) function setExplodesonDeath(int level, bool value) def.setLvlDataBoolean("Sds6", level, 6, value) function presetExplodesonDeath(BooleanLevelClosure lc) def.setLevelsDataBoolean("Sds6", lvls, 6, lc) addTooltipProperty("Explodes on Death", lc) public class AbilityDefinitionGraveyard extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.createCorpse) function setRadiusofCorpses(int level, real value) def.setLvlDataUnreal("Gyd3", level, 3, value) function presetRadiusofCorpses(RealLevelClosure lc) def.setLevelsDataUnreal("Gyd3", lvls, 3, lc) addTooltipProperty("Radius of Corpses", lc) function setMaximumNumberofCorpses(int level, int value) def.setLvlDataInt("Gyd1", level, 1, value) function presetMaximumNumberofCorpses(IntLevelClosure lc) def.setLevelsDataInt("Gyd1", lvls, 1, lc) addTooltipProperty("Maximum Number of Corpses", lc) function setRadiusofGravestones(int level, real value) def.setLvlDataUnreal("Gyd2", level, 2, value) function presetRadiusofGravestones(RealLevelClosure lc) def.setLevelsDataUnreal("Gyd2", lvls, 2, lc) addTooltipProperty("Radius of Gravestones", lc) function setCorpseUnitType(int level, string value) def.setLvlDataString("Gydu", level, 0, value) function presetCorpseUnitType(StringLevelClosure lc) def.setLevelsDataString("Gydu", lvls, 0, lc) addTooltipProperty("Corpse Unit Type", lc) public class AbilityDefinitionWarStompcreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.warStomp) function setTerrainDeformationAmplitude(int level, real value) def.setLvlDataUnreal("Wrs2", level, 2, value) function presetTerrainDeformationAmplitude(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs2", lvls, 2, lc) addTooltipProperty("Terrain Deformation Amplitude", lc) function setTerrainDeformationDurationms(int level, int value) def.setLvlDataInt("Wrs3", level, 3, value) function presetTerrainDeformationDurationms(IntLevelClosure lc) def.setLevelsDataInt("Wrs3", lvls, 3, lc) addTooltipProperty("Terrain Deformation Duration ms", lc) function setDamage(int level, real value) def.setLvlDataUnreal("Wrs1", level, 1, value) function presetDamage(RealLevelClosure lc) def.setLevelsDataUnreal("Wrs1", lvls, 1, lc) addTooltipProperty("Damage", lc) public class AbilityDefinitionWarp extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.waygateability) function setTeleportAreaWidth(int level, real value) def.setLvlDataUnreal("Wrp1", level, 1, value) function presetTeleportAreaWidth(RealLevelClosure lc) def.setLevelsDataUnreal("Wrp1", lvls, 1, lc) addTooltipProperty("Teleport Area Width", lc) function setTeleportAreaHeight(int level, real value) def.setLvlDataUnreal("Wrp2", level, 2, value) function presetTeleportAreaHeight(RealLevelClosure lc) def.setLevelsDataUnreal("Wrp2", lvls, 2, lc) addTooltipProperty("Teleport Area Height", lc) public class AbilityDefinitionVampiricAuracreep extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.vampiricAura) function setAttackDamageStolen(int level, real value) def.setLvlDataUnreal("Uav1", level, 1, value) function presetAttackDamageStolen(RealLevelClosure lc) def.setLevelsDataUnreal("Uav1", lvls, 1, lc) addTooltipProperty("Attack Damage Stolen", lc) public class AbilityDefinitionVenomSpearsCreep extends AbilityDefinition private bitset stackingTypesSet = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.envenomedWeapons) function setAttackSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi2", level, 2, value) function presetAttackSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi2", lvls, 2, lc) addTooltipProperty("Attack Speed Factor", lc) function setStackingType(int level, int value) def.setLvlDataInt("Poi4", level, 4, value) function presetStackingTypes(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Stacking Type", lc) function presetStackingType(StackingType stackingType, boolean flag) stackingTypesSet = stackingTypesSet.set(stackingType castTo int, flag) presetStackingTypes(lvl -> stackingTypesSet.val) function hasStackingType(StackingType stackingType) returns boolean return stackingTypesSet.get(stackingType castTo int) function setDamageperSecond(int level, real value) def.setLvlDataUnreal("Poi1", level, 1, value) function presetDamageperSecond(RealLevelClosure lc) def.setLevelsDataUnreal("Poi1", lvls, 1, lc) addTooltipProperty("Damage per Second", lc) function setMovementSpeedFactor(int level, real value) def.setLvlDataUnreal("Poi3", level, 3, value) function presetMovementSpeedFactor(RealLevelClosure lc) def.setLevelsDataUnreal("Poi3", lvls, 3, lc) addTooltipProperty("Movement Speed Factor", lc) public class AbilityDefinitionBurrowDetectionFlyers extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.burrowDetectionFlyers) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionBlightDispelSmall extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightDispelSmall) function setCreatesBlight(int level, bool value) def.setLvlDataBoolean("Bli2", level, 2, value) function presetCreatesBlight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Bli2", lvls, 2, lc) addTooltipProperty("Creates Blight", lc) function setExpansionAmount(int level, real value) def.setLvlDataUnreal("Bli1", level, 1, value) function presetExpansionAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Bli1", lvls, 1, lc) addTooltipProperty("Expansion Amount", lc) public class AbilityDefinitionLiquidFire extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.liquidFire) function setAttackSpeedReduction(int level, real value) def.setLvlDataUnreal("liq3", level, 3, value) function presetAttackSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("liq3", lvls, 3, lc) addTooltipProperty("Attack Speed Reduction", lc) function setMovementSpeedReduction(int level, real value) def.setLvlDataUnreal("liq2", level, 2, value) function presetMovementSpeedReduction(RealLevelClosure lc) def.setLevelsDataUnreal("liq2", lvls, 2, lc) addTooltipProperty("Movement Speed Reduction", lc) function setRepairsAllowed(int level, bool value) def.setLvlDataBoolean("liq4", level, 4, value) function presetRepairsAllowed(BooleanLevelClosure lc) def.setLevelsDataBoolean("liq4", lvls, 4, lc) addTooltipProperty("Repairs Allowed", lc) function setExtraDamagePerSecond(int level, real value) def.setLvlDataUnreal("liq1", level, 1, value) function presetExtraDamagePerSecond(RealLevelClosure lc) def.setLevelsDataUnreal("liq1", lvls, 1, lc) addTooltipProperty("Extra Damage Per Second", lc) public class AbilityDefinitionDetectGyrocopter extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.trueSight) function setDetectionType(int level, string value) def.setLvlDataString("Det1", level, 1, value) function presetDetectionType(StringLevelClosure lc) def.setLevelsDataString("Det1", lvls, 1, lc) addTooltipProperty("Detection Type", lc) public class AbilityDefinitionLightningAttack extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.lightningAttack) function setGraphicDuration(int level, real value) def.setLvlDataUnreal("Lit2", level, 2, value) function presetGraphicDuration(RealLevelClosure lc) def.setLevelsDataUnreal("Lit2", lvls, 2, lc) addTooltipProperty("Graphic Duration", lc) function setGraphicDelay(int level, real value) def.setLvlDataUnreal("Lit1", level, 1, value) function presetGraphicDelay(RealLevelClosure lc) def.setLevelsDataUnreal("Lit1", lvls, 1, lc) addTooltipProperty("Graphic Delay", lc) public class AbilityDefinitionBlightDispelLarge extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.blightDispelLarge) function setCreatesBlight(int level, bool value) def.setLvlDataBoolean("Bli2", level, 2, value) function presetCreatesBlight(BooleanLevelClosure lc) def.setLevelsDataBoolean("Bli2", lvls, 2, lc) addTooltipProperty("Creates Blight", lc) function setExpansionAmount(int level, real value) def.setLvlDataUnreal("Bli1", level, 1, value) function presetExpansionAmount(RealLevelClosure lc) def.setLevelsDataUnreal("Bli1", lvls, 1, lc) addTooltipProperty("Expansion Amount", lc) public class AbilityDefinitionChaosCargoLoad extends AbilityDefinition construct(int newAbilityId) super(newAbilityId, AbilityIds.chaosCargoLoad) function setUnitTypeAllowed(int level, string value) def.setLvlDataString("Chl1", level, 0, value) function presetUnitTypeAllowed(StringLevelClosure lc) def.setLevelsDataString("Chl1", lvls, 0, lc) addTooltipProperty("Unit Type Allowed", lc) public class AbilityDefinitionSunderingBlades extends AbilityDefinition private bitset armorTypes = bitset(1) construct(int newAbilityId) super(newAbilityId, AbilityIds.sunderingBlades) function setBonusDamageFlat(int level, real value) def.setLvlDataUnreal("Hsb1", level, 1, value) function presetBonusDamageFlat(RealLevelClosure lc) def.setLevelsDataUnreal("Hsb1", lvls, 1, lc) addTooltipProperty("Bonus Damage Flat", lc) function setBonusDamagePercent(int level, real value) def.setLvlDataUnreal("Hsb2", level, 2, value) function presetBonusDamagePercent(RealLevelClosure lc) def.setLevelsDataUnreal("Hsb2", lvls, 2, lc) addTooltipProperty("Bonus Damage Flat", lc) function setDefenseTypeAffected(int level, int types) def.setLvlDataInt("Hsb3", level, 3, types) function presetDefenseTypeAffected(IntLevelClosure lc) def.setLevelsDataInt("Poi4", lvls, 4, lc) addTooltipProperty("Defense Type Affected", lc) function presetDefenseTypeAffected(ArmorType atype, boolean flag) armorTypes = armorTypes.set(atype castTo int, flag) presetDefenseTypeAffected(lvl -> armorTypes.val) function hasStackingType(StackingType stackingType) returns boolean return armorTypes.get(stackingType castTo int)