// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,target;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead
	if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
		set_flag(get_memory_cell(1),get_memory_cell(2),1);

	message_dialog("The caverns shake from the rage-filled death scream of the ogre magus. It bleeds profusely as it stumbles on its knees, roaring its agony all the way. It falls silent as it slumps on all four, still laboriously breathing. Then it starts gagging.","You watch as flies start to pour out of the ogre's huge mouth. They quickly swarm into another cloud of vicious insects, ready to finish what the magus started! The ogre itself lies dead on the cave floor.");
	place_monster(my_loc_x(),my_loc_y() + 1,235,0);
break;

beginstate START_STATE;


	if ((get_flag(5,19) == 0) && (get_health(my_number()) < 300)) {
		set_flag(5,19,1);
		message_dialog("This ogre magus fights with blind fury. His melee attacks are formidable enough, but like the magus at the trade post, his magic power is incredibly strong. Once again you can feel him focusing his power.","There is a violent buzzing. Another swarm of hungry flies forms near you. This one the biggest you have seen yet!");
		activate_hidden_group(6);
		set_level(44,15);
		set_name(44,"Death swarm");
}		


	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking


	if ((get_flag(5,19) == 0) && (get_health(my_number()) < 300)) {
		set_flag(5,19,1);
		message_dialog("This ogre magus fights with blind fury. His melee attacks are formidable enough, but like the magus at the trade post, his magic power is incredibly strong. Once again you can feel him focusing his power.","There is a violent buzzing. Another swarm of hungry flies forms near you. This one the biggest you have seen yet!");
		activate_hidden_group(6);
		set_level(44,15);
		set_name(44,"Death swarm");
}	

	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3));
break;
