Пример #1
0
 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));
     }
 }
Пример #2
0
 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));
         }
     }
 }
Пример #3
0
 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));
         }
     }
 }
Пример #4
0
 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));
     }
 }
Пример #5
0
    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));
                }
            }
        }
    }