Example #1
0
 public void ActivateForEach(Activation act, TacticsMove user, CharacterListVariable list)
 {
     if (act == activation)
     {
         ForEachBoost(list, user);
     }
 }
Example #2
0
    private MapTile FindNearestTarget(CharacterListVariable list)
    {
        TacticsMove closest  = null;
        int         distance = 1000;

        for (int i = 0; i < list.values.Count; i++)
        {
            if (list.values[i] == this || !list.values[i].IsAlive())
            {
                continue;
            }
            int tempDist = MapCreator.DistanceTo(this, list.values[i]);
            if (tempDist < distance)
            {
                distance = tempDist;
                closest  = list.values[i];
            }
        }

        if (closest != null)
        {
            Debug.Log("Closest is at " + closest.posx + " , " + closest.posy);
        }

        return((closest != null) ? mapCreator.GetTile(closest.posx, closest.posy) : null);
    }
 public void ForEachSkills(SkillActivation activation, TacticsMove user, CharacterListVariable list)
 {
     for (int i = 0; i < skills.Length; i++)
     {
         if (!skills[i] || skills[i].activationType != activation)
         {
             continue;
         }
         skills[i].ForEachBoost(list, user);
     }
 }
Example #4
0
 public override void ForEachBoost(CharacterListVariable list, TacticsMove user)
 {
     if (includeSelf)
     {
         user.TakeHeals((int)(user.stats.hp * percent));
     }
     for (int i = 0; i < list.values.Count; i++)
     {
         if (BattleMap.DistanceTo(list.values[i], user) <= range && list.values[i].IsInjured())
         {
             list.values[i].TakeHeals((int)(list.values[i].stats.hp * percent * 0.01f));
         }
     }
 }
Example #5
0
 protected override void ForEachBoost(CharacterListVariable list, TacticsMove user)
 {
     for (int i = 0; i < list.values.Count; i++)
     {
         if (list.values[i] == user && !useOnSelf)
         {
             continue;
         }
         int distance = MapCreator.DistanceTo(user, list.values[i]);
         if (distance <= range)
         {
             list.values[i].ReceiveBuff(boost, true, true);
         }
     }
 }
 public void ForEachSkills(Activation activation, TacticsMove user, CharacterListVariable list)
 {
     if (skillALevel >= 0)
     {
         _stats.skillsA[skillALevel].ActivateForEach(activation, user, list);
     }
     if (skillBLevel >= 0)
     {
         _stats.skillsB[skillBLevel].ActivateForEach(activation, user, list);
     }
     if (skillCLevel >= 0)
     {
         _stats.skillsC[skillCLevel].ActivateForEach(activation, user, list);
     }
 }
Example #7
0
 protected virtual void ForEachBoost(CharacterListVariable list, TacticsMove user)
 {
 }
Example #8
0
    /// <summary>
    /// Takes each enemy that is alive and runs their turn.
    /// </summary>
    /// <returns></returns>
    private IEnumerator RunNPCTurn(CharacterListVariable list, float startDelay)
    {
        isRunning = true;
        yield return(new WaitForSeconds(startDelay * currentGameSpeed.value));

        battleWeaponIndex.value = 0;
        currentPage.value       = 0;

        yield return(new WaitForSeconds(2f * currentGameSpeed.value));

        for (int i = 0; i < list.Count; i++)
        {
            if (!list.values[i].IsAlive() || list.values[i].hasEscaped)
            {
                continue;
            }

            // Select the next enemy and show its movement
            //Debug.Log(list.values[i].gameObject.name + " turn");
            selectCharacter.value = list.values[i];
            selectTile.value      = selectCharacter.value.currentTile;
            tactics = (NPCMove)list.values[i];
            // enemy.FindAllMoveTiles(false);
            cursorX.value = tactics.posx;
            cursorY.value = tactics.posy;
            cursorMovedEvent.Invoke();

            // Calculate the tile to move towards and wait for the character to move there if any
            MapTile moveTile = tactics.CalculateMovement();
            if (moveTile == null)
            {
                tactics.EndMovement();
                waitForNextAction = false;
            }
            else
            {
                tactics.ShowMove(moveTile);
                waitForNextAction = true;
            }

            if (waitForNextAction)
            {
                yield return(new WaitForSeconds(1.5f * currentGameSpeed.value));

                tactics.StartMove();
            }
            while (waitForNextAction)
            {
                yield return(null);
            }

            // Calculate which character to attack/support and waits for the battle scene to finish
            // Debug.Log("Attack time");
            bool res = waitForNextAction = tactics.CalculateAttacksHeals();
            while (waitForNextAction)
            {
                yield return(null);
            }

            if (res)
            {
                yield return(new WaitForSeconds(1f * currentGameSpeed.value));
            }
            // Finish the turn
            // Debug.Log("End turn");
            tactics.End();
            cursorX.value = tactics.posx;
            cursorY.value = tactics.posy;
            cursorMovedEvent.Invoke();
        }

        yield return(new WaitForSeconds(3f * currentGameSpeed.value));

        isRunning = false;
        nextStateEvent.Invoke();
    }
Example #9
0
 public void ForEachSkills(Activation activation, CharacterListVariable list)
 {
     stats.ForEachSkills(activation, this, list);
 }