Example #1
0
 // called when the status is first attached to an entity
 public virtual void OnAttachedToEntity()
 {
     //  Show status added  on target
     if (showIcon)
     {
         showEffectIndicator();
     }
     if (effectiveAtOnce)
     {
         bm.AddEvent(this);
     }
 }
Example #2
0
    void MyBattlePhase()
    {
        if (!isBattle)
        {
            while (true)
            {
                // こちらの攻撃
                if (0 < myAttackCount)
                {
                    // 必殺の検証
                    myAttackState = RandomCheck(myDeathblow) ? Enums.BATTLE.DEATH_BLOW : Enums.BATTLE.NORMAL;

                    // 通常攻撃命中判定
                    if (myAttackState != Enums.BATTLE.DEATH_BLOW)
                    {
                        myAttackState = RandomCheck(myAccuracy) ? Enums.BATTLE.NORMAL : Enums.BATTLE.MISS;
                    }

                    // 通常攻撃か必殺が発生したら攻撃イベントとして登録する
                    AttackEvent attackEvent = gameObject.AddComponent <AttackEvent>();
                    attackEvent.phaseManager  = this;
                    attackEvent.myUnitObj     = playerUnitObj;
                    attackEvent.targetUnitObj = enemyUnitObj;
                    attackEvent.myAttackPower = myAttackPower;
                    attackEvent.myAttackState = myAttackState;
                    attackEvent.targetHPText  = textEnemyHP;
                    battleManager.AddEvent(attackEvent);

                    // SEの再生
                    //audioManager.AttackSE();

                    myAttackCount--;
                }

                // 敵の反撃
                if (0 < enemyAttackCount)
                {
                    // 必殺の検証
                    enemyAttackState = RandomCheck(enemyDeathblow) ? Enums.BATTLE.DEATH_BLOW : Enums.BATTLE.NORMAL;

                    // 通常攻撃命中判定
                    if (enemyAttackState != Enums.BATTLE.DEATH_BLOW)
                    {
                        enemyAttackState = RandomCheck(enemyAccuracy) ? Enums.BATTLE.NORMAL : Enums.BATTLE.MISS;
                    }

                    // 通常攻撃か必殺が発生したら攻撃イベントとして登録する
                    AttackEvent attackEvent = gameObject.AddComponent <AttackEvent>();
                    attackEvent.phaseManager  = this;
                    attackEvent.myUnitObj     = enemyUnitObj;
                    attackEvent.targetUnitObj = playerUnitObj;
                    attackEvent.myAttackPower = enemyAttackPower;
                    attackEvent.myAttackState = enemyAttackState;
                    attackEvent.targetHPText  = textMyHP;
                    battleManager.AddEvent(attackEvent);

                    // SEの再生
                    //audioManager.AttackSE();

                    enemyAttackCount--;
                }

                // 戦闘イベント登録終了
                if (myAttackCount <= 0 && enemyAttackCount <= 0)
                {
                    break;
                }
            }

            // 敵をこちらに向かせる
            if (Mathf.Abs(enemyUnitObj.transform.position.x - focusUnitObj.transform.position.x) <= 0f)
            {
                if (enemyUnitObj.transform.position.y < focusUnitObj.transform.position.y)
                {
                    enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.UP);
                }
                else
                {
                    enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.DOWN);
                }
            }
            else if (enemyUnitObj.transform.position.x < focusUnitObj.transform.position.x)
            {
                enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.RIGHT);
            }
            else
            {
                enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.LEFT);
            }

            // バトルの実行
            battleManager.StartEvent();
            isBattle = true;
        }
        else if (!battleManager.isBattle())
        {
            // 攻撃終了処理
            isBattle = false;

            // プレイヤーUnitが生存していれば経験値取得処理を行う
            if (focusUnitObj)
            {
                // 経験値処理が終わるまでフェーズを停止
                phase = Enums.PHASE.STOP;

                // Exp取得処理の開始
                expGaugeController.GaugeUpdate(1000, focusUnitObj.GetComponent <UnitInfo>(), () =>
                {
                    phase = Enums.PHASE.RESULT;
                });
            }
            else
            {
                phase = Enums.PHASE.RESULT;
            }
        }
    }