Well, I don't need access to the actual data for a lot of this. I create the data myself, store it in hash/array tables, and store these into files. From here any NPC can access these files at any time. In this way, as long as I have something that can deal damage, I can create my own damage formulas using this data. When it comes to creating new types of items, I can do that right now as long as I run that through the NPC. As for the combat system, the only possible way to do that is to create events that will track when a player clicks an NPC, from there you create an invisible NPC grid, you'll also need a sub routine that will force the player to auto de-select the NPC. After that, you make that NPC, or if the clicking is globally checked across the zone, you make the root NPC load up that player's table stored in a file named after the Player ID. From here, you retrieve things like the range of the weapon, cooldown, etc, whatever data you want. You can literally create weapons to any degree of customization with this. After that, check the player's last attack time and compare that with the weapon's cooldown to see if they can attack. From here, make them do the attack animation and damage the NPC that's within range of that weapon by collecting the player's coordinates, getting the player's heading, moving forward x, y, and z based on the heading and range, and from here collecting NPC IDs and or Player IDs along this path, which would require yet another sub routine = ). At this point, you use the not yet made sub routine quest::damage based on how direct the attack is ;o (in other words how much of the NPC is within the line of attack). To do this you can use the NPC coordinates and you can define a new data type for NPCs which determines the dimensions of an NPC : ), which is pretty easy to do : ).
Now, this is just an initial design for the combat system and this is the only way I can think of doing it right now. It's not hard placing all of the NPCs.. I can use a simple loop, but it's not that great of a design compared to what I'd rather do.. If it were possible to detect whenever the player just clicked and to detect where they clicked, then well, that'd be a lot better -.-. Also, I'd rather not do this in PERL.
Now, as for the system for allowing players to build cities and so on, that's pretty easy to do in EQ and that doesn't really do anything so far from the game's capabilities. The real things that go so far out are the combat system and spell system, but I think these would enhance the game a lot =).
Now, I'm a little worried about creating invisible NPC grids... I'd have to remove some of the collision ;o. And like I said before, the thought mapping of NPCs is insanely time consuming..
As for the rest, it can be done. Lately I've been collecting a large amount of high quality models to decorate zones -\- because while it's not illegal to release an s3d file with the same name as an EQ zone because it's not copyrighted as a trademark by them and you are not allowed to copyright a name, it is illegal to release any form of art create by someone, and releasing .s3d files with or even using EQ made models, textures, and or sound files would be in violation of copyright law.
Now, I do know how to do Objects in EQ and Items.. but I know it's not possible to replace character models because these are coded into the EQ Client.
The reason why I don't just make a new game is because I first want to test out these ideas, and the fastest way to test out ideas and come up with new ideas is through an already made game. I was away for a few years on wc3 come up with a lot of these designs I came back with.
__________________
//The Path of Chaos Server-
//Fate Industries
//Lots of stuff O-o
|