diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index be9dac276c..aff2322e8b 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/07/06 + * Added no_skill_delay setting, when set, affected object types will have + the minimum skill delay for all skills. Defaults to mobs, since they + don't have skill delays. [Skotlex] * Cleaned up pc_equipitem. When dual wielding or equipping accessories, if the client actually specifies one of the two positions, it will be taken into account (now, does the client actually does this?) [Skotlex] diff --git a/conf-tmpl/battle/skill.conf b/conf-tmpl/battle/skill.conf index 16548fd240..7cb33a613f 100644 --- a/conf-tmpl/battle/skill.conf +++ b/conf-tmpl/battle/skill.conf @@ -50,6 +50,13 @@ min_skill_delay_limit: 100 // appear to "teleport" afterwards. default_skill_delay: 300 +//Completely disable skill delay of the following types (Note 4) +//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 (instacast) castrate_dex_scale: 150 diff --git a/src/map/battle.c b/src/map/battle.c index 191608a3af..e83b1846bd 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3552,6 +3552,7 @@ static const struct battle_data_short { { "exp_calc_type", &battle_config.exp_calc_type}, // [celest] { "min_skill_delay_limit", &battle_config.min_skill_delay_limit}, // [celest] { "default_skill_delay", &battle_config.default_skill_delay}, // [Skotlex] + { "no_skill_delay", &battle_config.no_skill_delay}, // [Skotlex] { "require_glory_guild", &battle_config.require_glory_guild}, // [celest] { "idle_no_share", &battle_config.idle_no_share}, // [celest], for a feature by [MouseJstr] { "party_even_share_bonus", &battle_config.party_even_share_bonus}, @@ -3975,6 +3976,7 @@ void battle_set_defaults() { battle_config.exp_calc_type = 1; battle_config.min_skill_delay_limit = 100; battle_config.default_skill_delay = 300; //Default skill delay according to official servers. + battle_config.no_skill_delay = BL_MOB; battle_config.require_glory_guild = 0; battle_config.idle_no_share = 0; battle_config.party_even_share_bonus = 0; diff --git a/src/map/battle.h b/src/map/battle.h index 57d574917a..a4533395ae 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -366,6 +366,7 @@ extern struct Battle_Config { unsigned short exp_calc_type; unsigned short min_skill_delay_limit; unsigned short default_skill_delay; + unsigned short no_skill_delay; unsigned short require_glory_guild; unsigned short idle_no_share; unsigned short party_even_share_bonus; diff --git a/src/map/skill.c b/src/map/skill.c index 8f16288c46..cfc4ccd4be 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8300,8 +8300,8 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv) nullpo_retr(0, bl); - if (bl->type == BL_MOB) - return 0; //Mobs have no delay other than the skill-specific delay in their skill db. [Skotlex] + if (bl->type&battle_config.no_skill_delay) + return battle_config.min_skill_delay_limit; // instant cast attack skills depend on aspd as delay [celest] if (time == 0) {