wip
This commit is contained in:
parent
8a946acc11
commit
d8c4ff987c
@ -71,12 +71,12 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pve_test() {
|
fn pve_test() {
|
||||||
let player = Cryp::new()
|
// let player = Cryp::new()
|
||||||
.named("ca phe sua da".to_string())
|
// .named("ca phe sua da".to_string())
|
||||||
.level(2)
|
// .level(2)
|
||||||
.create();
|
// .create();
|
||||||
|
|
||||||
levelling(player);
|
// levelling(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
71
src/cryp.rs
71
src/cryp.rs
@ -1,23 +1,36 @@
|
|||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
use rand::prelude::*;
|
use rand::prelude::*;
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum Attribute {
|
|
||||||
Dmg,
|
|
||||||
Def,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Roll {
|
pub struct Roll {
|
||||||
pub value: u64,
|
|
||||||
pub roll: u64,
|
pub roll: u64,
|
||||||
pub result: u64,
|
pub result: u64,
|
||||||
pub att: Attribute
|
// pub stat: Stat,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn att_roll(value: u64, att: Attribute) -> Roll {
|
#[derive(Debug,Clone)]
|
||||||
let mut rng = thread_rng();
|
pub struct Stat {
|
||||||
let roll: u64 = rng.gen();
|
value: u64,
|
||||||
return Roll { att, value, roll, result: value & roll };
|
}
|
||||||
|
|
||||||
|
type Dmg = Stat;
|
||||||
|
type Def = Stat;
|
||||||
|
type Stam = Stat;
|
||||||
|
type Hp = Stat;
|
||||||
|
|
||||||
|
impl Stat {
|
||||||
|
fn roll(&self) -> Roll {
|
||||||
|
let mut rng = thread_rng();
|
||||||
|
let roll: u64 = rng.gen();
|
||||||
|
return Roll { roll, result: self.value & roll };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Hp {
|
||||||
|
fn dmg(&mut self, dmg: u64) -> Hp {
|
||||||
|
Hp {
|
||||||
|
value: self.value.saturating_sub(dmg)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_roll(r: &Roll) {
|
fn print_roll(r: &Roll) {
|
||||||
@ -38,10 +51,10 @@ pub struct Cryp {
|
|||||||
pub id: Uuid,
|
pub id: Uuid,
|
||||||
// todo
|
// todo
|
||||||
// make attributes hold this value
|
// make attributes hold this value
|
||||||
pub dmg: u64,
|
pub dmg: Dmg,
|
||||||
pub def: u64,
|
pub def: Def,
|
||||||
pub stam: u64,
|
pub stam: Stam,
|
||||||
pub hp: u64,
|
pub hp: Hp,
|
||||||
pub xp: u64,
|
pub xp: u64,
|
||||||
pub lvl: u8,
|
pub lvl: u8,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
@ -57,10 +70,10 @@ impl Cryp {
|
|||||||
let id = Uuid::new_v4();
|
let id = Uuid::new_v4();
|
||||||
return Cryp {
|
return Cryp {
|
||||||
id,
|
id,
|
||||||
dmg: 0,
|
dmg: Dmg { value: 0},
|
||||||
def: 0,
|
def: Def { value: 0},
|
||||||
stam: 0,
|
stam: Stam { value: 0},
|
||||||
hp: 0,
|
hp: Hp { value: 0},
|
||||||
lvl: 0,
|
lvl: 0,
|
||||||
xp: 0,
|
xp: 0,
|
||||||
name: String::new()
|
name: String::new()
|
||||||
@ -92,8 +105,8 @@ impl Cryp {
|
|||||||
|
|
||||||
pub fn turn(&self) -> Turn {
|
pub fn turn(&self) -> Turn {
|
||||||
// println!("{:?}'s turn:", c.name);
|
// println!("{:?}'s turn:", c.name);
|
||||||
let dmg = att_roll(self.dmg, Attribute::Dmg);
|
let dmg = self.dmg.roll();
|
||||||
let def = att_roll(self.def, Attribute::Def);
|
let def = self.def.roll();
|
||||||
|
|
||||||
print_roll(&dmg);
|
print_roll(&dmg);
|
||||||
print_roll(&def);
|
print_roll(&def);
|
||||||
@ -101,7 +114,6 @@ impl Cryp {
|
|||||||
return Turn { dmg, def }
|
return Turn { dmg, def }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn create(mut self) -> Cryp {
|
pub fn create(mut self) -> Cryp {
|
||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
let lvl_as_two_pwr = 2_u64.pow(self.lvl.into());
|
let lvl_as_two_pwr = 2_u64.pow(self.lvl.into());
|
||||||
@ -112,9 +124,9 @@ impl Cryp {
|
|||||||
|
|
||||||
self.xp = lvl_as_two_pwr;
|
self.xp = lvl_as_two_pwr;
|
||||||
|
|
||||||
self.dmg = rng.gen_range(1, max);
|
self.dmg = Dmg { value: rng.gen_range(1, max) };
|
||||||
self.def = rng.gen_range(1, max);
|
self.def = Def { value: rng.gen_range(1, max) };
|
||||||
self.stam = rng.gen_range(1, max);
|
self.stam = Stam { value: rng.gen_range(1, max) };
|
||||||
self.hp = self.stam;
|
self.hp = self.stam;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
@ -122,7 +134,6 @@ impl Cryp {
|
|||||||
pub fn assign_dmg(&mut self, opp: &Cryp, plr_t: &Turn, opp_t: &Turn) -> &mut Cryp {
|
pub fn assign_dmg(&mut self, opp: &Cryp, plr_t: &Turn, opp_t: &Turn) -> &mut Cryp {
|
||||||
let final_dmg = opp_t.dmg.result.saturating_sub(plr_t.def.result);
|
let final_dmg = opp_t.dmg.result.saturating_sub(plr_t.def.result);
|
||||||
let blocked = opp_t.dmg.result.saturating_sub(final_dmg);
|
let blocked = opp_t.dmg.result.saturating_sub(final_dmg);
|
||||||
let hp = self.hp.saturating_sub(final_dmg);
|
|
||||||
|
|
||||||
println!("{:?} deals {:?} dmg to {:?} ({:?} blocked / {:?} hp remaining)"
|
println!("{:?} deals {:?} dmg to {:?} ({:?} blocked / {:?} hp remaining)"
|
||||||
,opp.name
|
,opp.name
|
||||||
@ -148,9 +159,9 @@ mod tests {
|
|||||||
.named("hatchling".to_string())
|
.named("hatchling".to_string())
|
||||||
.level(2)
|
.level(2)
|
||||||
.create();
|
.create();
|
||||||
assert!(level_two.dmg <= 2_u64.pow(2));
|
// assert!(level_two.dmg <= 2_u64.pow(2));
|
||||||
assert!(level_two.def <= 2_u64.pow(2));
|
// assert!(level_two.def <= 2_u64.pow(2));
|
||||||
assert!(level_two.stam < 2_u64.pow(2));
|
// assert!(level_two.stam < 2_u64.pow(2));
|
||||||
println!("{:?}", level_two);
|
println!("{:?}", level_two);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user