I cant help that much since I dont have that much know knowledge about c++ or rathena in general.
But I'm working on something similear that I can't get working the way I want it to.
I think your problem could be that you only use 1 mode instead of putting them together.
BUILDIN_FUNC(clone) in script.cpp used mode=static_cast<e_mode>(script_getnum(st,8)); to convert the string into modes.
So maybe using static_cast<e_mode>(your modes) would do the trick?
So as a example in your case:
mob_clone_spawn(pl_sd, sd->bl.m, x, y, "", master, static_cast<e_mode>(0x3885), 2, 20000);
This made my clones able to attack and use skills.
I have no idea what the static_cast thingy is actually there for though, and just copied what I thought was right.
So you probably still have to try around and see what you actually have to take there.
If it helps let me know.