Yep. All points to the fact it should be possible, in fact the WitcherScript seems very powerful to me (definitely on par with UnrealScript). The only problem is that documentation at this moment is very scarce and sadly absolutely required (have you seen player.ws? It's seven fucking thousand lines of code!), not to mention half of the comments and stuff remain in Polish (which is sometimes difficult to understand...sadly my Czech heritage helps me here only so-so).
Abilities are actually defined in a XML, they are pulled into the engine by a native C++ function - I haven't yet found the place where the XML modifiers are defined to see if you can add your own, so far it always ended in a native function
// Get list of attributes by attribute type
import final function GetAttributesByType( type : name, out attributes : array< name > );
I have no idea where this "type" is defined, though I'm sure it's somewhere.
As far as character model goes, mind you I haven't tried it yet, but I'm not sure what's stopping you from using the method as described in the wiki and simply not flagging it as not Geralt; but I would assume there are some reasons for that (???). Geralt has his own unique animations though and it is entirely possible he even has his unique skeleton which could be the problem? As far as I can tell looking at the code though, that flag is mostly used to block off functions that were deliberately deemed unneeded as a design choice for a temporary, non-Geralt character in the vanilla game.
As far as WitcherScript is concerned, we could really use some more info
