Home · skill · Mage_Talent_ConduitLifebolt_Conduit

Launches a lifebolt healing the nearest wounded ally for 25% Intellect.

Activates when you consume Spark above the gauge threshold.

Properties

status
WIP
type
MageConduit
nature
Passive
steps
on=13props={"projectile":{"base":"MissileHoming","activationDelay":0.4,"appearDelay":0.3,"variant":1,"hitFilter":2,"fxSet":"Projectile_Spark_Heal"}}id=Projectiletype=7on=2props={}type=6effects=[{"effect":1,"scaling":[{"ratio":0.25,"atb":"Intellect"}],"flags":0}]
Raw data
{
  "status": "WIP",
  "gfx": {
    "file": "UI/icons/Mage_talent.png",
    "size": 48,
    "x": 16,
    "y": 2,
    "width": 2,
    "height": 2
  },
  "id": "Mage_Talent_ConduitLifebolt_Conduit",
  "type": "MageConduit",
  "nature": "Passive",
  "texts": {
    "name": "Conduit: Lifebolt",
    "desc": "Launches a lifebolt healing the nearest wounded ally for ::heal::.\n\nActivates when you consume [Spark] above the gauge threshold."
  },
  "anim": {},
  "steps": [
    {
      "on": 13,
      "props": {
        "projectile": {
          "base": "MissileHoming",
          "activationDelay": 0.4,
          "appearDelay": 0.3,
          "variant": 1,
          "hitFilter": 2,
          "fxSet": "Projectile_Spark_Heal"
        }
      },
      "id": "Projectile",
      "type": 7
    },
    {
      "on": 2,
      "props": {},
      "type": 6,
      "effects": [
        {
          "effect": 1,
          "scaling": [
            {
              "ratio": 0.25,
              "atb": "Intellect"
            }
          ],
          "flags": 0
        }
      ]
    }
  ],
  "flags": [],
  "mastery": [],
  "props": {},
  "vars": {
    "range": 30
  },
  "script": "function onStartConduit() {\n\tvar instanceIndex = getSkillInstanceIndex();\n\tif(instanceIndex < 0) return;\n\n    var fanRadius = 2.5;\n    var fanAmplitude = 240;\n    var shotDelay = 0.1;\n\n\tvar targets = getAllyUnitsWithinRange(owner, vars.range);\n\tsortByDistance(targets);\n\n\tvar target = null;\n\tfor (t in targets) {\n\t\tif (t != owner && t.health < t.maxHealth) {\n\t\t\ttarget = t;\n\t\t\tbreak;\n\t\t}\n\t}\n    var count = getSkillInstanceCount();\n    if (target != null) {\n        var projStep = getStepById(Steps.Projectile);\n        var startPos = projStep.getProjectileStart();\n\n        var interProgress = 1 / (count+1);\n\t\tvar pos = startPos;\n\t\tif (count > 1) {\n\t\t\tfor (i in 0...instanceIndex + 1) {\n\t\t\t\tpos = p3DAdd(startPos, getFanFacingPos((i+1) * interProgress, fanAmplitude, fanRadius, p2DTo3D( p2DSub(target.pos2D, owner.pos2D)) ) );\n\t\t\t}\n\t\t}\n\t\twait(instanceIndex * shotDelay, function() {\n\t\t\tprojStep.generateProjectile(target, pos);\n\t\t});\n    }\n}"
}