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); }
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; } }