mobs use defensive spells properly
This commit is contained in:
parent
badd7a8aba
commit
1d9a057775
@ -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() {
|
||||
|
||||
@ -10,7 +10,11 @@ strangle
|
||||
|
||||
|
||||
## NOW
|
||||
* reduce inventory
|
||||
* mobs heal own team
|
||||
* clean up categories
|
||||
|
||||
* cryp speed
|
||||
* modifies skill base speed
|
||||
|
||||
## SOON
|
||||
* aoe skills
|
||||
|
||||
@ -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)];
|
||||
while target.is_ko() {
|
||||
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 = 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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -107,6 +107,7 @@ fn zone_3v3_healer_boss(player_lvl: u8) -> Vec<Cryp> {
|
||||
.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<Cryp> {
|
||||
.named(&"quarry".to_string())
|
||||
.level(player_lvl)
|
||||
.learn(Skill::Attack)
|
||||
.learn(Skill::Evade)
|
||||
.learn(Skill::Stun)
|
||||
.create();
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user