From ed72a947a6c97804c1eef5b80bfa49d99f7d7586 Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 8 Nov 2013 07:18:40 +0100 Subject: Item DB overhaul http://hercules.ws/board/topic/2954-item-db-file-structure-overhaul - Item db was changed to libconfig format. - This new format is larger than the original format, but it's less subject to conflicts when some items are edited and the file gets updated. - It is no longer necessary to specify fields with no value, and only the actually used fields are specified. - Items scripts (especially the long ones) are made more readable by splitting them into multiple lines, with proper indentation. - A converter perl script is provided in the tools directory (and a link to the web-based version of the same script canbe found in the above forum topic) - All of this was made possible thanks to Ind, Yommy. Signed-off-by: Haru --- doc/item_db.txt | 128 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 95 insertions(+), 33 deletions(-) (limited to 'doc') diff --git a/doc/item_db.txt b/doc/item_db.txt index 145a17a33..d897e1511 100644 --- a/doc/item_db.txt +++ b/doc/item_db.txt @@ -5,17 +5,56 @@ //===== Current Version: ===================================== //= 20120904 //===== Description: ========================================= -//= Explanation of the item_db.txt file and structure. +//= Explanation of the item_db.conf file and structure. //============================================================ -ID: Item id +item_db: ( +{ + // =================== Mandatory fields =============================== + Id: ID (int) + AegisName: "Aegis_Name" (string, optional if Inherit: true) + Name: "Item Name" (string, optional if Inherit: true) + // =================== Optional fields ================================ + Type: Item Type (int, defaults to 3 = etc item) + Buy: Buy Price (int, defaults to Sell * 2) + Sell: Sell Price (int, defaults to Buy / 2) + Weight: Item Weight (int, defaults to 0) + Atk: Attack (int, defaults to 0) + Matk: Magical Attack (int, defaults to 0, ignored in pre-re) + Def: Defense (int, defaults to 0) + Range: Attack Range (int, defaults to 0) + Slots: Slots (int, defaults to 0) + Job: Job mask (int, defaults to all jobs = 0xFFFFFFFF) + Upper: Upper mask (int, defaults to any = 0x3f) + Gender: Gender (int, defaults to both = 2) + Loc: Equip location (int, required value for equipment) + WeaponLv: Weapon Level (int, defaults to 0) + EquipLv: Equip required level (int, defaults to 0) + EquipLv: [min, max] (alternative syntax with min / max level) + Refine: Refineable (boolean, defaults to true) + View: View ID (int, defaults to 0) + Script: <" + Script + (it can be multi-line) + "> + OnEquipScript: <" OnEquip Script (can also be multi-line) "> + OnUnequipScript: <" OnUnequip Script (can also be multi-line) "> + // =================== Optional fields (item_db2 only) ================ + Inherit: true/false (boolean, if true, inherit the values + that weren't specified, from item_db.conf, + else override it and use default values) +}, +... +) + +Id: Item id AegisName: Server name to reference the item in scripts and lookups, should use no spaces. Name: Name in English for displaying as output for @ and script commands. -Type: +Type: 0 Healing item. 2 Usable item. 3 Etc item @@ -34,15 +73,18 @@ Buy: Default buying price. When not specified, becomes double the sell price. Sell: Default selling price. When not specified, becomes half the buy price. -Weight: Item's weight. Each 10 is 1 weight. +Weight: Item's weight. Each 10 is 1 weight. When not specified, becomes 0. -ATK: Weapon's attack +Atk: Weapon's attack. When not specified, becomes 0. -DEF: Armor's defense +Matk: Weapon's magical attack (only used in renewal mode, ignored in + pre-renewal). When not specified, becomes 0. -Range: Weapon's attack range +Def: Armor's defense. When not specified, becomes 0. -Slots: Amount of slots the item possesses. +Range: Weapon's attack range. When not specified, becomes 0. + +Slots: Amount of slots the item possesses. When not specified, becomes 0. Job: Equippable jobs. Uses the following bitmask table: @@ -77,20 +119,28 @@ Job: Equippable jobs. Uses the following bitmask table: Dark Collector (2^28): 0x10000000 Kagerou/Oboro (2^29): 0x20000000 Rebellion (2^30): 0x40000000 + Some other commonly used values: + All except novice: 0xFFFFFFFE + All (default value): 0xFFFFFFFF Upper: Equippable upper-types. Uses the following bitmasks: - 1: Normal jobs - 2: Upper jobs - 4: Baby jobs - 8: Third jobs - 16: Upper Third jobs - 32: Baby Third jobs -Under pre-re mode third classes are considered upper, making use of the 8 and above masks is therefore not necessary unless in renewal mode. - -Gender: Gender restriction. 0 is female, 1 is male, 2 for both. - -Loc: Equipment's placement. Values are: - + Normal jobs: 0x01 (1) + Upper jobs: 0x02 (2) + Baby jobs: 0x04 (4) + Third jobs: 0x08 (8) + Upper Third jobs: 0x10 (16) + Baby Third jobs: 0x20 (32) + + Under pre-re mode third classes are considered upper, making use of + the 8 and above masks is therefore not necessary unless in renewal + mode. When no value is specified, all classes (mask 0x3f) are able to + equip the item. + +Gender: Gender restriction. 0 is female, 1 is male, 2 for both (default value). + +Loc: Equipment's placement. A value needs to be spevified if the item is an + equipment piece. Values are: + 2^0 001 = Lower Headgear 2^1 002 = Weapon 2^2 004 = Garment @@ -105,18 +155,26 @@ Loc: Equipment's placement. Values are: 2^11 2048 = Costume Mid Headgear 2^12 4096 = Costume Low Headgear 2^13 8192 = Costume Garment/Robe - 2^16 65536 = Shadow Armor - 2^17 131072 = Shadow Weapon - 2^18 262144 = Shadow Shield - 2^18 524288 = Shadow Shoes - 2^20 1048576 = Shadow Accessory 2 - 2^21 2097152 = Shadow Accessory 1 + 2^16 65536 = Shadow Armor + 2^17 131072 = Shadow Weapon + 2^18 262144 = Shadow Shield + 2^18 524288 = Shadow Shoes + 2^20 1048576 = Shadow Accessory 2 + 2^21 2097152 = Shadow Accessory 1 + +WeaponLv: Weapon level. Becomes 0 when not specified. -wLV: Weapon level. +EquipLv: Base level required to be able to equip. It is possible to specify + two values, if an item has a maximum level, by using the following + syntax: -eLV: Base level required to be able to equip. + EquipLv: [minLv, maxLv] -Refineable: 1 if the item can be refined, 0 otherwise. + If only one value is specified, maxLv becomes the current server's + MAX_LEVEL. If no values are specified, minLv becomes 0. + +Refineable: true if the item can be refined, false otherwise. If no value is + specified, it defaults to true. View: For normal items, defines a replacement view-sprite for the item (eg: Making apples look like apple juice). The special case are weapons @@ -160,8 +218,12 @@ View: For normal items, defines a replacement view-sprite for the item (eg: Script: Script to execute when the item is used/equipped. -OnEquip_Script: Script to execute when the item is equipped. - Warning, not all item bonuses will work here as expected. +OnEquipScript: Script to execute when the item is equipped. + Warning, not all item bonuses will work here as expected. + +OnUnequipScript: Script to execute when the item is unequipped. + Warning, not all item bonuses will work here as expected. -OnUnequip_Script: Script to execute when the item is unequipped. - Warning, not all item bonuses will work here as expected. +Inherit: This can be used only in item_db2.conf, and if set to true, and the + item already exists in item_db.conf, all the missing fields will be + inherited from there rather than using their default values. -- cgit v1.2.3-60-g2f50