public void ActivateForEach(Activation act, TacticsMove user, CharacterListVariable list) { if (act == activation) { ForEachBoost(list, user); } }
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); } }
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)); } } }
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); } }
protected virtual void ForEachBoost(CharacterListVariable list, TacticsMove user) { }
/// <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(); }
public void ForEachSkills(Activation activation, CharacterListVariable list) { stats.ForEachSkills(activation, this, list); }