private void TryApplyDereBonus(Dere dere, ref double atk, ref double def, BodereBonus bodere) { if (dere == Dere.Bodere) { switch (bodere) { case BodereBonus.Minus: atk -= atk / 10; break; case BodereBonus.Plus: atk += atk / 10; break; default: break; } } else if (Fun.TakeATry(5)) { var tenAtk = atk / 10; var tenDef = def / 10; switch (dere) { case Dere.Yandere: atk += tenAtk; break; case Dere.Dandere: def += tenDef; break; case Dere.Kuudere: atk -= tenAtk; def += tenAtk; break; case Dere.Mayadere: def -= tenDef; atk += tenDef; break; default: break; } } }
public double GetFA(CardInfo target, CardInfo enemy, BodereBonus bodere) { double atk1 = target.Card.GetAttackWithBonus(); double def1 = target.Card.GetDefenceWithBonus(); if (!target.Info.HasImage) { atk1 -= atk1 * 20 / 100; def1 -= def1 * 20 / 100; } TryApplyDereBonus(target.Card.Dere, ref atk1, ref def1, bodere); if (atk1 < 1) { atk1 = 1; } if (def1 < 1) { def1 = 1; } double atk2 = enemy.Card.GetAttackWithBonus(); double def2 = enemy.Card.GetDefenceWithBonus(); if (!enemy.Info.HasImage) { atk2 -= atk2 * 20 / 100; def2 -= def2 * 20 / 100; } TryApplyDereBonus(enemy.Card.Dere, ref atk2, ref def2, bodere); if (atk2 < 1) { atk2 = 1; } if (def2 < 1) { def2 = 1; } if (def2 > 99) { def2 = 99; } return(atk1 * (100 - def2) / 100); }