-- chunkname: @/mods/game_tooltip/config.lua ITEM_UPGRADE_CRYSTAL = 1 ITEM_ENCHANT_CRYSTAL = 2 ITEM_ALTER_CRYSTAL = 3 ITEM_CLEAN_CRYSTAL = 4 ITEM_FORTUNE_CRYSTAL = 5 ITEM_FAITH_CRYSTAL = 6 COMMON = 1 RARE = 2 EPIC = 3 LEGENDARY = 4 US_CONFIG = { { [ITEM_UPGRADE_CRYSTAL] = 8385, [ITEM_ENCHANT_CRYSTAL] = 8386, [ITEM_ALTER_CRYSTAL] = 8387, [ITEM_CLEAN_CRYSTAL] = 8388, [ITEM_FORTUNE_CRYSTAL] = 8389, [ITEM_FAITH_CRYSTAL] = 8394 }, CRYSTAL_FOSSIL_DROP_LEVEL = 25, REQUIRE_LEVEL = true, ITEM_MIRRORED_CRYSTAL = 8391, CRYSTAL_FOSSIL_DROP_CHANCE = 8, ARMOR_PER_ITEM_LEVEL = 10, ITEM_LEVEL_PER_HITCHANCE = 3, ARMOR_FROM_ITEM_LEVEL = 1, ITEM_LIMITLESS_CRYSTAL = 8392, ITEM_LEVEL_PER_DEFENSE = 15, CRYSTAL_EXTRACTOR = 8390, ITEM_LEVEL_PER_UPGRADE = 4, ARMOR_PER_UPGRADE = 2, ITEM_VOID_CRYSTAL = 8383, MAX_UPGRADE_LEVEL = 9, ATTACK_PER_ITEM_LEVEL = 10, ITEM_LEVEL_PER_ARMOR = 10, HITCHANCE_PER_UPGRADE = 3, DEFENSE_PER_UPGRADE = 2, ITEM_UPGRADE_CATALYST = 8382, EXTRADEFENSE_PER_UPGRADE = 1, UPGRADE_LEVEL_DESTROY = 7, UNIDENTIFIED_DROP_CHANCE = 100, CRYSTAL_FOSSIL = 8384, CRYSTAL_BREAK_CHANCE = 5, HITCHANCE_FROM_ITEM_LEVEL = 1, DEFENSE_PER_ITEM_LEVEL = 10, ITEM_MIND_CRYSTAL = 8393, HITCHANCE_PER_ITEM_LEVEL = 10, IDENTIFY_UPGRADE_LEVEL = false, ATTACK_PER_UPGRADE = 2, ITEM_SCROLL_IDENTIFY = 8381, DEFENSE_FROM_ITEM_LEVEL = 1, MAX_ITEM_LEVEL = 300, ITEM_LEVEL_PER_ATTACK = 6, ATTACK_FROM_ITEM_LEVEL = 1, UNIQUE_CHANCE = 100, UPGRADE_SUCCESS_CHANCE = { 100, 100, 95, 80, 65, 40 }, UPGRADE_DESTROY_CHANCE = { [9] = 5, [8] = 15, [7] = 30 }, RARITY = { [COMMON] = { chance = 10, name = "common", maxBonus = 1 }, [RARE] = { chance = 20, name = "rare", maxBonus = 2 }, [EPIC] = { chance = 30, name = "epic", maxBonus = 3 }, [LEGENDARY] = { chance = 50, name = "legendary", maxBonus = 4 } } } US_ITEM_TYPES = { ALL = 1, WEAPON_ANY = 14, WEAPON_WAND = 8, LEGS = 128, HELMET = 32, RING = 512, BOOTS = 256, WEAPON_MELEE = 2, NECKLACE = 1024, ARMOR = 64, SHIELD = 16, WEAPON_DISTANCE = 4 } US_UNIQUES = { { name = "Flame Spirit", minLevel = 100, chance = 80, attributes = { 1, 4, 12, 30 }, itemType = US_ITEM_TYPES.WEAPON_MELEE + US_ITEM_TYPES.SHIELD }, { name = "Ice Spirit", minLevel = 40, chance = 60, attributes = { 2, 3, 32, 44 }, itemType = US_ITEM_TYPES.WEAPON_WAND + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Terra Spirit", minLevel = 70, chance = 40, attributes = { 1, 2, 3, 34 }, itemType = US_ITEM_TYPES.WEAPON_WAND + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE } } US_TYPES = { TRIGGER = 3, DEFENSIVE = 2, CONDITION = 0, OFFENSIVE = 1 } US_TRIGGERS = { ATTACK = 0, KILL = 2, HIT = 1 } US_ENCHANTMENTS = { { name = "Max HP", VALUES_PER_LEVEL = 3, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_STAT_MAXHITPOINTS, format = function(value) return "Max HP +" .. value end, itemType = US_ITEM_TYPES.HELMET + US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.LEGS + US_ITEM_TYPES.BOOTS }, { name = "Max MP", VALUES_PER_LEVEL = 4, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_STAT_MAXMANAPOINTS, format = function(value) return "Max MP +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Magic Level", VALUES_PER_LEVEL = 0.1, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_STAT_MAGICPOINTS, format = function(value) return "Magic Level +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Melee Skills", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_MELEE, format = function(value) return "Melee Skills +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Fist Fighting", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_FIST, format = function(value) return "Fist Fightning +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Sword Fighting", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_SWORD, format = function(value) return "Sword Fighting +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Axe Fighting", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_AXE, format = function(value) return "Axe Fighting +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Club Fighting", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_CLUB, format = function(value) return "Club Fighting +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Distance Fighting", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_DISTANCE, format = function(value) return "Distance Fighting +" .. value end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Shielding", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.CONDITION, condition = CONDITION_ATTRIBUTES, param = CONDITION_PARAM_SKILL_SHIELD, format = function(value) return "Shielding +" .. value end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Mana Shield", minLevel = 50, combatType = US_TYPES.CONDITION, condition = CONDITION_MANASHIELD, format = function(value) return "Mana Shield" end, itemType = US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Life Steal", VALUES_PER_LEVEL = 0.1, chance = 10, combatType = US_TYPES.OFFENSIVE, format = function(value) return "Heal for " .. value .. "%% of dealt damage" end, itemType = US_ITEM_TYPES.WEAPON_MELEE + US_ITEM_TYPES.WEAPON_DISTANCE }, { name = "Experience", VALUES_PER_LEVEL = 0.35, chance = 30, format = function(value) return "Experience +" .. value .. "%%" end, itemType = US_ITEM_TYPES.BOOTS }, { VALUES_PER_LEVEL = 0.3, name = "Physical Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_PHYSICALDAMAGE, format = function(value) return "Physical Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Energy Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_ENERGYDAMAGE, format = function(value) return "Energy Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Earth Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_EARTHDAMAGE, format = function(value) return "Earth Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Fire Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_FIREDAMAGE, format = function(value) return "Fire Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Ice Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_ICEDAMAGE, format = function(value) return "Ice Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Holy Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_HOLYDAMAGE, format = function(value) return "Holy Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Death Damage", combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_DEATHDAMAGE, format = function(value) return "Death Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.2, name = "Elemental Damage", chance = 10, combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_ENERGYDAMAGE + COMBAT_EARTHDAMAGE + COMBAT_FIREDAMAGE + COMBAT_ICEDAMAGE + COMBAT_HOLYDAMAGE + COMBAT_DEATHDAMAGE, format = function(value) return "Elemental Damage +" .. value .. "%%" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.1, name = "Physical Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_PHYSICALDAMAGE, format = function(value) return "Physical Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Energy Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_ENERGYDAMAGE, format = function(value) return "Energy Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Earth Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_EARTHDAMAGE, format = function(value) return "Earth Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Fire Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_FIREDAMAGE, format = function(value) return "Fire Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Ice Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_ICEDAMAGE, format = function(value) return "Ice Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Holy Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_HOLYDAMAGE, format = function(value) return "Holy Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.15, name = "Death Protection", combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_DEATHDAMAGE, format = function(value) return "Death Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 0.05, name = "Elemental Protection", chance = 10, combatType = US_TYPES.DEFENSIVE, combatDamage = COMBAT_ENERGYDAMAGE + COMBAT_EARTHDAMAGE + COMBAT_FIREDAMAGE + COMBAT_ICEDAMAGE + COMBAT_HOLYDAMAGE + COMBAT_DEATHDAMAGE, format = function(value) return "Elemental Protection +" .. value .. "%%" end, itemType = US_ITEM_TYPES.ARMOR + US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.BOOTS + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Flame Strike on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE) doTargetCombatHealth(attacker:getId(), target, COMBAT_FIREDAMAGE, 1, damage, CONST_ME_FIREATTACK, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Flame Strike on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Flame Strike on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE) doTargetCombatHealth(attacker:getId(), target, COMBAT_FIREDAMAGE, 1, damage, CONST_ME_FIREATTACK, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Flame Strike on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Ice Strike on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLICE) doTargetCombatHealth(attacker:getId(), target, COMBAT_ICEDAMAGE, 1, damage, CONST_ME_ICEATTACK, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Ice Strike on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Ice Strike on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLICE) doTargetCombatHealth(attacker:getId(), target, COMBAT_ICEDAMAGE, 1, damage, CONST_ME_ICEATTACK, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Ice Strike on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Terra Strike on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLEARTH) doTargetCombatHealth(attacker:getId(), target, COMBAT_EARTHDAMAGE, 1, damage, CONST_ME_CARNIPHILA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Terra Strike on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Terra Strike on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLEARTH) doTargetCombatHealth(attacker:getId(), target, COMBAT_EARTHDAMAGE, 1, damage, CONST_ME_CARNIPHILA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Terra Strike on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Death Strike on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_DEATH) doTargetCombatHealth(attacker:getId(), target, COMBAT_DEATHDAMAGE, 1, damage, CONST_ME_MORTAREA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Death Strike on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Death Strike on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_DEATH) doTargetCombatHealth(attacker:getId(), target, COMBAT_DEATHDAMAGE, 1, damage, CONST_ME_MORTAREA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Death Strike on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Divine Missile on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLHOLY) doTargetCombatHealth(attacker:getId(), target, COMBAT_HOLYDAMAGE, 1, damage, CONST_ME_HOLYDAMAGE, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Divine Missile on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Divine Missile on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_SMALLHOLY) doTargetCombatHealth(attacker:getId(), target, COMBAT_HOLYDAMAGE, 1, damage, CONST_ME_HOLYDAMAGE, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Divine Missile on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { VALUES_PER_LEVEL = 2.5, name = "Energy Strike on Attack", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.ATTACK, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_ENERGY) doTargetCombatHealth(attacker:getId(), target, COMBAT_ENERGYDAMAGE, 1, damage, CONST_ME_ENERGYAREA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Energy Strike on Attack dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2.5, name = "Energy Strike on Hit", combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if math.random(100) < 20 then attacker:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_ENERGY) doTargetCombatHealth(attacker:getId(), target, COMBAT_ENERGYDAMAGE, 1, damage, CONST_ME_ENERGYAREA, ORIGIN_CONDITION) end end, format = function(value) return "20%% to cast Energy Strike on Hit dealing 1-" .. value .. " damage" end, itemType = US_ITEM_TYPES.SHIELD + US_ITEM_TYPES.HELMET + US_ITEM_TYPES.LEGS }, { minLevel = 20, name = "Explosion on Kill", VALUES_PER_LEVEL = 0.2, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value, center, target) local damage = math.ceil(target:getMaxHealth() * (value / 100)) exoriEffect(center, CONST_ME_FIREAREA) local specs = Game.getSpectators(center, false, false, 1, 1, 1, 1) if #specs > 0 then for i = 1, #specs do if specs[i]:isMonster() then doTargetCombatHealth(player:getId(), specs[i]:getId(), COMBAT_FIREDAMAGE, 1, damage, CONST_ME_NONE, ORIGIN_CONDITION) end end end end, format = function(value) return "Explosion on Kill dealing " .. value .. "%% Max HP of a killed monster" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { VALUES_PER_LEVEL = 2, name = "Health on Kill", chance = 25, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value, center, target) player:addHealth(value) end, format = function(value) return "Regenerate " .. value .. " Health on Kill" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { VALUES_PER_LEVEL = 3, name = "Mana on Kill", chance = 25, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value, center, target) player:addMana(value) end, format = function(value) return "Regenerate " .. value .. " Mana on Kill" end, itemType = US_ITEM_TYPES.WEAPON_ANY + US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Mana Steal", VALUES_PER_LEVEL = 0.1, chance = 10, combatType = US_TYPES.OFFENSIVE, format = function(value) return "Regenerate Mana for " .. value .. "%% of dealt damage" end, itemType = US_ITEM_TYPES.WEAPON_WAND + US_ITEM_TYPES.WEAPON_DISTANCE }, { name = "Full HP on Kill", VALUES_PER_LEVEL = 0.05, chance = 5, minLevel = 20, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value, center, target) if value > math.random(100) then player:addHealth(player:getMaxHealth()) end end, format = function(value) return value .. "%% to regenerate full HP on Kill" end, itemType = US_ITEM_TYPES.RING }, { name = "Full MP on Kill", VALUES_PER_LEVEL = 0.05, chance = 5, minLevel = 20, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value, center, target) if value > math.random(100) then player:addMana(player:getMaxMana()) end end, format = function(value) return value .. "%% to regenerate full MP on Kill" end, itemType = US_ITEM_TYPES.RING }, { name = "Mass Healing on Attack", VALUES_PER_LEVEL = 0.2, chance = 15, minLevel = 10, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.HIT, execute = function(attacker, target, damage) if damage > math.random(100) then local min = attacker:getLevel() / 5 + attacker:getMagicLevel() * 4.6 + 100 local max = attacker:getLevel() / 5 + attacker:getMagicLevel() * 9.6 + 125 doAreaCombatHealth(target:getId(), COMBAT_HEALING, attacker:getPosition(), 6, min, max, CONST_ME_MAGIC_BLUE) end end, format = function(value) return value .. "%% to cast Mass Healing on Attack" end, itemType = US_ITEM_TYPES.WEAPON_WAND }, { name = "Increased Healing", VALUES_PER_LEVEL = 0.35, minLevel = 25, chance = 20, format = function(value) return value .. "%% more healing from all sources" end, itemType = US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { name = "Additonal Gold", VALUES_PER_LEVEL = 0.5, minLevel = 10, chance = 30, format = function(value) return value .. "%% more gold from loot" end, itemType = US_ITEM_TYPES.BOOTS }, { VALUES_PER_LEVEL = 0.05, name = "Double Damage", minLevel = 80, chance = 5, combatType = US_TYPES.OFFENSIVE, combatDamage = COMBAT_ENERGYDAMAGE + COMBAT_EARTHDAMAGE + COMBAT_FIREDAMAGE + COMBAT_ICEDAMAGE + COMBAT_HOLYDAMAGE + COMBAT_DEATHDAMAGE + COMBAT_PHYSICALDAMAGE, format = function(value) return value .. "%% to deal double damage" end, itemType = US_ITEM_TYPES.WEAPON_ANY }, { name = "Revive on death", VALUES_PER_LEVEL = 0.05, minLevel = 50, chance = 30, format = function(value) return value .. "%% to be revived" end, itemType = US_ITEM_TYPES.BOOTS }, { name = "Damage Buff", VALUES_PER_LEVEL = 0.5, chance = 10, minLevel = 30, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value) if math.random(100) < 20 then local pid = player:getId() local buffId = 1 if not US_BUFFS[pid] then US_BUFFS[pid] = {} end if not US_BUFFS[pid][buffId] then US_BUFFS[pid][buffId] = {} US_BUFFS[pid][buffId].value = value player:sendTextMessage(MESSAGE_INFO_DESCR, "Damage Buff applied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Damage Buff") else stopEvent(US_BUFFS[pid][buffId].event) US_BUFFS[pid][buffId].value = value player:sendTextMessage(MESSAGE_INFO_DESCR, "Damage Buff reapplied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Damage Buff") end end end, format = function(value) return "20%% to get " .. value .. "%% damage buff for 8 sec. on Kill" end, itemType = US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { VALUES_PER_LEVEL = 0.5, buff = true, name = "Max HP Buff", chance = 10, minLevel = 30, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value) if math.random(100) < 20 then local pid = player:getId() local buffId = 2 if not US_BUFFS[pid] then US_BUFFS[pid] = {} end if not US_BUFFS[pid][buffId] then US_BUFFS[pid][buffId] = {} US_BUFFS[pid][buffId].condition = Condition(CONDITION_ATTRIBUTES) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100 + value) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_TICKS, 8000) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_SUBID, 3245) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_BUFF_SPELL, true) player:addCondition(US_BUFFS[pid][buffId].condition) player:sendTextMessage(MESSAGE_INFO_DESCR, "Max HP Buff applied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Max HP Buff") else stopEvent(US_BUFFS[pid][buffId].event) player:sendTextMessage(MESSAGE_INFO_DESCR, "Max HP Buff reapplied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Max HP Buff") player:removeCondition(US_BUFFS[pid][buffId].condition) player:addCondition(US_BUFFS[pid][buffId].condition) end end end, format = function(value) return "20%% to get " .. value .. "%% Max HP buff for 8 sec. on Kill" end, itemType = US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE }, { VALUES_PER_LEVEL = 0.5, buff = true, name = "Max MP Buff", chance = 10, minLevel = 30, combatType = US_TYPES.TRIGGER, triggerType = US_TRIGGERS.KILL, execute = function(player, value) if math.random(100) < 20 then local pid = player:getId() local buffId = 3 if not US_BUFFS[pid] then US_BUFFS[pid] = {} end if not US_BUFFS[pid][buffId] then US_BUFFS[pid][buffId] = {} US_BUFFS[pid][buffId].condition = Condition(CONDITION_ATTRIBUTES) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100 + value) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_TICKS, 8000) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_SUBID, 3246) US_BUFFS[pid][buffId].condition:setParameter(CONDITION_PARAM_BUFF_SPELL, true) player:addCondition(US_BUFFS[pid][buffId].condition) player:sendTextMessage(MESSAGE_INFO_DESCR, "Max MP Buff applied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Max MP Buff") else stopEvent(US_BUFFS[pid][buffId].event) player:sendTextMessage(MESSAGE_INFO_DESCR, "Max MP Buff reapplied for 8 seconds!") US_BUFFS[pid][buffId].event = addEvent(us_RemoveBuff, 8000, pid, buffId, "Max MP Buff") player:removeCondition(US_BUFFS[pid][buffId].condition) player:addCondition(US_BUFFS[pid][buffId].condition) end end end, format = function(value) return "20%% to get " .. value .. "%% Max MP buff for 8 sec. on Kill" end, itemType = US_ITEM_TYPES.RING + US_ITEM_TYPES.NECKLACE } } function exoriEffect(center, effect) for i = -1, 1 do local top = Position(center.x + i, center.y - 1, center.z) local middle = Position(center.x + i, center.y, center.z) local bottom = Position(center.x + i, center.y + 1, center.z) top:sendMagicEffect(effect) middle:sendMagicEffect(effect) bottom:sendMagicEffect(effect) end end