Пример #1
0
        IEnumerator CheckAttackingDeltStatus(PlayerBattleState player, bool isPlayer)
        {
            DeltemonClass  attacker = player.DeltInBattle;
            BattleAnimator animator = BattleManager.Inst.Animator;

            if (!AttackingStatusEffects.Contains(attacker.curStatus))
            {
                yield break;
            }

            StatusAffectData statusData = GetAttackingStatusEffect(attacker.curStatus);

            BattleManager.AddToBattleQueue(
                message: attacker.nickname + statusData.StatusActiveText,
                enumerator: animator.DeltAnimation(statusData.AnimationAndSoundKey, isPlayer)
                );

            if (attacker.curStatus != statusType.Drunk)
            {
                // If Delt comes down
                if (Random.Range(0, 100) <= statusData.ChanceToRemove)
                {
                    BattleManager.AddToBattleQueue(attacker.nickname + statusData.StatusRemovalText);
                    BattleManager.Inst.StatusChange(isPlayer, statusType.None);
                }
                else
                {
                    BattleManager.AddToBattleQueue(attacker.nickname + statusData.StatusContinueText);
                }
            }
            else
            {
                // If Delt hurts himself
                if (Random.Range(0, 100) <= 30)
                {
                    attacker.health = attacker.health - (attacker.GPA * 0.05f);
                    BattleManager.AddToBattleQueue(enumerator: animator.DeltAnimation("Hurt", isPlayer));
                    BattleManager.AddToBattleQueue(attacker.nickname + " hurt itself in it's drunkeness!");

                    // REFACTOR_TODO: Find proper location for this
                    //yield return BattleManager.Inst.StartCoroutine(BattleManager.Inst.Animator.AnimateHurtDelt(isPlayer));

                    // Player DA's // REFACTOR_TODO: This should be in the hurt function
                    if (attacker.health <= 0)
                    {
                        attacker.health = 0;
                        BattleManager.AddToBattleQueue(attacker.nickname + " has DA'd for being too Drunk!");
                        BattleManager.Inst.StatusChange(isPlayer, statusType.DA);
                    }
                }
                // Attacker relieved from Drunk status
                else if (Random.Range(0, 100) <= 27)
                {
                    BattleManager.AddToBattleQueue(attacker.nickname + " has sobered up!");
                    BattleManager.Inst.StatusChange(isPlayer, statusType.None);
                }
            }
        }
Пример #2
0
        void CheckPostMoveStatusEffects(PlayerBattleState player, bool isPlayer)
        {
            DeltemonClass delt = player.DeltInBattle;

            // Opp gets hurt by negative status if not DA'd
            if (PostMoveStatusEffects.Contains(delt.curStatus))
            {
                // REFACTOR_TODO: Hurt function
                delt.health -= (delt.GPA * 0.125f);
                if (delt.health < 0)
                {
                    delt.health = 0;
                }

                StatusAffectData statusEffect = GetPostMoveStatusEffect(delt.curStatus);

                // If opp Delt is Roasted
                if (delt.curStatus == statusType.Roasted)
                {
                    BattleManager.AddToBattleQueue(enumerator: BattleManager.Inst.Animator.DeltAnimation(statusEffect.AnimationAndSoundKey, isPlayer));
                    BattleManager.AddToBattleQueue(delt.nickname + statusEffect.StatusActiveText);
                }

                // REFACTOR_TODO: Hurt function
                // Animate hurting opp Delt
                //yield return BattleManager.Inst.StartCoroutine(BattleManager.Inst.hurtDelt(false));

                // REFACTOR_TODO: Hurt function
                // If opp Delt passed out
                if (delt.health == 0)
                {
                    BattleManager.AddToBattleQueue(delt.nickname + " has DA'd!");
                    BattleManager.Inst.StatusChange(false, statusType.DA);

                    // Opponent loses/selects another Delt
                    //checkLoss(false);
                    //if (playerWon)
                    //{
                    //    yield break;
                    //}
                }
            }
        }