public virtual void GiveThemBuff(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer) { Debug.Log(TargetPosition + " Buffed up!!!"); double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition); BuffEffect(3, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer)); WaittoBuff = 3; HasInteracted = false; OnActionDeselect(); GameManager.Instance.OnTurnBegin += BuffCountdown; }
public virtual void RipCrushThem(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer) { Debug.Log(TargetPosition + " We're Crushed, man!!"); double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition); RipEffect(3, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer)); WaittoRip = 4; HasInteracted = false; OnActionDeselect(); GameManager.Instance.OnTurnBegin += RipCrushCountdown; }
public virtual void GiveThemHealth(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer) { Debug.Log(TargetPosition + " Were healded up!!!"); double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition); if (dist > 1) { HealEffect(0.5f, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer)); } else { HealEffect(1.0f, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer)); } WaittoHeal = 2; GameManager.Instance.OnTurnBegin += this.HealCountdown; HasInteracted = false; OnActionDeselect(); }
public virtual void SpellAttack(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer) { Debug.Log(TargetPosition + " Big hit!!!"); if (GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer) != null) { Unit TargetUnit = GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer); if (!TargetUnit.IsKing || (TargetUnit.IsKing && TargetUnit.UnitOwner.WallIsDestroyed)) { int thisAttackDamage = 1; for (int rolls = 0; rolls < level; rolls++) { System.Random random = new System.Random(); int randomNumber = random.Next(1, 7); if (randomNumber >= SpellDamage) { thisAttackDamage += 1; print("Attack dealt extra damage!"); } else if (randomNumber <= TargetUnit.Defense) { thisAttackDamage -= 1; print("Defender prevented 1 damage!"); } } if (thisAttackDamage > 0) { TargetUnit.Health -= thisAttackDamage; } if (TargetUnit.OnHit != null) { TargetUnit.OnHit(TargetPosition, InitiatorPosition, TargetLayer, InitiatorLayer); } } else { print("Deflected!"); } if (TargetUnit.IsMobile) { double h = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition); int a = (int)(TargetPosition.x - InitiatorPosition.x); int o = (int)(TargetPosition.y - InitiatorPosition.y); double sin = o / h * 1f; double cos = a / h * 1f; h += 1; int nO = (int)Mathf.Round((float)(sin * h)); Debug.Log(nO); int nA = (int)Mathf.Round((float)(cos * h)); Debug.Log(nA); Vector2 nextPosition = new Vector2(nA + InitiatorPosition.x, nO + InitiatorPosition.y); Debug.Log(nextPosition); if (nextPosition.x < GridCS.GRIDSIZEX && nextPosition.x >= 0 && nextPosition.y < GridCS.GRIDSIZEZ && nextPosition.y >= 0 && GridCS.Instance.GetTile(nextPosition, TargetLayer) != null && GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer) != null) { GridCS.Instance.PlaceUnitInGrid(TargetUnit, TargetPosition, TargetLayer, nextPosition, TargetLayer); Move MoveToSpace = new Move(TargetPosition, nextPosition, TargetLayer, TargetLayer); TargetUnit.Position = nextPosition; MoveToSpace.Resolve(); } } } HasInteracted = false; OnActionDeselect(); }