Touch of Heal
Lvl: 5 Heal Skill Delay: 1 sec Range: 9

Restores ( ( (BaseLv+M.Atk/100) ×25) ) HP to master and self. When the targets are undead monsters, the skill deals 100% Healing /2) Holy M.Dmg

Lvl: 4 Heal Skill Delay: 1 sec Range: 9
• Restores ( ( (BaseLv+M.Atk/100) ×20) ) HP to master and self. When the targets are undead monsters, the skill deals 100% Healing /2) Holy M.Dmg
Lvl: 3 Heal Skill Delay: 1 sec Range: 9
• Restores ( ( (BaseLv+M.Atk/100) ×15) ) HP to master and self. When the targets are undead monsters, the skill deals 100% Healing /2) Holy M.Dmg
Lvl: 2 Heal Skill Delay: 1 sec Range: 9
• Restores ( ( (BaseLv+M.Atk/100) ×10) ) HP to master and self. When the targets are undead monsters, the skill deals 100% Healing /2) Holy M.Dmg
Lvl: 1 Heal Skill Delay: 1 sec Range: 9
• Restores ( ( (BaseLv+M.Atk/100) ×5) ) HP to master and self. When the targets are undead monsters, the skill deals 100% Healing /2) Holy M.Dmg

Aesir

• Touch of Heal -Red Homunculus - Lif's [Touch of Heal] Healing effect +15%

Formula

function CommonFun.calcDamage_6104(srcUser, targetUser, params, damageParam, logger)
  local BaseLv = srcUser.BaseLv
  local HealEncPer = srcUser:GetProperty("HealEncPer")
  local MAtk = srcUser:GetProperty("MAtk")
  local enemy = srcUser:IsEnemy(targetUser)
  local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
  local Master = srcUser:GetMasterUser()
  local RuneDamage = 1
  if Master ~= nil then
    local Num1 = Master:GetRunePoint(130050_AESIR_HOMUNCULUS_LIF_S_TOUCH_OF_HEAL_HEALING_EFFECT_15)
    RuneDamage = 1 + 0.15 * Num1
  end
  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
  local targetDefElement = targetUser:GetProperty("DefAttr")
  local BeHealEncPer2 = targetUser:GetProperty("BeHealEncPer")
  local race2 = targetUser.race
  if srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) and srcUser:HasBuffID(49325_RACIAL_ANCIENT_RELICS_CD_:MAX_STACK_0) then
  elseif srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) then
    race2 = 2
  end
  local DefAttr2 = targetUser:GetProperty("DefAttr")
  local AttrEffect = targetUser:GetProperty("AttrEffect2")
  local bits = CommonFun.getBits(AttrEffect)
  local damChangePer = damageParam.damChangePer
  local damChangePer1 = damageParam.damChangePer1
  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  local A = ((math.floor(BaseLv + MAtk / 100) * damChangePer + 100) * (1 + HealEncPer) * (1 + BeHealEncPer2) + damChangePer1) * -1 * RuneDamage
  local HealtoDam = targetUser:GetBuffLevel(129100_CURE_BARRIER_:MAX_STACK_0)
  local DamRatio = 1
  if targetUser:HasBuffID(129100_CURE_BARRIER_:MAX_STACK_0) then
    DamRatio = -0.1 * HealtoDam
  end
  local HealReduce = targetUser:GetBuffLevel(136500_10783_:MAX_STACK_0)
  if targetUser:HasBuffID(136500_10783_:MAX_STACK_0) then
    DamRatio = 1 - (0.2 + 0.03 * HealReduce)
  end
  if enemy then
    if DefAttr2 == 9 then
      return A / 2 * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 * -1 * (1 + MDamIncrease)
    else
      return 0, 0
    end
  elseif DefAttr2 == 9 or bits[CommonFun.AttrEffect.PoisinDamNoUse] == 1 then
    return -1
  else
    return A * DamRatio
  end
end

Formula

{
  "id": 436005,
  "Cost": 1,
  "Desc": [
    {
      "id": 436000,
      "params": [
        25,
        100
      ]
    }
  ],
  "Icon": "skill_436001",
  "Camps": "Friend|Enemy",
  "Level": 5,
  "Logic": "SkillNone",
  "Damage": [
    {
      "type": 6104,
      "damChangePer": 25,
      "elementparam": 6,
      "damChangePer1": 0
    }
  ],
  "DescId": "##171086",
  "NameZh": "##169854",
  "DamTime": {
    "type": 1,
    "value": 1
  },
  "DelayCD": 1,
  "Fire_EP": 3,
  "SE_cast": "Common/Magic_cast",
  "AttackAct": [
    "use_magic"
  ],
  "Attack_EP": 0,
  "SkillType": "Heal",
  "Target_EP": 0,
  "Logic_Param": {
    "include_self": 1,
    "select_target": 1
  },
  "Launch_Range": 9,
  "AutoCondition": [
    {
      "type": 5,
      "priority": 1,
      "no_target": 1,
      "teamvalue": 70
    },
    {
      "type": 3,
      "value": 70,
      "priority": 1,
      "no_target": 1
    }
  ],
  "NoTargetAutoCast": 1
}