Merge branch 'combos' of ssh://cryps.gg:40022/~/cryps into combos

This commit is contained in:
Mashy 2019-02-19 14:55:45 +10:00
commit af20e9aae8

View File

@ -30,11 +30,30 @@ pub enum Var {
Buff, Buff,
Debuff, Debuff,
Strike, Amplify,
Banish,
Blast, Blast,
Curse,
Empower,
Haste,
Heal, Heal,
Throw,
Hex, Hex,
Parry,
Purge,
Purify,
Reflect,
Ruin,
Shield,
Silence,
Slay,
Slow,
Snare,
Strangle,
Strike,
Taunt,
Throw,
Toxic,
Triage,
} }
impl Var { impl Var {
@ -51,22 +70,47 @@ impl Var {
fn skill(&self) -> Result<Skill, Error> { fn skill(&self) -> Result<Skill, Error> {
match self { match self {
Var::Attack => Ok(Skill::Attack), Var::Amplify => Ok(Skill::Amplify),
Var::Block => Ok(Skill::Attack), Var::Banish => Ok(Skill::Banish),
Var::Stun => Ok(Skill::Attack),
Var::Buff => Ok(Skill::Attack),
Var::Debuff => Ok(Skill::Attack),
Var::Strike => Ok(Skill::Attack),
Var::Blast => Ok(Skill::Blast), Var::Blast => Ok(Skill::Blast),
Var::Curse => Ok(Skill::Curse),
Var::Empower => Ok(Skill::Empower),
Var::Haste => Ok(Skill::Haste),
Var::Heal => Ok(Skill::Heal), Var::Heal => Ok(Skill::Heal),
Var::Throw => Ok(Skill::Throw),
Var::Hex => Ok(Skill::Hex), Var::Hex => Ok(Skill::Hex),
Var::Parry => Ok(Skill::Parry),
Var::Purge => Ok(Skill::Purge),
Var::Purify => Ok(Skill::Purify),
// Var::Reflect => Ok(Skill::Reflect),
Var::Ruin => Ok(Skill::Ruin),
Var::Shield => Ok(Skill::Shield),
Var::Silence => Ok(Skill::Silence),
Var::Slay => Ok(Skill::Slay),
Var::Slow => Ok(Skill::Slow),
Var::Snare => Ok(Skill::Snare),
Var::Strangle => Ok(Skill::Strangle),
// Var::Strike => Ok(Skill::Strike),
// Var::Taunt => Ok(Skill::Taunt),
Var::Throw => Ok(Skill::Throw),
// Var::Toxic => Ok(Skill::Toxic),
Var::Triage => Ok(Skill::Triage),
_ => Err(err_msg("not a usable var")) _ => Err(err_msg("not a usable var"))
} }
} }
} }
#[derive(Debug,Clone,Copy,PartialEq,Eq,Ord,PartialOrd,Serialize,Deserialize)]
enum ColourCode {
RR,
GG,
BB,
RG,
BR,
GB,
}
#[derive(Debug,Clone,Serialize,Deserialize)] #[derive(Debug,Clone,Serialize,Deserialize)]
pub struct Vbox { pub struct Vbox {
pub id: Uuid, pub id: Uuid,
@ -115,14 +159,11 @@ impl Vbox {
} }
pub fn accept(&mut self, i: usize) -> Result<&mut Vbox, Error> { pub fn accept(&mut self, i: usize) -> Result<&mut Vbox, Error> {
if self.bound.len() > 8 { if self.bound.len() >= 9 {
return Err(err_msg("too many vars bound")); return Err(err_msg("too many vars bound"));
} }
println!("{:?}", self.free);
self.free.get(i).ok_or(format_err!("no var at index {:?}", i))?; self.free.get(i).ok_or(format_err!("no var at index {:?}", i))?;
self.bound.push(self.free.remove(i)); self.bound.push(self.free.remove(i));
Ok(self) Ok(self)
@ -176,60 +217,55 @@ impl Vbox {
}); });
let colour_code = match colours { let colour_code = match colours {
[2,0,0] => "rr", [2,0,0] => ColourCode::RR,
[0,2,0] => "gg", [0,2,0] => ColourCode::GG,
[0,0,2] => "bb", [0,0,2] => ColourCode::BB,
[1,1,0] => "rg", [1,1,0] => ColourCode::RG,
[0,1,1] => "gb", [0,1,1] => ColourCode::GB,
[1,0,1] => "rb", [1,0,1] => ColourCode::BR,
_ => return Err(err_msg("not a combo")), _ => return Err(err_msg("not a combo")),
}; };
let new = match base { let new = match base {
Var::Attack => match colour_code { Var::Attack => match colour_code {
"rr" => Var::Strangle, ColourCode::RR => Var::Strike,
"gg" => Var::Heal, ColourCode::GG => Var::Heal,
"bb" => Var::Blast, ColourCode::BB => Var::Blast,
"rg" => Var::Slay, ColourCode::RG => Var::Slay, //
"gb" => Var::Attack, // TBA ColourCode::GB => return Err(err_msg("unhandled skill combo")),
"rb" => Var::Banish, ColourCode::BR => Var::Banish, //
_ => panic!("missing colour code {:?}", colour_code),
}, },
Var::Block => match colour_code { Var::Block => match colour_code {
"rr" => Var::Parry, ColourCode::RR => Var::Parry,
"gg" => Var::Reflect, // NYI ColourCode::GG => Var::Reflect,
"bb" => Var::PlagueBarrier, // NYI ColourCode::BB => Var::Toxic,
"rg" => Var::Shield, ColourCode::RG => Var::Shield, //
"gb" => Var::Attack, // TBA ColourCode::GB => return Err(err_msg("unhandled skill combo")),
"rb" => Var::Taunt, ColourCode::BR => Var::Taunt,
_ => panic!("missing colour code {:?}", colour_code),
}, },
Var::Buff => match colour_code { Var::Buff => match colour_code {
"rr" => Var::Regenerate, // NYI heal red defense ColourCode::RR => Var::Empower,
"gg" => Var::Triage, ColourCode::GG => Var::Triage,
"bb" => Var::Amplify, ColourCode::BB => Var::Amplify,
"rg" => Var::Purify, ColourCode::RG => return Err(err_msg("unhandled skill combo")),
"gb" => Var::Attack, // TBA ColourCode::GB => Var::Purify,
"rb" => Var::Haste, ColourCode::BR => Var::Haste,
_ => panic!("missing colour code {:?}", colour_code),
}, },
Var::Debuff => match colour_code { Var::Debuff => match colour_code {
"rr" => Var::Snare, ColourCode::RR => Var::Snare,
"gg" => Var::Purge, ColourCode::GG => Var::Purge,
"bb" => Var::Curse, ColourCode::BB => Var::Curse,
"rg" => Var::Attack, // TBA ColourCode::RG => return Err(err_msg("unhandled skill combo")),
"gb" => Var::Attack, ColourCode::GB => return Err(err_msg("unhandled skill combo")),
"rb" => Var::Slow, ColourCode::BR => Var::Slow, //
_ => panic!("missing colour code {:?}", colour_code),
}, },
Var::Stun => match colour_code { Var::Stun => match colour_code {
"rr" => Var::Strangle, ColourCode::RR => Var::Strangle,
"gg" => Var::Throw, ColourCode::GG => Var::Throw,
"bb" => Var::Ruin, ColourCode::BB => Var::Ruin,
"rg" => Var::Silence, ColourCode::RG => Var::Silence, //
"gb" => Var::Attack, // TBA ColourCode::GB => return Err(err_msg("unhandled skill combo")),
"rb" => Var::Taunt, ColourCode::BR => Var::Hex, //
_ => panic!("missing colour code {:?}", colour_code),
}, },
_ => panic!("wrong base {:?}", base), _ => panic!("wrong base {:?}", base),
}; };