Beispiel #1
0
 protected bool heal_hit_effects(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, bool reverse, bool magic)
 {
     // Finished with hit
     if (Timer > 3)
     {
         return(true);
     }
     else if (Timer == 0)
     {
         bool life_drain = Combat_Data.Data[Attack_Id].Key.Result.delayed_life_steal;
         attack_dmg(battler_1_sprite.battler, battler_2_sprite.battler, Combat_Data.Data[Attack_Id].Key);
         if (magic)
         {
             battler_1_sprite.end_spell(Hit, Crit, Distance);
         }
         else
         {
             hit_freeze(battler_1_sprite);
         }
         // Pan back on last hit
         if (Distance > 1 && is_last_attack())
         {
             if (magic)
             {
                 Magic_Brighten = true;
             }
             add_battle_action(Battle_Actions.Pan_Hit_Over);
         }
         else
         {
             if (magic)
             {
                 Magic_Brighten = true;
             }
             if (Distance > 1 && is_next_attacker_same())
             {
                 add_battle_action(Battle_Actions.Wait_For_Pan);
             }
             add_battle_action(Battle_Actions.Hit_Over);
         }
     }
     // Pan back
     else if (!magic && Timer == 3)
     {
         if (Distance > 1)
         {
             pan(reverse ? -1 : 1);
         }
     }
     return(false);
 }
Beispiel #2
0
 protected bool dance_hit_effects(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, bool reverse, bool magic)
 {
     // Finished with hit
     if (Timer > 3)
     {
         return(true);
     }
     else if (Timer == 0)
     {
         if (Global.game_state.dance_item == -1 || Constants.Combat.RING_REFRESH)
         {
             battler_2_sprite.end_grey_out();
         }
         if (magic)
         {
             battler_1_sprite.end_spell(Hit, Crit, Distance);
         }
         // Pan back on last hit
         if (Distance > 1 && is_last_attack())
         {
             if (magic)
             {
                 Magic_Brighten = true;
             }
             add_battle_action(Battle_Actions.Pan_Hit_Over);
         }
         else
         {
             if (magic)
             {
                 Magic_Brighten = true;
             }
             if (Distance > 1 && is_next_attacker_same())
             {
                 add_battle_action(Battle_Actions.Wait_For_Pan);
             }
             add_battle_action(Battle_Actions.Hit_Over);
         }
     }
     // Pan back
     else if (!magic && Timer == 3)
     {
         if (Distance > 1)
         {
             pan(reverse ? -1 : 1);
         }
     }
     return(false);
 }
        private void update_battler_animation()
        {
            switch (Battler_Action)
            {
            // Starts attack
            case Class_Reel_Battler_Actions.Start_Attack:
                switch (Battler_Timer)
                {
                // Wait for attack
                case 0:
                    if (Battler.duration <= 1)
                    {
                        Battler.hit_freeze(false, class_data.Distance);
                        if (Unit.spell_animation())
                        {
                            Data_Weapon weapon = Unit.actor.weapon;
                            if (weapon.has_anima_start())
                            {
                                Battler.anima_start(1);
                                Battler_Timer = 1;
                            }
                            else
                            {
                                Battler.attack_spell(true, false, class_data.Distance);
                                Battler_Timer = 2;
                            }
                        }
                        else
                        {
                            Battler_Timer = 2;
                        }
                    }
                    break;

                // Wait for anima startup
                case 1:
                    if (Battler.anima_ready)
                    {
                        Battler.attack_spell(true, false, class_data.Distance);
                        Battler_Timer = 2;
                    }
                    break;

                // Wait for hit
                case 2:
                    if (Unit.spell_animation() ? Battler.spell_ready : Battler.duration <= 1)
                    {
                        if (Unit.spell_animation())
                        {
                            Battler.end_spell(true, false, 1);
                        }
                        Battler_Timer  = 0;
                        Battler_Action = Class_Reel_Battler_Actions.End_Attack;
                    }
                    break;
                }
                break;

            // Ends attack
            case Class_Reel_Battler_Actions.End_Attack:
                if (Battler_Timer >= class_data.Wait_Time[0] + 30)
                {
                    if (Battler.spell_ready)
                    {
                        Battler.return_anim(false, class_data.Distance);
                        Battler_Timer  = 0;
                        Battler_Action = Class_Reel_Battler_Actions.Wait_For_Return;
                    }
                }
                else
                {
                    Battler_Timer++;
                }
                break;

            // Waits for return
            case Class_Reel_Battler_Actions.Wait_For_Return:
                if (Battler.duration <= 4)
                {
                    Battler_Action = Class_Reel_Battler_Actions.Next_Attack;
                }
                break;

            // Next attack
            case Class_Reel_Battler_Actions.Next_Attack:
                if (Battler_Timer >= class_data.Wait_Time[1])
                {
                    Battler_Timer  = 0;
                    Battler_Action = Class_Reel_Battler_Actions.Idle;
                }
                else
                {
                    Battler_Timer++;
                }
                break;
            }
        }