I think the best way in handling this would trace for specific names so it grabs on to specific ledges by name. That way it’s much more modular in design and can be changed in size or variation for whatever suits your need.
Typically when detecting ledges on objects you’ll run into what mentioned. Not only that but… I mean if you make a modular system your lower end programmers(If you have any) will be much more happy with you in the future.
Outside of that yeah i’d just handle it by calling custom animations from a function to really give that appeal and of course depending on the name of the object it’s traced will determine the type of animation to see if it’s a vine or concrete, ect, ect. Then of course use anim_montages to play the proper particle for dust falling or whatever additional effect you might want.