New server-only EO data file formats Conventions: Record* refers to an arbitrary number of repeating instances of a data structure Record*n refers to a known number of repeating instances of a data structure (string) format is a single length byte followed by that many bytes. -------------------- din001.eid - [EID] Endless Inn Data (Inn/Citizenship/Home info) -------------------- Semantics: Each Record corresponds to a possible home location that a character can belong to. Innkeeper NPCs with a matching vendor ID will allow you to subscribe/unsubscribe to that home location, as well as let you stay in the inn for a hard-coded price. When unsubscribing from a home location, the home location is reset to #1. Data Format: "EID" (3 bytes) (fixed string) Record* (repeated until end of file is reached) { ID (2 bytes) - Corresponds to NPC vendor ID Name (string) - Home string displayed on paperdoll SpawnMap (2 bytes) - Map teleported to after dying SpawnX (1 byte) SpawnY (1 byte) InnSleepMap (2 bytes) - Map teleported to when sleeping at the inn InnSleepX (1 byte) InnSleepY (1 byte) AltSpawnEnabled (1 byte) - Boolean value if AltSpawnMap/X/Y is used when above a hard-coded level AltSpawnMap (2 bytes) - Map teleported to after dying when above a hard-coded level AltSpawnX (1 byte) AltSpawnY (1 byte) Question1 (string) - Questions/answers for citizenship test Answer1 (string) Question2 (string) Answer2 (string) Question3 (string) Answer3 (string) } -------------------- dtd001.edf - [EDF] Endless Drop File (NPC item drops) -------------------- Semantics: On NPC death, the drop table is read top to bottom, a uniform random number generated for each item on the list. If the random number generated is lower the drop chance value, another uniform random number is picked between MinAmt and MaxAmt to determine the amount, that amount of the item given by ItemID is dropped, and the table is not read any further. Data Format: "EDF" (3 bytes) (fixed string) Record* (repeated until end of file is reached) { ID (2 bytes) - Corresponds to NPC ID NumDrops (2 bytes) - Number of items dropped DropRecord*NumDrops { ItemID (2 bytes) - Corresponds to Item ID MinAmt (3 bytes) - Minimum amount of item dropped MaxAmt (3 bytes) - Maximum amount of item dropped (may be equal to MinAmt) DropRate (2 bytes) - Chance (x in 64,000) of the item being recieved } } -------------------- dts001.esf - [ESF] Endless Shop File (NPC shop/crafts) -------------------- Semantics: NPCs allow purchasing between 1 and MaxAmt of an item from their shop at BuyPrice each, or selling of any number of an item at SellPrice each. Crafts require all of their ingredients in the required amounts to create a given item. Data Format: "ESF" (3 bytes) (fixed string) Record* (repeated until end of file is reached) { ID (2 bytes) - Corresponds to NPC vendor ID Name (string) - Name of store Unknown (3 bytes) - Unknown data! (Always the raw bytes: 01 FB 01?) NumShops (2 bytes) - Number of items with buy/sell information NumCrafts (1 byte) - Number of items that can be crafted ShopRecord*NumShops { ItemID (2 bytes) - Corresponds to Item ID of the item to be bought/sold BuyPrice (3 bytes) - Price the shop will sell an item for each SellPrice (3 bytes) - Price the shop will pay per item MaxAmt (1 byte) - Maximum number of items that can be bought per transaction } CraftRecord*NumCrafts { ItemID (2 bytes) - Corresponds to Item ID of the item to be crafted Ingredient1ID (2 bytes) - Ingredient item ID/amounts required to craft the item Ingredient1Amt (1 byte) or 0 if fewer items needed. Ingredient2ID (2 bytes) Ingredient2Amt (1 byte) Ingredient3ID (2 bytes) Ingredient3Amt (1 byte) Ingredient4ID (2 bytes) Ingredient4Amt (1 byte) } } -------------------- dsm001.emf - [EMF] Endless Master File (Skill masters) -------------------- Semantics: Skill masters teach their list of spells to people who meet the level, class, skill pre-requisite and stat requirements, and charge a Price. Data Format: "EMF"(3 bytes) (fixed string) Record* { ID (2 bytes) - Corresponds to NPC vendor ID Name (string) - Name of store Unknown (3 bytes) - Unknown data! (Always the raw bytes: 01 FB 01?) NumSkills (2 bytes) - Number of skills the master teaches SkillRecord*NumSkills { SkillID (2 bytes) - Corresponds to Spell ID of the spell to be taught LevelReq (1 byte) - Level required to learn the skill ClassReq (1 byte) - Class ID required to learn the skill Price (4 bytes) - Cost to learn the skill SkillReq1 (2 bytes) - Spell ID of skills required to learn the skill SkillReq2 (2 bytes) or 0 if fewer skills needed SkillReq3 (2 bytes) SkillReq4 (2 bytes) StrReq (2 bytes) - Minimum stats required to learn the skill IntReq (2 bytes) WisReq (2 bytes) AgiReq (2 bytes) ConReq (2 bytes) ChaReq (2 bytes) } } -------------------- ttd001.etf - [ETF] Endless Talk File (NPC chatter) -------------------- Semantics: NPCs randomly say a random chat a message from their list of possible messages at a rate determined by Rate. The exact meaning of Rate is unknown. Crow's rate is 100, and Rat's is 1. Data Format: "ETF" (3 bytes) (fixed string) Record* { ID (2 bytes) - Corresponds to NPC ID Rate (1 byte) - Rate of NPC messages NumMessages (1 byte) - Number of messages MessageRecord*NumMessages { Message (string) - NPC talk message } }