File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -318,15 +318,21 @@ impl Game {
318318
319319 fn combat ( & mut self ) -> String {
320320 let mut damage = 0 ;
321+ let mut last = String :: new ( ) ;
321322 let res = self . items . iter ( ) . fold ( String :: new ( ) , |acc, ( id, ent) | {
322323 if ent. is_in ( self . player_location ( ) ) && ent. is_aggressive ( ) && * id != self . player {
323324 damage += ent. damage ( ) ;
325+ last = ent. name ( ) . to_owned ( ) ;
324326 format ! ( "{}\n \n The {} hits you." , acc, ent. name( ) ) // TODO: random different messages
325327 } else {
326328 acc
327329 }
328330 } ) ;
329331
332+ if !last. is_empty ( ) {
333+ self . last_it = last;
334+ }
335+
330336 let player = self . item_mut ( & self . player . to_owned ( ) ) ;
331337 player. hurt ( damage) ;
332338
@@ -346,8 +352,10 @@ impl Game {
346352 enemy_item. hurt ( damage) ;
347353
348354 let enemy_name = enemy_item. name ( ) . to_owned ( ) ;
349- let dies = if self . item ( enemy) . hp ( ) <= 0 {
350- self . items . remove ( enemy) ;
355+ let dies = if enemy_item. hp ( ) <= 0 {
356+ if enemy != self . player {
357+ self . items . remove ( enemy) ;
358+ }
351359
352360 let player_location = self . player_location ( ) . to_owned ( ) ;
353361 let loot = self
@@ -361,7 +369,7 @@ impl Game {
361369 . collect :: < Vec < _ > > ( ) ;
362370
363371 if loot. is_empty ( ) {
364- " It dies." . to_owned ( )
372+ " It dies." . to_owned ( ) // TODO: death message
365373 } else {
366374 if loot. len ( ) == 1 {
367375 self . last_it = loot[ 0 ] . to_owned ( ) ;
You can’t perform that action at this time.
0 commit comments