improve combat system
This commit is contained in:
28
src/game.rs
28
src/game.rs
@@ -49,8 +49,10 @@ impl Game {
|
||||
fn player_reached_goal(&mut self) -> bool {
|
||||
match self.next_element(0, 0) {
|
||||
None => {}
|
||||
Some(a) => if a == StructureElement::End {
|
||||
return true
|
||||
Some(a) => {
|
||||
if a == StructureElement::End {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
};
|
||||
false
|
||||
@@ -153,6 +155,7 @@ impl Game {
|
||||
.discover(&Position::new(player_level, new_x, new_y));
|
||||
(-dx, -dy)
|
||||
}
|
||||
|
||||
pub fn player_fights_monster(&mut self) -> bool {
|
||||
let player_pos = &self.player.get_immutable_position();
|
||||
let player_level = player_pos.get_level();
|
||||
@@ -162,12 +165,21 @@ impl Game {
|
||||
None => {}
|
||||
Some(m) => {
|
||||
// TODO fight the monster
|
||||
self.player.change_life(-1);
|
||||
m.decrease_life(1);
|
||||
self.messages
|
||||
.insert(0, format!("{} hits you.", m.get_name()).to_string());
|
||||
self.messages
|
||||
.insert(0, format!("you hit {}.", m.get_name()).to_string());
|
||||
|
||||
let monster_dmg = m.damage() as i16;
|
||||
let player_dmg = self.player.damage();
|
||||
self.player.change_life(-monster_dmg);
|
||||
m.decrease_life(player_dmg);
|
||||
|
||||
// inform player
|
||||
self.messages.insert(
|
||||
0,
|
||||
format!("{} hits you for {} damage.", m.get_name(), monster_dmg).to_string(),
|
||||
);
|
||||
self.messages.insert(
|
||||
0,
|
||||
format!("you hit {} for {} damage.", m.get_name(), player_dmg).to_string(),
|
||||
);
|
||||
// monster died, player gains experience
|
||||
if m.is_dead() {
|
||||
self.player.gain_experience(m.get_experience_gain());
|
||||
|
||||
Reference in New Issue
Block a user