From 9ea8361ba9d530417eccf94b458066600d72eb06 Mon Sep 17 00:00:00 2001 From: ntr Date: Sun, 19 Aug 2018 14:18:08 +1000 Subject: [PATCH] combat --- README.md | 12 ++++++++++++ src/combat.rs | 25 ++++++++++++++++++++----- src/cryp.rs | 17 +++++++++++++++++ src/lib.rs | 24 ------------------------ 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index cce4403f..d1ec8ef4 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,21 @@ ## Rolling stat & rng block hash or totally random +roll server that prints a roll every second? friendship on ties? +Def +0001011011001100110101000000101111100110101111110100100001000001 - roll +0000000000000000000000000000000000000000000000000000000000001111 ^ steel armour +0000000000000000000000000000000000000000000000000000001111000000 ^ stoney trait +0001011011001100110101000000101111100110101111110100101111001111 = modified roll +0000000000000000000000000000000000000000000000000000000111000010 & def attribute +0000000000000000000000000000000000000000000000000000000111000010 = roll w/ stats + +0000000000000000000000000000000000000000000000000000000001000000 = roll w/out stats + + ## missions also the idea is like the currency is kinda like path right diff --git a/src/combat.rs b/src/combat.rs index 1d11583c..3997e3c2 100644 --- a/src/combat.rs +++ b/src/combat.rs @@ -33,12 +33,10 @@ struct Encounter { success: bool, } - - fn att_roll(value: u64, att: Attribute) -> Roll { let mut rng = thread_rng(); let roll: u64 = rng.gen(); - return Roll { att, value, roll, result: value & roll }; + return Roll { att, value, roll, result: value ^ roll }; } fn print_roll(r: &Roll) { @@ -54,8 +52,8 @@ fn cryp_turn(c: &Cryp) -> Turn { let dmg = att_roll(c.dmg, Attribute::Dmg); let def = att_roll(c.def, Attribute::Def); - // print_roll(&dmg); - // print_roll(&def); + print_roll(&dmg); + print_roll(&def); return Turn { dmg, def } } @@ -149,6 +147,7 @@ pub fn levelling(mut c: Cryp) -> Cryp { c = c.add_xp(); println!("{:?} now has {:?} xp and is lvl {:?}", c.name, c.xp, c.lvl); + // LEVEL CAP if c.lvl == 12 { break c; } @@ -157,3 +156,19 @@ pub fn levelling(mut c: Cryp) -> Cryp { } } +#[cfg(test)] +mod tests { + use *; + + #[test] + fn pve_test() { + let player = Cryp::new() + .named("ca phe sua da".to_string()) + .level(2) + .create(); + + levelling(player); + return; + } + +} diff --git a/src/cryp.rs b/src/cryp.rs index 7d65c1e7..3f4d4faf 100644 --- a/src/cryp.rs +++ b/src/cryp.rs @@ -74,3 +74,20 @@ impl Cryp { } +#[cfg(test)] +mod tests { + use *; + + #[test] + fn create_cryp_test() { + let level_two = Cryp::new() + .named("hatchling".to_string()) + .level(2) + .create(); + assert!(level_two.dmg <= 2_u64.pow(2)); + assert!(level_two.def <= 2_u64.pow(2)); + assert!(level_two.stam < 2_u64.pow(2)); + println!("{:?}", level_two); + return; + } +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 30f13cbd..baa6d236 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,29 +45,5 @@ mod tests { main(); return; } - #[test] - fn create_cryp_test() { - let lvl_eight = Cryp::new() - .named("hatchling".to_string()) - .level(2) - .create(); - assert!(lvl_eight.dmg <= 2_u64.pow(2)); - assert!(lvl_eight.def <= 2_u64.pow(2)); - assert!(lvl_eight.stam < 2_u64.pow(2)); - println!("{:?}", lvl_eight); - return; - } - - #[test] - fn pve_test() { - let player = Cryp::new() - .named("ca phe sua da".to_string()) - .level(2) - .create(); - - levelling(player); - return; - } - }