public override void Update(int deltaTime) { base.Update(deltaTime); miningTimer += deltaTime; if (miningTimer > owner.attackInterval) { miningTimer = 0; if (owner.target != null && owner.target.Alive()) { owner.target.Hurt(owner.damage, owner.hurtType, false, owner); } else { owner.ChangeState(DemolisherState.IDLE, owner.fsmIdle); } } }
// Update is called once per frame public override void Update(int deltaTime) { base.Update(deltaTime); if (owner.target != null && owner.target.Alive()) { owner.FindOpponent(); owner.WaypointHandler(); owner.pathAgent.Move(owner.speed * deltaTime); // After move, Check the crystal's position is in the attack area. long distance = FixVector3.SqrDistance(owner.target.position, owner.position); long attackDistance = (long)owner.attackArea + (long)owner.target.modelRadius + (long)owner.modelRadius; if (distance < attackDistance) { owner.Fight(owner.target); } } else { owner.ChangeState(DemolisherState.IDLE, owner.fsmIdle); } }