Ejemplo n.º 1
0
 public override void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag)
 {
     if (flag == Update_Case.AFTER_INTERRUPT && !changed && PlayerDialogueInfo.main.getInfo("doppel-fr-transform") == "true")
     {
         allies[position].setStats(EnemyDatabase.main.getData(nextForm), true);
         allies[position].changeForm();
         allies[position].resetAttack();
     }
 }
Ejemplo n.º 2
0
 //Updates the state of this AI module based on field data
 public abstract void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag);
Ejemplo n.º 3
0
    public override void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag)
    {
        Debug.Log("updating doppel AI state: attack in prog = " + allies[position].attack_in_progress + " " + flag.ToString());
        if (form <= 3)
        {
            if (flag == Update_Case.AFTER_CAST)
            {
                numAttacks++;
                if (numAttacks > 3)
                {
                    state = AI_State.CHARGE_MAX;
                }
                else
                {
                    state = AI_State.NORMAL;
                }
            }
            else if (flag == Update_Case.UNSTUN)
            {
                if (form == 1)
                {
                    state = AI_State.NORMAL;
                    allies[position].setStats(EnemyDatabase.main.getData("Doppelganger (YELLOW)"), true);
                    allies[position].stagger_time = 2f;
                    allies[position].changeForm();
                    allies[position].resetAttack();
                }
                else if (form == 2)
                {
                    state = AI_State.NORMAL;
                    allies[position].setStats(EnemyDatabase.main.getData("Doppelganger (RED)"), true);
                    allies[position].stagger_time = 2f;
                    allies[position].changeForm();
                    allies[position].resetAttack();
                }
                else if (form == 3)
                {
                    state = AI_State.ATTACK_SPECIAL;
                    allies[position].setStats(EnemyDatabase.main.getData("Doppelganger (???)"), true);
                    allies[position].stagger_time = 2f;
                    changeToRandomColor(allies[position]);
                    allies[position].resetAttack();
                }
                ++form;
            }
        }
        else if (form == 4)
        {
            if (flag == Update_Case.UNSTUN)
            {
                state = AI_State.NORMAL;
                allies[position].setStats(EnemyDatabase.main.getData("Doppelganger (GRAY)"), true);
                allies[position].stagger_time = 10f;
                allies[position].resetAttack();
                allies[position].changeForm();
                ++form;
            }
            else if (flag == Update_Case.AFTER_CAST)
            {
                changeToRandomColor(allies[position]);
            }
            else if (flag == Update_Case.WAS_HIT)// was hit
            {
                if (allies[position].attack_in_progress)
                {
                    return;
                }
                changeToRandomColor(allies[position]);
                switch (color)
                {
                case "RED":
                    allies[position].getCurrSpell().element = "agni";
                    break;

                case "BLUE":
                    allies[position].getCurrSpell().element = "cryo";
                    break;

                case "YELLOW":
                    allies[position].getCurrSpell().element = "veld";
                    break;

                default:
                    throw new System.Exception("Doppleganger is invalid color");
                }
            }
        }
        else if (form == 5)
        {
            //if(flag == Update_Case.UNSTUN)
            //{
            //    allies[position].Curr_hp = 0;
            //}
        }
    }
Ejemplo n.º 4
0
 public override void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag)
 {
     baseAI.updateState(allies, position, player_arr, flag);
     if (!hasChanged && flag == Update_Case.WAS_HIT)
     {
         allies[position].setStats(EnemyDatabase.main.getData(nextForm), resetHealthandStagger);
         if (resetAttack)
         {
             allies[position].resetAttack();
         }
         allies[position].changeForm();
         hasChanged = true;
     }
 }
Ejemplo n.º 5
0
    public override void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag)
    {
        Enemy self    = allies[position];
        int   curr_hp = Mathf.CeilToInt(((float)self.Curr_hp / self.Stats.max_hp) * 100);

        if (curr_hp < criticalThresh)
        {
            state = AI_State.HEALTH_CRITICAL;
        }
        else if (curr_hp < lowThresh)
        {
            state = AI_State.HEALTH_LOW;
        }
        else
        {
            state = AI_State.NORMAL;
        }
    }
Ejemplo n.º 6
0
 public override void updateState(Enemy[] allies, int position, ICaster[] player_arr, Update_Case flag)
 {
     return;
 }