Blink
Mage_Blink in SkillsTeleports 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
}