Merge branch 'core' of ssh://git.mnml.gg:40022/~/mnml into core
This commit is contained in:
commit
85012943ac
@ -533,6 +533,8 @@ impl Construct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn damage(&mut self, amount: usize, colour: Colour) -> Vec<Event> {
|
pub fn damage(&mut self, amount: usize, colour: Colour) -> Vec<Event> {
|
||||||
|
if self.is_ko() { return vec![Event::TargetKo { construct: self.id }] }
|
||||||
|
|
||||||
match colour {
|
match colour {
|
||||||
Colour::Red => self.deal_red_damage(amount),
|
Colour::Red => self.deal_red_damage(amount),
|
||||||
Colour::Blue => self.deal_blue_damage(amount),
|
Colour::Blue => self.deal_blue_damage(amount),
|
||||||
@ -543,7 +545,6 @@ impl Construct {
|
|||||||
fn deal_red_damage(&mut self, amount: usize) -> Vec<Event> {
|
fn deal_red_damage(&mut self, amount: usize) -> Vec<Event> {
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
|
|
||||||
if self.is_ko() { return events; }
|
|
||||||
let construct = self.id;
|
let construct = self.id;
|
||||||
|
|
||||||
let modified_amount = self.modified_amount(amount, Stat::RedDamageReceived);
|
let modified_amount = self.modified_amount(amount, Stat::RedDamageReceived);
|
||||||
@ -599,8 +600,6 @@ impl Construct {
|
|||||||
let red_healing = self.red_life.value - current_red_life;
|
let red_healing = self.red_life.value - current_red_life;
|
||||||
let overhealing = recharge - red_healing;
|
let overhealing = recharge - red_healing;
|
||||||
|
|
||||||
println!("{:?} {:?} {:?} {:?}", recharge, green_healing, red_healing, self.red_life);
|
|
||||||
|
|
||||||
if green_healing > 0 {
|
if green_healing > 0 {
|
||||||
events.push(
|
events.push(
|
||||||
Event::Healing {
|
Event::Healing {
|
||||||
@ -632,8 +631,6 @@ impl Construct {
|
|||||||
|
|
||||||
fn deal_blue_damage(&mut self, amount: usize) -> Vec<Event> {
|
fn deal_blue_damage(&mut self, amount: usize) -> Vec<Event> {
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
|
|
||||||
if self.is_ko() { return events; }
|
|
||||||
let construct = self.id;
|
let construct = self.id;
|
||||||
|
|
||||||
let modified_amount = self.modified_amount(amount, Stat::BlueDamageReceived);
|
let modified_amount = self.modified_amount(amount, Stat::BlueDamageReceived);
|
||||||
@ -716,7 +713,6 @@ impl Construct {
|
|||||||
|
|
||||||
fn red_healing(&mut self, amount: usize) -> Vec<Event> {
|
fn red_healing(&mut self, amount: usize) -> Vec<Event> {
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
if self.is_ko() { return events; }
|
|
||||||
|
|
||||||
let mods = self.effects.iter()
|
let mods = self.effects.iter()
|
||||||
.filter(|e| e.effect.modifications().contains(&Stat::RedHealingReceived))
|
.filter(|e| e.effect.modifications().contains(&Stat::RedHealingReceived))
|
||||||
@ -772,7 +768,6 @@ impl Construct {
|
|||||||
|
|
||||||
fn green_healing(&mut self, amount: usize) -> Vec<Event> {
|
fn green_healing(&mut self, amount: usize) -> Vec<Event> {
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
if self.is_ko() { return events; }
|
|
||||||
|
|
||||||
let mods = self.effects.iter()
|
let mods = self.effects.iter()
|
||||||
.filter(|e| e.effect.modifications().contains(&Stat::GreenHealingReceived))
|
.filter(|e| e.effect.modifications().contains(&Stat::GreenHealingReceived))
|
||||||
@ -824,7 +819,6 @@ impl Construct {
|
|||||||
|
|
||||||
fn blue_healing(&mut self, amount: usize) -> Vec<Event> {
|
fn blue_healing(&mut self, amount: usize) -> Vec<Event> {
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
if self.is_ko() { return events; }
|
|
||||||
|
|
||||||
let mods = self.effects.iter()
|
let mods = self.effects.iter()
|
||||||
.filter(|e| e.effect.modifications().contains(&Stat::BlueHealingReceived))
|
.filter(|e| e.effect.modifications().contains(&Stat::BlueHealingReceived))
|
||||||
@ -879,7 +873,7 @@ impl Construct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn effect_add(&mut self, effect: ConstructEffect) -> Vec<Event> {
|
pub fn effect_add(&mut self, effect: ConstructEffect) -> Vec<Event> {
|
||||||
if self.is_ko() { return vec![] }
|
if self.is_ko() { return vec![Event::TargetKo { construct: self.id }] }
|
||||||
|
|
||||||
if self.affected(Effect::Banish) { panic!("banish immunity not fixt yet") }
|
if self.affected(Effect::Banish) { panic!("banish immunity not fixt yet") }
|
||||||
|
|
||||||
@ -906,7 +900,7 @@ impl Construct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn effect_remove(&mut self, effect: Effect) -> Vec<Event> {
|
pub fn effect_remove(&mut self, effect: Effect) -> Vec<Event> {
|
||||||
if self.is_ko() { return vec![] }
|
if self.is_ko() { return vec![Event::TargetKo { construct: self.id }] }
|
||||||
|
|
||||||
if let Some(p) = self.effects.iter().position(|ce| ce.effect == effect) {
|
if let Some(p) = self.effects.iter().position(|ce| ce.effect == effect) {
|
||||||
self.effects.remove(p);
|
self.effects.remove(p);
|
||||||
@ -922,7 +916,7 @@ impl Construct {
|
|||||||
|
|
||||||
pub fn remove_all(&mut self) -> Vec<Event> {
|
pub fn remove_all(&mut self) -> Vec<Event> {
|
||||||
let mut removals = vec![];
|
let mut removals = vec![];
|
||||||
if self.is_ko() { return removals }
|
if self.is_ko() { return vec![Event::TargetKo { construct: self.id }] }
|
||||||
|
|
||||||
while let Some(ce) = self.effects.pop() {
|
while let Some(ce) = self.effects.pop() {
|
||||||
removals.push(Event::Removal {
|
removals.push(Event::Removal {
|
||||||
|
|||||||
@ -423,8 +423,8 @@ impl Game {
|
|||||||
|c| c.effects
|
|c| c.effects
|
||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
.filter_map(|e| e.tick))
|
.filter_map(|e| e.tick)
|
||||||
.collect::<Vec<Cast>>();
|
).collect::<Vec<Cast>>();
|
||||||
|
|
||||||
// add them to the stack
|
// add them to the stack
|
||||||
self.stack.append(&mut ticks);
|
self.stack.append(&mut ticks);
|
||||||
@ -921,6 +921,7 @@ pub enum Event {
|
|||||||
Inversion { construct: Uuid },
|
Inversion { construct: Uuid },
|
||||||
Reflection { construct: Uuid },
|
Reflection { construct: Uuid },
|
||||||
Ko { construct: Uuid },
|
Ko { construct: Uuid },
|
||||||
|
TargetKo { construct: Uuid },
|
||||||
|
|
||||||
CooldownIncrease { construct: Uuid, turns: usize },
|
CooldownIncrease { construct: Uuid, turns: usize },
|
||||||
CooldownDecrease { construct: Uuid, turns: usize },
|
CooldownDecrease { construct: Uuid, turns: usize },
|
||||||
@ -1655,8 +1656,6 @@ mod tests {
|
|||||||
let target = game.players[1].constructs[0].id;
|
let target = game.players[1].constructs[0].id;
|
||||||
game.add_skill(player_id, source, target, Skill::Attack).unwrap();
|
game.add_skill(player_id, source, target, Skill::Attack).unwrap();
|
||||||
game = game.resolve_phase_start();
|
game = game.resolve_phase_start();
|
||||||
|
|
||||||
println!("{:?}", game);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1667,8 +1666,6 @@ mod tests {
|
|||||||
let target = game.players[1].constructs[0].id;
|
let target = game.players[1].constructs[0].id;
|
||||||
|
|
||||||
game.resolve(Cast::new(source, player_id, target, Skill::Bash));
|
game.resolve(Cast::new(source, player_id, target, Skill::Bash));
|
||||||
|
|
||||||
println!("{:?}", game.resolutions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1731,6 +1728,7 @@ mod tests {
|
|||||||
let target = game.players[1].constructs[0].id;
|
let target = game.players[1].constructs[0].id;
|
||||||
|
|
||||||
game.resolve(Cast::new(source, player_id, target, Skill::Siphon));
|
game.resolve(Cast::new(source, player_id, target, Skill::Siphon));
|
||||||
|
game = game.resolve_phase_start();
|
||||||
|
|
||||||
let last = game.resolutions.len() - 1;
|
let last = game.resolutions.len() - 1;
|
||||||
let resolutions = &game.resolutions[last];
|
let resolutions = &game.resolutions[last];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user