FareverDB

Hive Assault

Spear_Goo_Combo in Skills

Strikes forward, dealing 62% Strength + 62% Intellect Physical to an enemy and generates a Dart, stacking up to 3 times. At 3 stacks, your next Hive Assault releases the darts, dealing randomly 70% Intellect Magic or ::dmg3::.

id
Spear_Goo_Combo
type
4
flags
0
nature
1
script
var firedThisStep = false; function gainStinger(count) { for (i in 0...count) { var prevStacks = owner.getStatusCount(Skill.Spear_Goo_Combo_Status); var s = owner.addStatus(Skill.Spear_Goo_Combo_Status); if (s.stacks > prevStacks) { playStep(Steps.Projectile); } } } function onInflictDamageEval(hit) { if (rank >= 2 && hit.skillId == skill.kind) { hit.dmgMult += hit.critChance; } } function onInflictDamage(dmg) { if (firedThisStep) { return; } if (dmg.stepId == Steps.Area && dmg.isFirstHit && !hasStatusMaxStacked(owner, Skill.Spear_Goo_Combo_Status)) { if (rank >= 3 && dmg.critical) { gainStinger(2); } else { gainStinger(1); } } } function onStatusEnd(s, elapsed) { if (elapsed && s.kind == Skill.Spear_Goo_Combo_Status) { destroyProjectiles(); } } function tryRelease(target) { firedThisStep = false; if (hasStatusMaxStacked(owner, Skill.Spear_Goo_Combo_Status)) { firedThisStep = true; owner.tryConsumeStatus(Skill.Spear_Goo_Combo_Status); skill.fireProjectiles(target, null, 0.3); } } function onStep(s) { if (s.kind == Steps.Area && s.curCtx.aimTarget != null) tryRelease(s.curCtx.aimTarget); } function onProjectileCreated(proj) { hoverProjectile(proj, 3); } function onProjectileHit(hit) { if (hit.projectile != null) { if (checkProba(0.5)) { playStep(Steps.PhysicalDamage, hit.target); } else { playStep(Steps.MagicDamage, hit.target); } } }
status
2
duration
1.1
Raw data
{
  "id": "Spear_Goo_Combo",
  "gfx": {
    "x": 0,
    "y": 0,
    "file": "UI/icons/atlas_weapon_Spear_96PX.png",
    "size": 48,
    "width": 2,
    "height": 2
  },
  "anim": {
    "ref": "AttackCombo",
    "blend": 0.1,
    "startFrame": 3
  },
  "type": 4,
  "vars": {},
  "flags": 0,
  "props": {
    "hit": {
      "shake": 5,
      "camShake": 10
    }
  },
  "steps": [
    {
      "on": 0,
      "type": 9,
      "props": {},
      "range": 6,
      "duration": 0.6
    },
    {
      "on": 0,
      "type": 8,
      "delay": 0.1,
      "props": {
        "move": {
          "direction": [
            0
          ]
        }
      },
      "range": 0.5,
      "duration": 0.1
    },
    {
      "on": 0,
      "type": 14,
      "props": {
        "rotation": {
          "limiter": 360
        }
      },
      "duration": 1.05
    },
    {
      "on": 0,
      "type": 8,
      "delay": 0.47,
      "props": {
        "move": {
          "direction": [
            0
          ],
          "dashSmoothing": 0
        }
      },
      "range": 2,
      "duration": 0.35
    },
    {
      "on": 0,
      "type": 8,
      "delay": 0.82,
      "props": {
        "move": {
          "direction": [
            0
          ],
          "dashSmoothing": 1
        }
      },
      "range": 4,
      "duration": 0.23
    },
    {
      "id": "Area",
      "on": 0,
      "type": 0,
      "delay": 0.9,
      "props": {
        "area": {
          "shape": [
            2,
            60
          ]
        }
      },
      "range": 8,
      "effects": [
        {
          "flags": 0,
          "effect": 0,
          "baseVal": 0,
          "scaling": [
            {
              "atb": "Strength",
              "ratio": 0.62
            },
            {
              "atb": "Intellect",
              "ratio": 0.62
            }
          ],
          "affinity": "Physical"
        }
      ],
      "visuals": {
        "fxs": [
          {
            "set": "Honey_Burst_Cone",
            "props": {},
            "space": 1
          }
        ]
      }
    },
    {
      "id": "Projectile",
      "on": 13,
      "type": 7,
      "props": {
        "projectile": {
          "base": "MissileHoming",
          "fxSet": "Projectile_Honey_Stinger",
          "scale": 0.2,
          "generation": {
            "count": 1,
            "shape": [
              0,
              1,
              45,
              0
            ],
            "duration": 0.2,
            "shapeRot": {
              "yaw": 0,
              "roll": 0,
              "pitch": 90
            },
            "stepLinked": true,
            "directionBias": 0.5
          }
        }
      }
    },
    {
      "id": "MagicDamage",
      "on": 13,
      "type": 6,
      "props": {},
      "effects": [
        {
          "flags": 0,
          "effect": 0,
          "scaling": [
            {
              "atb": "Intellect",
              "ratio": 0.7
            }
          ],
          "affinity": "Magic"
        }
      ]
    },
    {
      "id": "ProjectileHit",
      "on": 2,
      "type": 6,
      "props": {}
    },
    {
      "id": "PhysicalDamage",
      "on": 13,
      "type": 6,
      "props": {},
      "effects": [
        {
          "flags": 0,
          "effect": 0,
          "scaling": [
            {
              "atb": "Strength",
              "ratio": 0
            }
          ],
          "affinity": "Physical"
        }
      ]
    }
  ],
  "texts": {
    "desc": "Strikes forward, dealing ::dmg:: to an enemy and generates a ::ref_name::, stacking up to ::ref_stacks:: times.\n\nAt ::ref_stacks:: stacks, your next ::name:: releases the darts, dealing randomly ::dmg2:: or ::dmg3::.",
    "name": "Hive Assault",
    "refs": {
      "ref": "Spear_Goo_Combo_Status"
    },
    "rankDescs": [
      {
        "desc": "Damage increased by an amount equal to your  [CritChance].",
        "rank": 2,
        "flags": 0
      },
      {
        "desc": "Generates another ::ref_name:: if this critically strikes.",
        "rank": 3,
        "flags": 0
      }
    ]
  },
  "nature": 1,
  "script": "var firedThisStep = false;\nfunction gainStinger(count) {\n\tfor (i in 0...count) {\n\t\tvar prevStacks = owner.getStatusCount(Skill.Spear_Goo_Combo_Status);\n\t\tvar s = owner.addStatus(Skill.Spear_Goo_Combo_Status);\n\t\tif (s.stacks > prevStacks) {\n\t\t\tplayStep(Steps.Projectile);\n\t\t}\n\t}\n}\n\nfunction onInflictDamageEval(hit) {\n\tif (rank >= 2 && hit.skillId == skill.kind) {\n\t\thit.dmgMult += hit.critChance;\n\t}\n}\n\nfunction onInflictDamage(dmg) {\n\tif (firedThisStep) { return; }\n\tif (dmg.stepId == Steps.Area && dmg.isFirstHit && !hasStatusMaxStacked(owner, Skill.Spear_Goo_Combo_Status)) {\n\t\tif (rank >= 3 && dmg.critical) {\n\t\t\tgainStinger(2);\n\t\t} else {\n\t\t\tgainStinger(1);\n\t\t}\n\t}\n}\n\nfunction onStatusEnd(s, elapsed) {\n\tif (elapsed && s.kind == Skill.Spear_Goo_Combo_Status) {\n\t\tdestroyProjectiles();\n\t}\n}\n\nfunction tryRelease(target) {\n\tfiredThisStep = false;\n\tif (hasStatusMaxStacked(owner, Skill.Spear_Goo_Combo_Status)) {\n\t\tfiredThisStep = true;\n\t\towner.tryConsumeStatus(Skill.Spear_Goo_Combo_Status);\n\t\tskill.fireProjectiles(target, null, 0.3);\n\t}\n}\n\nfunction onStep(s) {\n\tif (s.kind == Steps.Area && s.curCtx.aimTarget != null)\n\t\ttryRelease(s.curCtx.aimTarget);\n}\n\nfunction onProjectileCreated(proj) {\n\thoverProjectile(proj, 3);\n}\n\n\nfunction onProjectileHit(hit) {\n\tif (hit.projectile != null) {\n\t\tif (checkProba(0.5)) {\n\t\t\tplayStep(Steps.PhysicalDamage, hit.target);\n\t\t} else {\n\t\t\tplayStep(Steps.MagicDamage, hit.target);\n\t\t}\n\t}\n}",
  "status": 2,
  "mastery": [],
  "duration": 1.1
}