How to make local objects link mantain their hierachy in Blender 2.8 python? (SOLVED)
I somehow accidentally using Operator Search (F3) and type in Make Local to selected objects, and the hierarchy perfectly maintain, though using operator is not really ideal, but it works at the moment.
EDIT : Please make sure you turn off Empty and Curve object display, it need to local mesh first to mantain hierarchy

so I change the script to :

# make them local
for obj in scene.objects:
    if obj.name.startswith("C_"):
        bpy.ops.object.select_pattern(pattern='C_*')
        bpy.ops.object.make_local(type='SELECT_OBJECT')


So I hope this can be helpful

Thanks