From 6cdb1e5ec2daa295b388d6c3a920b6cffe4193ce Mon Sep 17 00:00:00 2001 From: Haru Date: Sat, 13 Feb 2016 15:38:23 +0100 Subject: Ported battle.conf to libconfig Ported to modern Hercules and cleaned up from Panikon's commits: 44fea0b3cdba6901599265220228ba4359b1f96d, 9cba05bc0811e638bbaaa6cff887d0b2c9872560 Signed-off-by: Haru --- .gitignore | 1 - conf/battle.conf | 61 ------ conf/battle/battle.conf | 157 --------------- conf/battle/battleground.conf | 17 -- conf/battle/client.conf | 135 ------------- conf/battle/drops.conf | 134 ------------- conf/battle/exp.conf | 91 --------- conf/battle/feature.conf | 34 ---- conf/battle/gm.conf | 42 ---- conf/battle/guild.conf | 50 ----- conf/battle/homunc.conf | 45 ----- conf/battle/items.conf | 95 --------- conf/battle/misc.conf | 150 -------------- conf/battle/monster.conf | 238 ---------------------- conf/battle/party.conf | 53 ----- conf/battle/pet.conf | 77 -------- conf/battle/player.conf | 191 ------------------ conf/battle/skill.conf | 303 ---------------------------- conf/battle/status.conf | 24 --- conf/import-tmpl/battle.conf | 32 +++ conf/import-tmpl/battle_conf.txt | 0 conf/map/battle.conf | 87 ++++++++ conf/map/battle/battle.conf | 180 +++++++++++++++++ conf/map/battle/battleground.conf | 40 ++++ conf/map/battle/client.conf | 158 +++++++++++++++ conf/map/battle/drops.conf | 157 +++++++++++++++ conf/map/battle/exp.conf | 114 +++++++++++ conf/map/battle/feature.conf | 58 ++++++ conf/map/battle/gm.conf | 66 +++++++ conf/map/battle/guild.conf | 73 +++++++ conf/map/battle/homunc.conf | 68 +++++++ conf/map/battle/items.conf | 116 +++++++++++ conf/map/battle/misc.conf | 173 ++++++++++++++++ conf/map/battle/monster.conf | 261 ++++++++++++++++++++++++ conf/map/battle/party.conf | 76 +++++++ conf/map/battle/pet.conf | 100 ++++++++++ conf/map/battle/player.conf | 215 ++++++++++++++++++++ conf/map/battle/skill.conf | 326 ++++++++++++++++++++++++++++++ conf/map/battle/status.conf | 47 +++++ conf/readme.txt | 4 +- src/common/HPM.c | 49 ++++- src/common/HPM.h | 5 +- src/map/atcommand.c | 2 +- src/map/battle.c | 156 +++++++++------ src/map/battle.h | 9 +- src/map/map.c | 7 +- tools/configconverter.pl | 403 ++++++++++++++++++++++++++++++++++++++ 47 files changed, 2912 insertions(+), 1968 deletions(-) delete mode 100644 conf/battle.conf delete mode 100644 conf/battle/battle.conf delete mode 100644 conf/battle/battleground.conf delete mode 100644 conf/battle/client.conf delete mode 100644 conf/battle/drops.conf delete mode 100644 conf/battle/exp.conf delete mode 100644 conf/battle/feature.conf delete mode 100644 conf/battle/gm.conf delete mode 100644 conf/battle/guild.conf delete mode 100644 conf/battle/homunc.conf delete mode 100644 conf/battle/items.conf delete mode 100644 conf/battle/misc.conf delete mode 100644 conf/battle/monster.conf delete mode 100644 conf/battle/party.conf delete mode 100644 conf/battle/pet.conf delete mode 100644 conf/battle/player.conf delete mode 100644 conf/battle/skill.conf delete mode 100644 conf/battle/status.conf create mode 100644 conf/import-tmpl/battle.conf delete mode 100644 conf/import-tmpl/battle_conf.txt create mode 100644 conf/map/battle.conf create mode 100644 conf/map/battle/battle.conf create mode 100644 conf/map/battle/battleground.conf create mode 100644 conf/map/battle/client.conf create mode 100644 conf/map/battle/drops.conf create mode 100644 conf/map/battle/exp.conf create mode 100644 conf/map/battle/feature.conf create mode 100644 conf/map/battle/gm.conf create mode 100644 conf/map/battle/guild.conf create mode 100644 conf/map/battle/homunc.conf create mode 100644 conf/map/battle/items.conf create mode 100644 conf/map/battle/misc.conf create mode 100644 conf/map/battle/monster.conf create mode 100644 conf/map/battle/party.conf create mode 100644 conf/map/battle/pet.conf create mode 100644 conf/map/battle/player.conf create mode 100644 conf/map/battle/skill.conf create mode 100644 conf/map/battle/status.conf diff --git a/.gitignore b/.gitignore index ce3a5c14f..8957156d3 100644 --- a/.gitignore +++ b/.gitignore @@ -60,7 +60,6 @@ Thumbs.db # /conf/ /conf/import/*.conf -/conf/import/battle_conf.txt /conf/import/msg_conf.txt # /log/ diff --git a/conf/battle.conf b/conf/battle.conf deleted file mode 100644 index 1eddfae35..000000000 --- a/conf/battle.conf +++ /dev/null @@ -1,61 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -// Splitted up into multiple files by Skotlex. -//-------------------------------------------------------------- - -//General battle-related settings. -import: conf/battle/battle.conf - -//Settings specific to the client. -import: conf/battle/client.conf - -//General drop-related configs. -import: conf/battle/drops.conf - -//Experience rates, exp penalties, stats and max level settings. -import: conf/battle/exp.conf - -//GM levels, atcommands and hack-related configs. -import: conf/battle/gm.conf - -//Guild and WoE settings -import: conf/battle/guild.conf - -//Battleground settings -import: conf/battle/battleground.conf - -//Item/card-specific and crafting related options. -import: conf/battle/items.conf - -//Mob related configuration -import: conf/battle/monster.conf - -//Party related configuration -import: conf/battle/party.conf - -//Pet related configuration -import: conf/battle/pet.conf - -//Homunc related configuration -import: conf/battle/homunc.conf - -//Player specific settings -import: conf/battle/player.conf - -//Skill related settings -import: conf/battle/skill.conf - -//Status change related settings -import: conf/battle/status.conf - -//Feature control (on/off) settings -import: conf/battle/feature.conf - -// Anything else that didn't fit anywhere else. -// Includes duel, day/night, mute/manner, log settings. -import: conf/battle/misc.conf - -//Your custom config goes here. -import: conf/import/battle_conf.txt diff --git a/conf/battle/battle.conf b/conf/battle/battle.conf deleted file mode 100644 index 8c9447ccb..000000000 --- a/conf/battle/battle.conf +++ /dev/null @@ -1,157 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) -//-------------------------------------------------------------- - -// Who should have a baseatk value (makes str affect damage)? (Note 3) -enable_baseatk: 9 - -// Who can have perfect flee? (Note 3) -enable_perfect_flee: 1 - -// Who can have critical attacks? (Note 3) -// (Note that there are some skills that always do critical hit regardless of this) -enable_critical: 17 - -// Critical adjustment rate for non-players (Note 2) -mob_critical_rate: 100 -critical_rate: 100 - -// Should normal attacks give you a walk delay? (Note 3) -// If no, characters can move as soon as they start an attack (attack animation -// or walk animation may be omitted client-side, causing cropped attacks or -// monsters that teleport to you) -// Otherwise, the delay is equal to the 'attack animation' (amotion) -attack_walk_delay: 15 - -// Move-delay adjustment after being hit. (Note 2) -// The 'can't walk' delay after being hit is calculated as a percentage of the damage animation duration. -// NOTE: Only affects the normal delay from a single attack, not the delay added by the multihit_delay option below. -pc_damage_walk_delay_rate: 20 -damage_walk_delay_rate: 100 - -// Move-delay adjustment for multi-hitting attacks. -// When hit by a multi-hitting skill like Lord of Vermillion or Jupitel Thunder, characters will be -// unable to move for an additional "(number of hits -1) * multihit_delay" milliseconds. -// 80 is the setting that feels like Aegis (vs Sonic Blows) -// 230 is the setting that makes walkdelay last until the last hit (vs Jupitel thunder) -multihit_delay: 80 - -// Damaged delay rate for players (Note 2) -// (Setting to no/0 will be like always endure) -player_damage_delay_rate: 100 - -// Should race or element be used to consider someone undead? -// 0 = element undead -// 1 = race undead -// 2 = both (either one works) -undead_detect_type: 0 - -// Does HP recover if hit by an attribute that's same as your own? (Note 1) -// (Will not work in Renewal) -attribute_recover: no - -// What is the minimum and maximum hitrate of normal attacks? -min_hitrate: 5 -max_hitrate: 100 - -// Type of penalty that is applied to FLEE when more than agi_penalty_count monsters are targetting player -// 0 = no penalty is applied -// 1 = agi_penalty_num is reduced from FLEE as a % -// 2 = agi_penalty_num is reduced from FLEE as an exact amount -agi_penalty_type: 1 - -// When agi penalty is enabled, to whom it should apply to? (Note 3) -// By default, only players get the penalty. -agi_penalty_target: 1 - -// Amount of enemies required to be targetting player before FLEE begins to be penalized -agi_penalty_count: 3 - -// Amount of FLEE penalized per each attacking monster more than agi_penalty_count -agi_penalty_num: 10 - -// Type of penalty that is applied to both equipment and vit DEF when more than vit_penalty_count monsters are targetting player -// 0 = no penalty is applied -// 1 = vit_penalty_num is reduced from DEF as a % -// 2 = vit_penalty_num is reduced from DEF as an exact amount -vit_penalty_type: 1 - -// When vit penalty is enabled, to whom it should apply to? (Note 3) -// By default, only players get the penalty. -vit_penalty_target: 1 - -// Amount of enemies required to be targetting player before defense begins to be penalized -vit_penalty_count: 3 - -// Amount of VIT defense penalized per each attacking monster more than vit_penalty_count -vit_penalty_num: 5 - -// Use alternate method of DEF calculation for physical attacks. -// With 0, disabled (use normal def% reduction with further def2 reduction) -// At 1 or more defense is subtraction of (DEF* value). -// eg: 10 + 50 def becomes 0 + (10*type + 50) -weapon_defense_type: 0 - -// MDEF, same as above....(MDEF*value) -magic_defense_type: 0 - -// Change attacker's direction to face opponent on every attack? (Note 3) -// NOTE: On official servers knockback of some skills like Firewall is always based on the -// last direction walked. Even when attacking in a completely different direction, the -// knockback direction won't change, so e.g. if you walk north and then attack an enemy to -// the south you will still be knocked back to the south by Firewall. Immobile monsters -// will always be knocked back to the south as their default direction is north. -attack_direction_change: 0 - -// For those who is set, their innate attack element is "not elemental" -// (100% versus on all defense-elements) (Note 3) -// NOTE: This is the setting that makes it so non-players can hit for full -// damage against Ghost-type targets with normal attacks (eg: vs. Ghostring). -attack_attr_none: 14 - -// Rate at which equipment can break (base rate before it's modified by any skills) -// 1 = 0.01% chance. Default for official servers: 0 -equip_natural_break_rate: 0 - -// Overall rate of which your own equipment can break. (Note 2) -// This rate affects penalty breaking rate of skills such as power-thrust and your natural breaking rate -// (from equip_natural_break_rate). If a Sage's endow skill fails and this is above 0, the selected char's -// weapon will be broken. -equip_self_break_rate: 100 - -// Overall rate at which you can break target's equipment. (Note 2) -// This affects the behaviour of skills like acid terror and meltdown -equip_skill_break_rate: 100 - -// Do weapon attacks have a attack speed delay before actual damage is applied? (Note 1) -// NOTE: The official setting is yes, even thought it degrades performance a bit. -delay_battle_damage: yes - -// Are arrows/ammo consumed when used on a bow/gun? -// 0 = No -// 1 = Yes -// 2 = Yes even for skills that do not specify arrow consumption when said -// skill is weapon-based and used with ranged weapons (auto-guesses which -// skills should consume ammo when it's acquired via a card or plagiarize) -arrow_decrement: 1 - -// Should the item script bonus 'Autospell' check for range/obstacles before casting? -// Official behavior is "no", setting this to "yes" will make skills use their defined -// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed. -// This setting also affects autospellwhenhit. -autospell_check_range: no - -// If both the attacker and the target are on the same tile, should the target be knocked back to the left? -// Official behavior is "yes", setting this to "no" will knock the target back behind the attacker. -knockback_left: yes - -// Should the target be able of dodging damage by snapping away to the edge of the screen? -// Official behavior is "no" -snap_dodge: no diff --git a/conf/battle/battleground.conf b/conf/battle/battleground.conf deleted file mode 100644 index b4c0b2fbd..000000000 --- a/conf/battle/battleground.conf +++ /dev/null @@ -1,17 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// Flee penalty on BG grounds. -// NOTE: It's %, not absolute, so 20 is -20% of your total flee -bg_flee_penalty: 20 - -// Interval before updating the bg-member map mini-dots (milliseconds) -bg_update_interval: 1000 diff --git a/conf/battle/client.conf b/conf/battle/client.conf deleted file mode 100644 index 6ca2f67e0..000000000 --- a/conf/battle/client.conf +++ /dev/null @@ -1,135 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) -//-------------------------------------------------------------- - -// Whether to enable the official packet obfuscation support (good vs WPE) -// 0: disabled -// 1: optional (not recommended) -- identifies whether it is required -// 2: enabled (recommended) -packet_obfuscation: 1 - -// Minimum delay between whisper/global/party/guild messages (in ms) -// Messages that break this threshold are silently omitted. -min_chat_delay: 0 - -// Valid range of dyes and styles on the client. -min_hair_style: 0 -max_hair_style: 29 -min_hair_color: 0 -max_hair_color: 8 -min_cloth_color: 0 -max_cloth_color: 4 -min_body_style: 0 -max_body_style: 4 - -// When set to yes, the damage field in packets sent from woe maps will be set -// to -1, making it impossible for GMs, Bots and Hexed clients to know the -// actual damage caused by attacks. (Note 1) -hide_woe_damage: yes - -// "hair style" number that identifies pet. -// NOTE: The client uses the "hair style" field in the mob packet to tell them apart from mobs. -// This value is always higher than the max hair-style available in said client. -// Known values to work (all 2005 clients): -// older sakexes: 20 -// sakexe 0614: 24 -// sakexe 0628 (and later): 100 -pet_hair_style: 100 - -// Visible area size (how many squares away from a player can they see) -area_size: 14 - -// Maximum walk path (how many cells a player can walk going to cursor) -// default: 17(official) -max_walk_path: 17 - -// Maximum allowed 'level' value that can be sent in unit packets. -// Use together with the aura_lv setting to tell when exactly to show the aura. -// NOTE: You also need to adjust the client if you want this to work. -// NOTE: Default is 99. Values above 127 will probably behave incorrectly. -// NOTE: If you don't know what this does, don't change it!!! -max_lv: 99 - -// Level required to display an aura. -// NOTE: This assumes that sending max_lv to the client will display the aura. -// NOTE: aura_lv must not be less than max_lv. -// Example: If max_lv is 99 and aura_lv is 150, characters with level 99~149 -// will be sent as being all level 98, and only characters with level -// 150 or more will be reported as having level 99 and show an aura. -aura_lv: 99 - -// Units types affected by max_lv and aura_lv settings. (Note 3) -// Note: If an unit type, which normally does not show an aura, is -// set it will obtain an aura when it meets the level requirement. -// Default: 0 (none) -client_limit_unit_lv: 0 - -// Will tuxedo and wedding dresses be shown when worn? (Note 1) -wedding_modifydisplay: no - -// Save Clothes color. (This will degrade performance) (Note 1) -save_clothcolor: yes - -// Save body styles? (Note 1) -// Note: Don't turn this on unless you know what your doing. -// Sprites are not released officially. -save_body_style: no - -// Do not display cloth colors for the wedding costume? -// Note: Both save_clothcolor and wedding_modifydisplay have to be enabled -// for this option to take effect. Set this to yes if your cloth palettes -// pack doesn't has wedding palettes (or has less than the other jobs) -wedding_ignorepalette: no - -// Do not display cloth colors for the Xmas costume? -// Set this to yes if your cloth palettes pack doesn't has Xmas palettes (or has less than the other jobs) -xmas_ignorepalette: no - -// Do not display cloth colors for the Summer costume? -// Set this to yes if your cloth palettes pack doesn't has Summer palettes (or has less than the other jobs) -summer_ignorepalette: no - -// Do not display cloth colors for the Hanbok costume? -// Set this to yes if your cloth palettes pack doesn't has Hanbok palettes (or has less than the other jobs) -hanbok_ignorepalette: no - -// Show Hercules version to users when the login? -display_version: no - -// When affected with the "Hallucination" status effect, send the effect to client? (Note 1) -// Note: Set to 'no' if the client lags due to the "Wavy" screen effect. -display_hallucination: yes - -// Set this to 1 if your client supports status change timers and you want to use them -// Clients from 2009 onward support this -display_status_timers: yes - -// Randomizes the dice emoticon server-side, to prevent clients from forging -// packets for the desired number. (Note 1) -client_reshuffle_dice: yes - -// Sorts the character and guild storage before it is sent to the client. -// Official servers do not sort storage. (Note 1) -// NOTE: Enabling this option degrades performance. -client_sort_storage: no - -// Duration of client's self mute in minutes. -// Note: Do not enable this, if you enabled commands for players, -// because the client sees multiple commands in succession as spam. -// Default: 0 (means disabled) -client_accept_chatdori: 0 - -// Limits use of blank (transparent) pixels in guild emblems to a set -// percentage of the total. -// Official servers do not enforce this technically to date, but some disallow -// use of blank emblems in their rules. (Note 2) -// A value of 100 (allowing 100% blank pixels) disables this check. -// NOTE: Enabling this option slightly degrades performance. -client_emblem_max_blank_percent: 100 diff --git a/conf/battle/drops.conf b/conf/battle/drops.conf deleted file mode 100644 index ec122002a..000000000 --- a/conf/battle/drops.conf +++ /dev/null @@ -1,134 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -//-------------------------------------------------------------- - -// If an item is dropped, does it go straight into the users inventory? (Note 1) -item_auto_get: no - -// How long does it take for an item to disappear from the floor after it is dropped? (in milliseconds) -flooritem_lifetime: 60000 - -// Grace time during which only the person who did the most damage to a monster can get the item? (in milliseconds) -item_first_get_time: 3000 - -// Grace time during which only the first and second person who did the most damage to a monster can get the item? (in milliseconds) -// (Takes effect after item_first_get_time elapses) -item_second_get_time: 1000 - -// Grace time during which only the first, second and third person who did the most damage to a monster can get the item? (in milliseconds) -// (Takes effect after the item_second_get_time elapses) -item_third_get_time: 1000 - -// Grace time to apply to MvP reward items when the Most Valuable Player can't get the prize item and it drops on the ground? (in milliseconds) -mvp_item_first_get_time: 10000 - -// Grace time for the first and second MvP so they can get the item? (in milliseconds) -// (Takes effect after mvp_item_first_get_time elapses) -mvp_item_second_get_time: 10000 - -// Grace time for the first, second and third MvP so they can get the item? (in milliseconds) -// (Takes effect after mvp_item_second_get_time elapses) -mvp_item_third_get_time: 2000 - -// Item drop rates (Note 2) - -// The rate the common items are dropped (Items that are in the ETC tab, besides card) -item_rate_common: 100 -item_rate_common_boss: 100 -item_drop_common_min: 1 -item_drop_common_max: 10000 - -// The rate healing items are dropped (items that restore HP or SP) -item_rate_heal: 100 -item_rate_heal_boss: 100 -item_drop_heal_min: 1 -item_drop_heal_max: 10000 - -// The rate at which usable items (in the item tab) other then healing items are dropped. -item_rate_use: 100 -item_rate_use_boss: 100 -item_drop_use_min: 1 -item_drop_use_max: 10000 - -// The rate at which equipment is dropped. -item_rate_equip: 100 -item_rate_equip_boss: 100 -item_drop_equip_min: 1 -item_drop_equip_max: 10000 - -// The rate at which cards are dropped -item_rate_card: 100 -item_rate_card_boss: 100 -item_drop_card_min: 1 -item_drop_card_max: 10000 - -// The rate adjustment for the MVP items that the MVP gets directly in their inventory -item_rate_mvp: 100 -item_drop_mvp_min: 1 -item_drop_mvp_max: 10000 - -// The rate adjustment for card-granted item drops. -item_rate_adddrop: 100 -item_drop_add_min: 1 -item_drop_add_max: 10000 - -// Rate adjustment for Treasure Box drops (these override all other modifiers) -item_rate_treasure: 100 -item_drop_treasure_min: 1 -item_drop_treasure_max: 10000 - -// Use logarithmic drops? (Note 1) -// Logarithmic drops scale drop rates in a non-linear fashion using the equation -// Droprate(x,y) = x * (5 - log(x)) ^ (ln(y) / ln(5)) -// Where x is the original drop rate and y is the drop_rate modifier (the previously mentioned item_rate* variables) -// Use the following table for an idea of how the rate will affect drop rates when logarithmic drops are used: -// Y: Original Drop Rate -// X: Rate drop modifier (eg: item_rate_equip) -// X\Y | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 -// -----+--------------------------------------------------------------- -// 50 | 0.01 0.01 0.03 0.06 0.11 0.30 0.62 1.30 3.49 7.42 15.92 -// 100 | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 -// 200 | 0.02 0.04 0.09 0.18 0.35 0.84 1.61 3.07 7.16 13.48 25.13 -// 500 | 0.05 0.09 0.22 0.40 0.74 1.65 3.00 5.40 11.51 20.00 33.98 -// 1000 | 0.10 0.18 0.40 0.73 1.30 2.76 4.82 8.28 16.47 26.96 42.69 -// 2000 | 0.20 0.36 0.76 1.32 2.28 4.62 7.73 12.70 23.58 36.33 53.64 -// 5000 | 0.50 0.86 1.73 2.91 4.81 9.11 14.45 22.34 37.90 53.91 72.53 -//10000 | 1.00 1.67 3.25 5.28 8.44 15.24 23.19 34.26 54.57 72.67 91.13 -//20000 | 2.00 3.26 6.09 9.59 14.83 25.49 37.21 52.55 77.70 97.95 100% -//50000 | 5.00 7.87 13.98 21.12 31.23 50.31 69.56 92.48 100% 100% 100% -item_logarithmic_drops: no - -// Can the monster's drop rate become 0? (Note 1) -// Default: no (as in official servers). -drop_rate0item: no - -// Makes your LUK value affect drop rates on an absolute basis. -// Setting to 100 means each luk adds 0.01% chance to find items -// (regardless of item's base drop rate). -drops_by_luk: 0 - -// Makes your LUK value affect drop rates on a relative basis. -// Setting to 100 means each luk adds 1% chance to find items -// (So at 100 luk, everything will have double chance of dropping). -drops_by_luk2: 0 - -// Whether or not Marine Spheres and Floras summoned by Alchemist drop items? -// This setting has three available values: -// 0: Nothing drops. -// 1: Only marine spheres drop items. -// 2: All alchemist summons drop items. -alchemist_summon_reward: 1 - -// Make broadcast ** Player1 won Pupa's Pupa Card (chance 0.01%) *** -// This can be set to any value between 0~10000. -// Note: It also announces STEAL skill usage with rare items -// 0 = don't show announces at all -// 1 = show announces for 0.01% drop chance items -// 333 = show announces for 3.33% or lower drop chance items -// 10000 = show announces for all items -rare_drop_announce: 0 diff --git a/conf/battle/exp.conf b/conf/battle/exp.conf deleted file mode 100644 index 88c5d9c7a..000000000 --- a/conf/battle/exp.conf +++ /dev/null @@ -1,91 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: The max level of classes is stored in the exp table. -// See files db/exp.txt and db/exp2.txt to change them. -//-------------------------------------------------------------- - -// Rate at which exp. is given. (Note 2) -base_exp_rate: 100 - -// Rate at which job exp. is given. (Note 2) -job_exp_rate: 100 - -// Turn this on to allow a player to level up more than once from a kill. (Note 1) -multi_level_up: no - -// Setting this can cap the max experience one can get per kill specified as a -// % of the current exp bar. (Every 10 = 1.0%) -// For example, set it to 500 and no matter how much exp the mob gives, -// it can never give you above half of your current exp bar. -max_exp_gain_rate: 0 - -// Method of calculating earned experience when defeating a monster: -// 0 = uses damage given / total damage as damage ratio -// 1 = uses damage given / max_hp as damage ratio -// NOTE: Using type 1 disables the bonus where the first attacker gets -// his share of the exp doubled when multiple people attack the mob. -exp_calc_type: 0 - -// Experience increase per attacker. That is, every additional attacker to the -// monster makes it give this much more experience -// (eg: 5 people attack with 25 here, +(25*4)% -> +100% exp) -exp_bonus_attacker: 25 - -// Max number of attackers at which exp bonus is capped -// (eg: if set at 5, the max bonus is 4*bonus-per-char regardless of attackers) -exp_bonus_max_attacker: 12 - -// MVP bonus exp rate. (Note 2) -mvp_exp_rate: 100 - -// Rate of base/job exp given by NPCs. (Note 2) -quest_exp_rate: 100 - -// The rate of job exp. from using Heal skill (100 is the same as the heal amount, 200 is double. -// The balance of the exp. rate is best used with 5 to 10) -heal_exp: 0 - -// The rate of exp. that is gained by the process of resurrection, a unit is 0.01%. -// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got. -resurrection_exp: 0 - -// The rate of job exp. when using discount and overcharge on an NPC -// (in 0.01% increments - 100 is 1%, 10000 is normal, 20000 is double.) -// The way it is calculated is (money received * skill lv) * shop_exp / 10000. -shop_exp: 0 - -// PVP exp. Do players get exp in PvP maps -// (Note: NOT exp from players, but from normal leveling) -pvp_exp: yes - -// When a player dies, how should we penalize them? -// 0 = No penalty. -// 1 = Lose % of current level when killed. -// 2 = Lose % of total experience when killed. -death_penalty_type: 1 - -// Base exp. penalty rate (Each 100 is 1% of their exp) -death_penalty_base: 100 - -// Job exp. penalty rate (Each 100 is 1% of their exp) -death_penalty_job: 100 - -// When a player dies (to another player), how much zeny should we penalize them with? -// NOTE: It is a percentage of their zeny, so 100 = 1% -zeny_penalty: 0 - -// Will display experience gained from killing a monster. (Note 1) -disp_experience: no - -// Will display zeny earned (from mobs, trades, etc) (Note 1) -disp_zeny: no - -// Use the contents of db/statpoint.txt when doing a stats reset and leveling up? (Note 1) -// If no, an equation will be used which preserves statpoints earned/lost -// through external means (ie: stat point buyers/sellers) -use_statpoint_table: yes diff --git a/conf/battle/feature.conf b/conf/battle/feature.conf deleted file mode 100644 index 000bc318b..000000000 --- a/conf/battle/feature.conf +++ /dev/null @@ -1,34 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Feature Configuration File -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// Buying store (Note 1) -// Requires: 2010-04-27aRagexeRE or later -feature.buying_store: on - -// Search stores (Note 1) -// Requires: 2010-08-03aRagexeRE or later -feature.search_stores: on - -// Atcommand suggestions (Note 1) -// If one type incomplete atcommand, it will suggest the complete ones. -feature.atcommand_suggestions: off - -// Banking (Note 1) -// Requires: 2013-07-24aRagexe or later -feature.banking: on - -// Auction (Note 1) -// Feature became unstable on clients 2012 onwards (exact date not known), -// it has been fixed on clients 2013-05-15 onwards however. -feature.auction: off - -// Roulette (Note 1) -// Requires: 2014-10-22bRagexe or later -// Off by default while test version is out; enable at your own risk -- the mean dev. -feature.roulette: off diff --git a/conf/battle/gm.conf b/conf/battle/gm.conf deleted file mode 100644 index dc70bc6ca..000000000 --- a/conf/battle/gm.conf +++ /dev/null @@ -1,42 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -//-------------------------------------------------------------- - -// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity) -atcommand_spawn_quantity_limit: 100 - -// Maximum number of slave-clones that can be have by using the @slaveclone at command. (0 denotes unlimited quantity) -atcommand_slave_clone_limit: 25 - -// If 'no', commands require exact player name. If 'yes', entering a partial -// name will work, as long as there's only one match from all players in the -// current map server. -partial_name_scan: yes - -// (@) @allstats/@str/@agi/@vit/@int/@dex/@luk -// allow gms to bypass the maximum stat parameter? ( if yes gm stats can go up to 32k ) default: no -atcommand_max_stat_bypass: no - -// Ban people that try trade dupe. -// Duration of the ban, in minutes (default: 5). To disable the ban, set 0. -ban_hack_trade: 5 - -// requires RENEWAL_DROP to be enabled (src/map/config/renewal.h) -// modifies @mobinfo to display the users' real drop rate as per renewal_drop formula -// modifies @iteminfo to not display the minimum item drop rate (since it can't tell the mob level) -atcommand_mobinfo_type: 0 - -// Ignore warpable area configuration. -// Set the minimum group id to ignore invalid cells when warping. -// Default group is 2. Use 100 to disable this setting. -gm_ignore_warpable_area: 2 - -// Should atcommands trigger level up events for NPCs? (Note 1) -// This option is for @baselevelup and @joblevelup -// Default: no -atcommand_levelup_events: no diff --git a/conf/battle/guild.conf b/conf/battle/guild.conf deleted file mode 100644 index 59fc78c51..000000000 --- a/conf/battle/guild.conf +++ /dev/null @@ -1,50 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -//-------------------------------------------------------------- - -// When making a guild, an Emperium is consumed? (Note 1) -guild_emperium_check: yes - -// Maximum tax limit on a guild member. -guild_exp_limit: 50 - -// Maximum castles one guild can own (0 = unlimited) -guild_max_castles: 0 - -// Restart guild skills cooldown by relog? (Note 1) -// When "no", you relog with the same cooldown remaining as from when you -// logged out, "yes" restarts the cooldown upon login to its full duration. -guild_skill_relog_delay: no - -// Damage adjustments for WOE battles against defending Guild monsters (Note 2) -castle_defense_rate: 100 - -// Flee penalty on gvg grounds. Official value is 20 (Note 2) -// NOTE: It's %, not absolute, so 20 is -20% of your total flee -gvg_flee_penalty: 20 - -// Can the 'Glory of Guild' skill be learnt in the Guild window, -// and does changing emblems require it? (Note 1) -// P.S: This skill is not implemented on official servers -require_glory_guild: no - -// Limit Guild alliances. Value is 0 to 3. -// If you want to change this value, clear the guild alliance table. -// Default is 3 -max_guild_alliance: 3 - -// When to re-display the guild notice -// Upon teleporting (regardless of changing maps): 2 (official) -// Upon changing maps: 1 -// Do not re-display: 0 (disabled) -guild_notice_changemap: 2 - -// Can guild members invite/expel members inside guild castles in WoE/GvG? (Note 1) -// default: no -guild_castle_invite: no -guild_castle_expulsion: no diff --git a/conf/battle/homunc.conf b/conf/battle/homunc.conf deleted file mode 100644 index a33eab8ea..000000000 --- a/conf/battle/homunc.conf +++ /dev/null @@ -1,45 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// Homunculus setting (Note 3) -// Activates various 'quirks' that makes them behave unlike normal characters. -// 0x001: Can't be targetted by support skills (except for their master) -// 0x004: Mobs will always go after them instead of players until attacked -// 0x008: Copy their master's speed on spawn/map-change -// 0x010: They display luk/3+1 instead of their actual critical in the -// stat window (by default they don't crit) -// 0x020: Their Min-Matk is always the same as their max -// 0x040: Skill re-use delay is reset when they are vaporized. -hom_setting: 0x1D - -// The rate a homunculus will get friendly by feeding it. (Note 2) -homunculus_friendly_rate: 100 - -// Can you name a homunculus more then once? (Note 1) -hom_rename: no - -// Intimacy needed to use Evolved Vanilmirth's Bio Explosion -hvan_explosion_intimate: 45000 - -// Show stat growth to the owner when an Homunculus levels up -homunculus_show_growth: yes - -// Does autoloot work, when a monster is killed by homunculus only? -homunculus_autoloot: yes - -// Should homunculi Vaporize when Master dies? -homunculus_auto_vapor: yes - -// Max level for regular Homunculus -homunculus_max_level: 99 - -// Max level for Homunculus S -homunculus_S_max_level: 150 diff --git a/conf/battle/items.conf b/conf/battle/items.conf deleted file mode 100644 index e2358b6d6..000000000 --- a/conf/battle/items.conf +++ /dev/null @@ -1,95 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// The highest value at which an item can be sold via the merchant vend skill. (in zeny) -vending_max_value: 1000000000 - -// Whether to allow buying from vending chars that are at their max. zeny limit. -// If set to yes, the rest of the zeny above the char's capacity will disappear. -vending_over_max: yes - -// Tax to apply to all vending transactions (eg: 10000 = 100%, 50 = 0.50%) -// When a tax is applied, the item's full price is charged to the buyer, but -// the vender will not get the whole price paid (they get 100% - this tax). -vending_tax: 200 - -// Show the buyer's name when successfully vended an item -buyer_name: yes - -// Forging success rate. (Note 2) -weapon_produce_rate: 100 - -// Prepare Potion success rate. (Note 2) -potion_produce_rate: 100 - -// Do produced items have the maker's name on them? (Note 3) -// 0x01: Produced Weapons -// 0x02: Produced Potions -// 0x04: Produced Arrows -// 0x08: Produced Holy Water/Ancilla -// 0x10: Produced Deadly Potions -// 0x80: Other produced items. -produce_item_name_input: 0x03 - -// Is a monster summoned via dead branch aggressive? (Note 1) -dead_branch_active: yes - -// Should summoned monsters check the player's base level? (dead branches) (Note 1) -// On officials this is no - monsters summoned from dead/bloody branches can be ANY level. -// Change to 'yes' to only summon monsters less than or equal to the player's base level. -random_monster_checklv: no - -// Can any player equip any item regardless of the gender restrictions -// NOTE: Wedding Rings and Whips/Musical Instruments will check gender regardless of setting. -ignore_items_gender: yes - -// Item check? (Note 1) -// On map change it will check for items not tagged as "available" and -// auto-delete them from inventory/cart. -// NOTE: An item is not available if it was not loaded from the item_db or you -// specify it as unavailable in db/item_avail.txt -item_check: no - -// How much time must pass between item uses? -// Only affects the delay between using items, prevents healing item abuse. Recommended ~500 ms -// On officials this is 0, but it's set to 100ms as a measure against bots/macros. -item_use_interval: 100 - -// How much time must pass between cash food uses? Default: 60000 (1 min) -cashfood_use_interval: 60000 - -// Required level of bNoMagicDamage before Status Changes are blocked (Golden Thief Bug card). -// For example, if left at 50. An item can give bNoMagicDamage,40; -// which reduces magic damage by 40%, but does not blocks status changes. -gtb_sc_immunity: 50 - -// Enable autospell card effects to stack? -// NOTE: Different cards that grant the same skill will both -// always work independently of each other regardless of setting. -autospell_stacking: no - -// Will disabled consumables (disabled by map_zone_db.conf) be consumed when trying to use them? -// 1 (official): yes -// 0: no -item_restricted_consumption_type: 1 - -// Enable all NPC to allow changing of equipments while interacting? (Note 1) -// Script commands 'enable_items/disable_items' will not be override. (see doc/script_commands.txt) -// 1 : yes(official) -// 0 : no -item_enabled_npc: 1 - -// Unequip the equipments that has disabled by map_zone_db.conf ? -// 0 : disabled equipments and cards are nullify (official) -// 1 : disabled equipments are unequip, disabled cards are nullify -// 2 : disabled equipments are nullify, disabled cards will caused the equipment to unequip -// 3 : disabled equipments are unequip, disabled cards will caused the equipment to unequip (1+2) -unequip_restricted_equipment: 0 diff --git a/conf/battle/misc.conf b/conf/battle/misc.conf deleted file mode 100644 index a3c6ed26a..000000000 --- a/conf/battle/misc.conf +++ /dev/null @@ -1,150 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// PK Server Mode. -// Turns entire server pvp(excluding towns). -// Experience loss is doubled if killed by another player. -// When players hunt monsters over 20 levels higher, they will receive 15% -// additional exp., and 25% chance of receiving more items. -// There is a nopvp.txt for setting up maps not to have pk on in this mode. -// Novices cannot be attacked and cannot attack. -// Normal pvp counter and rank display are disabled as well. -// Note: If pk_mode is set to 2 instead of 1 (yes), players will receive a -// manner penalty of 5 each time they kill another player (see manner_system -// config to adjust how this will affect players) -pk_mode: 0 - -// Manner/karma system configuration. Specifies how does negative manner -// (red no chat bubble) affects players (add as needed): -// 0: No penalties. -// 1: Disables chatting (includes whispers, party/guild msgs, etc) -// 2: Disables skill usage -// 4: Disables commands usage -// 8: Disables item usage/picking/dropping -// 16: Disables room creation (chatrooms and vending shops) -manner_system: 31 - -// For PK Server Mode. Change this to define the minimum level players can start PK-ing -pk_min_level: 55 - -// For PK Server Mode. It specifies the maximum level difference between -// players to let them attack each other. 0 disables said limit. -pk_level_range: 0 - -// Display skill usage in console? (for debug only) (default: off) (Note 3) -skill_log: off - -// Display battle log? (for debug only) (default: off) (Note 1) -battle_log: off - -// Display other stuff? (for debug only) (default: off) (Note 1) -etc_log: off - -// Do you want to debug warp points? If set to yes, warp points will appear as flags.(Note 1) -// It will also run on start-up a warp-check to print out which warp points lead directly on -// top of on-touch npcs (which can lead to infinite loopback warping situations) -warp_point_debug: no - -// Choose if server begin with night (yes) or day (no) -night_at_start: no - -// Define duration in msec of the day (default: 7200000 = 2 hours) -// Set to 0 to disable day cycle (but not @day GM command). -// Except 0, minimum is 60000 (1 minute) -day_duration: 0 - -// Define duration in msec of the night (default: 1800000 = 30 min) -// Set to 0 to disable night cycle (but not @night GM command). -// Except 0, minimum is 60000 (1 minute) -night_duration: 0 - -// Using duel on pvp-maps -duel_allow_pvp: no - -// Using duel on gvg-maps -duel_allow_gvg: no - -// Allow using teleport/warp when dueling -duel_allow_teleport: no - -// Autoleave duel when die -duel_autoleave_when_die: yes - -// Delay between using @duel in minutes -duel_time_interval: 60 - -// Restrict duel usage to same map -duel_only_on_same_map: no - -// Determines max number of characters that can stack within a single cell. -// Official - Only affects the walking routines of characters, including monsters. -// If a unit stops walking and is on a cell with more than stack limit -// characters on it, it will walk to the closest free cell. -// Custom - This variation will make every full cell to be considered a wall. -// NOTE: For this setting to take effect you have to use a server compiled -// with Cell Stack Limit support (see src/map/map.h) -official_cell_stack_limit: 1 -custom_cell_stack_limit: 1 - -// If 0 while walking not check occupied cells -// If 1 while walking check occupied cells -check_occupied_cells: 1 - -// Allow autotrade only in map with autotrade flag? -// Set this to "no" will allow autotrade where no "autotrade" mapflag is set -// Set this to "yes" to only allow autotrade on maps with "autotrade" mapflag -at_mapflag: no - -// Set this to the amount of minutes autotrade chars will be kicked from the server. -at_timeout: 0 - -// Auction system, fee per hour. Default is 12000 -auction_feeperhour: 12000 - -// Auction maximum sell price -auction_maximumprice: 500000000 - -// Minimum delay between each store search query in seconds. -searchstore_querydelay: 10 - -// Maximum amount of results a store search query may yield, before -// it is canceled. -searchstore_maxresults: 30 - -// Whether or not gaining and loosing of cash points is displayed (Note 1). -// Default: no -cashshop_show_points: no - -// Whether or not mail box status is displayed upon login. -// Default: 0 -// 0 = No -// 1 = Yes -// 2 = Yes, when there are unread mails -mail_show_status: 0 - -// Is monster transformation disabled during Guild Wars? -// If set to yes, monster transforming is automatically removed/disabled when entering castles during WoE times -mon_trans_disable_in_gvg: no - -// Whether AegisName and SpriteName lookups are case sensitive -// Default: yes (as in official servers) -// When this is set to yes, item and monster lookups through atcommands and -// script commands will match AegisNames and SpriteNames only when the case -// matches. Display name lookups are not affected by this setting. -// Example: Given the two items: -// - { Id: 553, AegisName: "Bun", Name: "Bao" } -// - { Id: 6115, AegisName: "Bun_", Name: "Bun" } -// query when 'yes' when 'no' -// @item bun # 6115 # 553 -// @item Bun # 553 # 553 -// @item Bao # 553 # 553 -// @item Bun_ # 6115 # 6115 -case_sensitive_aegisnames: yes diff --git a/conf/battle/monster.conf b/conf/battle/monster.conf deleted file mode 100644 index 23087ec78..000000000 --- a/conf/battle/monster.conf +++ /dev/null @@ -1,238 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// The HP rate of MVPs. (Note 2) -mvp_hp_rate: 100 - -// The HP rate of normal monsters (that is monsters that are not MVP's) (Note 2) -monster_hp_rate: 100 - -// The maximum attack speed of a monster -monster_max_aspd: 199 - -// Defines various mob AI related settings. (Note 3) -// 0x001: When enabled mobs will update their target cell every few iterations -// (normally they never update their target cell until they reach it while -// chasing) -// 0x002: Makes mob use their "rude attack" skill (usually warping away) if they -// are attacked and they can't attack back regardless of how they were -// attacked (eg: GrimTooth), otherwise, their rude attack" is only activated -// if they can't melee reach the target (eg: sniping) -// 0x004: If not set, mobs that can change target only do so when melee attacked -// (distance player/mob < 3), otherwise mobs may change target and chase -// ranged attackers. This flag also overrides the 'provoke' target. -// 0x008: When set, mobs scatter as soon as they lose their target. Use this mode -// to make it much harder to mob-train by hiding and collecting them on a -// single spot (ie: GrimTooth training) -// 0x010: If set, mob skills defined for friends will also trigger on themselves. -// 0x020: When set, the monster ai is executed for all monsters in maps that -// have players on them, instead of only for mobs who are in the vicinity -// of players. -// 0x040: When set, when the mob's target changes map, the mob will walk towards -// any npc-warps in it's sight of view (use with mob_warp below) -// 0x100: When set, a mob will pick a random skill from it's list and start from -// that instead of checking skills in orders (when unset, if a mob has too -// many skills, the ones near the end will rarely get selected) -// 0x200: When set, a mob's skill re-use delay will not be applied to all entries of -// the same skill, instead, only to that particular entry (eg: Mob has heal -// on six lines in the mob_skill_db, only the entry that is actually used -// will receive the delay). This will make monsters harder, especially MvPs. -// 0x400: Set this to make mobs have a range of 9 for all skills. Otherwise, they -// will obey the normal skill range rules. -// Example: 0x140 -> Chase players through warps + use skills in random order. -monster_ai: 0 - -// How often should a monster rethink its chase? -// 0: Every 100ms (MIN_MOBTHINKTIME) -// 1: Every cell moved -// 2: Every 2 cells moved -// 3: Every 3 cells moved (official) -// x: Every x cells moved -// Regardless of this setting, a monster will always rethink its chase if it has -// reached its target. Increase this value if you want to make monsters continue -// moving after they lost their target (hide, no line of sight, etc.). -monster_chase_refresh: 3 - -// Should mobs be able to be warped (add as needed)? -// 0: Disable. -// 1: Enable mob-warping when standing on NPC-warps -// 2: Enable mob-warping when standing on Priest Warp Portals -// 4: Disable warping when the target map is a 'nobranch' map. -mob_warp: 0 - -// If these are set above 0, they define the time (in ms) during which monsters -// will have their 'AI' active after all players have left their vicinity. -mob_active_time: 0 -boss_active_time: 0 - -// Mobs and Pets view-range adjustment (range2 column in the mob_db) (Note 2) -view_range_rate: 100 - -// Chase Range is the base minimum-chase that a mob gives before giving up -// (as long as the target is outside their field of view). This is the range3 -// column in the mob_db. (Note 2) -chase_range_rate: 100 - -// Allow monsters to be aggresive and attack first? (Note 1) -monster_active_enable: yes - -// Should the mob_db names override the mob names specified in the spawn files? -// 0: No -// 1: always use the mob_db Name column (english mob name) -// 2: always use the mob_db JName column (original Kro mob name) -override_mob_names: 0 - -// Monster damage delay rate (Note 1) -// Setting to no/0 is like they always have endure. -monster_damage_delay_rate: 100 - -// Looting monster actions. -// 0 = Monster will consume the item. -// 1 = Monster will not consume the item. -monster_loot_type: 0 - -// Chance of mob casting a skill (Note 2) -// Higher rates lead to 100% mob skill usage with no/few normal attacks. -// Set to 0 to disable mob skills. -mob_skill_rate: 100 - -// Mob skill delay adjust (Note 2) -// After a mob has casted a skill, there is a delay before being able to -// re-cast it. Note that skills with a delay of 0 can't be affected by this -// setting. -mob_skill_delay: 100 - -// Rate of monsters on a map, 200 would be twice as many as normal. (Note 2) -mob_count_rate: 100 - -// Respawn rate of monsters on a map. 50 would make mobs respawn twice as fast (half delay time) (Note 2) -//Note: This does not affects mobs with immediate respawn (most normal mobs) -mob_spawn_delay: 100 -plant_spawn_delay: 100 -boss_spawn_delay: 100 - -// Should mobs not spawn within the viewing range of players? -// 0 is disabled, otherwise it is the number of retries before giving up -// and spawning the mob within player-view anyway, unless the max (100) is used, -// in which case the mob will not be spawned, and it'll be retried again in -// 5 seconds. -// NOTE: This has no effect on mobs that always spawn on the very same cell -// (like ant eggs) except if you set it to the max. -no_spawn_on_player: 0 - -// Should spawn coordinates in the mob-spawn files be ignored? (Note 1) -// If set to yes, all monsters will have a random respawn spot across the whole -// map regardless of what the mob-spawn file says. -force_random_spawn: no - -// Do summon slaves inherit the passive/aggressive traits of their master? -// 0: No, retain original mode. -// 1: Slaves are always aggressive. -// 2: Slaves are always passive. -// 3: Same as master's aggressive/passive state. -slaves_inherit_mode: 2 - -// Do summon slaves have the same walking speed as their master? -// NOTE: The default is 3 for official servers. -// 0: Never. -// 1: If the master can walk -// 2: If the master can't walk (even motionless mobs have a speed -// entry in their mob_db) -// 3: Always -slaves_inherit_speed: 3 - -// Will summoned monsters (alchemists, or @summon'ed monsters) attack cause a -// chance of triggering the master's autospell cards? (Note 1) -summons_trigger_autospells: yes - -// When a mob is attacked by another monster, will the mob retaliate against the master of said mob instead of the mob itself? -// NOTE: Summoned mobs are both those acquired via @summon and summoned by Alchemists -retaliate_to_master: yes - -// Whether mobs should change target temporarily when a skill triggers a counter mob skill (Note 1) -// eg: Mob attacks player B, and player A casts a skill C. If set to yes and the -// mob has a skill that is triggered by skill C, then A will be the target of -// the skill, otherwise B will be targetted by the reaction skill. -mob_changetarget_byskill: no - -// If monster's class is changed will it fully recover HP? (Note 1) -monster_class_change_full_recover: yes - -// Display some mob info next to their name? (add as needed) -// (does not works on guardian or Emperium) -// 1: Display mob HP (Hp/MaxHp format) -// 2: Display mob HP (Percent of full life format) -// 4: Display mob's level -show_mob_info: 0 - -// Zeny from mobs -zeny_from_mobs: no - -// Monsters level up (monster will level up each time a player is killed and they will grow stronger) -// Exp rate is calculated ((monster level-original monster level)*(exp*(mobs_level_up_exp rate/100))) -// NOTE: Does not apply to WoE Guardians. -mobs_level_up: no -mobs_level_up_exp_rate: 1 - -// Dynamic Mobs Options -// Use dynamic mobs? (recommended for small-medium sized servers) -dynamic_mobs: yes - -// Remove Mobs even if they are hurt -mob_remove_damaged: yes - -// Delay before removing mobs from empty maps (default 5 min = 300 secs) -mob_remove_delay: 300000 - -// Defines on who the mob npc_event gets executed when a mob is killed. -// Type 1: On the player that killed the mob (if killed by a non-player, resorts to type 0) -// Type 0: On the player that did the most damage to the mob. -// NOTE: This affects who gains the Castle when the Emperium is broken. -mob_npc_event_type: 1 - -// Time in milliseconds to activate protection against Kill Steal -// Set to 0 to disable it. -// If this is activated and a player is using @noks, damage from others players (KS) not in the party -// will be reduced to 0. -ksprotection: 0 - -// Should MVP slaves retain their target when summoned back to their master? -mob_slave_keep_target: yes - -// Whether or not to spawn the mvp tomb. -// See http://irowiki.org/wiki/MVP#Gravestone -mvp_tomb_enabled: yes - -// Show hp bar on monsters? (Default: yes) -// NOTE: only works on client 2012-04-04aRagexeRE onwards -show_monster_hp_bar: yes - -// Whether or not the size of specially summoned mobs influences experience, drop rates, -// and stats. The rates will be doubled for large mobs, and halved for small ones. -// This is only invoked under the 'monster' command, @monsterbig, and @monstersmall. (Note 1) -// Default: no -mob_size_influence: no - -// How should a monster be trapped by an icewall casted directly on it? -// On official servers, monsters can only leave an icewall to the west and south. If their target is north or east of -// them they will continously try to chase it but fail doing so. This brings them into a loop during which they will use -// idle and chase skills. Boss monsters on the other hand will behave like a trapped monster, do not move and will use -// idle and rudeattacked skills (when attacked). -// 0: Monster won't be stuck in icewall at all. -// 1: Monster will behave like a trapped monster. -// 2-255: Number of loops a monster will go through the behavior described above before it frees itself from icewall. -// NOTE: On some servers, normal monsters can free themselves after 15-35 second depending on their speed. On other -// servers, they will be stuck inside icewall until it expires. Also, many official servers (e.g. iRO) have casting -// icewall completely blocked on all maps that have boss monsters on them. -// Default (least exploitable): mob - 75, boss - 0 -// Default (most official): mob - 220, boss - 1 -mob_icewall_walk_block: 220 -boss_icewall_walk_block: 1 diff --git a/conf/battle/party.conf b/conf/battle/party.conf deleted file mode 100644 index 72a22b94a..000000000 --- a/conf/battle/party.conf +++ /dev/null @@ -1,53 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -//-------------------------------------------------------------- - -// If someone steals (gank/steal skills), show name in party? (Note 1) -show_steal_in_same_party: no - -// Interval before updating the party-member map mini-dots (milliseconds) -party_update_interval: 1000 - -// Method used to update party-mate hp-bars: -// 0: Aegis - bar is updated every time HP changes (bandwidth intensive) -// 1: Athena - bar is updated with the party map dots (up to 1 second delay) -party_hp_mode: 0 - -// When 'Party Share' item sharing is enabled in a party, -// announce in the party which party-member received the item and what's he received? (Note 1) -show_party_share_picker: yes - -// What types of items are going to be announced when 'show_party_share_picker' is active? -// 1: IT_HEALING, 2: IT_UNKNOWN, 4: IT_USABLE, 8: IT_ETC, -// 16: IT_WEAPON, 32: IT_ARMOR, 64: IT_CARD, 128: IT_PETEGG, -// 256: IT_PETARMOR, 512: IT_UNKNOWN2, 1024: IT_AMMO, 2048: IT_DELAYCONSUME -// 262144: IT_CASH -show_picker.item_type: 112 - -// Method of distribution when item party share is enabled in a party: -// 0: Normal (item goes to a random party member) -// 1: Item Share is disabled for non-mob drops (player/pet drops) -// 2: Round Robin (items are distributed evenly and in order among members) -// 3: 1+2 -party_item_share_type: 0 - -// Is exp/item sharing disabled for idle members in the party? -// Set to no, or the amount of seconds (NOT milliseconds) that need to pass before considering -// a character idle. -// Characters in a chat/vending are always considered idle. -// A character's idle status is reset upon item use/skill use/attack (auto attack counts too)/movement. -idle_no_share: no - -// Give additional experience bonus per party-member involved on even-share parties (excluding yourself)? -// ex. If set to 10, an even-share party of 5 people will receive +40% exp (4 members * 10% exp): -// 140% party experience in total, so each member receives 140%/5 = 28% exp (instead of 20%). -party_even_share_bonus: 0 - -// Display party name regardless if player is in a guild. -// Official servers do not display party name unless the user is in a guild. (Note 1) -display_party_name: no diff --git a/conf/battle/pet.conf b/conf/battle/pet.conf deleted file mode 100644 index 594184b35..000000000 --- a/conf/battle/pet.conf +++ /dev/null @@ -1,77 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// Rate for catching pets (Note 2) -pet_catch_rate: 100 - -// Can you name a pet more then once? (Note 1) -pet_rename: no - -// The rate a pet will get friendly by feeding it. (Note 2) -pet_friendly_rate: 100 - -// The rate at which a pet will become hungry. (Note 2) -pet_hungry_delay_rate: 100 - -// If your pet is hungry by how much will the friendlyness decrease by. (Default is 5) -// Note: The friendlyness is 0-1000 total, at 0 the pet runs away. -pet_hungry_friendly_decrease: 5 - -// Does the pet need its equipment before it does its skill? (Note 1) -pet_equip_required: yes - -// When the master attacks a monster, whether or not the pet will also attack. (Note 1) -pet_attack_support: no - -// When the master receives damage from the monster, whether or not the pet attacks back. (Note 1) -pet_damage_support: no - -// Minimum intimacy necessary for a pet to support their master. Default is 900 -// (intimacy goes from 0 to 1000). At this minimum, support rate is 50% of pet's normal value. -// At max (1000) support rate is 150%. -pet_support_min_friendly: 900 - -// Same as above, but this is to use the pet_script field with official pet abilities. -pet_equip_min_friendly: 900 - -// Whether or not the pet's will use skills. (Note 1) -// Note: Offensive pet skills need at least pet_attack_support or -// pet_damage_support to work (they trigger while the pet is attacking). -pet_status_support: no - -// Rate at which a pet will support it's owner in battle. (Note 2) -// Affects pet_attack_support & pet_damage_support. -pet_support_rate: 100 - -// Does the pets owner receive exp from the pets damage? -pet_attack_exp_to_master: no - -// The rate exp. is gained from the pet attacking monsters -pet_attack_exp_rate: 100 - -// Pet leveling system. Use 0 to disable (default). -// When enabled, a pet's level is a fixed % of the master's. (Note 2) -// If 200%, pet has double level, if 50% pet has half your level, etc. -pet_lv_rate: 0 - -// When pet leveling is enabled, what is the max stats for pets? -pet_max_stats: 99 - -// When pet leveling is enabled, these are the imposed caps on -// min/max damage. Note that these only cap atk1 and atk2, if you -// enable pet_str, their max damage is then their base_atk + pet_max_atk2 -pet_max_atk1: 500 -pet_max_atk2: 1000 - -// Are pets disabled during Guild Wars? -// If set to yes, pets are automatically returned to egg when entering castles during WoE times -// and hatching is forbidden within as well. -pet_disable_in_gvg: no diff --git a/conf/battle/player.conf b/conf/battle/player.conf deleted file mode 100644 index 9168a6320..000000000 --- a/conf/battle/player.conf +++ /dev/null @@ -1,191 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. -//-------------------------------------------------------------- - -// Players' maximum HP rate? (Default is 100) -hp_rate: 100 - -// Players' maximum SP rate? (Default is 100) -sp_rate: 100 - -// Whether or not cards and attributes of the left hand are applied to the right hand attack (Note 1) -// (It is 'yes' on official servers) -left_cardfix_to_right: yes - -// The amount of HP a player will respawn with, 0 is default. -// (Unit is in percentage of total HP, 100 is full heal of HP, 0 is respawn with 1HP total.) -restart_hp_rate: 0 - -// The amount of SP a player will respawn with, 0 is default. -// (Unit is in percentage of total SP, 100 is full heal of SP, 0 is respawn with 1SP total.) -restart_sp_rate: 0 - -// Can a normal player by-pass the skill tree? (Note 1) -player_skillfree: no - -// When set to yes, forces skill points gained from 1st class to be put into 1st class -// skills, and forces novice skill points to be put into the basic skill. (Note 1) -player_skillup_limit: yes - -// Quest skills can be learned? (Note 1) -// Setting this to yes can open an exploit on your server! -quest_skill_learn: no - -// When skills are reset, quest skills are reset as well? (Note 1) -// Setting this to yes can open an exploit on your server! -// NOTE: If you have quest_skill_learn set to yes, quest skills are always reset. -quest_skill_reset: no - -// You must have basic skills to be able to sit, trade, form a party or create a chatroom? (Note 1) -basic_skill_check: yes - -// When teleporting, or spawning to a map, how long before a monster sees you if you don't move? (time is in milliseconds) -// That is, when you go to a map and don't move, how long before the monsters will notice you. -// When moving, attacking or doing similar actions, the effect ends instantly. -// Value is also affected by 'invincible_time_inc' mapflag -player_invincible_time: 5000 - -// When set to true, it prevent portal abuse for avoid hits. Official value is false. -fix_warp_hit_delay_abuse: false - -// The time interval for HP to restore naturally. (in milliseconds) -natural_healhp_interval: 6000 - -// The time interval for SP to restore naturally. (in milliseconds) -natural_healsp_interval: 8000 - -// Automatic healing skill's time interval. (in milliseconds) -natural_heal_skill_interval: 10000 - -// The maximum weight for a character to carry when the character stops healing naturally. (in %) -natural_heal_weight_rate: 50 - -// Maximum atk speed. (Default 190, Highest allowed 199) -max_aspd: 190 - -// Same as max_aspd, but for 3rd classes. (Default 193, Highest allowed 199) -max_third_aspd: 193 - -// Maximum walk speed rate (200 would be capped to twice the normal speed) -max_walk_speed: 300 - -// Maximum HP. (Default is 1000000) -max_hp: 1000000 - -// Maximum SP. (Default is 1000000) -max_sp: 1000000 - -// Max limit of char stats. (agi, str, etc.) -max_parameter: 99 - -// Same as max_parameter, but for 3rd classes. -max_third_parameter: 130 - -// Same as max_parameter, but for extend classes (Ex. Super Novice, Kagero/Oboro, Rebellion). -max_extended_parameter: 125 - -// Same as max_parameter, but for baby classes. -max_baby_parameter: 80 - -// Same as max_parameter, but for baby 3rd's. -max_baby_third_parameter: 117 - -// Max armor def/mdef -// NOTE: This setting have no effect if server is run on Renewal Mode (RENEWAL) -// NOTE: does not affects skills and status effects like Mental Strength -// If weapon_defense_type is non-zero, it won't apply to max def. -// If magic_defense_type is non-zero, it won't apply to max mdef. -max_def: 99 - -// Def to Def2 conversion bonus. If the armor def/mdef exceeds max_def, -// the remaining is converted to vit def/int mdef using this multiplier -// (eg: if set to 10, every armor point above the max becomes 10 vit defense points) -over_def_bonus: 0 - -// Max weight carts can hold. -max_cart_weight: 8000 - -// Prevent logout of players after being hit for how long (in ms, 0 disables)? -prevent_logout: 10000 - -// Display the drained hp/sp values from normal attacks? (Ie: Hunter Fly card) -show_hp_sp_drain: no - -// Display the gained hp/sp values from killing mobs? (Ie: Sky Deleter Card) -show_hp_sp_gain: yes - -// Show the critical bonus for katar class weapon in player status window? -// On official server, the critical bonus from katar class weapon isn't display. (Default: no) -show_katar_crit_bonus: no - -// If set, when A accepts B as a friend, B will also be added to A's friend -// list, otherwise, only A appears in B's friend list. -// NOTE: this setting only enables friend auto-adding; auto-deletion does not work yet -friend_auto_add: yes - -// Are simultaneous trade/party/guild invite requests automatically rejected? -invite_request_check: yes - -// Players' will drop a 'Skull' when killed? -// 0 = Disabled -// 1 = Dropped only in PvP maps -// 2 = Dropped in all situations -bone_drop: 0 - -// Do mounted (on Peco) characters increase their size -// 0 = no -// 1 = only Normal Classes on Peco have Big Size -// 2 = only Baby Classes on Peco have Medium Size -// 3 = both Normal Classes on Peco have Big Size -// and Baby Classes on Peco have Medium Size -character_size: 0 - -// Idle characters can receive autoloot? -// Set to the time in seconds where an idle character will stop receiving -// items from Autoloot (0: disabled). -idle_no_autoloot: 0 - -// Minimum distance a vending/chat room must be from a NPC in order to be placed -// Default: 3 (0: disabled). -min_npc_vendchat_distance: 3 - -// If min_npc_vendchat_distance is enabled, -// can players vend/chat room nearby hidden npc? (Ie: FAKE_NPC/HIDDEN_WARP_NPC) -vendchat_near_hiddennpc: no - -// Super Novice's fury is enabled to increments of 10%, such as at 10.0%, 20.0% - 80.0%, 90.0% -// Changing snovice_call_type config to 1 enables its use at 0%, for maxed super novices. -// default: 0 -snovice_call_type: 0 - -// How the server should measure the character's idle time? (Note 3) -// 0x001 - Walk Request -// 0x002 - UseSkillToID Request ( targetted skill use attempt ) -// 0x004 - UseSkillToPos Request ( aoe skill use attempt ) -// 0x008 - UseItem Request ( including equip/unequip ) -// 0x010 - Attack Request -// 0x020 - Chat Request ( whisper, party, guild, bg, etca ) -// 0x040 - Sit/Standup Request -// 0x080 - Emotion Request -// 0x100 - DropItem Request -// 0x200 - @/#Command Request -// Please note that at least 1 option has to be enabled. -// Be mindful that the more options used, the easier it becomes to cheat features that rely on idletime (e.g. checkidle()). -// Default: walk ( 0x1 ) + useskilltoid ( 0x2 ) + useskilltopos ( 0x4 ) + useitem ( 0x8 ) + attack ( 0x10 ) = 0x1F -idletime_criteria: 0x1F - -// Can players get ATK/DEF from refinements on costume/shadow equips? -// Default: yes (Official behavior not known) -costume_refine_def: yes -shadow_refine_def: yes -shadow_refine_atk: yes - -// Keep player facing direction after warping? -// Default: no (on official servers players always faces north) -player_warp_keep_direction: yes diff --git a/conf/battle/skill.conf b/conf/battle/skill.conf deleted file mode 100644 index 7622968f8..000000000 --- a/conf/battle/skill.conf +++ /dev/null @@ -1,303 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) -//-------------------------------------------------------------- - -// The rate of time it takes to cast a spell (Note 2, 0 = No casting time) -casting_rate: 100 - -// Delay time after casting (Note 2) -delay_rate: 100 - -// Does the delay time depend on the caster's DEX and/or AGI? (Note 1) -// Note: On Official servers, neither Dex nor Agi affect delay time -delay_dependon_dex: no -delay_dependon_agi: no - -// Minimum allowed delay for ANY skills after casting (in milliseconds) (Note 1) -// Note: Setting this to anything above 0 can stop speedhacks. -min_skill_delay_limit: 100 - -// This delay is the min 'can't walk delay' of all skills. -// NOTE: Do not set this too low, if a character starts moving too soon after -// doing a skill, the client will not update this, and the player/mob will -// appear to "teleport" afterwards. -default_walk_delay: 300 - -//Completely disable skill delay of the following types (Note 3) -//NOTE: By default mobs don't have the skill delay as specified in the skill -// database, but follow their own 'reuse' skill delay which is specified on -// the mob skill db. When set, the delay for all skills become -// min_skill_delay_limit. -no_skill_delay: 2 - -// At what dex does the cast time become zero (instant cast)? -castrate_dex_scale: 150 - -// How much (dex*2+int) does variable cast turns zero? -vcast_stat_scale: 530 - -// What level of leniency should the skill system give for skills when -// accounting attack motion (ASPD) for casting skills (Note 2, between 0 and 300) -// -// NOTE: Setting this to 100% may cause some issues with valid skills not being cast. -// The time difference between client and server varies so allowing 90% leniency -// should be enough to forgive very small margins of error. -skill_amotion_leniency: 90 - -// Will normal attacks be able to ignore the delay after skills? (Note 1) -skill_delay_attack_enable: yes - -// Range added to skills after their cast time finishes. -// Decides how far away the target can walk away after the skill began casting before the skill fails. -// 0 disables this range checking (default) -skill_add_range: 0 - -// If the target moves out of range while casting, do we take the items and SP for the skill anyway? (Note 1) -skill_out_range_consume: no - -// Does the distance between caster and target define if the skill is a ranged skill? (Note 3) -// If set, when the distance between caster and target is greater than 3 the skill is considered long-range, otherwise it's a melee range. -// If not set, then the range is determined by the skill's range (if it is above 5, the skill is ranged). -// Default 14 (mobs + pets + homun) -skillrange_by_distance: 14 - -// Should the equipped weapon's range override the skill's range defined in the skill_db for most weapon-based skills? (Note 3) -// NOTE: Skills affected by this option are those whose range in the skill_db are negative. By default always the skill range is used. -// Note that if you want all monster skills to have a range of 9 you need to set monster_ai&0x400. -skillrange_from_weapon: 0 - -// Should a check on the caster's status be performed in all skill attacks? -// When set to yes, meteors, storm gust and any other ground skills will have -// no effect while the caster is unable to fight (eg: stunned). -skill_caster_check: yes - -// Should ground placed skills be removed as soon as the caster dies? (Note 3) -clear_skills_on_death: 0 - -// Should ground placed skills be removed when the caster changes maps? (Note 3) -clear_skills_on_warp: 15 - -//Setting this to YES will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" -//The two skills affected by default are Pneuma and Safety Wall (if set to yes, those two skills will not protect everyone, but only allies) -//See db/skill_unit_db.txt for more info. -defunit_not_enemy: no - -// Do skills do at least 'hits' damage when they don't miss/are blocked? -//(for example, will firebolts always do "number of bolts" damage versus plants?) -//Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. -skill_min_damage: 6 - -// The delay rate of monk's combo (Note 2) -combo_delay_rate: 100 - -// Use alternate auto Counter Attack Skill Type? (Note 3) -// For those characters on which it is set, 100% Critical, -// Otherwise it disregard DEF and HIT+20, CRI*2 -auto_counter_type: 15 - -// Can ground skills be placed on top of each other? (Note 3) -// By default, skills with UF_NOREITERATION set cannot be stacked on top of -// other skills, this setting will override that. (skill_unit_db) -skill_reiteration: 0 - -// Can ground skills NOT be placed underneath/near players/monsters? (Note 3) -// If set, only skills with UF_NOFOOTSET set will be affected (skill_unit_db) -skill_nofootset: 1 - -// Should traps (hunter traps + quagmire) change their target to "all" inside gvg/pvp grounds? (Note 3) -// Default on official servers: yes for player-traps -gvg_traps_target_all: 1 - -// Some traps settings (add as necessary): -// 1: Traps are invisible to those who come into view of it. When unset, all traps are visible at all times. -// (Invisible traps can be revealed through Hunter's Detecting skill) -traps_setting: 0 - -// Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) -// 1: Enable players to damage the floras outside of versus grounds. -// 2: Disable having different types out at the same time -// (eg: forbid summoning anything except hydras when there's already -// one hydra out) -summon_flora_setting: 3 - -// When songs are canceled, terminated or the character goes out of the -// area of effect, there's an additional effect that lasts for 20 seconds -// Should that time be reset for each song? -// 0: No, you must recast the song AFTER those 20 seconds to have the effect again (Aegis) -// 1: Yes, recasting songs reset the 20 seconds timer (eathena) -song_timer_reset: 0 - -// Whether placed down skills will check walls (Note 1) -// (Makes it so that Storm Gust/Lord of Vermillion/etc when cast next to a wall, won't hit on the other side) -skill_wall_check: yes - -// When cloaking, Whether the wall is checked or not. (Note 1) -// Note: When the skill does not checks for walls, you will always be considered -// as if you had a wall-next to you (you always get the wall-based speed). -// Add the settings as required, being hit always uncloaks you. -// 0 = doesn't check for walls -// 1 = Check for walls -// 2 = Cloaking is not canceled when attacking. -// 4 = Cloaking is not canceled when using skills -player_cloak_check_type: 1 -monster_cloak_check_type: 4 - -// Can't place unlimited land skills at the same time (Note 3) -land_skill_limit: 9 - -//Determines which kind of skill-failed messages should be sent: -// 0 - Enable by default -// 1 - Disable all skill-failed messages. -// 2 - Disable skill-failed messages due to can-act delays. -// 4 - Disable failed message from Snatcher -// 8 - Disable failed message from Envenom -display_skill_fail: 0 - -// Can a player in chat room (in-game), be warped by a warp portal? (Note 1) -chat_warpportal: no - -// What should the wizard's "Sense" skill display on the defense fields? -// 0: Do not show defense -// 1: Base defense [RE default] -// 2: Vit/Int defense -// 3: Both (the addition of both) -sense_type: 1 - -// Which finger offensive style will be used? -// 0 = Aegis style (single multi-hit attack) -// 1 = Athena style (multiple consecutive attacks) -finger_offensive_type: 0 - -// Grandcross Settings (Don't mess with these) -// If set to no, hit interval is increased based on the amount of mobs standing on the same cell -// (means that when there's stacked mobs in the same cell, they won't receive all hits) -gx_allhit: no - -// Grandcross display type (Default 1) -// 0: Yellow character -// 1: White character -gx_disptype: 1 - -// Max Level Difference for Devotion -devotion_level_difference: 10 - -// If no than you can use the ensemble skills alone. (Note 1) -player_skill_partner_check: yes - -// Remove trap type -// 0 = Aegis system : Returns 1 'Trap' item -// 1 = Athena system : Returns all items used to deploy the trap -skill_removetrap_type: 0 - -// Does using bow to do a backstab give a 50% damage penalty? (Note 1) -backstab_bow_penalty: yes - -// How many times you could try to steal from a mob. -// Note: It helps to avoid stealing exploit on monsters with few rare items -// Use 0 to disable (max allowed value is 255) -skill_steal_max_tries: 0 - -// Can Rogues plagiarize advanced job skills -// 0 = no restriction -// 1 = only stalker may plagiarize advanced skills -// 2 = advanced skills cannot be plagiarized by anyone -// Official servers setting: 2 -copyskill_restrict: 2 - -// Does Berserk/Frenzy cancel other self-buffs when used? -berserk_cancels_buffs: no - -// Level and Strength of "MVP heal". When someone casts a heal of this level or -// above, the heal formula is bypassed and this value is used instead. -max_heal: 9999 -max_heal_lv: 11 - -// Emergency Recall Guild Skill setting (add as appropriate). -// Note that for the skill to be usable at all, -// you need at least one of 1/2 and 4/8 -// 1: Skill is usable outside of woe. -// 2: Skill is usable during woe. -// 4: Skill is usable outside of GvG grounds -// 8: Skill is usable on GvG grounds -//16: Disable skill from "nowarpto" maps -// (it will work on GVG castles even if they are set to nowarpto, though) -emergency_call: 11 - -// Guild Aura Skills setting (add as appropriate). -// (This affects GD_LEADERSHIP, GD_GLORYWOUNDS, GD_SOULCOLD and GD_HAWKEYES) -// Note that for the skill to be usable at all, -// you need at least one of 1/2 and 4/8 -// 1: Skill works outside of woe. -// 2: Skill works during woe. -// 4: Skill works outside of GvG grounds -// 8: Skill works on GvG grounds -//16: Disable skill from affecting Guild Master -guild_aura: 31 - -// Allows players to skip menu when casting Teleport level 1 -// Menu contains two options. "Random" and "Cancel" -skip_teleport_lv1_menu: no - -// Allow use of SG skills without proper day (Sun/Moon/Star) ? -allow_skill_without_day: no - -// Allow use of ES-type magic on players? -allow_es_magic_player: no - -// Miracle of the Sun, Moon and Stars skill ratio (100% = 10000) -sg_miracle_skill_ratio: 2 - -// Miracle of the Sun, Moon and Stars skill duration in milliseconds -sg_miracle_skill_duration: 3600000 - -// Angel of the Sun, Moon and Stars skill ratio (100% = 10000) -sg_angel_skill_ratio: 10 - -// Skills that bHealPower has effect on -// 1: Heal, 2: Sanctuary, 4: Potion Pitcher, 8: Slim Pitcher, 16: Apple of Idun -skill_add_heal_rate: 7 - -// Whether the damage of EarthQuake with a single target on screen is able to be reflected. -// Note: On official server, EQ is reflectable when there is only one target on the screen, -// which might be an exploit to hunt the MVPs. -eq_single_target_reflectable: yes - -// On official server, you will receive damage from Reflection and some Tarot Card even in invincible status. -// When this setting is enabled, it allows you to immune to all kinds of damage, including those stated previous. -// (The number will show but no actual damage will be done) -invincible.nodamage: no - -// Dancing Weapon Switch -// On official server, a fix is in place that prevents the switching of weapons to cancel songs. -// Default: yes -dancing_weaponswitch_fix: yes - -// Skill Trap Type (GvG) -// 0: (official) Traps in GvG only make player stop moving after its walk path is complete, and it activates other traps on the way. -// 1: Traps in GvG make player stop moving right when stepping over it. -skill_trap_type: 0 - -// Max Possible Level of Monster skills -// Note: If your MVPs are too tough, reduce it to 10. -mob_max_skilllvl: 100 - -// Area of Bowling Bash chain reaction -// 0: Use official gutter line system -// 1: Gutter line system without demi gutter bug -// 2-20: Area around caster (2 = 5x5, 3 = 7x7, 4 = 9x9, ..., 20 = 41x41) -// Note: If you knock the target out of the area it will only be hit once and won't do splash damage -bowling_bash_area: 0 - -// On official servers, Storm Gust consists of 81 units that all deal 3x3 splash damage "away from center". Due to -// south-western cells being processed first, this usually leads to a knockback to the northeast. Knockback at the -// edges will be away from SG. Knockback direction can also be influenced by Ganbantein and Land Protector. If you -// punch a hole into SG it will for example create a "suck in" effect. -// If you disable this setting, the knockback direction will be completely random (eAthena style). -stormgust_knockback: yes diff --git a/conf/battle/status.conf b/conf/battle/status.conf deleted file mode 100644 index 172706817..000000000 --- a/conf/battle/status.conf +++ /dev/null @@ -1,24 +0,0 @@ -//-------------------------------------------------------------- -// Hercules Battle Configuration File -// Originally Translated by Peter Kieser -// Made in to plainer English by Ancyker -//-------------------------------------------------------------- -// Note 1: Value is a config switch (on/off, yes/no or 1/0) -// Note 2: Value is in percents (100 means 100%) -// Note 3: Value is a bit field. If no description is given, -// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) -//-------------------------------------------------------------- - -// Should skill casting be canceled when inflicted by curse/stun/sleep/etc (includes silence) (Note 3)? -status_cast_cancel: 0 - -// Adjustment for the natural rate of resistance from status changes. -// If 50, status defense is halved, and you need twice as much stats to block -// them (eg: 200 vit to completely block stun) -pc_status_def_rate: 100 -mob_status_def_rate: 100 - -// Maximum resistance to status changes. (100 = 100%) -// NOTE: Cards and equipment can go over this limit, so it only applies to natural resist. -pc_max_status_def: 100 -mob_max_status_def: 100 diff --git a/conf/import-tmpl/battle.conf b/conf/import-tmpl/battle.conf new file mode 100644 index 000000000..4080eed72 --- /dev/null +++ b/conf/import-tmpl/battle.conf @@ -0,0 +1,32 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +//= Battle local configuration file. +//========================================================================= + +battle_configuration: { + // See conf/map/battle.conf for details +} diff --git a/conf/import-tmpl/battle_conf.txt b/conf/import-tmpl/battle_conf.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/conf/map/battle.conf b/conf/map/battle.conf new file mode 100644 index 000000000..f17748fb6 --- /dev/null +++ b/conf/map/battle.conf @@ -0,0 +1,87 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +//= Battle Configuration File +//========================================================================= + +battle_configuration: { + // General battle-related settings. + @include "conf/map/battle/battle.conf" + + // Settings specific to the client. + @include "conf/map/battle/client.conf" + + // General drop-related configs. + @include "conf/map/battle/drops.conf" + + // Experience rates, exp penalties, stats and max level settings. + @include "conf/map/battle/exp.conf" + + // GM levels, atcommands and hack-related configs. + @include "conf/map/battle/gm.conf" + + // Guild and WoE settings + @include "conf/map/battle/guild.conf" + + // Battleground settings + @include "conf/map/battle/battleground.conf" + + // Item/card-specific and crafting related options. + @include "conf/map/battle/items.conf" + + // Mob related configuration + @include "conf/map/battle/monster.conf" + + // Party related configuration + @include "conf/map/battle/party.conf" + + // Pet related configuration + @include "conf/map/battle/pet.conf" + + // Homunc related configuration + @include "conf/map/battle/homunc.conf" + + // Player specific settings + @include "conf/map/battle/player.conf" + + // Skill related settings + @include "conf/map/battle/skill.conf" + + // Status change related settings + @include "conf/map/battle/status.conf" + + // Feature control (on/off) settings + @include "conf/map/battle/feature.conf" + + // Anything else that didn't fit anywhere else. + // Includes duel, day/night, mute/manner, log settings. + @include "conf/map/battle/misc.conf" + + // Your custom config goes here. + @include "conf/import/battle.conf" +} + +import: "conf/import/battle.conf" diff --git a/conf/map/battle/battle.conf b/conf/map/battle/battle.conf new file mode 100644 index 000000000..2e73a0aa8 --- /dev/null +++ b/conf/map/battle/battle.conf @@ -0,0 +1,180 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Battle) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Who should have a baseatk value (makes str affect damage)? (Note 3) +enable_baseatk: 9 + +// Who can have perfect flee? (Note 3) +enable_perfect_flee: 1 + +// Who can have critical attacks? (Note 3) +// (Note that there are some skills that always do critical hit regardless of this) +enable_critical: 17 + +// Critical adjustment rate for non-players (Note 2) +mob_critical_rate: 100 +critical_rate: 100 + +// Should normal attacks give you a walk delay? (Note 3) +// If false, characters can move as soon as they start an attack (attack animation +// or walk animation may be omitted client-side, causing cropped attacks or +// monsters that teleport to you) +// Otherwise, the delay is equal to the 'attack animation' (amotion) +attack_walk_delay: 15 + +// Move-delay adjustment after being hit. (Note 2) +// The 'can't walk' delay after being hit is calculated as a percentage of the damage animation duration. +// NOTE: Only affects the normal delay from a single attack, not the delay added by the multihit_delay option below. +pc_damage_walk_delay_rate: 20 +damage_walk_delay_rate: 100 + +// Move-delay adjustment for multi-hitting attacks. +// When hit by a multi-hitting skill like Lord of Vermillion or Jupitel Thunder, characters will be +// unable to move for an additional "(number of hits -1) * multihit_delay" milliseconds. +// 80 is the setting that feels like Aegis (vs Sonic Blows) +// 230 is the setting that makes walkdelay last until the last hit (vs Jupitel thunder) +multihit_delay: 80 + +// Damaged delay rate for players (Note 2) +// (Setting to false/0 will be like always endure) +player_damage_delay_rate: 100 + +// Should race or element be used to consider someone undead? +// 0 = element undead +// 1 = race undead +// 2 = both (either one works) +undead_detect_type: 0 + +// Does HP recover if hit by an attribute that's same as your own? (Note 1) +// (Will not work in Renewal) +attribute_recover: false + +// What is the minimum and maximum hitrate of normal attacks? +min_hitrate: 5 +max_hitrate: 100 + +// Type of penalty that is applied to FLEE when more than agi_penalty_count monsters are targetting player +// 0 = no penalty is applied +// 1 = agi_penalty_num is reduced from FLEE as a % +// 2 = agi_penalty_num is reduced from FLEE as an exact amount +agi_penalty_type: 1 + +// When agi penalty is enabled, to whom it should apply to? (Note 3) +// By default, only players get the penalty. +agi_penalty_target: 1 + +// Amount of enemies required to be targetting player before FLEE begins to be penalized +agi_penalty_count: 3 + +// Amount of FLEE penalized per each attacking monster more than agi_penalty_count +agi_penalty_num: 10 + +// Type of penalty that is applied to both equipment and vit DEF when more than vit_penalty_count monsters are targetting player +// 0 = no penalty is applied +// 1 = vit_penalty_num is reduced from DEF as a % +// 2 = vit_penalty_num is reduced from DEF as an exact amount +vit_penalty_type: 1 + +// When vit penalty is enabled, to whom it should apply to? (Note 3) +// By default, only players get the penalty. +vit_penalty_target: 1 + +// Amount of enemies required to be targetting player before defense begins to be penalized +vit_penalty_count: 3 + +// Amount of VIT defense penalized per each attacking monster more than vit_penalty_count +vit_penalty_num: 5 + +// Use alternate method of DEF calculation for physical attacks. +// With 0, disabled (use normal def% reduction with further def2 reduction) +// At 1 or more defense is subtraction of (DEF* value). +// eg: 10 + 50 def becomes 0 + (10*type + 50) +weapon_defense_type: 0 + +// MDEF, same as above....(MDEF*value) +magic_defense_type: 0 + +// Change attacker's direction to face opponent on every attack? (Note 3) +// NOTE: On official servers knockback of some skills like Firewall is always based on the +// last direction walked. Even when attacking in a completely different direction, the +// knockback direction won't change, so e.g. if you walk north and then attack an enemy to +// the south you will still be knocked back to the south by Firewall. Immobile monsters +// will always be knocked back to the south as their default direction is north. +attack_direction_change: 0 + +// For those who is set, their innate attack element is "not elemental" +// (100% versus on all defense-elements) (Note 3) +// NOTE: This is the setting that makes it so non-players can hit for full +// damage against Ghost-type targets with normal attacks (eg: vs. Ghostring). +attack_attr_none: 14 + +// Rate at which equipment can break (base rate before it's modified by any skills) +// 1 = 0.01% chance. Default for official servers: 0 +equip_natural_break_rate: 0 + +// Overall rate of which your own equipment can break. (Note 2) +// This rate affects penalty breaking rate of skills such as power-thrust and your natural breaking rate +// (from equip_natural_break_rate). If a Sage's endow skill fails and this is above 0, the selected char's +// weapon will be broken. +equip_self_break_rate: 100 + +// Overall rate at which you can break target's equipment. (Note 2) +// This affects the behaviour of skills like acid terror and meltdown +equip_skill_break_rate: 100 + +// Do weapon attacks have a attack speed delay before actual damage is applied? (Note 1) +// NOTE: The official setting is true, even thought it degrades performance a bit. +delay_battle_damage: true + +// Are arrows/ammo consumed when used on a bow/gun? +// 0 = No +// 1 = Yes +// 2 = Yes even for skills that do not specify arrow consumption when said +// skill is weapon-based and used with ranged weapons (auto-guesses which +// skills should consume ammo when it's acquired via a card or plagiarize) +arrow_decrement: 1 + +// Should the item script bonus 'Autospell' check for range/obstacles before casting? +// Official behavior is false, setting this to true will make skills use their defined +// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed. +// This setting also affects autospellwhenhit. +autospell_check_range: false + +// If both the attacker and the target are on the same tile, should the target be knocked back to the left? +// Official behavior is true, setting this to false will knock the target back behind the attacker. +knockback_left: true + +// Should the target be able of dodging damage by snapping away to the edge of the screen? +// Official behavior is false +snap_dodge: false diff --git a/conf/map/battle/battleground.conf b/conf/map/battle/battleground.conf new file mode 100644 index 000000000..629a664f7 --- /dev/null +++ b/conf/map/battle/battleground.conf @@ -0,0 +1,40 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Battlegrounds) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Flee penalty on BG grounds. +// NOTE: It's %, not absolute, so 20 is -20% of your total flee +bg_flee_penalty: 20 + +// Interval before updating the bg-member map mini-dots (milliseconds) +bg_update_interval: 1000 diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf new file mode 100644 index 000000000..818db3142 --- /dev/null +++ b/conf/map/battle/client.conf @@ -0,0 +1,158 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Client) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Whether to enable the official packet obfuscation support (good vs WPE) +// 0: disabled +// 1: optional (not recommended) -- identifies whether it is required +// 2: enabled (recommended) +packet_obfuscation: 1 + +// Minimum delay between whisper/global/party/guild messages (in ms) +// Messages that break this threshold are silently omitted. +min_chat_delay: 0 + +// Valid range of dyes and styles on the client. +min_hair_style: 0 +max_hair_style: 29 +min_hair_color: 0 +max_hair_color: 8 +min_cloth_color: 0 +max_cloth_color: 4 +min_body_style: 0 +max_body_style: 4 + +// When set to true, the damage field in packets sent from woe maps will be set +// to -1, making it impossible for GMs, Bots and Hexed clients to know the +// actual damage caused by attacks. (Note 1) +hide_woe_damage: true + +// "hair style" number that identifies pet. +// NOTE: The client uses the "hair style" field in the mob packet to tell them apart from mobs. +// This value is always higher than the max hair-style available in said client. +// Known values to work (all 2005 clients): +// older sakexes: 20 +// sakexe 0614: 24 +// sakexe 0628 (and later): 100 +pet_hair_style: 100 + +// Visible area size (how many squares away from a player can they see) +area_size: 14 + +// Maximum walk path (how many cells a player can walk going to cursor) +// default: 17(official) +max_walk_path: 17 + +// Maximum allowed 'level' value that can be sent in unit packets. +// Use together with the aura_lv setting to tell when exactly to show the aura. +// NOTE: You also need to adjust the client if you want this to work. +// NOTE: Default is 99. Values above 127 will probably behave incorrectly. +// NOTE: If you don't know what this does, don't change it!!! +max_lv: 99 + +// Level required to display an aura. +// NOTE: This assumes that sending max_lv to the client will display the aura. +// NOTE: aura_lv must not be less than max_lv. +// Example: If max_lv is 99 and aura_lv is 150, characters with level 99~149 +// will be sent as being all level 98, and only characters with level +// 150 or more will be reported as having level 99 and show an aura. +aura_lv: 99 + +// Units types affected by max_lv and aura_lv settings. (Note 3) +// Note: If an unit type, which normally does not show an aura, is +// set it will obtain an aura when it meets the level requirement. +// Default: 0 (none) +client_limit_unit_lv: 0 + +// Will tuxedo and wedding dresses be shown when worn? (Note 1) +wedding_modifydisplay: false + +// Save Clothes color. (This will degrade performance) (Note 1) +save_clothcolor: true + +// Save body styles? (Note 1) +// Note: Don't turn this on unless you know what your doing. +// Sprites are not released officially. +save_body_style: false + +// Do not display cloth colors for the wedding costume? +// Note: Both save_clothcolor and wedding_modifydisplay have to be enabled +// for this option to take effect. Set this to true if your cloth palettes +// pack doesn't has wedding palettes (or has less than the other jobs) +wedding_ignorepalette: false + +// Do not display cloth colors for the Xmas costume? +// Set this to true if your cloth palettes pack doesn't has Xmas palettes (or has less than the other jobs) +xmas_ignorepalette: false + +// Do not display cloth colors for the Summer costume? +// Set this to true if your cloth palettes pack doesn't has Summer palettes (or has less than the other jobs) +summer_ignorepalette: false + +// Do not display cloth colors for the Hanbok costume? +// Set this to true if your cloth palettes pack doesn't has Hanbok palettes (or has less than the other jobs) +hanbok_ignorepalette: false + +// Show Hercules version to users when the login? +display_version: false + +// When affected with the "Hallucination" status effect, send the effect to client? (Note 1) +// Note: Set to false if the client lags due to the "Wavy" screen effect. +display_hallucination: true + +// Set this to 1 if your client supports status change timers and you want to use them +// Clients from 2009 onward support this +display_status_timers: true + +// Randomizes the dice emoticon server-side, to prevent clients from forging +// packets for the desired number. (Note 1) +client_reshuffle_dice: true + +// Sorts the character and guild storage before it is sent to the client. +// Official servers do not sort storage. (Note 1) +// NOTE: Enabling this option degrades performance. +client_sort_storage: false + +// Duration of client's self mute in minutes. +// Note: Do not enable this, if you enabled commands for players, +// because the client sees multiple commands in succession as spam. +// Default: 0 (means disabled) +client_accept_chatdori: 0 + +// Limits use of blank (transparent) pixels in guild emblems to a set +// percentage of the total. +// Official servers do not enforce this technically to date, but some disallow +// use of blank emblems in their rules. (Note 2) +// A value of 100 (allowing 100% blank pixels) disables this check. +// NOTE: Enabling this option slightly degrades performance. +client_emblem_max_blank_percent: 100 diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf new file mode 100644 index 000000000..547a4ae4e --- /dev/null +++ b/conf/map/battle/drops.conf @@ -0,0 +1,157 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Drops) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +//========================================================================= + +// If an item is dropped, does it go straight into the users inventory? (Note 1) +item_auto_get: false + +// How long does it take for an item to disappear from the floor after it is dropped? (in milliseconds) +flooritem_lifetime: 60000 + +// Grace time during which only the person who did the most damage to a monster can get the item? (in milliseconds) +item_first_get_time: 3000 + +// Grace time during which only the first and second person who did the most damage to a monster can get the item? (in milliseconds) +// (Takes effect after item_first_get_time elapses) +item_second_get_time: 1000 + +// Grace time during which only the first, second and third person who did the most damage to a monster can get the item? (in milliseconds) +// (Takes effect after the item_second_get_time elapses) +item_third_get_time: 1000 + +// Grace time to apply to MvP reward items when the Most Valuable Player can't get the prize item and it drops on the ground? (in milliseconds) +mvp_item_first_get_time: 10000 + +// Grace time for the first and second MvP so they can get the item? (in milliseconds) +// (Takes effect after mvp_item_first_get_time elapses) +mvp_item_second_get_time: 10000 + +// Grace time for the first, second and third MvP so they can get the item? (in milliseconds) +// (Takes effect after mvp_item_second_get_time elapses) +mvp_item_third_get_time: 2000 + +// Item drop rates (Note 2) + +// The rate the common items are dropped (Items that are in the ETC tab, besides card) +item_rate_common: 100 +item_rate_common_boss: 100 +item_drop_common_min: 1 +item_drop_common_max: 10000 + +// The rate healing items are dropped (items that restore HP or SP) +item_rate_heal: 100 +item_rate_heal_boss: 100 +item_drop_heal_min: 1 +item_drop_heal_max: 10000 + +// The rate at which usable items (in the item tab) other then healing items are dropped. +item_rate_use: 100 +item_rate_use_boss: 100 +item_drop_use_min: 1 +item_drop_use_max: 10000 + +// The rate at which equipment is dropped. +item_rate_equip: 100 +item_rate_equip_boss: 100 +item_drop_equip_min: 1 +item_drop_equip_max: 10000 + +// The rate at which cards are dropped +item_rate_card: 100 +item_rate_card_boss: 100 +item_drop_card_min: 1 +item_drop_card_max: 10000 + +// The rate adjustment for the MVP items that the MVP gets directly in their inventory +item_rate_mvp: 100 +item_drop_mvp_min: 1 +item_drop_mvp_max: 10000 + +// The rate adjustment for card-granted item drops. +item_rate_adddrop: 100 +item_drop_add_min: 1 +item_drop_add_max: 10000 + +// Rate adjustment for Treasure Box drops (these override all other modifiers) +item_rate_treasure: 100 +item_drop_treasure_min: 1 +item_drop_treasure_max: 10000 + +// Use logarithmic drops? (Note 1) +// Logarithmic drops scale drop rates in a non-linear fashion using the equation +// Droprate(x,y) = x * (5 - log(x)) ^ (ln(y) / ln(5)) +// Where x is the original drop rate and y is the drop_rate modifier (the previously mentioned item_rate* variables) +// Use the following table for an idea of how the rate will affect drop rates when logarithmic drops are used: +// Y: Original Drop Rate +// X: Rate drop modifier (eg: item_rate_equip) +// X\Y | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 +// -----+--------------------------------------------------------------- +// 50 | 0.01 0.01 0.03 0.06 0.11 0.30 0.62 1.30 3.49 7.42 15.92 +// 100 | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 +// 200 | 0.02 0.04 0.09 0.18 0.35 0.84 1.61 3.07 7.16 13.48 25.13 +// 500 | 0.05 0.09 0.22 0.40 0.74 1.65 3.00 5.40 11.51 20.00 33.98 +// 1000 | 0.10 0.18 0.40 0.73 1.30 2.76 4.82 8.28 16.47 26.96 42.69 +// 2000 | 0.20 0.36 0.76 1.32 2.28 4.62 7.73 12.70 23.58 36.33 53.64 +// 5000 | 0.50 0.86 1.73 2.91 4.81 9.11 14.45 22.34 37.90 53.91 72.53 +//10000 | 1.00 1.67 3.25 5.28 8.44 15.24 23.19 34.26 54.57 72.67 91.13 +//20000 | 2.00 3.26 6.09 9.59 14.83 25.49 37.21 52.55 77.70 97.95 100% +//50000 | 5.00 7.87 13.98 21.12 31.23 50.31 69.56 92.48 100% 100% 100% +item_logarithmic_drops: false + +// Can the monster's drop rate become 0? (Note 1) +// Default: false (as in official servers). +drop_rate0item: false + +// Makes your LUK value affect drop rates on an absolute basis. +// Setting to 100 means each luk adds 0.01% chance to find items +// (regardless of item's base drop rate). +drops_by_luk: 0 + +// Makes your LUK value affect drop rates on a relative basis. +// Setting to 100 means each luk adds 1% chance to find items +// (So at 100 luk, everything will have double chance of dropping). +drops_by_luk2: 0 + +// Whether or not Marine Spheres and Floras summoned by Alchemist drop items? +// This setting has three available values: +// 0: Nothing drops. +// 1: Only marine spheres drop items. +// 2: All alchemist summons drop items. +alchemist_summon_reward: 1 + +// Make broadcast ** Player1 won Pupa's Pupa Card (chance 0.01%) *** +// This can be set to any value between 0~10000. +// Note: It also announces STEAL skill usage with rare items +// 0 = don't show announces at all +// 1 = show announces for 0.01% drop chance items +// 333 = show announces for 3.33% or lower drop chance items +// 10000 = show announces for all items +rare_drop_announce: 0 diff --git a/conf/map/battle/exp.conf b/conf/map/battle/exp.conf new file mode 100644 index 000000000..3a38c1c6c --- /dev/null +++ b/conf/map/battle/exp.conf @@ -0,0 +1,114 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Experience) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: The max level of classes is stored in the exp table. +// See files db/exp.txt and db/exp2.txt to change them. +//========================================================================= + +// Rate at which exp. is given. (Note 2) +base_exp_rate: 100 + +// Rate at which job exp. is given. (Note 2) +job_exp_rate: 100 + +// Turn this on to allow a player to level up more than once from a kill. (Note 1) +multi_level_up: false + +// Setting this can cap the max experience one can get per kill specified as a +// % of the current exp bar. (Every 10 = 1.0%) +// For example, set it to 500 and no matter how much exp the mob gives, +// it can never give you above half of your current exp bar. +max_exp_gain_rate: 0 + +// Method of calculating earned experience when defeating a monster: +// 0 = uses damage given / total damage as damage ratio +// 1 = uses damage given / max_hp as damage ratio +// NOTE: Using type 1 disables the bonus where the first attacker gets +// his share of the exp doubled when multiple people attack the mob. +exp_calc_type: 0 + +// Experience increase per attacker. That is, every additional attacker to the +// monster makes it give this much more experience +// (eg: 5 people attack with 25 here, +(25*4)% -> +100% exp) +exp_bonus_attacker: 25 + +// Max number of attackers at which exp bonus is capped +// (eg: if set at 5, the max bonus is 4*bonus-per-char regardless of attackers) +exp_bonus_max_attacker: 12 + +// MVP bonus exp rate. (Note 2) +mvp_exp_rate: 100 + +// Rate of base/job exp given by NPCs. (Note 2) +quest_exp_rate: 100 + +// The rate of job exp. from using Heal skill (100 is the same as the heal amount, 200 is double. +// The balance of the exp. rate is best used with 5 to 10) +heal_exp: 0 + +// The rate of exp. that is gained by the process of resurrection, a unit is 0.01%. +// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got. +resurrection_exp: 0 + +// The rate of job exp. when using discount and overcharge on an NPC +// (in 0.01% increments - 100 is 1%, 10000 is normal, 20000 is double.) +// The way it is calculated is (money received * skill lv) * shop_exp / 10000. +shop_exp: 0 + +// PVP exp. Do players get exp in PvP maps +// (Note: NOT exp from players, but from normal leveling) +pvp_exp: true + +// When a player dies, how should we penalize them? +// 0 = No penalty. +// 1 = Lose % of current level when killed. +// 2 = Lose % of total experience when killed. +death_penalty_type: 1 + +// Base exp. penalty rate (Each 100 is 1% of their exp) +death_penalty_base: 100 + +// Job exp. penalty rate (Each 100 is 1% of their exp) +death_penalty_job: 100 + +// When a player dies (to another player), how much zeny should we penalize them with? +// NOTE: It is a percentage of their zeny, so 100 = 1% +zeny_penalty: 0 + +// Will display experience gained from killing a monster. (Note 1) +disp_experience: false + +// Will display zeny earned (from mobs, trades, etc) (Note 1) +disp_zeny: false + +// Use the contents of db/statpoint.txt when doing a stats reset and leveling up? (Note 1) +// If false, an equation will be used which preserves statpoints earned/lost +// through external means (ie: stat point buyers/sellers) +use_statpoint_table: true diff --git a/conf/map/battle/feature.conf b/conf/map/battle/feature.conf new file mode 100644 index 000000000..003e4c75a --- /dev/null +++ b/conf/map/battle/feature.conf @@ -0,0 +1,58 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Feature) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +//========================================================================= + +features: { + // Buying store (Note 1) + // Requires: 2010-04-27aRagexeRE or later + buying_store: true + + // Search stores (Note 1) + // Requires: 2010-08-03aRagexeRE or later + search_stores: true + + // Atcommand suggestions (Note 1) + // If one type incomplete atcommand, it will suggest the complete ones. + atcommand_suggestions: false + + // Banking (Note 1) + // Requires: 2013-07-24aRagexe or later + banking: true + + // Auction (Note 1) + // Feature became unstable on clients 2012 onwards (exact date not known), + // it has been fixed on clients 2013-05-15 onwards however. + auction: false + + // Roulette (Note 1) + // Requires: 2014-10-22bRagexe or later + // Disabled by default while test version is out; enable at your own risk -- the mean dev. + roulette: false +} diff --git a/conf/map/battle/gm.conf b/conf/map/battle/gm.conf new file mode 100644 index 000000000..bcc70b63b --- /dev/null +++ b/conf/map/battle/gm.conf @@ -0,0 +1,66 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (GM) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +//========================================================================= + +// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity) +atcommand_spawn_quantity_limit: 100 + +// Maximum number of slave-clones that can be have by using the @slaveclone at command. (0 denotes unlimited quantity) +atcommand_slave_clone_limit: 25 + +// If false, commands require exact player name. If true, entering a partial +// name will work, as long as there's only one match from all players in the +// current map server. +partial_name_scan: true + +// (@) @allstats/@str/@agi/@vit/@int/@dex/@luk +// allow gms to bypass the maximum stat parameter? ( if true gm stats can go up to 32k ) +// default: false +atcommand_max_stat_bypass: false + +// Ban people that try trade dupe. +// Duration of the ban, in minutes (default: 5). To disable the ban, set 0. +ban_hack_trade: 5 + +// requires RENEWAL_DROP to be enabled (src/map/config/renewal.h) +// modifies @mobinfo to display the users' real drop rate as per renewal_drop formula +// modifies @iteminfo to not display the minimum item drop rate (since it can't tell the mob level) +atcommand_mobinfo_type: 0 + +// Ignore warpable area configuration. +// Set the minimum group id to ignore invalid cells when warping. +// Default group is 2. Use 100 to disable this setting. +gm_ignore_warpable_area: 2 + +// Should atcommands trigger level up events for NPCs? (Note 1) +// This option is for @baselevelup and @joblevelup +// Default: false +atcommand_levelup_events: false diff --git a/conf/map/battle/guild.conf b/conf/map/battle/guild.conf new file mode 100644 index 000000000..c8f8db8c3 --- /dev/null +++ b/conf/map/battle/guild.conf @@ -0,0 +1,73 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Guild) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +//========================================================================= + +// When making a guild, an Emperium is consumed? (Note 1) +guild_emperium_check: true + +// Maximum tax limit on a guild member. +guild_exp_limit: 50 + +// Maximum castles one guild can own (0 = unlimited) +guild_max_castles: 0 + +// Restart guild skills cooldown by relog? (Note 1) +// When false, you relog with the same cooldown remaining as from when you +// logged out, true restarts the cooldown upon login to its full duration. +guild_skill_relog_delay: false + +// Damage adjustments for WOE battles against defending Guild monsters (Note 2) +castle_defense_rate: 100 + +// Flee penalty on gvg grounds. Official value is 20 (Note 2) +// NOTE: It's %, not absolute, so 20 is -20% of your total flee +gvg_flee_penalty: 20 + +// Can the 'Glory of Guild' skill be learnt in the Guild window, +// and does changing emblems require it? (Note 1) +// P.S: This skill is not implemented on official servers +require_glory_guild: false + +// Limit Guild alliances. Value is 0 to 3. +// If you want to change this value, clear the guild alliance table. +// Default is 3 +max_guild_alliance: 3 + +// When to re-display the guild notice +// Upon teleporting (regardless of changing maps): 2 (official) +// Upon changing maps: 1 +// Do not re-display: 0 (disabled) +guild_notice_changemap: 2 + +// Can guild members invite/expel members inside guild castles in WoE/GvG? (Note 1) +// default: false +guild_castle_invite: false +guild_castle_expulsion: false diff --git a/conf/map/battle/homunc.conf b/conf/map/battle/homunc.conf new file mode 100644 index 000000000..0bf2a4b98 --- /dev/null +++ b/conf/map/battle/homunc.conf @@ -0,0 +1,68 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Homunculus) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Homunculus setting (Note 3) +// Activates various 'quirks' that makes them behave unlike normal characters. +// 0x001: Can't be targetted by support skills (except for their master) +// 0x004: Mobs will always go after them instead of players until attacked +// 0x008: Copy their master's speed on spawn/map-change +// 0x010: They display luk/3+1 instead of their actual critical in the +// stat window (by default they don't crit) +// 0x020: Their Min-Matk is always the same as their max +// 0x040: Skill re-use delay is reset when they are vaporized. +hom_setting: 0x1D + +// The rate a homunculus will get friendly by feeding it. (Note 2) +homunculus_friendly_rate: 100 + +// Can you name a homunculus more then once? (Note 1) +hom_rename: false + +// Intimacy needed to use Evolved Vanilmirth's Bio Explosion +hvan_explosion_intimate: 45000 + +// Show stat growth to the owner when an Homunculus levels up +homunculus_show_growth: true + +// Does autoloot work, when a monster is killed by homunculus only? +homunculus_autoloot: true + +// Should homunculi Vaporize when Master dies? +homunculus_auto_vapor: true + +// Max level for regular Homunculus +homunculus_max_level: 99 + +// Max level for Homunculus S +homunculus_S_max_level: 150 diff --git a/conf/map/battle/items.conf b/conf/map/battle/items.conf new file mode 100644 index 000000000..8ff2cbb3b --- /dev/null +++ b/conf/map/battle/items.conf @@ -0,0 +1,116 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Items) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// The highest value at which an item can be sold via the merchant vend skill. (in zeny) +vending_max_value: 1000000000 + +// Whether to allow buying from vending chars that are at their max. zeny limit. +// If set to true, the rest of the zeny above the char's capacity will disappear. +vending_over_max: true + +// Tax to apply to all vending transactions (eg: 10000 = 100%, 50 = 0.50%) +// When a tax is applied, the item's full price is charged to the buyer, but +// the vender will not get the whole price paid (they get 100% - this tax). +vending_tax: 200 + +// Show the buyer's name when successfully vended an item +buyer_name: true + +// Forging success rate. (Note 2) +weapon_produce_rate: 100 + +// Prepare Potion success rate. (Note 2) +potion_produce_rate: 100 + +// Do produced items have the maker's name on them? (Note 3) +// 0x01: Produced Weapons +// 0x02: Produced Potions +// 0x04: Produced Arrows +// 0x08: Produced Holy Water/Ancilla +// 0x10: Produced Deadly Potions +// 0x80: Other produced items. +produce_item_name_input: 0x03 + +// Is a monster summoned via dead branch aggressive? (Note 1) +dead_branch_active: true + +// Should summoned monsters check the player's base level? (dead branches) (Note 1) +// On officials this is false - monsters summoned from dead/bloody branches can be ANY level. +// Change to true to only summon monsters less than or equal to the player's base level. +random_monster_checklv: false + +// Can any player equip any item regardless of the gender restrictions +// NOTE: Wedding Rings and Whips/Musical Instruments will check gender regardless of setting. +ignore_items_gender: true + +// Item check? (Note 1) +// On map change it will check for items not tagged as "available" and +// auto-delete them from inventory/cart. +// NOTE: An item is not available if it was not loaded from the item_db or you +// specify it as unavailable in db/item_avail.txt +item_check: false + +// How much time must pass between item uses? +// Only affects the delay between using items, prevents healing item abuse. Recommended ~500 ms +// On officials this is 0, but it's set to 100ms as a measure against bots/macros. +item_use_interval: 100 + +// How much time must pass between cash food uses? Default: 60000 (1 min) +cashfood_use_interval: 60000 + +// Required level of bNoMagicDamage before Status Changes are blocked (Golden Thief Bug card). +// For example, if left at 50. An item can give bNoMagicDamage,40; +// which reduces magic damage by 40%, but does not blocks status changes. +gtb_sc_immunity: 50 + +// Enable autospell card effects to stack? +// NOTE: Different cards that grant the same skill will both +// always work independently of each other regardless of setting. +autospell_stacking: false + +// Will disabled consumables (disabled by map_zone_db.conf) be consumed when trying to use them? +// Default: true (official) +item_restricted_consumption_type: true + +// Enable all NPC to allow changing of equipments while interacting? (Note 1) +// Script commands 'enable_items/disable_items' will not be override. (see doc/script_commands.txt) +// Default: true (official) +item_enabled_npc: true + +// Unequip the equipments that has disabled by map_zone_db.conf ? +// 0 : disabled equipments and cards are nullify (official) +// 1 : disabled equipments are unequip, disabled cards are nullify +// 2 : disabled equipments are nullify, disabled cards will caused the equipment to unequip +// 3 : disabled equipments are unequip, disabled cards will caused the equipment to unequip (1+2) +unequip_restricted_equipment: 0 diff --git a/conf/map/battle/misc.conf b/conf/map/battle/misc.conf new file mode 100644 index 000000000..bc97b716a --- /dev/null +++ b/conf/map/battle/misc.conf @@ -0,0 +1,173 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Misc) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// PK Server Mode. +// Turns entire server pvp(excluding towns). +// Experience loss is doubled if killed by another player. +// When players hunt monsters over 20 levels higher, they will receive 15% +// additional exp., and 25% chance of receiving more items. +// There is a nopvp.txt for setting up maps not to have pk on in this mode. +// Novices cannot be attacked and cannot attack. +// Normal pvp counter and rank display are disabled as well. +// Note: If pk_mode is set to 2 instead of 1, players will receive a +// manner penalty of 5 each time they kill another player (see manner_system +// config to adjust how this will affect players) +pk_mode: 0 + +// Manner/karma system configuration. Specifies how does negative manner +// (red no chat bubble) affects players (add as needed): +// 0: No penalties. +// 1: Disables chatting (includes whispers, party/guild msgs, etc) +// 2: Disables skill usage +// 4: Disables commands usage +// 8: Disables item usage/picking/dropping +// 16: Disables room creation (chatrooms and vending shops) +manner_system: 31 + +// For PK Server Mode. Change this to define the minimum level players can start PK-ing +pk_min_level: 55 + +// For PK Server Mode. It specifies the maximum level difference between +// players to let them attack each other. 0 disables said limit. +pk_level_range: 0 + +// Display skill usage in console? (for debug only) (default: false) (Note 3) +skill_log: false + +// Display battle log? (for debug only) (default: false) (Note 1) +battle_log: false + +// Display other stuff? (for debug only) (default: false) (Note 1) +etc_log: false + +// Do you want to debug warp points? If set to true, warp points will appear as flags.(Note 1) +// It will also run on start-up a warp-check to print out which warp points lead directly on +// top of on-touch npcs (which can lead to infinite loopback warping situations) +warp_point_debug: false + +// Choose if server begin with night (true) or day (false) +night_at_start: false + +// Define duration in msec of the day (default: 7200000 = 2 hours) +// Set to 0 to disable day cycle (but not @day GM command). +// Except 0, minimum is 60000 (1 minute) +day_duration: 0 + +// Define duration in msec of the night (default: 1800000 = 30 min) +// Set to 0 to disable night cycle (but not @night GM command). +// Except 0, minimum is 60000 (1 minute) +night_duration: 0 + +// Using duel on pvp-maps +duel_allow_pvp: false + +// Using duel on gvg-maps +duel_allow_gvg: false + +// Allow using teleport/warp when dueling +duel_allow_teleport: false + +// Autoleave duel when die +duel_autoleave_when_die: true + +// Delay between using @duel in minutes +duel_time_interval: 60 + +// Restrict duel usage to same map +duel_only_on_same_map: false + +// Determines max number of characters that can stack within a single cell. +// Official - Only affects the walking routines of characters, including monsters. +// If a unit stops walking and is on a cell with more than stack limit +// characters on it, it will walk to the closest free cell. +// Custom - This variation will make every full cell to be considered a wall. +// NOTE: For this setting to take effect you have to use a server compiled +// with Cell Stack Limit support (see src/map/map.h) +official_cell_stack_limit: 1 +custom_cell_stack_limit: 1 + +// If false while walking not check occupied cells +// If true while walking check occupied cells +check_occupied_cells: true + +// Allow autotrade only in map with autotrade flag? +// Set this to "false" will allow autotrade where no "autotrade" mapflag is set +// Set this to "true" to only allow autotrade on maps with "autotrade" mapflag +at_mapflag: false + +// Set this to the amount of minutes autotrade chars will be kicked from the server. +at_timeout: 0 + +// Auction system, fee per hour. Default is 12000 +auction_feeperhour: 12000 + +// Auction maximum sell price +auction_maximumprice: 500000000 + +// Minimum delay between each store search query in seconds. +searchstore_querydelay: 10 + +// Maximum amount of results a store search query may yield, before +// it is canceled. +searchstore_maxresults: 30 + +// Whether or not gaining and loosing of cash points is displayed (Note 1). +// Default: false +cashshop_show_points: false + +// Whether or not mail box status is displayed upon login. +// Default: 0 +// 0 = No +// 1 = Yes +// 2 = Yes, when there are unread mails +mail_show_status: 0 + +// Is monster transformation disabled during Guild Wars? +// If set to true, monster transforming is automatically removed/disabled when entering castles during WoE times +mon_trans_disable_in_gvg: false + +// Whether AegisName and SpriteName lookups are case sensitive +// Default: true (as in official servers) +// When this is set to true, item and monster lookups through atcommands and +// script commands will match AegisNames and SpriteNames only when the case +// matches. Display name lookups are not affected by this setting. +// Example: Given the two items: +// - { Id: 553, AegisName: "Bun", Name: "Bao" } +// - { Id: 6115, AegisName: "Bun_", Name: "Bun" } +// query when true when false +// @item bun # 6115 # 553 +// @item Bun # 553 # 553 +// @item Bao # 553 # 553 +// @item Bun_ # 6115 # 6115 +case_sensitive_aegisnames: true diff --git a/conf/map/battle/monster.conf b/conf/map/battle/monster.conf new file mode 100644 index 000000000..48e476161 --- /dev/null +++ b/conf/map/battle/monster.conf @@ -0,0 +1,261 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Monster) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// The HP rate of MVPs. (Note 2) +mvp_hp_rate: 100 + +// The HP rate of normal monsters (that is monsters that are not MVP's) (Note 2) +monster_hp_rate: 100 + +// The maximum attack speed of a monster +monster_max_aspd: 199 + +// Defines various mob AI related settings. (Note 3) +// 0x001: When enabled mobs will update their target cell every few iterations +// (normally they never update their target cell until they reach it while +// chasing) +// 0x002: Makes mob use their "rude attack" skill (usually warping away) if they +// are attacked and they can't attack back regardless of how they were +// attacked (eg: GrimTooth), otherwise, their rude attack" is only activated +// if they can't melee reach the target (eg: sniping) +// 0x004: If not set, mobs that can change target only do so when melee attacked +// (distance player/mob < 3), otherwise mobs may change target and chase +// ranged attackers. This flag also overrides the 'provoke' target. +// 0x008: When set, mobs scatter as soon as they lose their target. Use this mode +// to make it much harder to mob-train by hiding and collecting them on a +// single spot (ie: GrimTooth training) +// 0x010: If set, mob skills defined for friends will also trigger on themselves. +// 0x020: When set, the monster ai is executed for all monsters in maps that +// have players on them, instead of only for mobs who are in the vicinity +// of players. +// 0x040: When set, when the mob's target changes map, the mob will walk towards +// any npc-warps in it's sight of view (use with mob_warp below) +// 0x100: When set, a mob will pick a random skill from it's list and start from +// that instead of checking skills in orders (when unset, if a mob has too +// many skills, the ones near the end will rarely get selected) +// 0x200: When set, a mob's skill re-use delay will not be applied to all entries of +// the same skill, instead, only to that particular entry (eg: Mob has heal +// on six lines in the mob_skill_db, only the entry that is actually used +// will receive the delay). This will make monsters harder, especially MvPs. +// 0x400: Set this to make mobs have a range of 9 for all skills. Otherwise, they +// will obey the normal skill range rules. +// Example: 0x140 -> Chase players through warps + use skills in random order. +monster_ai: 0 + +// How often should a monster rethink its chase? +// 0: Every 100ms (MIN_MOBTHINKTIME) +// 1: Every cell moved +// 2: Every 2 cells moved +// 3: Every 3 cells moved (official) +// x: Every x cells moved +// Regardless of this setting, a monster will always rethink its chase if it has +// reached its target. Increase this value if you want to make monsters continue +// moving after they lost their target (hide, no line of sight, etc.). +monster_chase_refresh: 3 + +// Should mobs be able to be warped (add as needed)? +// 0: Disable. +// 1: Enable mob-warping when standing on NPC-warps +// 2: Enable mob-warping when standing on Priest Warp Portals +// 4: Disable warping when the target map is a 'nobranch' map. +mob_warp: 0 + +// If these are set above 0, they define the time (in ms) during which monsters +// will have their 'AI' active after all players have left their vicinity. +mob_active_time: 0 +boss_active_time: 0 + +// Mobs and Pets view-range adjustment (range2 column in the mob_db) (Note 2) +view_range_rate: 100 + +// Chase Range is the base minimum-chase that a mob gives before giving up +// (as long as the target is outside their field of view). This is the range3 +// column in the mob_db. (Note 2) +chase_range_rate: 100 + +// Allow monsters to be aggresive and attack first? (Note 1) +monster_active_enable: true + +// Should the mob_db names override the mob names specified in the spawn files? +// 0: No +// 1: always use the mob_db Name column (english mob name) +// 2: always use the mob_db JName column (original Kro mob name) +override_mob_names: 0 + +// Monster damage delay rate (Note 2) +// Setting to 0 is like they always have endure. +monster_damage_delay_rate: 100 + +// Looting monster actions. +// 0 = Monster will consume the item. +// 1 = Monster will not consume the item. +monster_loot_type: 0 + +// Chance of mob casting a skill (Note 2) +// Higher rates lead to 100% mob skill usage with no/few normal attacks. +// Set to 0 to disable mob skills. +mob_skill_rate: 100 + +// Mob skill delay adjust (Note 2) +// After a mob has casted a skill, there is a delay before being able to +// re-cast it. Note that skills with a delay of 0 can't be affected by this +// setting. +mob_skill_delay: 100 + +// Rate of monsters on a map, 200 would be twice as many as normal. (Note 2) +mob_count_rate: 100 + +// Respawn rate of monsters on a map. 50 would make mobs respawn twice as fast (half delay time) (Note 2) +//Note: This does not affects mobs with immediate respawn (most normal mobs) +mob_spawn_delay: 100 +plant_spawn_delay: 100 +boss_spawn_delay: 100 + +// Should mobs not spawn within the viewing range of players? +// 0 is disabled, otherwise it is the number of retries before giving up +// and spawning the mob within player-view anyway, unless the max (100) is used, +// in which case the mob will not be spawned, and it'll be retried again in +// 5 seconds. +// NOTE: This has no effect on mobs that always spawn on the very same cell +// (like ant eggs) except if you set it to the max. +no_spawn_on_player: 0 + +// Should spawn coordinates in the mob-spawn files be ignored? (Note 1) +// If set to true, all monsters will have a random respawn spot across the whole +// map regardless of what the mob-spawn file says. +force_random_spawn: false + +// Do summon slaves inherit the passive/aggressive traits of their master? +// 0: No, retain original mode. +// 1: Slaves are always aggressive. +// 2: Slaves are always passive. +// 3: Same as master's aggressive/passive state. +slaves_inherit_mode: 2 + +// Do summon slaves have the same walking speed as their master? +// NOTE: The default is 3 for official servers. +// 0: Never. +// 1: If the master can walk +// 2: If the master can't walk (even motionless mobs have a speed +// entry in their mob_db) +// 3: Always +slaves_inherit_speed: 3 + +// Will summoned monsters (alchemists, or @summon'ed monsters) attack cause a +// chance of triggering the master's autospell cards? (Note 1) +summons_trigger_autospells: true + +// When a mob is attacked by another monster, will the mob retaliate against the master of said mob instead of the mob itself? +// NOTE: Summoned mobs are both those acquired via @summon and summoned by Alchemists +retaliate_to_master: true + +// Whether mobs should change target temporarily when a skill triggers a counter mob skill (Note 1) +// eg: Mob attacks player B, and player A casts a skill C. If set to true and the +// mob has a skill that is triggered by skill C, then A will be the target of +// the skill, otherwise B will be targetted by the reaction skill. +mob_changetarget_byskill: false + +// If monster's class is changed will it fully recover HP? (Note 1) +monster_class_change_full_recover: true + +// Display some mob info next to their name? (add as needed) +// (does not works on guardian or Emperium) +// 1: Display mob HP (Hp/MaxHp format) +// 2: Display mob HP (Percent of full life format) +// 4: Display mob's level +show_mob_info: 0 + +// Zeny from mobs +zeny_from_mobs: false + +// Monsters level up (monster will level up each time a player is killed and they will grow stronger) +// Exp rate is calculated ((monster level-original monster level)*(exp*(mobs_level_up_exp rate/100))) +// NOTE: Does not apply to WoE Guardians. +mobs_level_up: false +mobs_level_up_exp_rate: 1 + +// Dynamic Mobs Options +// Use dynamic mobs? (recommended for small-medium sized servers) +dynamic_mobs: true + +// Remove Mobs even if they are hurt +mob_remove_damaged: true + +// Delay before removing mobs from empty maps (default 5 min = 300 secs) +mob_remove_delay: 300000 + +// Defines on who the mob npc_event gets executed when a mob is killed. +// Type 1: On the player that killed the mob (if killed by a non-player, resorts to type 0) +// Type 0: On the player that did the most damage to the mob. +// NOTE: This affects who gains the Castle when the Emperium is broken. +mob_npc_event_type: 1 + +// Time in milliseconds to activate protection against Kill Steal +// Set to 0 to disable it. +// If this is activated and a player is using @noks, damage from others players (KS) not in the party +// will be reduced to 0. +ksprotection: 0 + +// Should MVP slaves retain their target when summoned back to their master? +mob_slave_keep_target: true + +// Whether or not to spawn the mvp tomb. +// See http://irowiki.org/wiki/MVP#Gravestone +mvp_tomb_enabled: true + +// Show hp bar on monsters? (Default: yes) +// NOTE: only works on client 2012-04-04aRagexeRE onwards +show_monster_hp_bar: true + +// Whether or not the size of specially summoned mobs influences experience, drop rates, +// and stats. The rates will be doubled for large mobs, and halved for small ones. +// This is only invoked under the 'monster' command, @monsterbig, and @monstersmall. (Note 1) +// Default: false +mob_size_influence: false + +// How should a monster be trapped by an icewall casted directly on it? +// On official servers, monsters can only leave an icewall to the west and south. If their target is north or east of +// them they will continously try to chase it but fail doing so. This brings them into a loop during which they will use +// idle and chase skills. Boss monsters on the other hand will behave like a trapped monster, do not move and will use +// idle and rudeattacked skills (when attacked). +// 0: Monster won't be stuck in icewall at all. +// 1: Monster will behave like a trapped monster. +// 2-255: Number of loops a monster will go through the behavior described above before it frees itself from icewall. +// NOTE: On some servers, normal monsters can free themselves after 15-35 second depending on their speed. On other +// servers, they will be stuck inside icewall until it expires. Also, many official servers (e.g. iRO) have casting +// icewall completely blocked on all maps that have boss monsters on them. +// Default (least exploitable): mob - 75, boss - 0 +// Default (most official): mob - 220, boss - 1 +mob_icewall_walk_block: 220 +boss_icewall_walk_block: 1 diff --git a/conf/map/battle/party.conf b/conf/map/battle/party.conf new file mode 100644 index 000000000..07a0bdaea --- /dev/null +++ b/conf/map/battle/party.conf @@ -0,0 +1,76 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Party) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +//========================================================================= + +// If someone steals (gank/steal skills), show name in party? (Note 1) +show_steal_in_same_party: false + +// Interval before updating the party-member map mini-dots (milliseconds) +party_update_interval: 1000 + +// Method used to update party-mate hp-bars: +// 0: Aegis - bar is updated every time HP changes (bandwidth intensive) +// 1: Athena - bar is updated with the party map dots (up to 1 second delay) +party_hp_mode: 0 + +// When 'Party Share' item sharing is enabled in a party, +// announce in the party which party-member received the item and what's he received? (Note 1) +show_party_share_picker: true + +// What types of items are going to be announced when 'show_party_share_picker' is active? +// 1: IT_HEALING, 2: IT_UNKNOWN, 4: IT_USABLE, 8: IT_ETC, +// 16: IT_WEAPON, 32: IT_ARMOR, 64: IT_CARD, 128: IT_PETEGG, +// 256: IT_PETARMOR, 512: IT_UNKNOWN2, 1024: IT_AMMO, 2048: IT_DELAYCONSUME +// 262144: IT_CASH +show_picker_item_type: 112 + +// Method of distribution when item party share is enabled in a party: +// 0: Normal (item goes to a random party member) +// 1: Item Share is disabled for non-mob drops (player/pet drops) +// 2: Round Robin (items are distributed evenly and in order among members) +// 3: 1+2 +party_item_share_type: 0 + +// Is exp/item sharing disabled for idle members in the party? +// Set to 0, or the amount of seconds (NOT milliseconds) that need to pass before considering +// a character idle. +// Characters in a chat/vending are always considered idle. +// A character's idle status is reset upon item use/skill use/attack (auto attack counts too)/movement. +idle_no_share: 0 + +// Give additional experience bonus per party-member involved on even-share parties (excluding yourself)? +// ex. If set to 10, an even-share party of 5 people will receive +40% exp (4 members * 10% exp): +// 140% party experience in total, so each member receives 140%/5 = 28% exp (instead of 20%). +party_even_share_bonus: 0 + +// Display party name regardless if player is in a guild. +// Official servers do not display party name unless the user is in a guild. (Note 1) +display_party_name: false diff --git a/conf/map/battle/pet.conf b/conf/map/battle/pet.conf new file mode 100644 index 000000000..6dfe5076c --- /dev/null +++ b/conf/map/battle/pet.conf @@ -0,0 +1,100 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Pet) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Rate for catching pets (Note 2) +pet_catch_rate: 100 + +// Can you name a pet more then once? (Note 1) +pet_rename: false + +// The rate a pet will get friendly by feeding it. (Note 2) +pet_friendly_rate: 100 + +// The rate at which a pet will become hungry. (Note 2) +pet_hungry_delay_rate: 100 + +// If your pet is hungry by how much will the friendlyness decrease by. (Default is 5) +// Note: The friendlyness is 0-1000 total, at 0 the pet runs away. +pet_hungry_friendly_decrease: 5 + +// Does the pet need its equipment before it does its skill? (Note 1) +pet_equip_required: true + +// When the master attacks a monster, whether or not the pet will also attack. (Note 1) +pet_attack_support: false + +// When the master receives damage from the monster, whether or not the pet attacks back. (Note 1) +pet_damage_support: false + +// Minimum intimacy necessary for a pet to support their master. Default is 900 +// (intimacy goes from 0 to 1000). At this minimum, support rate is 50% of pet's normal value. +// At max (1000) support rate is 150%. +pet_support_min_friendly: 900 + +// Same as above, but this is to use the pet_script field with official pet abilities. +pet_equip_min_friendly: 900 + +// Whether or not the pet's will use skills. (Note 1) +// Note: Offensive pet skills need at least pet_attack_support or +// pet_damage_support to work (they trigger while the pet is attacking). +pet_status_support: false + +// Rate at which a pet will support it's owner in battle. (Note 2) +// Affects pet_attack_support & pet_damage_support. +pet_support_rate: 100 + +// Does the pets owner receive exp from the pets damage? +pet_attack_exp_to_master: false + +// The rate exp. is gained from the pet attacking monsters +pet_attack_exp_rate: 100 + +// Pet leveling system. Use 0 to disable (default). +// When enabled, a pet's level is a fixed % of the master's. (Note 2) +// If 200%, pet has double level, if 50% pet has half your level, etc. +pet_lv_rate: 0 + +// When pet leveling is enabled, what is the max stats for pets? +pet_max_stats: 99 + +// When pet leveling is enabled, these are the imposed caps on +// min/max damage. Note that these only cap atk1 and atk2, if you +// enable pet_str, their max damage is then their base_atk + pet_max_atk2 +pet_max_atk1: 500 +pet_max_atk2: 1000 + +// Are pets disabled during Guild Wars? +// If set to true, pets are automatically returned to egg when entering castles during WoE times +// and hatching is forbidden within as well. +pet_disable_in_gvg: false diff --git a/conf/map/battle/player.conf b/conf/map/battle/player.conf new file mode 100644 index 000000000..e478a92a1 --- /dev/null +++ b/conf/map/battle/player.conf @@ -0,0 +1,215 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Player) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. +//========================================================================= + +// Players' maximum HP rate? (Default is 100) +hp_rate: 100 + +// Players' maximum SP rate? (Default is 100) +sp_rate: 100 + +// Whether or not cards and attributes of the left hand are applied to the right hand attack (Note 1) +// (It is true on official servers) +left_cardfix_to_right: true + +// The amount of HP a player will respawn with, 0 is default. +// (Unit is in percentage of total HP, 100 is full heal of HP, 0 is respawn with 1HP total.) +restart_hp_rate: 0 + +// The amount of SP a player will respawn with, 0 is default. +// (Unit is in percentage of total SP, 100 is full heal of SP, 0 is respawn with 1SP total.) +restart_sp_rate: 0 + +// Can a normal player by-pass the skill tree? (Note 1) +player_skillfree: false + +// When set to true, forces skill points gained from 1st class to be put into 1st class +// skills, and forces novice skill points to be put into the basic skill. (Note 1) +player_skillup_limit: true + +// Quest skills can be learned? (Note 1) +// Setting this to true can open an exploit on your server! +quest_skill_learn: false + +// When skills are reset, quest skills are reset as well? (Note 1) +// Setting this to true can open an exploit on your server! +// NOTE: If you have quest_skill_learn set to true, quest skills are always reset. +quest_skill_reset: false + +// You must have basic skills to be able to sit, trade, form a party or create a chatroom? (Note 1) +basic_skill_check: true + +// When teleporting, or spawning to a map, how long before a monster sees you if you don't move? (time is in milliseconds) +// That is, when you go to a map and don't move, how long before the monsters will notice you. +// When moving, attacking or doing similar actions, the effect ends instantly. +// Value is also affected by 'invincible_time_inc' mapflag +player_invincible_time: 5000 + +// When set to true, it prevent portal abuse for avoid hits. Official value is false. +fix_warp_hit_delay_abuse: false + +// The time interval for HP to restore naturally. (in milliseconds) +natural_healhp_interval: 6000 + +// The time interval for SP to restore naturally. (in milliseconds) +natural_healsp_interval: 8000 + +// Automatic healing skill's time interval. (in milliseconds) +natural_heal_skill_interval: 10000 + +// The maximum weight for a character to carry when the character stops healing naturally. (in %) +natural_heal_weight_rate: 50 + +// Maximum atk speed. (Default 190, Highest allowed 199) +max_aspd: 190 + +// Same as max_aspd, but for 3rd classes. (Default 193, Highest allowed 199) +max_third_aspd: 193 + +// Maximum walk speed rate (200 would be capped to twice the normal speed) +max_walk_speed: 300 + +// Maximum HP. (Default is 1000000) +max_hp: 1000000 + +// Maximum SP. (Default is 1000000) +max_sp: 1000000 + +// Max limit of char stats. (agi, str, etc.) +max_parameter: 99 + +// Same as max_parameter, but for 3rd classes. +max_third_parameter: 130 + +// Same as max_parameter, but for extend classes (Ex. Super Novice, Kagero/Oboro, Rebellion). +max_extended_parameter: 125 + +// Same as max_parameter, but for baby classes. +max_baby_parameter: 80 + +// Same as max_parameter, but for baby 3rd's. +max_baby_third_parameter: 117 + +// Max armor def/mdef +// NOTE: This setting have no effect if server is run on Renewal Mode (RENEWAL) +// NOTE: does not affects skills and status effects like Mental Strength +// If weapon_defense_type is non-zero, it won't apply to max def. +// If magic_defense_type is non-zero, it won't apply to max mdef. +max_def: 99 + +// Def to Def2 conversion bonus. If the armor def/mdef exceeds max_def, +// the remaining is converted to vit def/int mdef using this multiplier +// (eg: if set to 10, every armor point above the max becomes 10 vit defense points) +over_def_bonus: 0 + +// Max weight carts can hold. +max_cart_weight: 8000 + +// Prevent logout of players after being hit for how long (in ms, 0 disables)? +prevent_logout: 10000 + +// Display the drained hp/sp values from normal attacks? (Ie: Hunter Fly card) +show_hp_sp_drain: false + +// Display the gained hp/sp values from killing mobs? (Ie: Sky Deleter Card) +show_hp_sp_gain: true + +// Show the critical bonus for katar class weapon in player status window? On +// official server, the critical bonus from katar class weapon isn't display. +// (Default: false) +show_katar_crit_bonus: false + +// If set, when A accepts B as a friend, B will also be added to A's friend +// list, otherwise, only A appears in B's friend list. +// NOTE: this setting only enables friend auto-adding; auto-deletion does not work yet +friend_auto_add: true + +// Are simultaneous trade/party/guild invite requests automatically rejected? +invite_request_check: true + +// Players' will drop a 'Skull' when killed? +// 0 = Disabled +// 1 = Dropped only in PvP maps +// 2 = Dropped in all situations +bone_drop: 0 + +// Do mounted (on Peco) characters increase their size +// 0 = no +// 1 = only Normal Classes on Peco have Big Size +// 2 = only Baby Classes on Peco have Medium Size +// 3 = both Normal Classes on Peco have Big Size +// and Baby Classes on Peco have Medium Size +character_size: 0 + +// Idle characters can receive autoloot? +// Set to the time in seconds where an idle character will stop receiving +// items from Autoloot (0: disabled). +idle_no_autoloot: 0 + +// Minimum distance a vending/chat room must be from a NPC in order to be placed +// Default: 3 (0: disabled). +min_npc_vendchat_distance: 3 + +// If min_npc_vendchat_distance is enabled, +// can players vend/chat room nearby hidden npc? (Ie: FAKE_NPC/HIDDEN_WARP_NPC) +vendchat_near_hiddennpc: false + +// Super Novice's fury is enabled to increments of 10%, such as at 10.0%, 20.0% - 80.0%, 90.0% +// Changing snovice_call_type config to 1 enables its use at 0%, for maxed super novices. +// default: 0 +snovice_call_type: 0 + +// How the server should measure the character's idle time? (Note 3) +// 0x001 - Walk Request +// 0x002 - UseSkillToID Request ( targetted skill use attempt ) +// 0x004 - UseSkillToPos Request ( aoe skill use attempt ) +// 0x008 - UseItem Request ( including equip/unequip ) +// 0x010 - Attack Request +// 0x020 - Chat Request ( whisper, party, guild, bg, etca ) +// 0x040 - Sit/Standup Request +// 0x080 - Emotion Request +// 0x100 - DropItem Request +// 0x200 - @/#Command Request +// Please note that at least 1 option has to be enabled. +// Be mindful that the more options used, the easier it becomes to cheat features that rely on idletime (e.g. checkidle()). +// Default: walk ( 0x1 ) + useskilltoid ( 0x2 ) + useskilltopos ( 0x4 ) + useitem ( 0x8 ) + attack ( 0x10 ) = 0x1F +idletime_criteria: 0x1F + +// Can players get ATK/DEF from refinements on costume/shadow equips? +// Default: yes (Official behavior not known) +costume_refine_def: true +shadow_refine_def: true +shadow_refine_atk: true + +// Keep player facing direction after warping? +// Default: false (on official servers players always faces north) +player_warp_keep_direction: true diff --git a/conf/map/battle/skill.conf b/conf/map/battle/skill.conf new file mode 100644 index 000000000..8d7c9df44 --- /dev/null +++ b/conf/map/battle/skill.conf @@ -0,0 +1,326 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Skill) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// The rate of time it takes to cast a spell (Note 2, 0 = No casting time) +casting_rate: 100 + +// Delay time after casting (Note 2) +delay_rate: 100 + +// Does the delay time depend on the caster's DEX and/or AGI? (Note 1) +// Note: On Official servers, neither Dex nor Agi affect delay time +delay_dependon_dex: false +delay_dependon_agi: false + +// Minimum allowed delay for ANY skills after casting (in milliseconds) (Note 1) +// Note: Setting this to anything above 0 can stop speedhacks. +min_skill_delay_limit: 100 + +// This delay is the min 'can't walk delay' of all skills. +// NOTE: Do not set this too low, if a character starts moving too soon after +// doing a skill, the client will not update this, and the player/mob will +// appear to "teleport" afterwards. +default_walk_delay: 300 + +//Completely disable skill delay of the following types (Note 3) +//NOTE: By default mobs don't have the skill delay as specified in the skill +// database, but follow their own 'reuse' skill delay which is specified on +// the mob skill db. When set, the delay for all skills become +// min_skill_delay_limit. +no_skill_delay: 2 + +// At what dex does the cast time become zero (instant cast)? +castrate_dex_scale: 150 + +// How much (dex*2+int) does variable cast turns zero? +vcast_stat_scale: 530 + +// What level of leniency should the skill system give for skills when +// accounting attack motion (ASPD) for casting skills (Note 2, between 0 and 300) +// +// NOTE: Setting this to 100% may cause some issues with valid skills not being cast. +// The time difference between client and server varies so allowing 90% leniency +// should be enough to forgive very small margins of error. +skill_amotion_leniency: 90 + +// Will normal attacks be able to ignore the delay after skills? (Note 1) +skill_delay_attack_enable: true + +// Range added to skills after their cast time finishes. +// Decides how far away the target can walk away after the skill began casting before the skill fails. +// 0 disables this range checking (default) +skill_add_range: 0 + +// If the target moves out of range while casting, do we take the items and SP for the skill anyway? (Note 1) +skill_out_range_consume: false + +// Does the distance between caster and target define if the skill is a ranged skill? (Note 3) +// If set, when the distance between caster and target is greater than 3 the skill is considered long-range, otherwise it's a melee range. +// If not set, then the range is determined by the skill's range (if it is above 5, the skill is ranged). +// Default 14 (mobs + pets + homun) +skillrange_by_distance: 14 + +// Should the equipped weapon's range override the skill's range defined in the skill_db for most weapon-based skills? (Note 3) +// NOTE: Skills affected by this option are those whose range in the skill_db are negative. By default always the skill range is used. +// Note that if you want all monster skills to have a range of 9 you need to set monster_ai&0x400. +skillrange_from_weapon: 0 + +// Should a check on the caster's status be performed in all skill attacks? +// When set to true, meteors, storm gust and any other ground skills will have +// no effect while the caster is unable to fight (eg: stunned). +skill_caster_check: true + +// Should ground placed skills be removed as soon as the caster dies? (Note 3) +clear_skills_on_death: 0 + +// Should ground placed skills be removed when the caster changes maps? (Note 3) +clear_skills_on_warp: 15 + +//Setting this to true will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" +//The two skills affected by default are Pneuma and Safety Wall (if set to true, those two skills will not protect everyone, but only allies) +//See db/skill_unit_db.txt for more info. +defunit_not_enemy: false + +// Do skills do at least 'hits' damage when they don't miss/are blocked? +//(for example, will firebolts always do "number of bolts" damage versus plants?) +//Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. +skill_min_damage: 6 + +// The delay rate of monk's combo (Note 2) +combo_delay_rate: 100 + +// Use alternate auto Counter Attack Skill Type? (Note 3) +// For those characters on which it is set, 100% Critical, +// Otherwise it disregard DEF and HIT+20, CRI*2 +auto_counter_type: 15 + +// Can ground skills be placed on top of each other? (Note 3) +// By default, skills with UF_NOREITERATION set cannot be stacked on top of +// other skills, this setting will override that. (skill_unit_db) +skill_reiteration: 0 + +// Can ground skills NOT be placed underneath/near players/monsters? (Note 3) +// If set, only skills with UF_NOFOOTSET set will be affected (skill_unit_db) +skill_nofootset: 1 + +// Should traps (hunter traps + quagmire) change their target to "all" inside gvg/pvp grounds? (Note 3) +// Default on official servers: true for player-traps +gvg_traps_target_all: 1 + +// Some traps settings (add as necessary): +// 1: Traps are invisible to those who come into view of it. When unset, all traps are visible at all times. +// (Invisible traps can be revealed through Hunter's Detecting skill) +traps_setting: 0 + +// Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) +// 1: Enable players to damage the floras outside of versus grounds. +// 2: Disable having different types out at the same time +// (eg: forbid summoning anything except hydras when there's already +// one hydra out) +summon_flora_setting: 3 + +// When songs are canceled, terminated or the character goes out of the +// area of effect, there's an additional effect that lasts for 20 seconds +// Should that time be reset for each song? +// 0: No, you must recast the song AFTER those 20 seconds to have the effect again (Aegis) +// 1: Yes, recasting songs reset the 20 seconds timer (eathena) +song_timer_reset: 0 + +// Whether placed down skills will check walls (Note 1) +// (Makes it so that Storm Gust/Lord of Vermillion/etc when cast next to a wall, won't hit on the other side) +skill_wall_check: true + +// When cloaking, Whether the wall is checked or not. (Note 1) +// Note: When the skill does not checks for walls, you will always be considered +// as if you had a wall-next to you (you always get the wall-based speed). +// Add the settings as required, being hit always uncloaks you. +// 0 = doesn't check for walls +// 1 = Check for walls +// 2 = Cloaking is not canceled when attacking. +// 4 = Cloaking is not canceled when using skills +player_cloak_check_type: 1 +monster_cloak_check_type: 4 + +// Can't place unlimited land skills at the same time (Note 3) +land_skill_limit: 9 + +//Determines which kind of skill-failed messages should be sent: +// 0 - Enable by default +// 1 - Disable all skill-failed messages. +// 2 - Disable skill-failed messages due to can-act delays. +// 4 - Disable failed message from Snatcher +// 8 - Disable failed message from Envenom +display_skill_fail: 0 + +// Can a player in chat room (in-game), be warped by a warp portal? (Note 1) +chat_warpportal: false + +// What should the wizard's "Sense" skill display on the defense fields? +// 0: Do not show defense +// 1: Base defense [RE default] +// 2: Vit/Int defense +// 3: Both (the addition of both) +sense_type: 1 + +// Which finger offensive style will be used? +// 0 = Aegis style (single multi-hit attack) +// 1 = Athena style (multiple consecutive attacks) +finger_offensive_type: 0 + +// Grandcross Settings (Don't mess with these) +// If set to false, hit interval is increased based on the amount of mobs standing on the same cell +// (means that when there's stacked mobs in the same cell, they won't receive all hits) +gx_allhit: false + +// Grandcross display type (Default 1) +// 0: Yellow character +// 1: White character +gx_disptype: 1 + +// Max Level Difference for Devotion +devotion_level_difference: 10 + +// If false than you can use the ensemble skills alone. (Note 1) +player_skill_partner_check: true + +// Remove trap type +// 0 = Aegis system : Returns 1 'Trap' item +// 1 = Athena system : Returns all items used to deploy the trap +skill_removetrap_type: 0 + +// Does using bow to do a backstab give a 50% damage penalty? (Note 1) +backstab_bow_penalty: true + +// How many times you could try to steal from a mob. +// Note: It helps to avoid stealing exploit on monsters with few rare items +// Use 0 to disable (max allowed value is 255) +skill_steal_max_tries: 0 + +// Can Rogues plagiarize advanced job skills +// 0 = no restriction +// 1 = only stalker may plagiarize advanced skills +// 2 = advanced skills cannot be plagiarized by anyone +// Official servers setting: 2 +copyskill_restrict: 2 + +// Does Berserk/Frenzy cancel other self-buffs when used? +berserk_cancels_buffs: false + +// Level and Strength of "MVP heal". When someone casts a heal of this level or +// above, the heal formula is bypassed and this value is used instead. +max_heal: 9999 +max_heal_lv: 11 + +// Emergency Recall Guild Skill setting (add as appropriate). +// Note that for the skill to be usable at all, +// you need at least one of 1/2 and 4/8 +// 1: Skill is usable outside of woe. +// 2: Skill is usable during woe. +// 4: Skill is usable outside of GvG grounds +// 8: Skill is usable on GvG grounds +//16: Disable skill from "nowarpto" maps +// (it will work on GVG castles even if they are set to nowarpto, though) +emergency_call: 11 + +// Guild Aura Skills setting (add as appropriate). +// (This affects GD_LEADERSHIP, GD_GLORYWOUNDS, GD_SOULCOLD and GD_HAWKEYES) +// Note that for the skill to be usable at all, +// you need at least one of 1/2 and 4/8 +// 1: Skill works outside of woe. +// 2: Skill works during woe. +// 4: Skill works outside of GvG grounds +// 8: Skill works on GvG grounds +//16: Disable skill from affecting Guild Master +guild_aura: 31 + +// Allows players to skip menu when casting Teleport level 1 +// Menu contains two options. "Random" and "Cancel" +skip_teleport_lv1_menu: false + +// Allow use of SG skills without proper day (Sun/Moon/Star) ? +allow_skill_without_day: false + +// Allow use of ES-type magic on players? +allow_es_magic_player: false + +// Miracle of the Sun, Moon and Stars skill ratio (100% = 10000) +sg_miracle_skill_ratio: 2 + +// Miracle of the Sun, Moon and Stars skill duration in milliseconds +sg_miracle_skill_duration: 3600000 + +// Angel of the Sun, Moon and Stars skill ratio (100% = 10000) +sg_angel_skill_ratio: 10 + +// Skills that bHealPower has effect on +// 1: Heal, 2: Sanctuary, 4: Potion Pitcher, 8: Slim Pitcher, 16: Apple of Idun +skill_add_heal_rate: 7 + +// Whether the damage of EarthQuake with a single target on screen is able to be reflected. +// Note: On official server, EQ is reflectable when there is only one target on the screen, +// which might be an exploit to hunt the MVPs. +eq_single_target_reflectable: true + +// On official server, you will receive damage from Reflection and some Tarot Card even in invincible status. +// When this setting is enabled, it allows you to immune to all kinds of damage, including those stated previous. +// (The number will show but no actual damage will be done) +invincible_nodamage: false + +// Dancing Weapon Switch +// On official server, a fix is in place that prevents the switching of weapons to cancel songs. +// Default: true +dancing_weaponswitch_fix: true + +// Skill Trap Type (GvG) +// 0: (official) Traps in GvG only make player stop moving after its walk path is complete, and it activates other traps on the way. +// 1: Traps in GvG make player stop moving right when stepping over it. +skill_trap_type: 0 + +// Max Possible Level of Monster skills +// Note: If your MVPs are too tough, reduce it to 10. +mob_max_skilllvl: 100 + +// Area of Bowling Bash chain reaction +// 0: Use official gutter line system +// 1: Gutter line system without demi gutter bug +// 2-20: Area around caster (2 = 5x5, 3 = 7x7, 4 = 9x9, ..., 20 = 41x41) +// Note: If you knock the target out of the area it will only be hit once and won't do splash damage +bowling_bash_area: 0 + +// On official servers, Storm Gust consists of 81 units that all deal 3x3 splash damage "away from center". Due to +// south-western cells being processed first, this usually leads to a knockback to the northeast. Knockback at the +// edges will be away from SG. Knockback direction can also be influenced by Ganbantein and Land Protector. If you +// punch a hole into SG it will for example create a "suck in" effect. +// If you disable this setting, the knockback direction will be completely random (eAthena style). +stormgust_knockback: true diff --git a/conf/map/battle/status.conf b/conf/map/battle/status.conf new file mode 100644 index 000000000..37b2e013d --- /dev/null +++ b/conf/map/battle/status.conf @@ -0,0 +1,47 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2016 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Status) Configuration File +//========================================================================= +// Note 1: Value is a config switch (true/false) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) +//========================================================================= + +// Should skill casting be canceled when inflicted by curse/stun/sleep/etc (includes silence) (Note 3)? +status_cast_cancel: 0 + +// Adjustment for the natural rate of resistance from status changes. +// If 50, status defense is halved, and you need twice as much stats to block +// them (eg: 200 vit to completely block stun) +pc_status_def_rate: 100 +mob_status_def_rate: 100 + +// Maximum resistance to status changes. (100 = 100%) +// NOTE: Cards and equipment can go over this limit, so it only applies to natural resist. +pc_max_status_def: 100 +mob_max_status_def: 100 diff --git a/conf/readme.txt b/conf/readme.txt index 3323b5689..28ff254b6 100644 --- a/conf/readme.txt +++ b/conf/readme.txt @@ -9,12 +9,12 @@ How does this work? ------------------------------------------------------------------------------- Place only the settings you have changed in the import files. -For example, if you want to change a value in conf/battle/exp.conf: +For example, if you want to change a value in conf/map/battle/exp.conf: // Rate at which exp. is given. (Note 2) base_exp_rate: 700 -You could instead copy the setting into conf/import/battle_conf.txt, +You could instead copy the setting into conf/import/battle.conf, and you'll eliminate any problems updating in the future. Neat, isn't it? diff --git a/src/common/HPM.c b/src/common/HPM.c index 8e0bbe992..17dc4408e 100644 --- a/src/common/HPM.c +++ b/src/common/HPM.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -858,6 +858,52 @@ bool hplugins_get_battle_conf(const char *w1, int *value) return true; } +/** + * Parses battle config entries registered by plugins. + * + * @param config The configuration file to parse. + * @param filename Path to configuration file. + * @param imported Whether the current config is imported from another file. + * @retval false in case of error. + */ +bool hplugins_parse_battle_conf(const struct config_t *config, const char *filename, bool imported) +{ + const struct config_setting_t *setting = NULL; + int i, val, type; + char str[1024]; + bool retval = true; + + nullpo_retr(false, config); + + for (i = 0; i < VECTOR_LENGTH(HPM->config_listeners[HPCT_BATTLE]); i++) { + const struct HPConfListenStorage *entry = &VECTOR_INDEX(HPM->config_listeners[HPCT_BATTLE], i); + const char *config_name = entry->key; + if ((setting = libconfig->lookup(config, config_name)) == NULL) { + if (!imported) { + ShowWarning("Missing configuration '%s' in file %s!\n", config_name, filename); + retval = false; + } + continue; + } + + switch ((type = config_setting_type(setting))) { + case CONFIG_TYPE_INT: + val = libconfig->setting_get_int(setting); + break; + case CONFIG_TYPE_BOOL: + val = libconfig->setting_get_bool(setting); + break; + default: // Unsupported type + ShowWarning("Setting %s has unsupported type %d, ignoring...\n", config_name, type); + retval = false; + continue; + } + sprintf(str, "%d", val); // FIXME: Remove this when support to int's as value is added + entry->parse_func(config_name, str); + } + return retval; +} + /** * Helper to destroy an interface's hplugin_data store and release any owned memory. * @@ -1074,6 +1120,7 @@ void hpm_defaults(void) HPM->parse_packets = hplugins_parse_packets; HPM->load_sub = NULL; HPM->parseConf = hplugins_parse_conf; + HPM->parse_battle_conf = hplugins_parse_battle_conf; HPM->getBattleConf = hplugins_get_battle_conf; HPM->DataCheck = HPM_DataCheck; HPM->datacheck_init = HPM_datacheck_init; diff --git a/src/common/HPM.h b/src/common/HPM.h index 0b1275fde..104522090 100644 --- a/src/common/HPM.h +++ b/src/common/HPM.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,7 +65,9 @@ #endif // WIN32 +/* Forward Declarations */ struct HPMHooking_core_interface; +struct config_t; struct hplugin { DLL dll; @@ -155,6 +157,7 @@ struct HPM_interface { void *(*import_symbol) (char *name, unsigned int pID); void (*share) (void *value, const char *name); void (*config_read) (void); + bool (*parse_battle_conf) (const struct config_t *config, const char *filename, bool imported); char *(*pid2name) (unsigned int pid); unsigned char (*parse_packets) (int fd, int packet_id, enum HPluginPacketHookingPoints point); void (*load_sub) (struct hplugin *plugin); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 8d4aa317f..3f916eb42 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -3611,7 +3611,7 @@ ACMD(reloadbattleconf) struct Battle_Config prev_config; memcpy(&prev_config, &battle_config, sizeof(prev_config)); - battle->config_read(map->BATTLE_CONF_FILENAME); + battle->config_read(map->BATTLE_CONF_FILENAME, false); if (prev_config.feature_roulette == 0 && battle_config.feature_roulette == 1 && !clif->parse_roulette_db()) battle_config.feature_roulette = 0; diff --git a/src/map/battle.c b/src/map/battle.c index 908f0364b..c564b81cd 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -41,6 +41,7 @@ #include "map/status.h" #include "common/HPM.h" #include "common/cbasetypes.h" +#include "common/conf.h" #include "common/ers.h" #include "common/memmgr.h" #include "common/nullpo.h" @@ -7018,7 +7019,7 @@ static const struct battle_data { { "show_steal_in_same_party", &battle_config.show_steal_in_same_party, 0, 0, 1, }, { "party_hp_mode", &battle_config.party_hp_mode, 0, 0, 1, }, { "show_party_share_picker", &battle_config.party_show_share_picker, 1, 0, 1, }, - { "show_picker.item_type", &battle_config.show_picker_item_type, 112, 0, INT_MAX, }, + { "show_picker_item_type", &battle_config.show_picker_item_type, 112, 0, INT_MAX, }, { "party_update_interval", &battle_config.party_update_interval, 1000, 100, INT_MAX, }, { "party_item_share_type", &battle_config.party_share_type, 0, 0, 1|2|3, }, { "attack_attr_none", &battle_config.attack_attr_none, ~BL_PC, BL_NUL, BL_ALL, }, @@ -7177,14 +7178,14 @@ static const struct battle_data { { "display_status_timers", &battle_config.display_status_timers, 1, 0, 1, }, { "skill_add_heal_rate", &battle_config.skill_add_heal_rate, 7, 0, INT_MAX, }, { "eq_single_target_reflectable", &battle_config.eq_single_target_reflectable, 1, 0, 1, }, - { "invincible.nodamage", &battle_config.invincible_nodamage, 0, 0, 1, }, + { "invincible_nodamage", &battle_config.invincible_nodamage, 0, 0, 1, }, { "mob_slave_keep_target", &battle_config.mob_slave_keep_target, 0, 0, 1, }, { "autospell_check_range", &battle_config.autospell_check_range, 0, 0, 1, }, { "knockback_left", &battle_config.knockback_left, 1, 0, 1, }, { "client_reshuffle_dice", &battle_config.client_reshuffle_dice, 0, 0, 1, }, { "client_sort_storage", &battle_config.client_sort_storage, 0, 0, 1, }, - { "feature.buying_store", &battle_config.feature_buying_store, 1, 0, 1, }, - { "feature.search_stores", &battle_config.feature_search_stores, 1, 0, 1, }, + { "features/buying_store", &battle_config.feature_buying_store, 1, 0, 1, }, + { "features/search_stores", &battle_config.feature_search_stores, 1, 0, 1, }, { "searchstore_querydelay", &battle_config.searchstore_querydelay, 10, 0, INT_MAX, }, { "searchstore_maxresults", &battle_config.searchstore_maxresults, 30, 1, INT_MAX, }, { "display_party_name", &battle_config.display_party_name, 0, 0, 1, }, @@ -7204,7 +7205,7 @@ static const struct battle_data { { "atcommand_max_stat_bypass", &battle_config.atcommand_max_stat_bypass, 0, 0, 100, }, { "skill_amotion_leniency", &battle_config.skill_amotion_leniency, 90, 0, 300 }, { "mvp_tomb_enabled", &battle_config.mvp_tomb_enabled, 1, 0, 1 }, - { "feature.atcommand_suggestions", &battle_config.atcommand_suggestions_enabled, 0, 0, 1 }, + { "features/atcommand_suggestions", &battle_config.atcommand_suggestions_enabled, 0, 0, 1 }, { "min_npc_vendchat_distance", &battle_config.min_npc_vendchat_distance, 3, 0, 100 }, { "vendchat_near_hiddennpc", &battle_config.vendchat_near_hiddennpc, 0, 0, 1 }, { "atcommand_mobinfo_type", &battle_config.atcommand_mobinfo_type, 0, 0, 1 }, @@ -7225,8 +7226,8 @@ static const struct battle_data { { "client_accept_chatdori", &battle_config.client_accept_chatdori, 0, 0, INT_MAX, }, { "snovice_call_type", &battle_config.snovice_call_type, 0, 0, 1, }, { "guild_notice_changemap", &battle_config.guild_notice_changemap, 2, 0, 2, }, - { "feature.banking", &battle_config.feature_banking, 1, 0, 1, }, - { "feature.auction", &battle_config.feature_auction, 0, 0, 2, }, + { "features/banking", &battle_config.feature_banking, 1, 0, 1, }, + { "features/auction", &battle_config.feature_auction, 0, 0, 2, }, { "idletime_criteria", &battle_config.idletime_criteria, 0x25, 1, INT_MAX, }, { "mon_trans_disable_in_gvg", &battle_config.mon_trans_disable_in_gvg, 0, 0, 1, }, { "case_sensitive_aegisnames", &battle_config.case_sensitive_aegisnames, 1, 0, 1, }, @@ -7238,7 +7239,7 @@ static const struct battle_data { { "monster_chase_refresh", &battle_config.mob_chase_refresh, 1, 0, 30, }, { "mob_icewall_walk_block", &battle_config.mob_icewall_walk_block, 75, 0, 255, }, { "boss_icewall_walk_block", &battle_config.boss_icewall_walk_block, 0, 0, 255, }, - { "feature.roulette", &battle_config.feature_roulette, 1, 0, 1, }, + { "features/roulette", &battle_config.feature_roulette, 1, 0, 1, }, { "show_monster_hp_bar", &battle_config.show_monster_hp_bar, 1, 0, 1, }, { "fix_warp_hit_delay_abuse", &battle_config.fix_warp_hit_delay_abuse, 0, 0, 1, }, { "costume_refine_def", &battle_config.costume_refine_def, 1, 0, 1, }, @@ -7413,28 +7414,36 @@ static int Hercules_report_timer(int tid, int64 tick, int id, intptr_t data) { } #endif -int battle_set_value(const char* w1, const char* w2) +bool battle_set_value_sub(int index, int value) { - int val = config_switch(w2); + Assert_retr(false, index >= 0); + if (value < battle_data[index].min || value > battle_data[index].max) { + ShowWarning("Value for setting '%s': %d is invalid (min:%d max:%d)! Defaulting to %d...\n", + battle_data[index].str, value, battle_data[index].min, battle_data[index].max, battle_data[index].defval); + value = battle_data[index].defval; + } + *battle_data[index].val = value; + return true; +} + +bool battle_set_value(const char *param, const char *value) +{ + int val; int i; - nullpo_retr(1, w1); - nullpo_retr(1, w2); - ARR_FIND(0, ARRAYLENGTH(battle_data), i, strcmpi(w1, battle_data[i].str) == 0); - if (i == ARRAYLENGTH(battle_data)) { - if( HPM->parseConf(w1,w2,HPCT_BATTLE) ) /* if plugin-owned, succeed */ - return 1; - return 0; // not found - } + nullpo_retr(false, param); + nullpo_retr(false, value); - if (val < battle_data[i].min || val > battle_data[i].max) - { - ShowWarning("Value for setting '%s': %s is invalid (min:%i max:%i)! Defaulting to %i...\n", w1, w2, battle_data[i].min, battle_data[i].max, battle_data[i].defval); - val = battle_data[i].defval; + val = config_switch(value); + + ARR_FIND(0, ARRAYLENGTH(battle_data), i, strcmpi(param, battle_data[i].str) == 0); + if (i == ARRAYLENGTH(battle_data)) { + if (HPM->parseConf(param, value, HPCT_BATTLE)) /* if plugin-owned, succeed */ + return true; + return false; // not found } - *battle_data[i].val = val; - return 1; + return battle->config_set_value_sub(i, val); } bool battle_get_value(const char *w1, int *value) @@ -7485,36 +7494,36 @@ void battle_adjust_conf(void) { #if PACKETVER < 20100427 if( battle_config.feature_buying_store ) { - ShowWarning("conf/battle/feature.conf buying_store is enabled but it requires PACKETVER 2010-04-27 or newer, disabling...\n"); + ShowWarning("conf/map/battle/feature.conf buying_store is enabled but it requires PACKETVER 2010-04-27 or newer, disabling...\n"); battle_config.feature_buying_store = 0; } #endif #if PACKETVER < 20100803 if( battle_config.feature_search_stores ) { - ShowWarning("conf/battle/feature.conf search_stores is enabled but it requires PACKETVER 2010-08-03 or newer, disabling...\n"); + ShowWarning("conf/map/battle/feature.conf search_stores is enabled but it requires PACKETVER 2010-08-03 or newer, disabling...\n"); battle_config.feature_search_stores = 0; } #endif #if PACKETVER < 20130724 if( battle_config.feature_banking ) { - ShowWarning("conf/battle/feature.conf banking is enabled but it requires PACKETVER 2013-07-24 or newer, disabling...\n"); + ShowWarning("conf/map/battle/feature.conf banking is enabled but it requires PACKETVER 2013-07-24 or newer, disabling...\n"); battle_config.feature_banking = 0; } #endif #if PACKETVER < 20141022 if( battle_config.feature_roulette ) { - ShowWarning("conf/battle/feature.conf roulette is enabled but it requires PACKETVER 2014-10-22 or newer, disabling...\n"); + ShowWarning("conf/map/battle/feature.conf roulette is enabled but it requires PACKETVER 2014-10-22 or newer, disabling...\n"); battle_config.feature_roulette = 0; } #endif #if PACKETVER > 20120000 && PACKETVER < 20130515 /* exact date (when it started) not known */ if( battle_config.feature_auction == 1 ) { - ShowWarning("conf/battle/feature.conf:feature.auction is enabled but it is not stable on PACKETVER "EXPAND_AND_QUOTE(PACKETVER)", disabling...\n"); - ShowWarning("conf/battle/feature.conf:feature.auction change value to '2' to silence this warning and maintain it enabled\n"); + ShowWarning("conf/map/battle/feature.conf:features/auction is enabled but it is not stable on PACKETVER "EXPAND_AND_QUOTE(PACKETVER)", disabling...\n"); + ShowWarning("conf/map/battle/feature.conf:features/auction change value to '2' to silence this warning and maintain it enabled\n"); battle_config.feature_auction = 0; } #endif @@ -7525,48 +7534,78 @@ void battle_adjust_conf(void) { #endif } -int battle_config_read(const char* cfgName) +/** + * Dynamically reads battle configuration and initializes required variables. + * + * @param filename Path to configuration file. + * @param imported Whether the current config is imported from another file. + * @retval false in case of error. + */ +bool battle_config_read(const char *filename, bool imported) { - FILE* fp; - static int count = 0; + struct config_t config; + const struct config_setting_t *setting = NULL; + int i; + const char *import = NULL; + bool retval = true; + + nullpo_retr(false, filename); - nullpo_ret(cfgName); + if (!libconfig->load_file(&config, filename)) + return false; // Error message is already shown by libconfig->load_file() - if (count == 0) + if (!imported) battle->config_set_defaults(); - count++; + for (i = 0; i < ARRAYLENGTH(battle_data); i++) { + int type, val; + char config_name[256]; + safesnprintf(config_name, sizeof config_name, "battle_configuration/%s", battle_data[i].str); - fp = fopen(cfgName,"r"); - if (fp == NULL) - ShowError("File not found: %s\n", cfgName); - else - { - char line[1024], w1[1024], w2[1024]; - while(fgets(line, sizeof(line), fp)) - { - if (line[0] == '/' && line[1] == '/') - continue; - if (sscanf(line, "%1023[^:]:%1023s", w1, w2) != 2) - continue; - if (strcmpi(w1, "import") == 0) - battle->config_read(w2); - else - if (battle->config_set_value(w1, w2) == 0) - ShowWarning("Unknown setting '%s' in file %s\n", w1, cfgName); + if ((setting = libconfig->lookup(&config, config_name)) == NULL) { + if (!imported) { + ShowWarning("Missing configuration '%s' in file %s!\n", config_name, filename); + retval = false; + } + continue; } - fclose(fp); + switch ((type = config_setting_type(setting))) { + case CONFIG_TYPE_INT: + val = libconfig->setting_get_int(setting); + break; + case CONFIG_TYPE_BOOL: + val = libconfig->setting_get_bool(setting); + break; + default: // Unsupported type + ShowWarning("Setting %s has unsupported type %d, ignoring...\n", config_name, type); + retval = false; + continue; + } + + if (!battle->config_set_value_sub(i, val)) + retval = false; } - count--; + if (!HPM->parse_battle_conf(&config, filename, imported)) + retval = false; + + // import should overwrite any previous configuration, so it should be called last + if (libconfig->lookup_string(&config, "import", &import) == CONFIG_TRUE) { + if (strcmp(import, filename) == 0 || strcmp(import, map->BATTLE_CONF_FILENAME) == 0) { + ShowWarning("battle_config_read: Loop detected! Skipping 'import'...\n"); + } else { + if (!battle->config_read(import, true)) + retval = false; + } + } - if (count == 0) { + libconfig->destroy(&config); + if (!imported) { battle->config_adjust(); clif->bc_ready(); } - - return 0; + return retval; } void do_init_battle(bool minimal) { @@ -7645,6 +7684,7 @@ void battle_defaults(void) { battle->calc_drain = battle_calc_drain; battle->config_read = battle_config_read; battle->config_set_defaults = battle_set_defaults; + battle->config_set_value_sub = battle_set_value_sub; battle->config_set_value = battle_set_value; battle->config_get_value = battle_get_value; battle->config_adjust = battle_adjust_conf; diff --git a/src/map/battle.h b/src/map/battle.h index e04a713ae..ebfa0e305 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -663,10 +663,11 @@ struct battle_interface { int (*adjust_skill_damage) (int m, unsigned short skill_id); int64 (*add_mastery) (struct map_session_data *sd,struct block_list *target,int64 dmg,int type); int (*calc_drain) (int64 damage, int rate, int per); - /* - battle_config */ - int (*config_read) (const char *cfgName); + /* battle_config */ + bool (*config_read) (const char *filename, bool imported); void (*config_set_defaults) (void); - int (*config_set_value) (const char *w1, const char *w2); + bool (*config_set_value_sub) (int index, int value); + bool (*config_set_value) (const char *param, const char *value); bool (*config_get_value) (const char *w1, int *value); void (*config_adjust) (void); /* ----------------------------------------- */ diff --git a/src/map/map.c b/src/map/map.c index 17c025ff3..40bcd9263 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -6367,7 +6367,7 @@ int do_init(int argc, char *argv[]) map->INTER_CONF_NAME = aStrdup("conf/common/inter-server.conf"); map->LOG_CONF_NAME = aStrdup("conf/map/logs.conf"); map->MAP_CONF_NAME = aStrdup("conf/map/map-server.conf"); - map->BATTLE_CONF_FILENAME = aStrdup("conf/battle.conf"); + map->BATTLE_CONF_FILENAME = aStrdup("conf/map/battle.conf"); map->ATCOMMAND_CONF_FILENAME = aStrdup("conf/atcommand.conf"); map->SCRIPT_CONF_NAME = aStrdup("conf/map/script.conf"); map->MSG_CONF_NAME = aStrdup("conf/messages.conf"); @@ -6402,6 +6402,7 @@ int do_init(int argc, char *argv[]) CHECK_OLD_LOCAL_CONF("conf/import/log_conf.txt", "conf/import/logs.conf"); CHECK_OLD_LOCAL_CONF("conf/import/script_conf.txt", "conf/import/script.conf"); CHECK_OLD_LOCAL_CONF("conf/import/packet_conf.txt", "conf/import/socket.conf"); + CHECK_OLD_LOCAL_CONF("conf/import/battle_conf.txt", "conf/import/battle.conf"); #undef CHECK_OLD_LOCAL_CONF } @@ -6432,7 +6433,7 @@ int do_init(int argc, char *argv[]) chrif->setip(ip_str); } - battle->config_read(map->BATTLE_CONF_FILENAME); + battle->config_read(map->BATTLE_CONF_FILENAME, false); atcommand->msg_read(map->MSG_CONF_NAME, false); map->inter_config_read(map->INTER_CONF_NAME, false); logs->config_read(map->LOG_CONF_NAME, false); @@ -6596,7 +6597,7 @@ void map_defaults(void) { map->INTER_CONF_NAME="conf/common/inter-server.conf"; map->LOG_CONF_NAME="conf/map/logs.conf"; map->MAP_CONF_NAME = "conf/map/map-server.conf"; - map->BATTLE_CONF_FILENAME = "conf/battle.conf"; + map->BATTLE_CONF_FILENAME = "conf/map/battle.conf"; map->ATCOMMAND_CONF_FILENAME = "conf/atcommand.conf"; map->SCRIPT_CONF_NAME = "conf/map/script.conf"; map->MSG_CONF_NAME = "conf/messages.conf"; diff --git a/tools/configconverter.pl b/tools/configconverter.pl index 669e3741c..4fafd1f64 100755 --- a/tools/configconverter.pl +++ b/tools/configconverter.pl @@ -531,6 +531,409 @@ my @defaults = ( import => {parse => \&parsecfg_string, print => \&printcfg_nil, path => "", default => "conf/import/packet_conf.txt"}, } }, + { + files => ['battle.conf', 'battle/battle.conf', 'battle/client.conf', 'battle/drops.conf', 'battle/exp.conf', 'battle/gm.conf', 'battle/guild.conf', 'battle/battleground.conf', 'battle/items.conf', 'battle/monster.conf', 'battle/party.conf', 'battle/pet.conf', 'battle/homunc.conf', 'battle/player.conf', 'battle/skill.conf', 'battle/status.conf', 'battle/feature.conf', 'battle/misc.conf', 'import/battle_conf.txt'], + settings => { + bg_flee_penalty => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battleground:", default => 20}, + bg_update_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battleground:", default => 1000}, + 'feature.buying_store' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/buying_store", default => "true"}, + 'feature.search_stores' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/search_stores", default => "true"}, + 'feature.atcommand_suggestions' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/atcommand_suggestions", default => "false"}, + 'feature.banking' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/banking", default => "true"}, + 'feature.auction' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/auction", default => "false"}, + 'feature.roulette' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "feature:features/roulette", default => "false"}, + atcommand_spawn_quantity_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "gm:", default => 100}, + atcommand_slave_clone_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "gm:", default => 25}, + partial_name_scan => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "gm:", default => "true"}, + atcommand_max_stat_bypass => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "gm:", default => "false"}, + ban_hack_trade => {parse => \&parsecfg_int, print => \&printcfg_int, path => "gm:", default => 5}, + atcommand_mobinfo_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "gm:", default => 0}, + gm_ignore_warpable_area => {parse => \&parsecfg_int, print => \&printcfg_int, path => "gm:", default => 2}, + atcommand_levelup_events => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "gm:", default => "false"}, + guild_emperium_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "guild:", default => "true"}, + guild_exp_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 50}, + guild_max_castles => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 0}, + guild_skill_relog_delay => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "guild:", default => "false"}, + castle_defense_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 100}, + gvg_flee_penalty => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 20}, + require_glory_guild => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "guild:", default => "false"}, + max_guild_alliance => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 3}, + guild_notice_changemap => {parse => \&parsecfg_int, print => \&printcfg_int, path => "guild:", default => 2}, + guild_castle_invite => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "guild:", default => "false"}, + guild_castle_expulsion => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "guild:", default => "false"}, + hom_setting => {parse => \&parsecfg_int, print => \&printcfg_hexint, path => "homunc:", default => 0x1D}, + homunculus_friendly_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "homunc:", default => 100}, + hom_rename => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "homunc:", default => "false"}, + hvan_explosion_intimate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "homunc:", default => 45000}, + homunculus_show_growth => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "homunc:", default => "true"}, + homunculus_autoloot => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "homunc:", default => "true"}, + homunculus_auto_vapor => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "homunc:", default => "true"}, + homunculus_max_level => {parse => \&parsecfg_int, print => \&printcfg_int, path => "homunc:", default => 99}, + homunculus_S_max_level => {parse => \&parsecfg_int, print => \&printcfg_int, path => "homunc:", default => 150}, + enable_baseatk => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 9}, + enable_perfect_flee => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + enable_critical => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 17}, + mob_critical_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + critical_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + attack_walk_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 15}, + pc_damage_walk_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 20}, + damage_walk_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + multihit_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 80}, + player_damage_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + undead_detect_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 0}, + attribute_recover => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "battle:", default => "false"}, + min_hitrate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 5}, + max_hitrate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + agi_penalty_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + agi_penalty_target => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + agi_penalty_count => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 3}, + agi_penalty_num => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 10}, + vit_penalty_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + vit_penalty_target => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + vit_penalty_count => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 3}, + vit_penalty_num => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 5}, + weapon_defense_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 0}, + magic_defense_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 0}, + attack_direction_change => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 0}, + attack_attr_none => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 14}, + equip_natural_break_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 0}, + equip_self_break_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + equip_skill_break_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 100}, + delay_battle_damage => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "battle:", default => "true"}, + arrow_decrement => {parse => \&parsecfg_int, print => \&printcfg_int, path => "battle:", default => 1}, + autospell_check_range => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "battle:", default => "false"}, + knockback_left => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "battle:", default => "true"}, + snap_dodge => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "battle:", default => "false"}, + packet_obfuscation => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 1}, + min_chat_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + min_hair_style => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + max_hair_style => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 29}, + min_hair_color => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + max_hair_color => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 8}, + min_cloth_color => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + max_cloth_color => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 4}, + min_body_style => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + max_body_style => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 4}, + hide_woe_damage => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "true"}, + pet_hair_style => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 100}, + area_size => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 14}, + max_walk_path => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 17}, + max_lv => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 99}, + aura_lv => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 99}, + client_limit_unit_lv => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + wedding_modifydisplay => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + save_clothcolor => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "true"}, + save_body_style => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + wedding_ignorepalette => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + xmas_ignorepalette => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + summer_ignorepalette => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + hanbok_ignorepalette => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + display_version => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + display_hallucination => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "true"}, + display_status_timers => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "true"}, + client_reshuffle_dice => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "true"}, + client_sort_storage => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "client:", default => "false"}, + client_accept_chatdori => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 0}, + client_emblem_max_blank_percent => {parse => \&parsecfg_int, print => \&printcfg_int, path => "client:", default => 100}, + item_auto_get => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "drops:", default => "false"}, + flooritem_lifetime => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 60000}, + item_first_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 3000}, + item_second_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1000}, + item_third_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1000}, + mvp_item_first_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + mvp_item_second_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + mvp_item_third_get_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 2000}, + item_rate_common => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_rate_common_boss => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_common_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_common_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_heal => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_rate_heal_boss => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_heal_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_heal_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_use => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_rate_use_boss => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_use_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_use_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_equip => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_rate_equip_boss => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_equip_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_equip_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_card => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_rate_card_boss => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_card_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_card_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_mvp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_mvp_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_mvp_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_adddrop => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_add_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_add_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_rate_treasure => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 100}, + item_drop_treasure_min => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + item_drop_treasure_max => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 10000}, + item_logarithmic_drops => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "drops:", default => "false"}, + drop_rate0item => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "drops:", default => "false"}, + drops_by_luk => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0}, + drops_by_luk2 => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0}, + alchemist_summon_reward => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1}, + rare_drop_announce => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0}, + base_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + job_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + multi_level_up => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "false"}, + max_exp_gain_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + exp_calc_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + exp_bonus_attacker => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 25}, + exp_bonus_max_attacker => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 12}, + mvp_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + quest_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + heal_exp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + resurrection_exp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + shop_exp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + pvp_exp => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "true"}, + death_penalty_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 1}, + death_penalty_base => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + death_penalty_job => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100}, + zeny_penalty => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 0}, + disp_experience => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "false"}, + disp_zeny => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "false"}, + use_statpoint_table => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "true"}, + vending_max_value => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 1000000000}, + vending_over_max => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + vending_tax => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 200}, + buyer_name => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + weapon_produce_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 100}, + potion_produce_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 100}, + produce_item_name_input => {parse => \&parsecfg_int, print => \&printcfg_hexint, path => "items:", default => 0x03}, + dead_branch_active => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + random_monster_checklv => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "false"}, + ignore_items_gender => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + item_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "false"}, + item_use_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 100}, + cashfood_use_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 60000}, + gtb_sc_immunity => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 50}, + autospell_stacking => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "false"}, + item_restricted_consumption_type => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + item_enabled_npc => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "items:", default => "true"}, + unequip_restricted_equipment => {parse => \&parsecfg_int, print => \&printcfg_int, path => "items:", default => 0}, + pk_mode => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + manner_system => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 31}, + pk_min_level => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 55}, + pk_level_range => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + skill_log => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + battle_log => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + etc_log => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + warp_point_debug => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + night_at_start => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + day_duration => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + night_duration => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + duel_allow_pvp => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + duel_allow_gvg => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + duel_allow_teleport => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + duel_autoleave_when_die => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "true"}, + duel_time_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 60}, + duel_only_on_same_map => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + official_cell_stack_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 1}, + custom_cell_stack_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 1}, + check_occupied_cells => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "true"}, + at_mapflag => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + at_timeout => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + auction_feeperhour => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 12000}, + auction_maximumprice => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 500000000}, + searchstore_querydelay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 10}, + searchstore_maxresults => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 30}, + cashshop_show_points => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + mail_show_status => {parse => \&parsecfg_int, print => \&printcfg_int, path => "misc:", default => 0}, + mon_trans_disable_in_gvg => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "false"}, + case_sensitive_aegisnames => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "misc:", default => "true"}, + mvp_hp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + monster_hp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + monster_max_aspd => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 199}, + monster_ai => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + monster_chase_refresh => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 3}, + mob_warp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + mob_active_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + boss_active_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + view_range_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + chase_range_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + monster_active_enable => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + override_mob_names => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + monster_damage_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + monster_loot_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + mob_skill_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + mob_skill_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + mob_count_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + mob_spawn_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + plant_spawn_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + boss_spawn_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 100}, + no_spawn_on_player => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + force_random_spawn => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "false"}, + slaves_inherit_mode => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 2}, + slaves_inherit_speed => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 3}, + summons_trigger_autospells => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + retaliate_to_master => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + mob_changetarget_byskill => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "false"}, + monster_class_change_full_recover => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + show_mob_info => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + zeny_from_mobs => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "false"}, + mobs_level_up => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "false"}, + mobs_level_up_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 1}, + dynamic_mobs => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + mob_remove_damaged => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + mob_remove_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 300000}, + mob_npc_event_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 1}, + ksprotection => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 0}, + mob_slave_keep_target => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + mvp_tomb_enabled => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + show_monster_hp_bar => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "true"}, + mob_size_influence => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "monster:", default => "false"}, + mob_icewall_walk_block => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 220}, + boss_icewall_walk_block => {parse => \&parsecfg_int, print => \&printcfg_int, path => "monster:", default => 1}, + show_steal_in_same_party => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "party:", default => "false"}, + party_update_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:", default => 1000}, + party_hp_mode => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:", default => 0}, + show_party_share_picker => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "party:", default => "true"}, + 'show_picker.item_type' => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:show_picker_item_type", default => 112}, + party_item_share_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:", default => 0}, + idle_no_share => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:", default => 0}, + party_even_share_bonus => {parse => \&parsecfg_int, print => \&printcfg_int, path => "party:", default => 0}, + display_party_name => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "party:", default => "false"}, + pet_catch_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 100}, + pet_rename => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + pet_friendly_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 100}, + pet_hungry_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 100}, + pet_hungry_friendly_decrease => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 5}, + pet_equip_required => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "true"}, + pet_attack_support => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + pet_damage_support => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + pet_support_min_friendly => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 900}, + pet_equip_min_friendly => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 900}, + pet_status_support => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + pet_support_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 100}, + pet_attack_exp_to_master => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + pet_attack_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 100}, + pet_lv_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 0}, + pet_max_stats => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 99}, + pet_max_atk1 => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 500}, + pet_max_atk2 => {parse => \&parsecfg_int, print => \&printcfg_int, path => "pet:", default => 1000}, + pet_disable_in_gvg => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "pet:", default => "false"}, + hp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 100}, + sp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 100}, + left_cardfix_to_right => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + restart_hp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + restart_sp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + player_skillfree => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + player_skillup_limit => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + quest_skill_learn => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + quest_skill_reset => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + basic_skill_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + player_invincible_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 5000}, + fix_warp_hit_delay_abuse => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + natural_healhp_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 6000}, + natural_healsp_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 8000}, + natural_heal_skill_interval => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 10000}, + natural_heal_weight_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 50}, + max_aspd => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 190}, + max_third_aspd => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 193}, + max_walk_speed => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 300}, + max_hp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 1000000}, + max_sp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 1000000}, + max_parameter => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 99}, + max_third_parameter => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 130}, + max_extended_parameter => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 125}, + max_baby_parameter => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 80}, + max_baby_third_parameter => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 117}, + max_def => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 99}, + over_def_bonus => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + max_cart_weight => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 8000}, + prevent_logout => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 10000}, + show_hp_sp_drain => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + show_hp_sp_gain => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + show_katar_crit_bonus => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + friend_auto_add => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + invite_request_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + bone_drop => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + character_size => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + idle_no_autoloot => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + min_npc_vendchat_distance => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 3}, + vendchat_near_hiddennpc => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "false"}, + snovice_call_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "player:", default => 0}, + idletime_criteria => {parse => \&parsecfg_int, print => \&printcfg_hexint, path => "player:", default => 0x1F}, + costume_refine_def => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + shadow_refine_def => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + shadow_refine_atk => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + player_warp_keep_direction => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "player:", default => "true"}, + casting_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 100}, + delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 100}, + delay_dependon_dex => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + delay_dependon_agi => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + min_skill_delay_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 100}, + default_walk_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 300}, + no_skill_delay => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 2}, + castrate_dex_scale => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 150}, + vcast_stat_scale => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 530}, + skill_amotion_leniency => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 90}, + skill_delay_attack_enable => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + skill_add_range => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + skill_out_range_consume => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + skillrange_by_distance => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 14}, + skillrange_from_weapon => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + skill_caster_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + clear_skills_on_death => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + clear_skills_on_warp => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 15}, + defunit_not_enemy => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + skill_min_damage => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 6}, + combo_delay_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 100}, + auto_counter_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 15}, + skill_reiteration => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + skill_nofootset => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 1}, + gvg_traps_target_all => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 1}, + traps_setting => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + summon_flora_setting => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 3}, + song_timer_reset => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + skill_wall_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + player_cloak_check_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 1}, + monster_cloak_check_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 4}, + land_skill_limit => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 9}, + display_skill_fail => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + chat_warpportal => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + sense_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 1}, + finger_offensive_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + gx_allhit => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + gx_disptype => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 1}, + devotion_level_difference => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 10}, + player_skill_partner_check => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + skill_removetrap_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + backstab_bow_penalty => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + skill_steal_max_tries => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + copyskill_restrict => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 2}, + berserk_cancels_buffs => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + max_heal => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 9999}, + max_heal_lv => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 11}, + emergency_call => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 11}, + guild_aura => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 31}, + skip_teleport_lv1_menu => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + allow_skill_without_day => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + allow_es_magic_player => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + sg_miracle_skill_ratio => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 2}, + sg_miracle_skill_duration => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 3600000}, + sg_angel_skill_ratio => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 10}, + skill_add_heal_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 7}, + eq_single_target_reflectable => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + 'invincible.nodamage' => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "false"}, + dancing_weaponswitch_fix => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + skill_trap_type => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + mob_max_skilllvl => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 100}, + bowling_bash_area => {parse => \&parsecfg_int, print => \&printcfg_int, path => "skill:", default => 0}, + stormgust_knockback => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "skill:", default => "true"}, + status_cast_cancel => {parse => \&parsecfg_int, print => \&printcfg_int, path => "status:", default => 0}, + pc_status_def_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "status:", default => 100}, + mob_status_def_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "status:", default => 100}, + pc_max_status_def => {parse => \&parsecfg_int, print => \&printcfg_int, path => "status:", default => 100}, + mob_max_status_def => {parse => \&parsecfg_int, print => \&printcfg_int, path => "status:", default => 100}, + import => {parse => \&parsecfg_stringarr, print => \&printcfg_nil, path => "", default => ['conf/battle/battle.conf', 'conf/battle/client.conf', 'conf/battle/drops.conf', 'conf/battle/exp.conf', 'conf/battle/gm.conf', 'conf/battle/guild.conf', 'conf/battle/battleground.conf', 'conf/battle/items.conf', 'conf/battle/monster.conf', 'conf/battle/party.conf', 'conf/battle/pet.conf', 'conf/battle/homunc.conf', 'conf/battle/player.conf', 'conf/battle/skill.conf', 'conf/battle/status.conf', 'conf/battle/feature.conf', 'conf/battle/misc.conf', 'conf/import/battle_conf.txt']}, + } + }, ); for (@ARGV) { -- cgit v1.2.3-60-g2f50