Ok, so this is quite a hard feature request. And it's a biggie.
What is it?
Basically, a system to allow simple events to be scripted and not hardcoded.
Why?
Say, for example. You want a boat.
You create a boat npc. You then give it in AI path to bring it into the dock, check if it's at the dock, if it is, warp people onto it, and have it leave the dock.
Or, you start a quest. Now, when you start the quest, you want some kind of ingame 'cut scene', or events to happen. E.g., you start the quest, and suddenly you're attack by a horde of enemies. Or a train pulls in. Or anything
Now, coding these would might not be too bad, but since this is an MMO, you're likely to have hundreds of events like this, since things are pretty bland without them, they're especially useful for quests aswell.
Now, I know we're generally against scripting in games, for for events like these, it's pretty useful, and actually, kinda needed.
The problems
Yeah, it's not a perfect system. It's gonna be slower than actual code, increases loading times, etc, but of course, the main problem is actually coding it, espeically with a wide range of events so it's acutally useful. Covering EVERYTHING people would use it for, is of course not possible, but if it's easily extendable, this shouldn't be much of a problem
One thing I'm not sure about, since I haven't dealt with them too much, is what you'd use for the scripts. I think Lua is generally used, but there is other stuff like GameMonkey, or a custom system could be written, but that's probably a lot of redundant work.
cant this be kept relatively simple with reusable code like "move to" and "warp character"?
as we are speaking about MMORPG and SERVER I myself would set system resources as a higher priority.
Bigger server = more costs.
so tbh I wouldnt recommend too many server side scripts, and those would be quite big.
I believe the cons are bigger than the pros
Well let me clarify something, since I think there is some confusion on how scripting is in NetGore. The scripting NetGore has now is compiled at runtime, just like any other scripting. You can't add/reload scripts on-the-fly, but that probably wouldn't be a lot of work to do (although it would be a lot of work to make the entities use the new script objects since you have to recreate them all).
One of the few things remaining for scripting is that you will be able to specify what type of NPC a NPC will be. That is, instead of every NPC being from the NPC class, you can specify specific classes. These classes you can either hard-code or put in scripts - ultimately, its almost exact same. Will probably do the same for items, too. This is already what the AI does.
I should also add that you can add support for any other .NET language you want. With a little more effort, you can use any non-.NET language as long as there is a good way to interact with it via .NET. So you can script all you want, most of the components are there to do it, you just have to decide where to make use of scripting yourself.
As I've mentioned before, I'm not going to be doing more more with scripting. To have a good scripting system that is significantly better than hard-coding it, it requires a hell of a lot of work. I'm not "against scripting", I just don't really have much motivation to spend too much time on it when it works just fine through code.
Though I'm not really sure how it'd be very beneficial here, either. Sure, you can probably write out stuff quicker in Lua, but other than that, what benefits does it bring you? Only thing I can really think of, besides the benefits of using another language, is that you could more easily inline code without giving it a proper container (such as what the new GameMessages do). However, that is still relatively easy to do.