1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! Rocalc 是一个用于计算洛克王国:世界精灵对决的库,其开发还在测试中。
//! 下面是一段代码示例,展示了如何以毛毛的破罐破摔技能、绒光优优的天光技能、水蓝蓝的天洪技能计算各种情况下对恶魔狼王造成的伤害。
//!
//!```rust
//! use rocalc::models::init_sprite::*;
//! use rocalc::structs::*;
//! use rocalc::enums::*;
//! use anyhow::Result;
//! // 获取精灵的种族值
//! fn main() -> Result<()> {
//! let db_path = "assets/sprite.sqlite";
//! let wolf = get_race_value(db_path, "恶魔狼王")?;
//! let butterfly = get_race_value(db_path, "毛毛")?;
//! let youyou = get_race_value(db_path, "绒光优优")?;
//! let blue = get_race_value(db_path, "水灵")?;
//!
//! // 使用 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.round(), wolf_pri.rac.m_dfe.round(), 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.round(), wolf_pri.rac.m_dfe.round(), 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.round(), wolf_pri.rac.m_dfe.round(), 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(())
//! }
//!```