public override void User_OnCreatureMovementFinished(BJCreatureObject creatureObject) { base.User_OnCreatureMovementFinished(creatureObject); if (creatureObject.CurrentSkill != this) // whoops :( { return; } moveCounter++; if (moveCounter == 1) { CurrentUser.Creature.ArmorPierce += Damage; CurrentUser.DealDamage(CurrentUser.Creature.BaseDamage, 1.0f, CurrentMainTarget); for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } CurrentUser.Creature.ArmorPierce -= Damage; CurrentUser.MoveToPoint(CurrentUser.InitialPosition); } if (moveCounter == 2) { StartCoroutine(FinishSkill(0.1f)); } }
void Update() { if (shouldMoveProjectile) { float step = speed * Time.deltaTime; Projectile.transform.position = Vector2.MoveTowards(Projectile.transform.position, CurrentMainTarget.transform.position, step); Projectile.transform.position = new Vector3(Projectile.transform.position.x, Projectile.transform.position.y, initialZ); if (Vector2.Distance(Projectile.transform.position, CurrentMainTarget.transform.position) < 0.001f) { shouldMoveProjectile = false; Destroy(Projectile); CurrentUser.DealDamage(Damage, 1.0f, CurrentMainTarget); for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } BJGameController.Instance.ReformQueue(null); StartCoroutine(FinishSkill(0.1f)); } } }
void Update() { if (shouldMoveProjectile) { float step = speed * Time.deltaTime; Projectile.transform.position = Vector2.MoveTowards(Projectile.transform.position, CurrentMainTarget.transform.position, step); Projectile.transform.position = new Vector3(Projectile.transform.position.x, Projectile.transform.position.y, initialZ); if (Vector2.Distance(Projectile.transform.position, CurrentMainTarget.transform.position) < 0.001f) { shouldMoveProjectile = false; Destroy(Projectile); CurrentUser.DealDamage((int)(CurrentUser.Creature.BaseDamage / 2), 1.0f, CurrentMainTarget); for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } float xCoord = (CurrentUser.Creature.Allegiance == Allegiance.Player) ? 0.5f : -0.5f; CurrentUser.MoveToPoint(CurrentMainTarget.transform.position - new Vector3(xCoord, 0.0f, 0.0f)); } } }
public override void User_OnCreatureMovementFinished(BJCreatureObject creatureObject) { base.User_OnCreatureMovementFinished(creatureObject); if (creatureObject.CurrentSkill != this) // whoops :( { return; } if (shouldHit) { moveCounter++; } if (moveCounter < HitsAmount) { float xCoord = (CurrentUser.Creature.Allegiance == Allegiance.Player) ? 0.5f : -0.5f; if (shouldHit) { CurrentUser.DealDamage((int)(CurrentUser.Creature.BaseDamage * DamageMultiplier), 1.0f, CurrentMainTarget); for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } CurrentUser.MoveToPoint(CurrentMainTarget.transform.position - new Vector3(xCoord, 0.0f, 0.0f)); shouldHit = false; } else { CurrentUser.MoveToPoint(CurrentMainTarget.transform.position - new Vector3(xCoord * 2, 0.0f, 0.0f)); shouldHit = true; } } if (moveCounter == HitsAmount) { CurrentUser.DealDamage((int)(CurrentUser.Creature.BaseDamage * DamageMultiplier), 1.0f, CurrentMainTarget); for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } CurrentUser.MoveToPoint(CurrentUser.InitialPosition); } if (moveCounter > HitsAmount) { StartCoroutine(FinishSkill(0.1f)); } }
void Update() { if (hitCounter == 1) { hitCounter++; if (CurrentSecondaryTargets.Count > 0) { CurrentMainTarget = CurrentSecondaryTargets [0]; shouldMoveProjectile = true; } else { StartCoroutine(FinishSkill(0.1f)); } } if (shouldMoveProjectile) { float step = speed * Time.deltaTime; Projectile.transform.position = Vector2.MoveTowards(Projectile.transform.position, CurrentMainTarget.transform.position, step); Projectile.transform.position = new Vector3(Projectile.transform.position.x, Projectile.transform.position.y, initialZ); if (Vector2.Distance(Projectile.transform.position, CurrentMainTarget.transform.position) < 0.001f) { shouldMoveProjectile = false; hitCounter++; if (hitCounter == 1) { CurrentUser.DealDamage((int)CurrentUser.Creature.BaseDamage, 1.0f, CurrentMainTarget); } for (int i = 0; i < Effects.Count; i++) { if (Random.Range(0.0f, 0.99f) < EffectChances [i]) { Effects [i].Applier = CurrentUser; CurrentMainTarget.ApplyEffect(Effects [i], true); } } if (hitCounter >= 2) { CurrentUser.DealDamage((int)(CurrentUser.Creature.BaseDamage / 2), 1.0f, CurrentMainTarget); Destroy(Projectile); StartCoroutine(FinishSkill(0.1f)); } } } }