public void ExecStormArmor(Character player, Character target) { target.objBuffPanel.AddBuff(prefab_Buff, Fix.STORM_ARMOR, SecondaryLogic.StormArmor_Turn(player), SecondaryLogic.StormArmor_SpeedUp(player), SecondaryLogic.StormArmor_Damage(player)); StartAnimation(target.objGroup.gameObject, Fix.STORM_ARMOR, Fix.COLOR_NORMAL); }
private bool ExecMagicAttack(Character player, Character target, double magnify, Fix.DamageSource attr, CriticalType critical) { Debug.Log(MethodBase.GetCurrentMethod()); // ターゲットが既に死んでいる場合 if (target.Dead) { StartAnimation(target.objGroup.gameObject, Fix.BATTLE_MISS, Fix.COLOR_NORMAL); this.NowAnimationMode = true; return(false); } // ターゲットに対して命中していない場合 if (player.IsDizzy) { if (AP.Math.RandomInteger(100) > (int)player.IsDizzy.EffectValue) { StartAnimation(target.objGroup.gameObject, Fix.BATTLE_DIZZY_MISS, Fix.COLOR_NORMAL); this.NowAnimationMode = true; return(false); } } // 攻撃コマンドのダメージを算出 double damageValue = MagicDamageLogic(player, target, magnify, attr, critical); // ディバイン・フィールドによる効果 BuffField panelField = GetPanelFieldFromPlayer(target); if (panelField != null) { BuffImage buffImage = PreCheckFieldEffect(panelField.gameObject, Fix.DIVINE_CIRCLE); if (buffImage != null) { Debug.Log("DivineShiled: " + player.FullName + " -> " + damageValue.ToString("F2") + " " + buffImage.EffectValue.ToString("F2")); buffImage.EffectValue -= damageValue; StartAnimationGroupPanel(buffImage.gameObject, Fix.BATTLE_DIVINE + "\r\n " + (int)(buffImage.EffectValue), Fix.COLOR_NORMAL); if (buffImage.EffectValue <= 0) { buffImage.RemoveBuff(); } return(false); // ディバイン・フィールドで吸収された場合はヒットしたことにならない。 } } // ダメージ適用 ApplyDamage(player, target, damageValue); // 追加効果 if (player.IsStormArmor && player.Dead == false) { double addDamageValue = MagicDamageLogic(player, target, SecondaryLogic.StormArmor_Damage(player), Fix.DamageSource.Colorless, critical); // todo 電撃がColorlessで良いのかどうか。 ApplyDamage(player, target, addDamageValue); } BuffImage stanceOfTheGuard = target.IsStanceOfTheGuard; if (target.IsStanceOfTheGuard && target.IsDefense && target.Dead == false) { stanceOfTheGuard.Cumulative++; } return(true); }