Enemies how fight back when cornered, either by being blocked by another enemy or when at a dead end walls.
This commit is contained in:
		
							parent
							
								
									586343a614
								
							
						
					
					
						commit
						fc8e65f4d6
					
				
					 3 changed files with 8 additions and 3 deletions
				
			
		|  | @ -15,8 +15,10 @@ namespace combat { | |||
| 
 | ||||
|       if(enemy.ai.active()) { | ||||
|         if(enemy.ai.wants_to("kill_enemy")) { | ||||
|           fmt::println(">> enemy {} wants to KILL", entity); | ||||
|           pending_actions.emplace_back(enemy, BattleAction::ATTACK); | ||||
|         } else if(enemy.ai.wants_to("run_away")) { | ||||
|           fmt::println(">> enemy {} wants to RUN", entity); | ||||
|           pending_actions.emplace_back(enemy, BattleAction::ESCAPE); | ||||
|         } | ||||
|       } | ||||
|  |  | |||
|  | @ -194,7 +194,6 @@ namespace gui { | |||
|         } | ||||
|        } break; | ||||
|       case MOUSE_CLICK: | ||||
|         fmt::println("CLICK: {}", $router.left_button); | ||||
|         mouse_action(guecs::NO_MODS); | ||||
|         break; | ||||
|       case MOUSE_MOVE: { | ||||
|  |  | |||
|  | @ -102,16 +102,20 @@ void System::enemy_pathing() { | |||
|     if(ent != level.player) { | ||||
|       auto& enemy_ai = world.get<ai::EntityAI>(ent); | ||||
|       Point out = position.location; // copy
 | ||||
|       bool found_path = false; | ||||
| 
 | ||||
|       if(enemy_ai.wants_to("find_enemy")) { | ||||
|         map.random_walk(out, motion.random, PATHING_TOWARD); | ||||
|         found_path = map.random_walk(out, motion.random, PATHING_TOWARD); | ||||
|       } else if(enemy_ai.wants_to("run_away")) { | ||||
|         map.random_walk(out, motion.random, PATHING_AWAY); | ||||
|         found_path = map.random_walk(out, motion.random, PATHING_AWAY); | ||||
|       } else { | ||||
|         motion = {0,0}; | ||||
|         return; // enemy doesn't want to move
 | ||||
|       } | ||||
| 
 | ||||
|       enemy_ai.set_state("cant_move", !found_path); | ||||
|       enemy_ai.update(); | ||||
| 
 | ||||
|       motion = { int(out.x - position.location.x), int(out.y - position.location.y)}; | ||||
|     } | ||||
|   }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Zed A. Shaw
						Zed A. Shaw