"HUMAN_LIGHT_INF_CONTROL_SIEGE"
{
	INT my_unit_recno 
	INT can_attach_flag
	INT attach_point_index
	INT des_x
	INT des_y
	INT des_z

	my_unit_recno = FUNC("get_character_recno") 

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

	INT attach_recno
	attach_recno = FUNC("get_attaching_unit_recno", my_unit_recno)

	if( attach_recno <= 0 )
	{
		can_attach_flag = FUNC("can_attach", item_recno)

		if( can_attach_flag == 0 )
		{
			ACTION("give_order" , my_unit_recno , "SPECIAL_MOVEMENT" , 3 , 0 , 1 , 0 , 1 , 0, 40000)
		}
		if( can_attach_flag == 1 )
		{
			if ( FUNC("get_curr_task_para", my_unit_recno, 2) == 0 )
			{
				attach_point_index = FUNC("get_nearest_attach_point", my_unit_recno, item_recno, "M")

				if( attach_point_index >= 0 )
				{
					des_x = FUNC("get_nearest_attach_point_x", item_recno, attach_point_index)
					des_y = FUNC("get_nearest_attach_point_y", item_recno, attach_point_index)
					des_z = FUNC("get_nearest_attach_point_z", item_recno, attach_point_index)
					ACTION("give_order", my_unit_recno, "MOVE_TO_TARGET", 10, 0, des_x, des_y, des_z, 0, 10000)	
					FUNC("attach_unit", my_unit_recno, item_recno, "M", 10)
				}
			}
			else
			{
				attach_point_index = FUNC("get_nearest_attach_point", my_unit_recno, item_recno, "F")

				if( attach_point_index >= 0 )
				{
					des_x = FUNC("get_nearest_attach_point_x", item_recno, attach_point_index)
					des_y = FUNC("get_nearest_attach_point_y", item_recno, attach_point_index)
					des_z = FUNC("get_nearest_attach_point_z", item_recno, attach_point_index)
					ACTION("give_order", my_unit_recno, "MOVE_TO_TARGET", 10, 0, des_x, des_y, des_z, 0, 10000)	
					FUNC("attach_unit", my_unit_recno, item_recno, "F", 10)
				}
			}
		}
	}
	else if ( FUNC("dist_to_attaching_point", my_unit_recno) > 14.2 )
	{
		FUNC("detach_unit", attach_recno, FUNC("get_attaching_index", my_unit_recno))
		ACTION("stop_all_order", my_unit_recno) 
	}
	else
	{
		ACTION("stop_all_order", my_unit_recno) 
	}

	exit
}
