protected override void UpdateAction(float elapse) { if (base.variables == null || base.variables.IsInterrupted()) { base.Finish(); return; } this.startTimer -= elapse; if (this.startTimer < 0f) { if (this.step == LokiAction.AnimStep.StepStartAnim) { if (this.explodeStartPrefab != null) { Transform instance = PoolMgr.SpawnParticleSystem(this.explodeStartPrefab.transform, base.variables.skillCaster.transform.position, base.variables.skillCaster.transform.rotation, 1f); PoolMgr.spawnPool.Despawn(instance, this.explodeStartLifeTime); } PlayAnimationAction.PlayAnimation(base.variables, this.startAnim); this.startTimer += this.endAnimTime; this.step = LokiAction.AnimStep.StepEndAnim; } else if (this.step == LokiAction.AnimStep.StepEndAnim) { if (base.variables.skillTarget != null) { base.variables.skillCaster.transform.LookAt(base.variables.skillTarget.transform.position); base.variables.skillCaster.transform.position = base.variables.skillTarget.transform.position + Vector3.Normalize(base.variables.skillCaster.transform.position - base.variables.skillTarget.transform.position) * (base.variables.skillTarget.GetBoundsRadius() + base.variables.skillCaster.GetBoundsRadius() + this.overlayBound); } PlayAnimationAction.PlayAnimation(base.variables, this.endAnim); this.startTimer += this.delayDamage; this.step = LokiAction.AnimStep.StepDelayDamage; } else if (this.step == LokiAction.AnimStep.StepDelayDamage) { if (this.explodePrefab != null) { Transform instance2 = PoolMgr.SpawnParticleSystem(this.explodePrefab.transform, base.variables.skillCaster.transform.position, base.variables.skillCaster.transform.rotation, 1f); PoolMgr.spawnPool.Despawn(instance2, this.explodeLifeTime); } this.CastSkill(); this.startTimer += this.delayUnlock; this.step = LokiAction.AnimStep.StepDelayLock; } else if (this.step == LokiAction.AnimStep.StepDelayLock) { base.variables.skillCaster.OnLockingStop(base.variables.skillInfo); this.step = LokiAction.AnimStep.StepMAX; } else { this.startTimer = 3.40282347E+38f; base.Finish(); } } }
protected override void DoAction() { this.startTimer = this.startAnimTime; this.step = LokiAction.AnimStep.StepStartAnim; base.variables.skillCaster.OnLockingStart(true, true); }