Injecting packets was probably bad wording on my part.
Piping is better. Basically,
additional information would be written to the stream, not written into or replacing existing responses.
While I'm generally all about WCF, and this would almost definitely use a net.tcp endpoint for server-server communication, distributing dlls or to the servers wouldn't work. Unfortunately, I can't guarantee game logic will be implemented on each server the same way. One server may have completely rewritten PlayerMobile and unfortunately PlayerMobile doesn't inherit from an interface so I can't specify a contract. My only choice would be to run a compatibility test when the server installs a "script" and show an incompatibility warning if it doesn't work. Hell, I don't even know if a server has PlayerMobile and unfortunately almost no classes in RunUO inherit from interfaces.
The best (worst) idea I can come up with is emitting a custom dll that includes RunUO, with all of its magic and debatably poorly architected code, for every server with all of their chosen quests/events baked in. Packet events would be routed to that running in memory on that server instead of mine. (think Inception [must go deeper]) That would be easy enough to do but I feel like that would somewhat awkward and might restrict social aspect I was hoping for. It also opens up a wider gap for cheating if I want to record metrics from events (for rankings / top lists / etc)
On the other hand, if the entire processing of those packets is done by my server, I
can guarantee a script will work as expected.
I definitely want to stay away from distributing versioned dlls directly. Ideally, I'd have a website set up with a relatively simple workflow editor for quest/event construction. Those definitions would be public and I could control prerequisites from my end to ensure the widest "script" compatibility.
Another pre-requisite is plug-and-play. Or drop-and-run? Whatever. Install a base script with no code edits would be a hard requirement.
(to be clear, the odds of me getting even 1% of this idea done are negligible. It's fun to think about though
)