Try this:
function script soullink { switch ( BaseJob ) { case 18: .@spirit = 445; break; case 20: case 15: .@spirit = 447; break; case 19: .@spirit = 455; break; case 4047: .@spirit = 448; break; case 17: .@spirit = 456; break; case 16: .@spirit = 449; break; case 12: .@spirit = 457; break; case 14: .@spirit = 450; break; case 10: .@spirit = 458; break; case 23: .@spirit = 451; break; case 11: .@spirit = 460; break; case 7: .@spirit = 452; break; case 4049: .@spirit = 461; break; case 8: .@spirit = 454; break; case 9: .@spirit = 453; break; } sc_start4 SC_SOULLINK, -1, 5, .@spirit,0,0; skilleffect .@spirit, 5; // Start Soul Link Effect. end;}
(I don't know why there was .@j there instead of SC_SOULLINK or 185, but since it's not initialized anywhere it started status #0, which is SC_STONE)
Otherwise it should work, I used something like this once and it was providing full link benefits.