diff --git a/client/src/scenes/background.js b/client/src/scenes/background.js index b60e4b94..7baaadd7 100644 --- a/client/src/scenes/background.js +++ b/client/src/scenes/background.js @@ -151,10 +151,10 @@ class Background extends Phaser.Scene { this.customPipeline = game.renderer.addPipeline('Custom', new CustomPipeline(game)); this.customPipeline.setFloat2('resolution', 1600, 1000); - const sprite = this.add.sprite(0, 0); + const sprite = this.add.sprite(800, 500); sprite.setPipeline('Custom'); - sprite.displayWidth = 3200; - sprite.displayHeight = 2000; + sprite.displayWidth = 1600 * window.devicePixelRatio; + sprite.displayHeight = 1000 * window.devicePixelRatio; } update() { diff --git a/server/WORKLOG.md b/server/WORKLOG.md index 17ccf8e6..2e0ef676 100644 --- a/server/WORKLOG.md +++ b/server/WORKLOG.md @@ -10,7 +10,11 @@ strangle ## NOW -* reduce inventory +* mobs heal own team + * clean up categories + +* cryp speed + * modifies skill base speed ## SOON * aoe skills diff --git a/server/src/game.rs b/server/src/game.rs index 7e94bd32..13f7da41 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -209,7 +209,6 @@ impl Game { let mobs = self.team_by_id(mob_team_id).clone(); let player_team = self.teams.iter().find(|t| t.id != mob_team_id).unwrap().clone(); - let player_len = player_team.cryps.len(); for mob in mobs.cryps.iter() { let skill = mob.mob_select_skill(); @@ -217,10 +216,22 @@ impl Game { match skill { Some(s) => { let mut rng = thread_rng(); - let mut target = &player_team.cryps[rng.gen_range(0, player_len)]; + + // the mut marks it as being able to be called + // more than once + let mut find_target = || { + match s.defensive() { + true => &mobs.cryps[rng.gen_range(0, mobs.cryps.len())], + false => &player_team.cryps[rng.gen_range(0, player_team.cryps.len())], + } + }; + + let mut target = find_target(); + while target.is_ko() { - target = &player_team.cryps[rng.gen_range(0, player_len)]; + target = find_target(); } + match self.add_skill(mob_team_id, mob.id, Some(target.id), s) { Ok(_) => (), Err(e) => println!("{:?} could not add pve skill", e), @@ -284,7 +295,7 @@ impl Game { // check here as well so uncastable spells don't go on the stack let check = cryp.disabled(skill); if check.disabled { - return Err(format_err!("cryp cannot cast that skill ({:?})", check.effects)); + return Err(format_err!("cryp cannot cast that skill {:?}", check.effects)); } } diff --git a/server/src/mob.rs b/server/src/mob.rs index 8594f69b..79c1e795 100644 --- a/server/src/mob.rs +++ b/server/src/mob.rs @@ -107,6 +107,7 @@ fn zone_3v3_healer_boss(player_lvl: u8) -> Vec { .named(&"coinage".to_string()) .level(player_lvl) .learn(Skill::Attack) + .learn(Skill::Evade) .learn(Skill::Block) .create(); @@ -123,6 +124,7 @@ fn zone_3v3_healer_boss(player_lvl: u8) -> Vec { .named(&"quarry".to_string()) .level(player_lvl) .learn(Skill::Attack) + .learn(Skill::Evade) .learn(Skill::Stun) .create(); diff --git a/server/src/skill.rs b/server/src/skill.rs index 2081ebf7..0b271c9c 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -757,6 +757,21 @@ impl Skill { _ => false, } } + + pub fn defensive(&self) -> bool { + match self { + Skill::Heal | + Skill::Triage | + Skill::Empower | + Skill::Purify | + Skill::Calm | + Skill::Evasion | + Skill::Parry | + Skill::Block | + Skill::Evade => true, + _ => false, + } + } } fn attack(cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {