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 STAT_X = X;
|
||||
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 = [
|
||||
|
||||
@ -35,7 +35,7 @@ pub enum Var {
|
||||
Damage,
|
||||
Protection,
|
||||
Speed,
|
||||
Hp,
|
||||
Stamina,
|
||||
|
||||
StaminaI,
|
||||
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 {
|
||||
Var::Amplify |
|
||||
Var::Banish |
|
||||
Var::Blast |
|
||||
Var::Curse |
|
||||
Var::Empower |
|
||||
Var::Haste |
|
||||
Var::Heal |
|
||||
Var::Hex |
|
||||
Var::Parry |
|
||||
Var::Purge |
|
||||
Var::Purify |
|
||||
// Var::Reflect |
|
||||
Var::Ruin |
|
||||
Var::Shield |
|
||||
Var::Silence |
|
||||
Var::Slay |
|
||||
Var::Slow |
|
||||
Var::Snare |
|
||||
Var::Strangle |
|
||||
Var::Strike |
|
||||
// Var::Clutch |
|
||||
// Var::Taunt |
|
||||
Var::Throw |
|
||||
// Var::Toxic |
|
||||
Var::Triage => Ok(VarEffect::Skill),
|
||||
|
||||
Var::StaminaI |
|
||||
Var::RedShieldI |
|
||||
Var::BlueShieldI |
|
||||
Var::SpeedI => Ok(VarEffect::Spec),
|
||||
|
||||
_ => Err(err_msg("var has no effect on cryps"))
|
||||
Var::Amplify => Some(Skill::Amplify),
|
||||
Var::Banish => Some(Skill::Banish),
|
||||
Var::Blast => Some(Skill::Blast),
|
||||
Var::Curse => Some(Skill::Curse),
|
||||
Var::Empower => Some(Skill::Empower),
|
||||
Var::Haste => Some(Skill::Haste),
|
||||
Var::Heal => Some(Skill::Heal),
|
||||
Var::Hex => Some(Skill::Hex),
|
||||
Var::Parry => Some(Skill::Parry),
|
||||
Var::Purge => Some(Skill::Purge),
|
||||
Var::Purify => Some(Skill::Purify),
|
||||
// Var::Reflect => Some(Skill::Reflect),
|
||||
Var::Ruin => Some(Skill::Ruin),
|
||||
Var::Shield => Some(Skill::Shield),
|
||||
Var::Silence => Some(Skill::Silence),
|
||||
Var::Slay => Some(Skill::Slay),
|
||||
Var::Slow => Some(Skill::Slow),
|
||||
Var::Snare => Some(Skill::Snare),
|
||||
Var::Strangle => Some(Skill::Strangle),
|
||||
Var::Strike => Some(Skill::Strike),
|
||||
// Var::Clutch => Some(Skill::Clutch),
|
||||
// Var::Taunt => Some(Skill::Taunt),
|
||||
Var::Throw => Some(Skill::Throw),
|
||||
// Var::Toxic => Some(Skill::Toxic),
|
||||
Var::Triage => Some(Skill::Triage),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn skill(&self) -> Skill {
|
||||
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 {
|
||||
fn spec(&self) -> Option<Spec> {
|
||||
match *self {
|
||||
Var::StaminaI => Spec::StaminaI,
|
||||
Var::SpeedI => Spec::SpeedI,
|
||||
Var::RedDamageI => Spec::RedDamageI,
|
||||
Var::BlueDamageI => Spec::BlueDamageI,
|
||||
Var::GreenDamageI => Spec::GreenDamageI,
|
||||
Var::RedShieldI => Spec::RedShieldI,
|
||||
Var::BlueShieldI => Spec::BlueShieldI,
|
||||
_ => panic!("not a spec var"),
|
||||
Var::StaminaI => Some(Spec::StaminaI),
|
||||
Var::SpeedI => Some(Spec::SpeedI),
|
||||
Var::RedDamageI => Some(Spec::RedDamageI),
|
||||
Var::BlueDamageI => Some(Spec::BlueDamageI),
|
||||
Var::GreenDamageI => Some(Spec::GreenDamageI),
|
||||
Var::RedShieldI => Some(Spec::RedShieldI),
|
||||
Var::BlueShieldI => Some(Spec::BlueShieldI),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -243,7 +216,7 @@ impl Vbox {
|
||||
(Var::Damage, 1),
|
||||
(Var::Protection, 1),
|
||||
(Var::Speed, 1),
|
||||
(Var::Hp, 1),
|
||||
(Var::Stamina, 1),
|
||||
];
|
||||
|
||||
let mut rng = thread_rng();
|
||||
@ -387,7 +360,7 @@ impl Vbox {
|
||||
},
|
||||
Var::Protection => match colour_code {
|
||||
ColourCode::RR => Var::RedShieldI,
|
||||
ColourCode::GG => return Err(err_msg("unhandled skill combo")),
|
||||
ColourCode::GG => Var::StaminaI,
|
||||
ColourCode::BB => Var::BlueShieldI,
|
||||
ColourCode::RG => 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 var = player.vbox.bound.remove(params.index);
|
||||
|
||||
match var.effect()? {
|
||||
VarEffect::Skill => {
|
||||
let skill = var.skill();
|
||||
match var.effect() {
|
||||
Some(VarEffect::Skill) => {
|
||||
let skill = var.skill().ok_or(format_err!("var {:?} has no associated skill", var))?;
|
||||
let cryp = player.cryp_get(params.cryp_id)?;
|
||||
// done here because i teach them a tonne of skills for tests
|
||||
let max_skills = 4;
|
||||
@ -444,12 +417,13 @@ pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Accou
|
||||
|
||||
cryp.learn_mut(skill);
|
||||
},
|
||||
VarEffect::Spec => {
|
||||
let spec = var.spec();
|
||||
Some(VarEffect::Spec) => {
|
||||
let spec = var.spec().ok_or(format_err!("var {:?} has no associated spec", var))?;
|
||||
let cryp = player.cryp_get(params.cryp_id)?;
|
||||
cryp.spec_add(spec)?;
|
||||
|
||||
},
|
||||
None => return Err(err_msg("var has no effect on cryps")),
|
||||
}
|
||||
|
||||
return player_update(tx, player, false);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user