public override void Activate(GamePawn user, Tile target) { Debug.Log(user.gameObject.name + " used " + skillName + " on " + target.GetPawnOnTile().transform.name); Direction dir = Direction.Up; if (user.transform.position.x - target.transform.position.x > .1f) { dir = Direction.Left; } else if (user.transform.position.x - target.transform.position.x < .1f) { dir = Direction.Right; } else if (user.transform.position.z - target.transform.position.z > .1f) { dir = Direction.Down; } else if (user.transform.position.z - target.transform.position.z < .1f) { dir = Direction.Up; } SkillManager.instance.Hook(user, target.GetPawnOnTile(), dir); if (user is EnemieBehaviour) { EnemieBehaviour enemy = (EnemieBehaviour)user; enemy.actionPoints -= cost; } else if (user is PlayerCharacter) { PlayerCharacter player = (PlayerCharacter)user; } user.EndAction(); }
public void Hook(GamePawn user, GamePawn target, Direction dir) { Tile hookTile = target.GetTile().GetNeighbours(dir); Sequence s = DOTween.Sequence(); GameObject.Instantiate(anchor, user.transform.position + Vector3.up, Quaternion.identity); s.Append(anchor.transform.DOMove(target.transform.position + Vector3.up, .3f)) .SetEase(Ease.Linear); //Play vertical Anim s.Append(target.transform.DOMove(hookTile.transform.position + new Vector3(0, hookTile.transform.localScale.y, 0), 0.3f) .SetEase(Ease.Linear) .OnComplete(() => { target.GetTile().SetPawnOnTile(null); target.SetTile(hookTile); })); s.OnComplete(() => { user.EndAction(); }); }
public override void Activate(GamePawn user, Tile target) { if (user is EnemieBehaviour) { EnemieBehaviour enemy = (EnemieBehaviour)user; FXPlayer.Instance.PlayFX("BuffEnemy", enemy.transform.position + Vector3.up); enemy.Buff(); } user.EndAction(); }
public override void Activate(GamePawn user, Tile target) { target.GetPawnOnTile().ReceiveDamage(damage); if (user is EnemieBehaviour) { EnemieBehaviour enemy = (EnemieBehaviour)user; enemy.actionPoints -= cost; enemy.anim.SetTrigger("Melee"); SoundManager.Instance.PlaySound(SoundManager.Instance.wish); } user.EndAction(); }
public virtual void Activate(GamePawn user, Tile target) { //Debug.Log(user.gameObject.name + " used " + skillName + " on " + target.GetPawnOnTile().transform.name); if (user is EnemieBehaviour) { EnemieBehaviour enemy = (EnemieBehaviour)user; enemy.actionPoints -= cost; } //UI_Manager.instance.characterInfoPanel.SetCharacterInfoWithCost(UI_SelectedCharacterInfo.Stats.PA, cost); user.EndAction(); }
public override void SetDestination(Tile destination, bool showHighlight = false, bool movedByPlayer = false) { //print("Destination : " + destination.transform.position); List <Tile> path = Pathfinder_AStar.instance.SearchForShortestPath(associatedTile, destination); if (path.Count != 0) { int highlightPathID = -1; if (showHighlight) { Highlight_Manager.instance.HideAllHighlight(); highlightPathID = Highlight_Manager.instance.ShowHighlight(path, HighlightMode.MoveHighlight); } Sequence s = DOTween.Sequence(); foreach (Tile tile in path) { s.Append(transform.DOMove(tile.transform.position + new Vector3(0, tile.transform.localScale.y, 0), 0.3f) .SetEase(Ease.Linear) .OnComplete(() => { associatedTile.SetPawnOnTile(null); associatedTile = tile; associatedTile.SetPawnOnTile(this); if (tile.highlighted) { associatedTile.rend.material = associatedTile.defaultMaterial; associatedTile.highlighted = false; } })); } s.OnComplete(() => { if (highlightPathID > -1) { Highlight_Manager.instance.HideHighlight(highlightPathID); } anim.SetBool("Rolling", false); _kicker.EndAction(); _kicker = null; EndAction(); }); } }
public override void OnKicked(GamePawn user, int dmg, Direction dir) { ReceiveDamage(dmg); Tile newTile = GetTile().GetNeighbours(dir); Sequence s = DOTween.Sequence(); //Play vertical Anim s.Append(transform.DOMove(newTile.transform.position + new Vector3(0, newTile.transform.localScale.y, 0), 0.3f) .SetEase(Ease.Linear) .OnComplete(() => { GetTile().SetPawnOnTile(null); SetTile(newTile); })); s.OnComplete(() => { user.EndAction(); }); }
void Update() { if (_thrown) { _throwTimeTracker += Time.deltaTime; self.position = new Vector3(Mathf.Lerp(_thrower.transform.position.x, _target.position.x, _throwTimeTracker / travelTime), Mathf.Lerp(_thrower.transform.position.y + 1, _target.position.y + 1, _throwTimeTracker / travelTime) + trajectory.Evaluate(_throwTimeTracker / travelTime), Mathf.Lerp(_thrower.transform.position.z, _target.position.z, _throwTimeTracker / travelTime)); if (TileBelow() != _associatedTile) { _associatedTile = TileBelow(); _associatedTile.SetProjectileOnTile(this); } if (_throwTimeTracker > travelTime) { FXPlayer.Instance.PlayFX("BottleBreak", transform.position); _thrown = false; _throwTimeTracker = 0; if (_target.TryGetComponent <PlayerCharacter>(out PlayerCharacter player)) { player.ReceiveDamage(damage); } else if (_target.TryGetComponent <Barrel>(out Barrel barrel)) { barrel.Explode(); } else if (_target.TryGetComponent <Projectiles>(out Projectiles projectile)) { projectile.OnShot(); } _thrower.EndAction(); Destroy(gameObject); } } }
public void Jump(GamePawn user, GamePawn target, Direction dir) { currentActiveSkill = null; Tile jumpTile = target.GetTile().GetNeighbours(dir); Highlight_Manager.instance.HideHighlight(user.GetSkillPreviewID()); Sequence s = DOTween.Sequence(); PlayerManager.instance.playerCharacter.anim.SetTrigger("Jump"); s.Append(user.transform.DOMove(jumpTile.transform.position + new Vector3(0, jumpTile.transform.localScale.y, 0), 0.3f) .SetEase(Ease.Linear) .OnComplete(() => { user.GetTile().SetPawnOnTile(null); user.SetTile(jumpTile); })); s.OnComplete(() => { user.EndAction(); }); }