simplify spec and skill var checks
This commit is contained in:
parent
cf3dbaa6e9
commit
9d02499c5a
@ -63,7 +63,7 @@ class StatSheet extends Phaser.Scene {
|
|||||||
const crypStat = (stat, i) => {
|
const crypStat = (stat, i) => {
|
||||||
const STAT_X = X;
|
const STAT_X = X;
|
||||||
const STAT_Y = Y + (i + 2) * TEXT_MARGIN;
|
const STAT_Y = Y + (i + 2) * TEXT_MARGIN;
|
||||||
this.add.text(STAT_X, STAT_Y, `${stat.stat}: ${stat.value}`, TEXT.NORMAL);
|
this.add.text(STAT_X, STAT_Y, `${stat.stat}: ${stat.base} -> ${stat.value}`, TEXT.NORMAL);
|
||||||
};
|
};
|
||||||
|
|
||||||
const CRYP_STATS = [
|
const CRYP_STATS = [
|
||||||
|
|||||||
@ -35,7 +35,7 @@ pub enum Var {
|
|||||||
Damage,
|
Damage,
|
||||||
Protection,
|
Protection,
|
||||||
Speed,
|
Speed,
|
||||||
Hp,
|
Stamina,
|
||||||
|
|
||||||
StaminaI,
|
StaminaI,
|
||||||
RedDamageI,
|
RedDamageI,
|
||||||
@ -94,84 +94,57 @@ impl Var {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn effect(&self) -> Result<VarEffect, Error> {
|
fn effect(&self) -> Option<VarEffect> {
|
||||||
|
if let Some(_skill) = self.skill() {
|
||||||
|
return Some(VarEffect::Skill);
|
||||||
|
}
|
||||||
|
if let Some(_spec) = self.spec() {
|
||||||
|
return Some(VarEffect::Spec);
|
||||||
|
}
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn skill(&self) -> Option<Skill> {
|
||||||
match self {
|
match self {
|
||||||
Var::Amplify |
|
Var::Amplify => Some(Skill::Amplify),
|
||||||
Var::Banish |
|
Var::Banish => Some(Skill::Banish),
|
||||||
Var::Blast |
|
Var::Blast => Some(Skill::Blast),
|
||||||
Var::Curse |
|
Var::Curse => Some(Skill::Curse),
|
||||||
Var::Empower |
|
Var::Empower => Some(Skill::Empower),
|
||||||
Var::Haste |
|
Var::Haste => Some(Skill::Haste),
|
||||||
Var::Heal |
|
Var::Heal => Some(Skill::Heal),
|
||||||
Var::Hex |
|
Var::Hex => Some(Skill::Hex),
|
||||||
Var::Parry |
|
Var::Parry => Some(Skill::Parry),
|
||||||
Var::Purge |
|
Var::Purge => Some(Skill::Purge),
|
||||||
Var::Purify |
|
Var::Purify => Some(Skill::Purify),
|
||||||
// Var::Reflect |
|
// Var::Reflect => Some(Skill::Reflect),
|
||||||
Var::Ruin |
|
Var::Ruin => Some(Skill::Ruin),
|
||||||
Var::Shield |
|
Var::Shield => Some(Skill::Shield),
|
||||||
Var::Silence |
|
Var::Silence => Some(Skill::Silence),
|
||||||
Var::Slay |
|
Var::Slay => Some(Skill::Slay),
|
||||||
Var::Slow |
|
Var::Slow => Some(Skill::Slow),
|
||||||
Var::Snare |
|
Var::Snare => Some(Skill::Snare),
|
||||||
Var::Strangle |
|
Var::Strangle => Some(Skill::Strangle),
|
||||||
Var::Strike |
|
Var::Strike => Some(Skill::Strike),
|
||||||
// Var::Clutch |
|
// Var::Clutch => Some(Skill::Clutch),
|
||||||
// Var::Taunt |
|
// Var::Taunt => Some(Skill::Taunt),
|
||||||
Var::Throw |
|
Var::Throw => Some(Skill::Throw),
|
||||||
// Var::Toxic |
|
// Var::Toxic => Some(Skill::Toxic),
|
||||||
Var::Triage => Ok(VarEffect::Skill),
|
Var::Triage => Some(Skill::Triage),
|
||||||
|
_ => None,
|
||||||
Var::StaminaI |
|
|
||||||
Var::RedShieldI |
|
|
||||||
Var::BlueShieldI |
|
|
||||||
Var::SpeedI => Ok(VarEffect::Spec),
|
|
||||||
|
|
||||||
_ => Err(err_msg("var has no effect on cryps"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn skill(&self) -> Skill {
|
fn spec(&self) -> Option<Spec> {
|
||||||
match self {
|
|
||||||
Var::Amplify => Skill::Amplify,
|
|
||||||
Var::Banish => Skill::Banish,
|
|
||||||
Var::Blast => Skill::Blast,
|
|
||||||
Var::Curse => Skill::Curse,
|
|
||||||
Var::Empower => Skill::Empower,
|
|
||||||
Var::Haste => Skill::Haste,
|
|
||||||
Var::Heal => Skill::Heal,
|
|
||||||
Var::Hex => Skill::Hex,
|
|
||||||
Var::Parry => Skill::Parry,
|
|
||||||
Var::Purge => Skill::Purge,
|
|
||||||
Var::Purify => Skill::Purify,
|
|
||||||
// Var::Reflect => Skill::Reflect,
|
|
||||||
Var::Ruin => Skill::Ruin,
|
|
||||||
Var::Shield => Skill::Shield,
|
|
||||||
Var::Silence => Skill::Silence,
|
|
||||||
Var::Slay => Skill::Slay,
|
|
||||||
Var::Slow => Skill::Slow,
|
|
||||||
Var::Snare => Skill::Snare,
|
|
||||||
Var::Strangle => Skill::Strangle,
|
|
||||||
Var::Strike => Skill::Strike,
|
|
||||||
// Var::Clutch => Skill::Clutch,
|
|
||||||
// Var::Taunt => Skill::Taunt,
|
|
||||||
Var::Throw => Skill::Throw,
|
|
||||||
// Var::Toxic => Skill::Toxic,
|
|
||||||
Var::Triage => Skill::Triage,
|
|
||||||
_ => panic!("not a skill var"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn spec(&self) -> Spec {
|
|
||||||
match *self {
|
match *self {
|
||||||
Var::StaminaI => Spec::StaminaI,
|
Var::StaminaI => Some(Spec::StaminaI),
|
||||||
Var::SpeedI => Spec::SpeedI,
|
Var::SpeedI => Some(Spec::SpeedI),
|
||||||
Var::RedDamageI => Spec::RedDamageI,
|
Var::RedDamageI => Some(Spec::RedDamageI),
|
||||||
Var::BlueDamageI => Spec::BlueDamageI,
|
Var::BlueDamageI => Some(Spec::BlueDamageI),
|
||||||
Var::GreenDamageI => Spec::GreenDamageI,
|
Var::GreenDamageI => Some(Spec::GreenDamageI),
|
||||||
Var::RedShieldI => Spec::RedShieldI,
|
Var::RedShieldI => Some(Spec::RedShieldI),
|
||||||
Var::BlueShieldI => Spec::BlueShieldI,
|
Var::BlueShieldI => Some(Spec::BlueShieldI),
|
||||||
_ => panic!("not a spec var"),
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -243,7 +216,7 @@ impl Vbox {
|
|||||||
(Var::Damage, 1),
|
(Var::Damage, 1),
|
||||||
(Var::Protection, 1),
|
(Var::Protection, 1),
|
||||||
(Var::Speed, 1),
|
(Var::Speed, 1),
|
||||||
(Var::Hp, 1),
|
(Var::Stamina, 1),
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
@ -387,7 +360,7 @@ impl Vbox {
|
|||||||
},
|
},
|
||||||
Var::Protection => match colour_code {
|
Var::Protection => match colour_code {
|
||||||
ColourCode::RR => Var::RedShieldI,
|
ColourCode::RR => Var::RedShieldI,
|
||||||
ColourCode::GG => return Err(err_msg("unhandled skill combo")),
|
ColourCode::GG => Var::StaminaI,
|
||||||
ColourCode::BB => Var::BlueShieldI,
|
ColourCode::BB => Var::BlueShieldI,
|
||||||
ColourCode::RG => return Err(err_msg("unhandled skill combo")),
|
ColourCode::RG => return Err(err_msg("unhandled skill combo")),
|
||||||
ColourCode::GB => return Err(err_msg("unhandled skill combo")),
|
ColourCode::GB => return Err(err_msg("unhandled skill combo")),
|
||||||
@ -432,9 +405,9 @@ pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Accou
|
|||||||
let mut player = player_get(tx, account.id, params.instance_id)?;
|
let mut player = player_get(tx, account.id, params.instance_id)?;
|
||||||
let var = player.vbox.bound.remove(params.index);
|
let var = player.vbox.bound.remove(params.index);
|
||||||
|
|
||||||
match var.effect()? {
|
match var.effect() {
|
||||||
VarEffect::Skill => {
|
Some(VarEffect::Skill) => {
|
||||||
let skill = var.skill();
|
let skill = var.skill().ok_or(format_err!("var {:?} has no associated skill", var))?;
|
||||||
let cryp = player.cryp_get(params.cryp_id)?;
|
let cryp = player.cryp_get(params.cryp_id)?;
|
||||||
// done here because i teach them a tonne of skills for tests
|
// done here because i teach them a tonne of skills for tests
|
||||||
let max_skills = 4;
|
let max_skills = 4;
|
||||||
@ -444,12 +417,13 @@ pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Accou
|
|||||||
|
|
||||||
cryp.learn_mut(skill);
|
cryp.learn_mut(skill);
|
||||||
},
|
},
|
||||||
VarEffect::Spec => {
|
Some(VarEffect::Spec) => {
|
||||||
let spec = var.spec();
|
let spec = var.spec().ok_or(format_err!("var {:?} has no associated spec", var))?;
|
||||||
let cryp = player.cryp_get(params.cryp_id)?;
|
let cryp = player.cryp_get(params.cryp_id)?;
|
||||||
cryp.spec_add(spec)?;
|
cryp.spec_add(spec)?;
|
||||||
|
|
||||||
},
|
},
|
||||||
|
None => return Err(err_msg("var has no effect on cryps")),
|
||||||
}
|
}
|
||||||
|
|
||||||
return player_update(tx, player, false);
|
return player_update(tx, player, false);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user