protected override void hit_flash(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, int time) { if (Dmg_Dealt) { base.hit_flash(battler_1_sprite, battler_2_sprite, time); } }
protected override void determine_hit(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite) { Dmg = 0; Dmg_Dealt = false; Hit = true; Crit = false; }
protected void refresh_palette(string filename) { if (Global.battlerPaletteData.ContainsKey(filename) || Global.battlerPaletteData.ContainsKey(filename.Split('-')[0])) { Palette_Used = true; Battler_Sprite.palette_data(filename, -1, -1, "").CopyTo(Palette, 0); } }
protected void update_spell_flash(Battler_Sprite battler_sprite) { if (White_Flash_Time <= 0) { White_Screen.visible = false; if (battler_sprite.flash) { White_Screen.visible = true; } } }
protected void create_battler() { var battlerData = new BattlerSpriteData(Unit); //@Debug: could probably roll this without a unit Battler = new Battler_Sprite(battlerData, true, class_data.Distance); Battler.loc = new Vector2(256, 176); Battler.offset.Y = 120; Battler.visible = true; Battler.initialize_animation(); Battler.reset_pose(); Battler.start_battle(); Battler.stereoscopic = Config.BATTLE_BATTLERS_DEPTH; }
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); }
private void null_sprites_for_skip() { Battler_1_Sprite = null; Battler_2_Sprite = null; Platform = null; HUD = null; Background = null; Black_Backing = null; Hit_Spark = null; HitNumbers.Clear(); White_Screen = null; Miss_Spark = null; NoDamage_Spark = null; }
protected override bool hit_effects(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, bool reverse, bool magic) { switch (((Staff_Data)Combat_Data).mode) { case Staff_Modes.Heal: return(heal_hit_effects(battler_1_sprite, battler_2_sprite, reverse, magic)); case Staff_Modes.Status_Inflict: return(status_inflict_hit_effects(battler_1_sprite, battler_2_sprite, reverse, magic)); default: return(base.hit_effects(battler_1_sprite, battler_2_sprite, reverse, magic)); } }
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 RefreshBattler() { ChangingSprite = false; Name.visible = true; NameBg.visible = true; int promotionClassId = this.PromotionChoice; var battlerData = new BattlerSpriteData(this.Unit, promotionClassId); Battler = new Battler_Sprite(battlerData, true, 1); Battler.loc = new Vector2(BATTLER_X, 176); Battler.offset.Y = 120; Battler.visible = true; Battler.initialize_animation(); Battler.reset_pose(); Battler.start_battle(); Battler.stereoscopic = Config.BATTLE_BATTLERS_DEPTH; }
private void change_phase(Class_Reel_Phases phase) { Timer = 0; Action = 0; switch (phase) { case Class_Reel_Phases.Animation: White_Screen.opacity = 0; if (Battler == null) { create_battler(); } Burst = null; Title_Back = null; Letters.Clear(); Class_Banner.opacity = 0; Class_Banner.visible = false; break; case Class_Reel_Phases.Class_Name: Battler = null; Battler_Action = Class_Reel_Battler_Actions.Idle; Battler_Timer = 0; Message = null; Black_Screen.visible = true; Black_Bar1.visible = false; Black_Bar2.visible = false; Black_Bar_Timer = -1; if (Phase == Class_Reel_Phases.Force_Close) { increment_index(); Timer = 10; } break; case Class_Reel_Phases.Closing: case Class_Reel_Phases.Force_Close: Action = 0; break; } Phase = phase; }
protected override void update_phase_1() { base.update_phase_1(); switch (Segment) { case 0: Battler_1_Sprite.class_change_start(); darken(); Segment = 1; break; case 1: if (Battler_1_Sprite.duration <= 1 && Battler_1_Sprite.spell_effect_duration <= 1) { OldClass = Battler_1.actor.class_id; OldLevel = Battler_1.actor.level; Battler_1.actor.promotion_class_id = Global.game_system.Class_Change_To; var battler1Data = new BattlerSpriteData(Battler_1); Battler_1_Sprite = new Battler_Sprite(battler1Data, !Reverse, Distance, Reverse); Battler_1_Sprite.start_battle(); Battler_1_Sprite.loc = Battler_1_Loc = new Vector2((!Reverse ? 184 + (Distance == 1 ? 0 : 56) : 136 - (Distance == 1 ? 0 : 56)) + (Distance > 2 ? (Reverse ? -270 : 270) : 0), 176); Battler_1_Sprite.reset_pose(); Battler_1_Sprite.update_animation_position(); Battler_1_Sprite.visible = true; Battler_1_Sprite.class_change_end(); Battler_1_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH; Segment = 2; } break; case 2: if (Battler_1_Sprite.duration >= 163) { brighten(); } if (Battler_1_Sprite.duration <= 1 && Battler_1_Sprite.spell_effect_duration <= 1) { Segment = 3; } break; case 3: switch (Timer) { case 104: Phase = 2; Segment = 0; Timer = 0; break; default: Timer++; break; } break; } // Updates screen flash Battler_1_Sprite.update_flash(); update_spell_flash(Battler_1_Sprite); }
protected void initialize_battle_sprites() { //@Debug: should use lerp for battler scale? var battler1Data = new BattlerSpriteData(Battler_1); Battler_1_Sprite = new Battler_Sprite(battler1Data, Reverse, Distance, Reverse); if (Battler_2 != null) { var battler2Data = new BattlerSpriteData(Battler_2); Battler_2_Sprite = new Battler_Sprite(battler2Data, !Reverse, Distance, Reverse); } // Initial battle sprite positions to match map sprites: battler 1 Battler_1_Sprite.loc = Battler_1_Map_Loc = (Battler_1_Sprite.battler.loc * Constants.Map.TILE_SIZE - Global.game_map.display_loc) + new Vector2(1, 2) * (Constants.Map.TILE_SIZE / 2); // Target battle sprite locations: battler 1 Battler_1_Loc = new Vector2((Reverse ? 184 + (Distance == 1 ? 0 : 24) : 136 - (Distance == 1 ? 0 : 24)) + (Distance > 2 ? (Reverse ? 0 : 0) : 0), 104); Battler_1_Sprite.scale = new Vector2(Global.BattleSceneConfig.BattlerMinScale); Battler_1_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH; // Target battle sprite locations: battler 2 Battler_2_Loc = new Vector2((!Reverse ? 184 + (Distance == 1 ? 0 : 56) : 136 - (Distance == 1 ? 0 : 56)) + (Distance > 2 ? (Reverse ? -270 : 270) : 0), 104); if (Battler_2 != null) { // Initial battle sprite positions to match map sprites: battler 2 Battler_2_Sprite.loc = Battler_2_Map_Loc = (Battler_2_Sprite.battler.loc * Constants.Map.TILE_SIZE - Global.game_map.display_loc) + new Vector2(1, 2) * (Constants.Map.TILE_SIZE / 2); Battler_2_Sprite.scale = new Vector2(Global.BattleSceneConfig.BattlerMinScale); Battler_2_Sprite.stereoscopic = Config.BATTLE_BATTLERS_DEPTH; if (Battler_1_Map_Loc.Y == Battler_2_Map_Loc.Y) { Platform_Effect_Angle = (Battler_1_Map_Loc.X < Battler_2_Map_Loc.X ^ Reverse) ? 0 : (Distance == 2 ? -MathHelper.Pi : MathHelper.Pi); } else { Platform_Effect_Angle = (Battler_1_Map_Loc.Y < Battler_2_Map_Loc.Y ^ Reverse) ? MathHelper.PiOver2 : -MathHelper.PiOver2; } } else { Platform_Effect_Angle = -MathHelper.PiOver2; } if (ranged_defender_first()) { pan(-1); while (Pan.Count > 0) { update_pan(); } //Battler_1_Loc += new Vector2(32 + (Distance > 2 ? 270 : 0), 0) * (Reverse ? 1 : -1); //Battler_2_Loc += new Vector2(32 + (Distance > 2 ? 270 : 0), 0) * (Reverse ? 1 : -1); } }
protected override void battler_kill(Battler_Sprite battler_sprite) { base.battler_kill(battler_sprite); end_crowd_cheer(); }
protected override void attack_anim(Battler_Sprite battler_sprite) { battler_sprite.dance_attack(); }
protected override void hit_freeze(Battler_Sprite battler_sprite) { battler_sprite.dance_hit_freeze(); }
protected override void hit_flash(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, int time) { }
protected override bool hit_effects(Battler_Sprite battler_1_sprite, Battler_Sprite battler_2_sprite, bool reverse, bool magic) { return(dance_hit_effects(battler_1_sprite, battler_2_sprite, reverse, magic)); }
protected override void return_anim(Battler_Sprite battler_sprite) { battler_sprite.dance_return_anim(); }
protected override void attack_spell(Battler_Sprite battler_sprite) { battler_sprite.refersh_spell(Distance, Global.game_state.dance_item); }