#[derive(Debug)]
pub struct Sfor {
pub atk: f32,
pub dfe: f32,
pub pow: f32,
}
impl Sfor {
pub fn cal(&self) -> f32 {
(37.0 * self.atk * self.pow / 41.0).round() / self.dfe
}
}
#[derive(Debug)]
pub struct Cfor {
pub atk: f32, pub dfe: f32, pub pow: f32, pub deal: f32, pub pow_appd: f32, pub atk_buff: f32, pub dfe_buff: f32, pub pow_buff: f32, pub prop: f32, pub counter: f32, pub reduce: f32, }
impl Cfor {
pub fn new(atk: f32, dfe: f32, pow: f32) -> Cfor {
Cfor {
atk,
dfe,
pow,
deal: 1.0,
pow_appd: 0.0,
atk_buff: 1.0,
dfe_buff: 1.0,
pow_buff: 1.0,
prop: 1.0,
counter: 1.0,
reduce: 0.0,
}
}
pub fn build(atk: f32, dfe: f32, pow: f32) -> Cfor {
Cfor::new(atk, dfe, pow)
}
pub fn cal(&self) -> f32 {
(37.0
* (self.atk * self.atk_buff)
* (self.pow * self.deal + self.pow_appd)
* self.pow_buff
* self.prop
* self.counter
* (1.0 - self.reduce))
.round()
/ 41.0
/ (self.dfe * self.dfe_buff)
}
pub fn atk_buff(mut self, atk_buff: f32) -> Cfor {
self.atk_buff = atk_buff;
self
}
pub fn deal(mut self, deal: f32) -> Cfor {
self.deal = deal;
self
}
pub fn pow_appd(mut self, pow_appd: f32) -> Cfor {
self.pow_appd = pow_appd;
self
}
pub fn pow_buff(mut self, pow_buff: f32) -> Cfor {
self.pow_buff = pow_buff;
self
}
pub fn counter(mut self, counter: f32) -> Cfor {
self.counter = counter;
self
}
pub fn prop(mut self, prop: f32) -> Cfor {
self.prop = prop;
self
}
pub fn reduce(mut self, reduce: f32) -> Cfor {
self.reduce = reduce;
self
}
pub fn dfe_buff(mut self, dfe_buff: f32) -> Cfor {
self.dfe_buff = dfe_buff;
self
}
}