add mechanism for level gain
This commit is contained in:
63
src/level.rs
63
src/level.rs
@@ -149,41 +149,64 @@ impl Level {
|
||||
{
|
||||
let monster_dmg = self.monsters[index].damage() as i16;
|
||||
player.change_life(-monster_dmg);
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"{} hits you for {} damage.",
|
||||
self.monsters[index].get_name(),
|
||||
monster_dmg
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
|
||||
let player_dmg = player.damage();
|
||||
self.monsters[index].decrease_life(player_dmg);
|
||||
|
||||
// if the attack did not kill the opponent, back down
|
||||
if !player.is_dead() {
|
||||
if player.is_dead() {
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"you hit {} for {} damage and kill it.",
|
||||
"{} hits you for {} damage and kills you.",
|
||||
self.monsters[index].get_name(),
|
||||
player_dmg
|
||||
monster_dmg
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
self.monsters[index].get_position().change(-dx, -dy);
|
||||
} else {
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"you hit {} for {} damage.",
|
||||
"{} hits you for {} damage.",
|
||||
self.monsters[index].get_name(),
|
||||
player_dmg
|
||||
monster_dmg
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
// player not dead => monster can occupy new position
|
||||
self.monsters[index].get_position().change(-dx, -dy);
|
||||
// player fights back
|
||||
let player_dmg = player.damage();
|
||||
self.monsters[index].decrease_life(player_dmg);
|
||||
if self.monsters[index].is_dead() {
|
||||
let level_up: bool = player
|
||||
.gain_experience(self.monsters[index].get_experience_gain());
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"you hit {} for {} damage and kill it.",
|
||||
self.monsters[index].get_name(),
|
||||
player_dmg
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
if level_up {
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"you reach a new experience level, it's now {}",
|
||||
player.get_experience_level(),
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
} else {
|
||||
messages.insert(
|
||||
0,
|
||||
format!(
|
||||
"you hit {} for {} damage.",
|
||||
self.monsters[index].get_name(),
|
||||
player_dmg
|
||||
)
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user