I have no clue what's going on with the website. But current status:
Character Creation is 100% complete. All professions and campaigns are supported. The method used is similar to the official servers and the end-user will not notice any difference. This is vastly better than the workaround that was in place earlier. The added benefit of this is that it is feasible to change the starting armor set for each profession. All of this required the item system to complete.
Items:
The original idea was to store items in files and load at server initialization. However, on a suggestion from scottgl the item system is now entirely within the database. Items are composed of an item id(specifies which graphic to use), item name id(is the name shown when the mouse is over an item), the item mods, and the inherit item properties.
To allow for maximum customization, item name id's, item id's, item mods, and item definitions are stored in their own tables. All this data is loaded into the servers at initialization.
An item definition is data that defines how an item should be created including its inherit properties. It can contain entirely static data or its fields can be filled in when an item is created. When an item definition contains an X or an x in any field except name, profession, quantity, and mod name, those fields are filled in when that definition is used.
Take for example the following item definition defining the Ranger base armor properties:
BaseRangerChest Theora X 2 0080 07 070900 00 00 00 06 10 00 20 00 00 00 00 77 03 00 00 0 X 0005,Energy +,XXXX,Armor Level,0000,vs. Elemental Damage,001e,Additional Armor,
- BaseRangerChest = Item definition name
- Theora = Contributer. Note: The contributer is not loaded by the servers.
- The first X is the item id field. Which is set to be replaced when an item is created.
- 2 = Profession the itemdef is for. It can be 0 which means it applies to no specific profession.
- The remainder of the properties up to the second X define various attributes about the item. Such as rarity color, where it can, how it is used, etc.
- The second X is the item name id. This is filled in when the definition is used as well.
Last comes a comma delimited list of item modifiers. Each item modifier(mod) is composed of two parts. The variables and the mod id. For example. Say I had the mod "Energy +5" It consists of the two bytes which specify the value 5(0005) and another two bytes that identify the mod as "Energy +" However, to ease creation of items the actual mod id is not to be used. Instead the name of the mod as specified in the mods table is to be used. For example the "Energy +5" mod would be specified as follows:
An item mod using a template for the purpose of allowing adjustable armor level would use the following:
The X's will be replaced when the item definition is used.
Now we have our item definition whether it be static or dynamic. But how do I create items using it?
To create an item all one must do is call the item creation function with the item name and a place to store the created item. This is of course irrelevant to anyone but the scottgl and I but how to fill in templates is not. When filling in an item template the name must be specified for that item definition followed immediately by ()
- MyItem([arguments, comma delimited])
You should know how many fields have X's in the item definition. The number of fields that are X is how many arguments must be inbetween the () [parentheses] Using the sample item definition we would have to insert three arguments. The first being the item id name, the second being the item name id, and the third being the values for the mod. These arguments should be as though you were actually filling in the item definition for static values.
- BaseRangerChest(Ascalon~Chest,Rawhide Vest,000a)
This creates a Ranger chest piece with the base stats and an armor level of 10. The main purpose of the template functionality is to allow creation of every armor in the game with five item definitions for each piece rather than an item definition for each armor set and piece. This doesn't adequately solve the problem of different stats for each armor set. To solve this armor sets are created and saved in the database using a special format and utility. Although as with all the preloaded data it can be easily modified without any specialized utility.
An armor set consists of name, profession, five item names, and a field for additional item mods. This allows armor sets to easily inherit the base stats from the base armor items and yet add their own functionality and modifications.
Starter 2 BaseRangerHead(Ascalon~Head,Ranger Mask,000a) BaseRangerChest(Ascalon~Chest,Rawhide Vest,000a) BaseRangerArms(Ascalon~Arms,Rawhide Gloves,000a) BaseRangerLegs(Ascalon~Legs,Rawhide Leggings,000a) BaseRangerFeet(Ascalon~Feet,Rawhide Boots,000a)
That is the Starting armor set for the Ranger profession. It is not required to use an armor set to create armor items. But it makes creating sets and referencing them in-game a whole lot easier. To create an armor piece from a set you call the create function with the set name and the armor piece you want created. Such as head, chest, arms, legs, or feet.
When you begin creating a character the server generates armor items when you click on a profession. The server will only allow one Starting armor set for each profession. I'm not going to bother allowing more. So a Ranger created in any campaign will start off with Ascalon armor.
What is to come:
Properly emulated loading into Ascalon City. This requires emulating the character information sent when the loading screen says 0% to 100% and the zone information sent after the loading screen says 100%.
First release information:
ETA: June 21st, 2007
This date is not set in stone and may be delayed. The following can be expected to work properly:
- Chat functionality
- Pre-searing Ascalon will be the only town supported.
- All core professions will be supported. Meaning they will show what you created in the character creation process in town.
- Movement
- No zoning when going through the portal.
There may be additional features working that are not on this list. They will be noted at the time of release.