コード例 #1
0
 public void HurtBattler(float _amount, Battler _target, Element _element = Element.Physical)
 {
     _target.GetComponent <SpriteAnimator>().Play(_target.anims.Hurt);
     _target.HP -= _amount;
     SpawnDamageText(_target.transform.position, _amount.ToString(), Color.white);
     //_target.aura.Add(_element, _amount);
 }
コード例 #2
0
    void Update()
    {
        if (initalized)
        {
            if (life == 0)
            {
                source.GetComponent <SpriteAnimator>().Play(source.anims.getAnimation(userAnimToPlay));
            }

            foreach (BattleEffect i in effects.Where(x => x.Triggered == false))
            {
                if (life >= i.triggerTime)
                {
                    i.Trigger();
                    i.Triggered = true;
                }
            }


            if (Done())
            {
                Destroy(gameObject);
            }
            life += Time.deltaTime;
        }
    }
コード例 #3
0
    public float BattlerDamageOther(Battler _attacker, AttackDamageProperties _skill, Battler _defender)
    {
        float damageDone = 1;

        if (_skill.power > 0)
        {
            //Check Crit & Hit
            if (!CheckHit(_attacker, _skill, _defender))
            {
                SpawnDamageText(_defender.transform.position, "Miss", Color.grey);
                return(0);
            }
            bool crit = CheckCrit(_attacker, _skill, _defender);

            //Damage
            damageDone = Mathf.Floor(Calculator.DamageCalc(_attacker, _skill, _defender, crit));
            if (_defender.defending)
            {
                damageDone = Mathf.Floor(damageDone * 0.25f);
            }
            _defender.GetComponent <SpriteAnimator>().Play(_defender.anims.Hurt, true);
            _defender.HP -= damageDone;
            if (!crit)
            {
                SpawnDamageText(_defender.transform.position, damageDone.ToString(), Color.white);
            }
            else
            {
                SpawnDamageText(_defender.transform.position, "" + (damageDone).ToString(), Color.yellow);
            }
            //_other.aura.Add(_skill.element, damageDone);
        }
        return(damageDone);
    }
コード例 #4
0
    private void NextTurn()
    {
        currentBattlerID = (currentBattlerID + 1) % battlers.Count;
        Battler currentBattler = battlers[currentBattlerID];

        currentBattler.GetComponent <IDecision>().RequestDecision(currentBattlerID);
        // Começa a corrotina de esperar o tempo do turno acabar
    }
コード例 #5
0
 void BattlerDie(Battler _subject)
 {
     _subject.HP      = 0;
     _subject.isAlive = false;
     _subject.GetComponent <SpriteAnimator>().Play(_subject.anims.Dead);
     _subject.turnDelay = 100;
     //_subject.BurnChill = 0;
     //_subject.aura.Zero();
 }
コード例 #6
0
ファイル: SteveBehavior.cs プロジェクト: jrand35/AmazingRPG
 public override IEnumerator StandardAttack(Battler user, Battler target)
 {
     Animator anim = user.GetComponent<Animator>();
     Vector3 startPos = user.gameObject.transform.position;
     anim.SetInteger("State", 1);
     yield return Move.MoveInFrontOfBattler(user, target, startPos, new Vector3(-2f, 0f, 0f), 50);
     anim.SetInteger("State", 2);
     int baseDamage = (user.BattleBehavior.Stats.Attack * 6) - (target.BattleBehavior.Stats.Defense * 3);
     baseDamage = new System.Random().Next((int)(baseDamage * 0.9), (int)(baseDamage * 1.1));
     yield return new WaitForSeconds(0.5f);
     target.BattleBehavior.TakeDamage(user, baseDamage);
     yield return new WaitForSeconds(0.3f);
     anim.SetInteger("State", 1);
     yield return Move.MoveBackFromBattler(user, target, startPos, new Vector3(-2f, 0f, 0f), 50);
     anim.SetInteger("State", 0);
 }
コード例 #7
0
ファイル: SteveBehavior.cs プロジェクト: jrand35/AmazingRPG
        public override IEnumerator Run(Battler user, Battler target, IList<Battler> allCharacters, IList<Battler> allEnemies, BattleController bc)
        {
            Animator anim = user.GetComponent<Animator>();
            anim.SetInteger("State", 3);
            yield return new WaitForSeconds(1.4f);
            int duration = 40;
            Material m = target.GetComponentInChildren<Renderer>().material;
            m.EnableKeyword("_EMISSION");

            SpecialEffectsManager.RestoreParticles(target);
            for (int i = 0; i < duration; i++)
            {
                m.SetColor("_EmissionColor", Color.white * 0.6f * Mathf.Sin((float) i / duration * Mathf.PI));
                yield return 0;
            }
            target.BattleBehavior.RestoreHP(user, 250);
            anim.SetInteger("State", 0);
            Debug.Log(user.BattleBehavior.Name + " restored 250 HP to " + target.BattleBehavior.Name);
        }
コード例 #8
0
ファイル: CainaBehavior.cs プロジェクト: jrand35/AmazingRPG
 public override IEnumerator Run(Battler user, Battler target, IList<Battler> allCharacters, IList<Battler> allEnemies, BattleController bc)
 {
     anim = user.GetComponent<Animator>();
     anim.SetInteger("State", 3);
     yield return new WaitForSeconds(1.4f);
     Camera.main.hdr = true;
     Light light = GameObject.FindGameObjectWithTag("Light").GetComponent<Light>();
     yield return new WaitForSeconds(0.3f);
     yield return Dim();
     for (int i = 0; i < starCount; i++)
     {
         CreateStar(user, target);
         yield return new WaitForSeconds(0.1f);
     }
     yield return new WaitForSeconds(3f);
     int baseDamage = (int)((user.BattleBehavior.Stats.SpAttack * 6 * Power) - (target.BattleBehavior.Stats.SpDefense * 3));
     baseDamage = new System.Random().Next((int)(baseDamage * 0.9), (int)(baseDamage * 1.1));
     target.BattleBehavior.TakeDamage(user, baseDamage);
     yield return Brighten();
     Camera.main.hdr = false;
     anim.SetInteger("State", 0);
 }
コード例 #9
0
 /// <summary>
 /// Play skill animation then wait for delay.
 /// </summary>
 /// <param name="battler"></param>
 public virtual IEnumerator Execute(Battler battler, Transform target)
 {
     battler.GetComponent <Animator>().CrossFade(Animator.StringToHash(AnimationToPlay), TransitionDuration);
     yield return(new WaitForSeconds(Delay));
 }