From fca52ab2027c883efa374ec40f91c4eac0f74f4c Mon Sep 17 00:00:00 2001
From: ErikasKontenis <e.kontenis@gmail.com>
Date: Mon, 12 Oct 2020 22:16:50 +0300
Subject: [PATCH] introduce paladinRangeAttackDamageIncreasePercent and
 knightCloseAttackDamageIncreasePercent in config.lua

---
 config.lua            |  4 ++++
 src/combat.cpp        | 18 ++++++++++++------
 src/configmanager.cpp |  2 ++
 src/configmanager.h   |  2 ++
 src/luascript.cpp     |  2 ++
 5 files changed, 22 insertions(+), 6 deletions(-)

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)