"SPECIAL_GEN_DEFEND_PLACE"
{
	INT my_unit_recno 
	my_unit_recno = FUNC("get_character_recno") 

	INT random_number 
	INT enemy_recno 
//	INT near_enemy_recno 
	INT enemy_item_recno

	INT place_recno 
	place_recno = FUNC("get_curr_task_para" , my_unit_recno, 1)

	INT view_angle 
	view_angle = FUNC("get_place_unit_view_angle", place_recno) 

	// don't do anything if all the gates inside the place are closed
//	if( FUNC("has_gate_through", place_recno) == 0 )
//	{
//		exit
//	}

	// attack! all enemies in the place

	enemy_recno = FUNC("search_for_unit" , my_unit_recno, "EP" , 100, 0, place_recno, 0) 
//	near_enemy_recno = FUNC("search_for_unit" , my_unit_recno , "EP" , 40, 0, place_recno , 0) 
	enemy_item_recno = FUNC("search_for_item" , my_unit_recno, "EGC" , 100, 0) 

	if( enemy_recno || enemy_item_recno )
	{
		FUNC("set_unit_mode" , my_unit_recno, "ATTACK")
	}

	if ( enemy_recno == 0 && enemy_item_recno == 0 )
	{
		FUNC("set_unit_mode" , my_unit_recno, "ACTIVE" )
	}

	if( FUNC("is_attack_mode", my_unit_recno) )
	{
		view_angle = FUNC("set_place_unit_view_angle", place_recno, 0) // reset the view angle if start attack

//		if( near_enemy_recno )	// if the enemy if too near , try move back
//		{
//			random_number = FUNC("random_number" , 100)
//			if( random_number < 90 )
//			{
//				ACTION("give_order" , my_unit_recno, "TURN" , 3 , 0 , FUNC("get_rotation" , my_unit_recno, near_enemy_recno) , 0 , 0 , 0, 2500)
//				ACTION("give_order" , my_unit_recno, "SHIFT" , 1 , 0 , 3 , 0 , 0 , 0, 1500) 
//				exit
//			}
//		
//		}
//
		if( enemy_recno )
		{
			if( FUNC("will_be_attacked", my_unit_recno, enemy_recno) )
			{	// try to block
				if( FUNC("random_number", 3) == 0 ) // 1/1 to block
				{
					ACTION("give_order" , my_unit_recno, "BLOCK" , 4 , 0 , 0 , 0 , 0 , 0, 2500)
					exit					
				}
			}

			ACTION("give_order" , my_unit_recno, "TURN" , 3 , 0 , FUNC("get_rotation" , my_unit_recno, enemy_recno) , 0 , 0 , 0, 2500)
			SCRIPT("script\unit\special_gen_attack_share.txt")
			exit		
		}

		if( enemy_item_recno )
		{
			ACTION("give_order" , my_unit_recno, "TURN" , 3 , 0 , FUNC("get_item_rotation" , my_unit_recno, enemy_item_recno) , 0 , 0 , 0, 2500)
			SCRIPT("script\unit\special_gen_attack_share.txt")
			exit		
		}

		exit
	}

	if( FUNC("is_idle_mode", my_unit_recno) )
	{
		enemy_recno = FUNC("search_for_unit" , my_unit_recno, "EP" , 1600, 0, place_recno , view_angle) 

		if( enemy_recno )
		{
			ACTION("give_order" , my_unit_recno, "APPROACH_ENEMY" , 1 , 0 , enemy_recno , 70 , 70 , 0, 30000)
			exit
		}

//		enemy_recno = FUNC("search_for_unit" , my_unit_recno, "EP" , 1500, 0, place_recno, 0) 
//
//		if( enemy_recno )
//		{
//			ACTION("give_order" , my_unit_recno, "APPROACH_ENEMY" , 2 , 1 , enemy_recno , 70 , 70 , 0, 20000)
//			exit
//		}
//
		FUNC("set_unit_mode" , my_unit_recno, "IDLE" )

		if( enemy_recno == 0 )
		{
			ACTION("give_order" , my_unit_recno, "APPROACH_PLACE" , 1 , 1 , place_recno , 0 , 0 , 0, 30000)
		}
	}
}
   


