skill doesn't count towards colours, 0 colour skill case, fk tutorial

This commit is contained in:
Mashy
2021-03-20 13:53:39 +10:00
parent 7576081c52
commit a280c4686e
3 changed files with 44 additions and 41 deletions
+4 -4
View File
@@ -30,10 +30,10 @@ impl Colours {
v.colours(&mut count);
}
for cs in construct.skills.iter() {
let v = Item::from(cs.skill);
v.colours(&mut count);
}
// for cs in construct.skills.iter() {
// let v = Item::from(cs.skill);
// v.colours(&mut count);
// }
count
}
+37 -35
View File
@@ -336,48 +336,50 @@ impl Player {
println!("{:?}", colour_counts);
let total = (construct.colours.red + construct.colours.green + construct.colours.blue) as f64;
let colour_pcts = colour_counts.iter_mut()
.map(|cc| (cc.0, cc.1 as f64 / total))
.collect::<Vec<_>>();
if total != 0.0 {
let colour_pcts = colour_counts.iter_mut()
.map(|cc| (cc.0, cc.1 as f64 / total))
.collect::<Vec<_>>();
println!("{:?}", colour_pcts);
println!("{:?}", colour_pcts);
let skill_item = match item.into_skill().is_some() {
true => item,
false => construct.skills[0].skill.base(),
};
let skill_item = match item.into_skill().is_some() {
true => item,
false => construct.skills[0].skill.base(),
};
let colour_skill = {
// no colours
if colour_pcts[0].1.is_infinite() {
construct.skills[0].skill
} else {
let mut skill_item_combo = {
if colour_pcts[0].1 > 0.75 {
vec![skill_item, colour_pcts[0].0, colour_pcts[0].0]
} else if colour_pcts[1].1 > 0.4 {
vec![skill_item, colour_pcts[0].0, colour_pcts[1].0]
} else {
// special triple skill_item
vec![skill_item, colour_pcts[0].0, colour_pcts[1].0]
}
};
let colour_skill = {
// no colours
if colour_pcts[0].1.is_infinite() {
construct.skills[0].skill
} else {
let mut skill_item_combo = {
if colour_pcts[0].1 > 0.70 {
vec![skill_item, colour_pcts[0].0, colour_pcts[0].0]
} else if colour_pcts[1].1 > 0.4 {
vec![skill_item, colour_pcts[0].0, colour_pcts[1].0]
} else {
// special triple skill_item
vec![skill_item, colour_pcts[0].0, colour_pcts[1].0]
}
};
skill_item_combo.sort_unstable();
skill_item_combo.sort_unstable();
println!("{:?}", skill_item_combo);
let combos = get_combos();
let combo = combos.iter().find(|c| c.components == skill_item_combo)
.ok_or(err_msg("no combo for colour skill"))?;
println!("{:?}", skill_item_combo);
let combos = get_combos();
let combo = combos.iter().find(|c| c.components == skill_item_combo)
.ok_or(err_msg("no combo for colour skill"))?;
combo.item.into_skill()
.ok_or(format_err!("item {:?} has no associated skill", combo.item))?
}
};
combo.item.into_skill()
.ok_or(format_err!("item {:?} has no associated skill", combo.item))?
}
};
// unlearn everything
construct.skills = vec![];
construct.learn_mut(colour_skill);
// unlearn everything
construct.skills = vec![];
construct.learn_mut(colour_skill);
}
// // now the item has been applied
// // recalculate the stats of the whole player