rocalc 0.1.0

一款用于计算洛克王国:世界精灵对决的Rust库
Documentation

Rocalc 是一个用于计算洛克王国:世界精灵对决的库,其开发还在测试中,伤害有个位数的误差且伤害越高误差越明显。 下面是一段代码示例,展示了如何以毛毛的破罐破摔技能、绒光优优的天光技能、水蓝蓝的天洪技能计算各种情况下对恶魔狼王造成的伤害。

  use rocalc::models::init_sprite::*;
  use rocalc::structs::*;
  use rocalc::enums::*;
  use anyhow::Result;
   // 获取精灵的种族值
fn main() -> Result<()> {
   let wolf = get_race_value("恶魔狼王")?;
   let butterfly = get_race_value("毛毛")?;
   let youyou = get_race_value("绒光优优")?;
   let blue = get_race_value("水灵")?;

   // 使用 Tri 结构定义精灵的三项:性格、种族值、个体值
   let mut wolf_pri = Tri {
       car: Car::Sanguine,
       rac: wolf,
       indp: vec![Panel::Hp, Panel::Spd, Panel::Atk],
       indv: vec![10.0, 10.0, 10.0],
   };

   let mut butterfly_pri = Tri {
       car: Car::Clever,
       rac: butterfly,
       indp: vec![Panel::Hp, Panel::Spd, Panel::MAtk],
       indv: vec![10.0, 10.0, 10.0],
   };

   let mut youyou_pri = Tri {
       car: Car::Timid,
       rac: youyou,
       indp: vec![Panel::Hp, Panel::Spd, Panel::MAtk],
       indv: vec![10.0, 10.0, 10.0],
   };

   let mut blue_pri = Tri {
       car: Car::Clever,
       rac: blue,
       indp: vec![Panel::Hp, Panel::Spd, Panel::MAtk],
       indv: vec![10.0, 10.0, 10.0],
   };

   // 根据精灵的三项进行面板修正
   wolf_pri.cor();
   butterfly_pri.cor();
   youyou_pri.cor();
   blue_pri.cor();

   println!("rac{:#?}{:#?}{:#?}{:#?}", wolf_pri.rac, butterfly_pri.rac, youyou_pri.rac, blue_pri.rac);

   // 用毛毛的破罐破摔技能打恶魔狼王
   let mut po = Cfor::new(butterfly_pri.rac.m_atk, wolf_pri.rac.m_dfe, 80.0);
   po.prop = 1.25;
   po.count= 2.00;

   // 吃破罐破摔的技能被动
   po.pow_appd = 60.0;
   println!{"破罐破摔{}", po.cal()};

   // 用水灵的天洪技能打恶魔狼王
   let mut tianhong = Cfor::new(blue_pri.rac.m_atk, wolf_pri.rac.m_dfe, 150.0);
   tianhong.prop = 1.25;
   println!{"天洪:{}", tianhong.cal()};

   // 算上雨天加成
   tianhong.pow_buff= 1.75;
   println!{"雨天天洪:{}", tianhong.cal()};

   // 用绒光优优的天光技能打恶魔狼王
   let mut tianguang = Cfor::new(youyou_pri.rac.m_atk, wolf_pri.rac.m_dfe, 95.0);
   tianguang.prop = 1.25;
   tianguang.count = 2.0;
   println!{"天光:{}", tianguang.cal()};
   tianguang.pow_buff = 1.5;
   println!{"放晴天光:{}", tianguang.cal()};
   tianguang.pow_buff = 1.5 * 1.75;
   println!{"雨天天光:{}", tianguang.cal()};
   Ok(())
}