FareverDB

Blink

Mage_Blink in Skills

Teleports a short distance.

id
Mage_Blink
type
9
flags
16670
nature
3
script
var returnPosition:h3d.col.Point = null; var canReblink:Bool = false; function onStart(ctx) { if (hasMastery(Mastery.Mage_Blink_M3) ) { addStatus(owner, Skill.Mage_Blink_Mastery3); } } function canBlinkBack() : Bool { return haveReblinkStatus(); } function haveReblinkStatus() { return owner.getStatusCount(Skill.Mage_Blink_Mastery2_Position) > 0; } function removeSkillStatus(s) { var status = owner.getStatus(s); owner.tryRemoveStatus(status); } function onStep(step) { if (step.kind == Steps.Trigger) { if (canBlinkBack() && canReblink) { removeSkillStatus(Skill.Mage_Blink_Mastery2_Position); canReblink = false; } } if (hasMastery(Mastery.Mage_Blink_M2) ) { if (step.kind == Steps.Start) { if (!haveReblinkStatus()) { addStatusDuration(owner, Skill.Mage_Blink_Mastery2_Position, skill.vars.dur1); } else { canReblink = true; } } } } function onClientUpdate(dt) { if (returnPosition != null) { owner.layer.debug.clientsDebugCross(returnPosition, 0xffff00, 0.1); setVFXPosition(returnPosition, Skill.Mage_Blink_Mastery2_Position); } } function onClientStep(step) { if (step.kind == Steps.Trigger) { if (canBlinkBack() && canReblink) { localPlayStep(Steps.TeleportBack, null, returnPosition); canReblink = false; } else { localPlayStep(Steps.Teleport); } } if (step.kind == Steps.Start) { if (!haveReblinkStatus()) { returnPosition = skill.ownerUnit.position.clone(); } else { canReblink = true; } } } function checkForceRecast() : Bool { return canBlinkBack(); } function shouldHighlightSkill() : Bool{ return canBlinkBack(); }
status
0
cooldown
15
duration
0.3
Raw data
{
  "id": "Mage_Blink",
  "gfx": {
    "x": 1,
    "y": 0,
    "file": "UI/icons/atlas_class_Mage_96PX.png",
    "size": 96
  },
  "anim": {
    "ref": "Blink",
    "blend": 0,
    "startFrame": 1
  },
  "type": 9,
  "vars": {
    "dur1": 3,
    "var1": 3
  },
  "flags": 16670,
  "props": {
    "aimStyle": 2,
    "interruptStyle": 0
  },
  "steps": [
    {
      "id": "Start",
      "on": 0,
      "type": 11,
      "props": {},
      "visuals": {
        "fxs": [
          {
            "set": "Spark_Blink_Disappear_Fast",
            "flags": 64,
            "props": {},
            "space": 1
          }
        ]
      }
    },
    {
      "id": "Trigger",
      "on": 0,
      "type": 0,
      "delay": 0,
      "props": {}
    },
    {
      "on": 0,
      "type": 8,
      "props": {
        "move": {
          "dashSmoothing": 4
        },
        "rotation": {
          "limiter": 0
        }
      },
      "range": 5,
      "duration": 0.3
    },
    {
      "id": "Teleport",
      "on": 13,
      "type": 17,
      "delay": 0,
      "props": {
        "position": {
          "flags": 1,
          "origin": 0,
          "directionalOffset": {
            "x": 15,
            "y": 0,
            "z": 0
          }
        },
        "teleport": {
          "checkGround": true
        }
      }
    },
    {
      "id": "TeleportBack",
      "on": 13,
      "type": 17,
      "props": {
        "position": {
          "flags": 0,
          "origin": 4
        }
      }
    },
    {
      "on": 0,
      "type": 11,
      "delay": 0,
      "props": {},
      "visuals": {
        "fxs": [
          {
            "set": "Spark_Blink_Appear",
            "flags": 0,
            "props": {
              "offset": {
                "x": 0,
                "y": 0,
                "z": 0,
                "height": 0.5
              }
            },
            "scale": 0.9,
            "space": 0
          }
        ]
      }
    }
  ],
  "texts": {
    "desc": "Teleports a short distance.",
    "name": "Blink",
    "refs": {
      "ref": "Mage_Blink_Mastery3"
    }
  },
  "nature": 3,
  "script": "var returnPosition:h3d.col.Point = null;\nvar canReblink:Bool = false;\n\nfunction onStart(ctx) {\n\tif (hasMastery(Mastery.Mage_Blink_M3) ) {\n\t\taddStatus(owner, Skill.Mage_Blink_Mastery3);\n\t}\n}\n\nfunction canBlinkBack() : Bool {\n\treturn haveReblinkStatus();\n}\n\nfunction haveReblinkStatus() {\n\treturn owner.getStatusCount(Skill.Mage_Blink_Mastery2_Position) > 0;\n}\n\n\nfunction removeSkillStatus(s) {\n\tvar status = owner.getStatus(s);\n\towner.tryRemoveStatus(status);\n}\n\nfunction onStep(step) {\n\tif (step.kind == Steps.Trigger) {\n\t\tif (canBlinkBack() && canReblink) {\n\t\t\tremoveSkillStatus(Skill.Mage_Blink_Mastery2_Position);\n\t\t\tcanReblink = false;\n\t\t}\n\t}\n\tif (hasMastery(Mastery.Mage_Blink_M2) ) {\n\t\tif (step.kind == Steps.Start) {\n\t\t\tif (!haveReblinkStatus()) {\n\t\t\t\taddStatusDuration(owner, Skill.Mage_Blink_Mastery2_Position, skill.vars.dur1);\n\t\t\t} else {\n\t\t\t\tcanReblink = true;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nfunction onClientUpdate(dt) {\n\tif (returnPosition != null) {\n\t\towner.layer.debug.clientsDebugCross(returnPosition, 0xffff00, 0.1);\n\t\tsetVFXPosition(returnPosition, Skill.Mage_Blink_Mastery2_Position);\n\t}\n}\n\nfunction onClientStep(step) {\n\tif (step.kind == Steps.Trigger) {\n\t\tif (canBlinkBack() && canReblink) {\n\t\t\tlocalPlayStep(Steps.TeleportBack, null, returnPosition);\n\t\t\tcanReblink = false;\n\t\t} else {\n\t\t\tlocalPlayStep(Steps.Teleport);\n\t\t}\n\t}\n\tif (step.kind == Steps.Start) {\n\t\tif (!haveReblinkStatus()) {\n\t\t\treturnPosition = skill.ownerUnit.position.clone();\n\n\t\t} else {\n\t\t\tcanReblink = true;\n\t\t}\n\t}\n\n}\n\nfunction checkForceRecast() : Bool {\n\treturn canBlinkBack();\n}\n\n\nfunction shouldHighlightSkill() : Bool{\n\treturn canBlinkBack();\n}",
  "status": 0,
  "mastery": [
    {
      "id": "Mage_Blink_M1",
      "gfx": {
        "x": 0,
        "y": 0,
        "file": "UI/Portraits/Items/Masteries/Mage_Blink/Mage_Blink_M1.png",
        "size": 256
      },
      "text": {
        "desc": "::name:: has ::charges:: charges.",
        "name": "Echo Step"
      },
      " vars": {},
      "props": {
        "charges": 2
      }
    },
    {
      "id": "Mage_Blink_M2",
      "gfx": {
        "x": 0,
        "y": 0,
        "file": "UI/Portraits/Items/Masteries/Mage_Blink/Mage_Blink_M2.png",
        "size": 256
      },
      "text": {
        "desc": "You can teleport back within ::dur1:: after you use ::name::.",
        "name": "Timewalking"
      }
    },
    {
      "id": "Mage_Blink_M3",
      "gfx": {
        "x": 0,
        "y": 0,
        "file": "UI/Portraits/Items/Masteries/Mage_Blink/Mage_Blink_M3.png",
        "size": 256
      },
      "text": {
        "desc": "After using ::name::, your next [WeaponSkill] deals ::ref1_damage%:: increased direct damage.",
        "name": "Phase Strike"
      }
    }
  ],
  "cooldown": 15,
  "duration": 0.3
}