shield specs
This commit is contained in:
parent
788c68c015
commit
e6986d57cd
@ -90,7 +90,7 @@ class StatSheet extends Phaser.Scene {
|
|||||||
this.add.text(X + WIDTH * 0.175, Y, 'Skills', TEXT.HEADER);
|
this.add.text(X + WIDTH * 0.175, Y, 'Skills', TEXT.HEADER);
|
||||||
|
|
||||||
this.add.text(X + WIDTH * 0.175, Y + HEIGHT * 0.25, 'Specs', TEXT.HEADER);
|
this.add.text(X + WIDTH * 0.175, Y + HEIGHT * 0.25, 'Specs', TEXT.HEADER);
|
||||||
const knownSpec = (spec, i) => {
|
const knownSpec = (spec, i) => {
|
||||||
const SKILL_X = X + WIDTH * 0.21 + WIDTH * 0.125 * i;
|
const SKILL_X = X + WIDTH * 0.21 + WIDTH * 0.125 * i;
|
||||||
const SKILL_Y = Y + HEIGHT * 0.4;
|
const SKILL_Y = Y + HEIGHT * 0.4;
|
||||||
const itemObj = new Item(this, spec, i, SKILL_X, SKILL_Y, SKILL_WIDTH, Math.floor(SKILL_WIDTH / 2));
|
const itemObj = new Item(this, spec, i, SKILL_X, SKILL_Y, SKILL_WIDTH, Math.floor(SKILL_WIDTH / 2));
|
||||||
|
|||||||
@ -72,7 +72,7 @@ impl CrypStat {
|
|||||||
pub fn recalculate(&mut self, specs: &Vec<Spec>) -> &mut CrypStat {
|
pub fn recalculate(&mut self, specs: &Vec<Spec>) -> &mut CrypStat {
|
||||||
let specs = specs
|
let specs = specs
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|s| s.affects() == self.stat)
|
.filter(|s| s.affects().contains(&self.stat))
|
||||||
.map(|s| *s)
|
.map(|s| *s)
|
||||||
.collect::<Vec<Spec>>();
|
.collect::<Vec<Spec>>();
|
||||||
|
|
||||||
|
|||||||
@ -1,38 +1,59 @@
|
|||||||
|
use rand::prelude::*;
|
||||||
|
|
||||||
use cryp::{Stat};
|
use cryp::{Stat};
|
||||||
|
|
||||||
#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq)]
|
#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq)]
|
||||||
pub enum Spec {
|
pub enum Spec {
|
||||||
SpeedI,
|
SpeedI,
|
||||||
HpI,
|
|
||||||
|
LifeI,
|
||||||
|
RedShieldI,
|
||||||
|
BlueShieldI,
|
||||||
|
LRSI,
|
||||||
|
LBSI,
|
||||||
|
RBSI,
|
||||||
|
|
||||||
RedDamageI,
|
RedDamageI,
|
||||||
GreenDamageI,
|
GreenDamageI,
|
||||||
BlueDamageI,
|
BlueDamageI,
|
||||||
RedShieldI,
|
|
||||||
BlueShieldI,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Spec {
|
impl Spec {
|
||||||
pub fn affects(&self) -> Stat {
|
pub fn affects(&self) -> Vec<Stat> {
|
||||||
match *self {
|
match *self {
|
||||||
Spec::RedDamageI => Stat::RedDamage,
|
Spec::RedDamageI => vec![Stat::RedDamage],
|
||||||
Spec::GreenDamageI => Stat::GreenDamage,
|
Spec::GreenDamageI => vec![Stat::GreenDamage],
|
||||||
Spec::BlueDamageI => Stat::BlueDamage,
|
Spec::BlueDamageI => vec![Stat::BlueDamage],
|
||||||
Spec::RedShieldI => Stat::RedShield,
|
Spec::RedShieldI => vec![Stat::RedShield],
|
||||||
Spec::BlueShieldI => Stat::BlueShield,
|
Spec::BlueShieldI => vec![Stat::BlueShield],
|
||||||
Spec::SpeedI => Stat::Speed,
|
Spec::SpeedI => vec![Stat::Speed],
|
||||||
Spec::HpI => Stat::Hp,
|
Spec::LifeI => vec![Stat::Hp],
|
||||||
|
Spec::LRSI => vec![Stat::Hp, Stat::RedShield],
|
||||||
|
Spec::LBSI => vec![Stat::Hp, Stat::BlueShield],
|
||||||
|
Spec::RBSI => vec![Stat::BlueShield, Stat::RedShield],
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn apply(&self, modified: u64, base: u64) -> u64 {
|
pub fn apply(&self, modified: u64, base: u64) -> u64 {
|
||||||
|
let mut rng = thread_rng();
|
||||||
|
|
||||||
|
let i_min = 32;
|
||||||
|
let i_max = 64;
|
||||||
|
|
||||||
match *self {
|
match *self {
|
||||||
Spec::RedDamageI => modified + (base * 5 / 100),
|
Spec::RedDamageI => modified + (base * 5 / 100),
|
||||||
Spec::GreenDamageI => modified + (base * 5 / 100),
|
Spec::GreenDamageI => modified + (base * 5 / 100),
|
||||||
Spec::BlueDamageI => modified + (base * 5 / 100),
|
Spec::BlueDamageI => modified + (base * 5 / 100),
|
||||||
|
|
||||||
Spec::SpeedI => modified + (base * 5 / 100),
|
Spec::SpeedI => modified + (base * 5 / 100),
|
||||||
Spec::HpI => modified + (base * 5 / 100),
|
|
||||||
Spec::RedShieldI => modified + 50,
|
Spec::LifeI => modified + (base * 5 / 100),
|
||||||
Spec::BlueShieldI => modified + 50,
|
Spec::RedShieldI => modified + rng.gen_range(i_min, i_max),
|
||||||
|
Spec::BlueShieldI => modified + rng.gen_range(i_min, i_max),
|
||||||
|
Spec::LRSI => modified + (base * 5 / 100),
|
||||||
|
Spec::LBSI => modified + (base * 5 / 100),
|
||||||
|
Spec::RBSI => modified + (base * 5 / 100),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,11 @@ pub enum Var {
|
|||||||
Hp,
|
Hp,
|
||||||
Speed,
|
Speed,
|
||||||
|
|
||||||
HpI,
|
LifeI,
|
||||||
|
LRSI,
|
||||||
|
LBSI,
|
||||||
|
RBSI,
|
||||||
|
|
||||||
RedDamageI,
|
RedDamageI,
|
||||||
BlueDamageI,
|
BlueDamageI,
|
||||||
GreenDamageI,
|
GreenDamageI,
|
||||||
@ -141,7 +145,10 @@ impl Var {
|
|||||||
Var::BlueDamageI => Some(Spec::BlueDamageI),
|
Var::BlueDamageI => Some(Spec::BlueDamageI),
|
||||||
Var::GreenDamageI => Some(Spec::GreenDamageI),
|
Var::GreenDamageI => Some(Spec::GreenDamageI),
|
||||||
|
|
||||||
Var::HpI => Some(Spec::HpI),
|
Var::LifeI => Some(Spec::LifeI),
|
||||||
|
Var::LRSI => Some(Spec::LRSI),
|
||||||
|
Var::LBSI => Some(Spec::LBSI),
|
||||||
|
Var::RBSI => Some(Spec::RBSI),
|
||||||
Var::RedShieldI => Some(Spec::RedShieldI),
|
Var::RedShieldI => Some(Spec::RedShieldI),
|
||||||
Var::BlueShieldI => Some(Spec::BlueShieldI),
|
Var::BlueShieldI => Some(Spec::BlueShieldI),
|
||||||
|
|
||||||
@ -360,11 +367,11 @@ impl Vbox {
|
|||||||
},
|
},
|
||||||
Var::Hp => match colour_code {
|
Var::Hp => match colour_code {
|
||||||
ColourCode::RR => Var::RedShieldI,
|
ColourCode::RR => Var::RedShieldI,
|
||||||
ColourCode::GG => Var::HpI,
|
ColourCode::GG => Var::LifeI,
|
||||||
ColourCode::BB => Var::BlueShieldI,
|
ColourCode::BB => Var::BlueShieldI,
|
||||||
ColourCode::RG => return Err(err_msg("unhandled skill combo")),
|
ColourCode::RG => Var::LRSI,
|
||||||
ColourCode::GB => return Err(err_msg("unhandled skill combo")),
|
ColourCode::GB => Var::LBSI,
|
||||||
ColourCode::BR => return Err(err_msg("unhandled skill combo")),
|
ColourCode::BR => Var::RBSI,
|
||||||
},
|
},
|
||||||
|
|
||||||
_ => panic!("wrong base {:?}", base),
|
_ => panic!("wrong base {:?}", base),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user