First, you want different link classes (one for each type you need).
Then you probably want to create a new GoToolLinkingNew class, and override StartNewLink. In StartNewLink, look at the port and the port.Parent to determine what kind of link you want, and set this.View.NewLinkPrototype to be that kind of link class. Once you’ve set the NewLinkPrototype, you can call base.StartNewLink and you’ll get the right link.
See the User Guide, samples and many notes here on how to create Tools and initialize them.