diff --git a/config.lua b/config.lua index 32eea1c..5a68061 100644 --- a/config.lua +++ b/config.lua @@ -1,3 +1,7 @@ +-- Custom +knightCloseAttackDamageIncreasePercent = 50 +paladinRangeAttackDamageIncreasePercent = 40 + -- Combat settings -- NOTE: valid values for worldType are: "pvp", "no-pvp" and "pvp-enforced" worldType = "pvp" diff --git a/src/combat.cpp b/src/combat.cpp index c593bee..5b70314 100644 --- a/src/combat.cpp +++ b/src/combat.cpp @@ -896,9 +896,12 @@ bool Combat::closeAttack(Creature* attacker, Creature* target, fightMode_t fight combatDamage.value = totalDamage; combatDamage.origin = ORIGIN_MELEE; - if (Player* player = attacker->getPlayer()) { - if (player->getVocationId() == 4 || player->getVocationId() == 8) { - combatDamage.value += combatDamage.value * 0.20; + int32_t knightCloseAttackDamageIncreasePercent = g_config.getNumber(ConfigManager::KNIGHT_CLOSE_ATTACK_DAMAGE_INCREASE_PERCENT); + if (knightCloseAttackDamageIncreasePercent != -1) { + if (Player* player = attacker->getPlayer()) { + if (player->getVocationId() == 4 || player->getVocationId() == 8) { + combatDamage.value += combatDamage.value * knightCloseAttackDamageIncreasePercent / 100; + } } } @@ -1018,9 +1021,12 @@ bool Combat::rangeAttack(Creature* attacker, Creature* target, fightMode_t fight combatDamage.value = Combat::getTotalDamage(skillValue, attackValue, fightMode); combatDamage.origin = ORIGIN_RANGED; - if (Player* player = attacker->getPlayer()) { - if (player->getVocationId() == 3 || player->getVocationId() == 7) { - combatDamage.value += combatDamage.value * 0.15; + int32_t paladinRangeAttackDamageIncreasePercent = g_config.getNumber(ConfigManager::PALADIN_RANGE_ATTACK_DAMAGE_INCREASE_PERCENT); + if (paladinRangeAttackDamageIncreasePercent != -1) { + if (Player* player = attacker->getPlayer()) { + if (player->getVocationId() == 3 || player->getVocationId() == 7) { + combatDamage.value += combatDamage.value * paladinRangeAttackDamageIncreasePercent / 100; + } } } diff --git a/src/configmanager.cpp b/src/configmanager.cpp index 0498925..088a283 100644 --- a/src/configmanager.cpp +++ b/src/configmanager.cpp @@ -108,6 +108,8 @@ bool ConfigManager::load() integer[KICK_AFTER_MINUTES] = getGlobalNumber(L, "kickIdlePlayerAfterMinutes", 15); integer[PROTECTION_LEVEL] = getGlobalNumber(L, "protectionLevel", 1); integer[DEATH_LOSE_PERCENT] = getGlobalNumber(L, "deathLosePercent", -1); + integer[KNIGHT_CLOSE_ATTACK_DAMAGE_INCREASE_PERCENT] = getGlobalNumber(L, "knightCloseAttackDamageIncreasePercent", -1); + integer[PALADIN_RANGE_ATTACK_DAMAGE_INCREASE_PERCENT] = getGlobalNumber(L, "paladinRangeAttackDamageIncreasePercent", -1); integer[STATUSQUERY_TIMEOUT] = getGlobalNumber(L, "statusTimeout", 5000); integer[WHITE_SKULL_TIME] = getGlobalNumber(L, "whiteSkullTime", 15 * 60); integer[RED_SKULL_TIME] = getGlobalNumber(L, "redSkullTime", 30 * 24 * 60 * 60); diff --git a/src/configmanager.h b/src/configmanager.h index c8cf68d..1b571ae 100644 --- a/src/configmanager.h +++ b/src/configmanager.h @@ -94,6 +94,8 @@ class ConfigManager KICK_AFTER_MINUTES, PROTECTION_LEVEL, DEATH_LOSE_PERCENT, + KNIGHT_CLOSE_ATTACK_DAMAGE_INCREASE_PERCENT, + PALADIN_RANGE_ATTACK_DAMAGE_INCREASE_PERCENT, STATUSQUERY_TIMEOUT, WHITE_SKULL_TIME, RED_SKULL_TIME, diff --git a/src/luascript.cpp b/src/luascript.cpp index 69620b7..0028383 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -1662,6 +1662,8 @@ void LuaScriptInterface::registerFunctions() registerEnumIn("configKeys", ConfigManager::KICK_AFTER_MINUTES) registerEnumIn("configKeys", ConfigManager::PROTECTION_LEVEL) registerEnumIn("configKeys", ConfigManager::DEATH_LOSE_PERCENT) + registerEnumIn("configKeys", ConfigManager::KNIGHT_CLOSE_ATTACK_DAMAGE_INCREASE_PERCENT) + registerEnumIn("configKeys", ConfigManager::PALADIN_RANGE_ATTACK_DAMAGE_INCREASE_PERCENT) registerEnumIn("configKeys", ConfigManager::STATUSQUERY_TIMEOUT) registerEnumIn("configKeys", ConfigManager::WHITE_SKULL_TIME) registerEnumIn("configKeys", ConfigManager::RED_SKULL_TIME)