unequip specs

This commit is contained in:
ntr
2019-03-15 19:42:38 +11:00
parent 9df24a8f07
commit 0b21a5090d
4 changed files with 19 additions and 6 deletions
+1 -1
View File
@@ -660,7 +660,7 @@ struct VboxUnequipMsg {
pub struct VboxUnequipParams {
pub instance_id: Uuid,
pub cryp_id: Uuid,
pub var: Var,
pub target: Var,
}
#[derive(Debug,Clone,Serialize,Deserialize)]
+6 -4
View File
@@ -493,21 +493,23 @@ pub fn vbox_unequip(params: VboxUnequipParams, tx: &mut Transaction, account: &A
return Err(err_msg("too many vars bound"));
}
match params.var.effect() {
println!("{:?}", params);
match params.target.effect() {
Some(VarEffect::Skill) => {
let skill = params.var.into_skill().ok_or(format_err!("var {:?} has no associated skill", params.var))?;
let skill = params.target.into_skill().ok_or(format_err!("var {:?} has no associated skill", params.target))?;
let cryp = player.cryp_get(params.cryp_id)?;
cryp.forget(skill)?;
},
Some(VarEffect::Spec) => {
let spec = params.var.into_spec().ok_or(format_err!("var {:?} has no associated spec", params.var))?;
let spec = params.target.into_spec().ok_or(format_err!("var {:?} has no associated spec", params.target))?;
let cryp = player.cryp_get(params.cryp_id)?;
cryp.spec_remove(spec)?;
},
None => return Err(err_msg("var has no effect on cryps")),
}
player.vbox.bound.push(params.var);
player.vbox.bound.push(params.target);
return player_update(tx, player, false);
}