From cf835b71f129f1c27dbcac0e30f0b44be4a3fe2b Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 11 Apr 2018 13:28:53 +0000 Subject: [PATCH] Configurable NPC stat multipliers. --- .../game/config/Custom/NpcStatMultipliers.ini | 46 ++++++++++++ .../java/com/l2jmobius/Config.java | 71 +++++++++++++++++++ .../model/actor/templates/L2CharTemplate.java | 12 ++-- .../model/actor/templates/L2NpcTemplate.java | 56 +++++++++++++++ 4 files changed, 179 insertions(+), 6 deletions(-) create mode 100644 L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/NpcStatMultipliers.ini diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/NpcStatMultipliers.ini @@ -0,0 +1,46 @@ +# --------------------------------------------------------------------------- +# NPC Stat Multipliers +# --------------------------------------------------------------------------- + +# Enable/Disable NPC stat multipliers. +EnableNpcStatMultipliers = False + +# Monsters +MonsterHP = 1.0 +MonsterMP = 1.0 +MonsterPAtk = 1.0 +MonsterMAtk = 1.0 +MonsterPDef = 1.0 +MonsterMDef = 1.0 +MonsterAggroRange = 1.0 +MonsterClanHelpRange = 1.0 + +# Raidbosses +RaidbossHP = 1.0 +RaidbossMP = 1.0 +RaidbossPAtk = 1.0 +RaidbossMAtk = 1.0 +RaidbossPDef = 1.0 +RaidbossMDef = 1.0 +RaidbossAggroRange = 1.0 +RaidbossClanHelpRange = 1.0 + +# Guards +GuardHP = 1.0 +GuardMP = 1.0 +GuardPAtk = 1.0 +GuardMAtk = 1.0 +GuardPDef = 1.0 +GuardMDef = 1.0 +GuardAggroRange = 1.0 +GuardClanHelpRange = 1.0 + +# Defenders +DefenderHP = 1.0 +DefenderMP = 1.0 +DefenderPAtk = 1.0 +DefenderMAtk = 1.0 +DefenderPDef = 1.0 +DefenderMDef = 1.0 +DefenderAggroRange = 1.0 +DefenderClanHelpRange = 1.0 diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java index 35461829be..65090ad7a8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/Config.java @@ -114,6 +114,7 @@ public final class Config public static final String CUSTOM_FACTION_SYSTEM_CONFIG_FILE = "./config/Custom/FactionSystem.ini"; public static final String CUSTOM_FIND_PVP_CONFIG_FILE = "./config/Custom/FindPvP.ini"; public static final String CUSTOM_HELLBOUND_STATUS_CONFIG_FILE = "./config/Custom/HellboundStatus.ini"; + public static final String CUSTOM_NPC_STAT_MULTIPIERS_CONFIG_FILE = "./config/Custom/NpcStatMultipliers.ini"; public static final String CUSTOM_OFFLINE_TRADE_CONFIG_FILE = "./config/Custom/OfflineTrade.ini"; public static final String CUSTOM_PASSWORD_CHANGE_CONFIG_FILE = "./config/Custom/PasswordChange.ini"; public static final String CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE = "./config/Custom/PremiumSystem.ini"; @@ -1120,6 +1121,39 @@ public final class Config public static int BANKING_SYSTEM_ADENA; public static boolean ENABLE_WAREHOUSESORTING_CLAN; public static boolean ENABLE_WAREHOUSESORTING_PRIVATE; + public static boolean ENABLE_NPC_STAT_MULTIPIERS; + public static double MONSTER_HP_MULTIPLIER; + public static double MONSTER_MP_MULTIPLIER; + public static double MONSTER_PATK_MULTIPLIER; + public static double MONSTER_MATK_MULTIPLIER; + public static double MONSTER_PDEF_MULTIPLIER; + public static double MONSTER_MDEF_MULTIPLIER; + public static double MONSTER_AGRRO_RANGE_MULTIPLIER; + public static double MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + public static double RAIDBOSS_HP_MULTIPLIER; + public static double RAIDBOSS_MP_MULTIPLIER; + public static double RAIDBOSS_PATK_MULTIPLIER; + public static double RAIDBOSS_MATK_MULTIPLIER; + public static double RAIDBOSS_PDEF_MULTIPLIER; + public static double RAIDBOSS_MDEF_MULTIPLIER; + public static double RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + public static double RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + public static double GUARD_HP_MULTIPLIER; + public static double GUARD_MP_MULTIPLIER; + public static double GUARD_PATK_MULTIPLIER; + public static double GUARD_MATK_MULTIPLIER; + public static double GUARD_PDEF_MULTIPLIER; + public static double GUARD_MDEF_MULTIPLIER; + public static double GUARD_AGRRO_RANGE_MULTIPLIER; + public static double GUARD_CLAN_HELP_RANGE_MULTIPLIER; + public static double DEFENDER_HP_MULTIPLIER; + public static double DEFENDER_MP_MULTIPLIER; + public static double DEFENDER_PATK_MULTIPLIER; + public static double DEFENDER_MATK_MULTIPLIER; + public static double DEFENDER_PDEF_MULTIPLIER; + public static double DEFENDER_MDEF_MULTIPLIER; + public static double DEFENDER_AGRRO_RANGE_MULTIPLIER; + public static double DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; public static boolean OFFLINE_TRADE_ENABLE; public static boolean OFFLINE_CRAFT_ENABLE; public static boolean OFFLINE_MODE_IN_PEACE_ZONE; @@ -2521,6 +2555,43 @@ public final class Config BANKING_SYSTEM_GOLDBARS = Banking.getInt("BankingGoldbarCount", 1); BANKING_SYSTEM_ADENA = Banking.getInt("BankingAdenaCount", 500000000); + // Load BoostNpcStats config file (if exists) + final PropertiesParser BoostNpcStats = new PropertiesParser(CUSTOM_NPC_STAT_MULTIPIERS_CONFIG_FILE); + + ENABLE_NPC_STAT_MULTIPIERS = BoostNpcStats.getBoolean("EnableNpcStatMultipliers", false); + MONSTER_HP_MULTIPLIER = BoostNpcStats.getDouble("MonsterHP", 1.0); + MONSTER_MP_MULTIPLIER = BoostNpcStats.getDouble("MonsterMP", 1.0); + MONSTER_PATK_MULTIPLIER = BoostNpcStats.getDouble("MonsterPAtk", 1.0); + MONSTER_MATK_MULTIPLIER = BoostNpcStats.getDouble("MonsterMAtk", 1.0); + MONSTER_PDEF_MULTIPLIER = BoostNpcStats.getDouble("MonsterPDef", 1.0); + MONSTER_MDEF_MULTIPLIER = BoostNpcStats.getDouble("MonsterMDef", 1.0); + MONSTER_AGRRO_RANGE_MULTIPLIER = BoostNpcStats.getDouble("MonsterAggroRange", 1.0); + MONSTER_CLAN_HELP_RANGE_MULTIPLIER = BoostNpcStats.getDouble("MonsterClanHelpRange", 1.0); + RAIDBOSS_HP_MULTIPLIER = BoostNpcStats.getDouble("RaidbossHP", 1.0); + RAIDBOSS_MP_MULTIPLIER = BoostNpcStats.getDouble("RaidbossMP", 1.0); + RAIDBOSS_PATK_MULTIPLIER = BoostNpcStats.getDouble("RaidbossPAtk", 1.0); + RAIDBOSS_MATK_MULTIPLIER = BoostNpcStats.getDouble("RaidbossMAtk", 1.0); + RAIDBOSS_PDEF_MULTIPLIER = BoostNpcStats.getDouble("RaidbossPDef", 1.0); + RAIDBOSS_MDEF_MULTIPLIER = BoostNpcStats.getDouble("RaidbossMDef", 1.0); + RAIDBOSS_AGRRO_RANGE_MULTIPLIER = BoostNpcStats.getDouble("RaidbossAggroRange", 1.0); + RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER = BoostNpcStats.getDouble("RaidbossClanHelpRange", 1.0); + GUARD_HP_MULTIPLIER = BoostNpcStats.getDouble("GuardHP", 1.0); + GUARD_MP_MULTIPLIER = BoostNpcStats.getDouble("GuardMP", 1.0); + GUARD_PATK_MULTIPLIER = BoostNpcStats.getDouble("GuardPAtk", 1.0); + GUARD_MATK_MULTIPLIER = BoostNpcStats.getDouble("GuardMAtk", 1.0); + GUARD_PDEF_MULTIPLIER = BoostNpcStats.getDouble("GuardPDef", 1.0); + GUARD_MDEF_MULTIPLIER = BoostNpcStats.getDouble("GuardMDef", 1.0); + GUARD_AGRRO_RANGE_MULTIPLIER = BoostNpcStats.getDouble("GuardAggroRange", 1.0); + GUARD_CLAN_HELP_RANGE_MULTIPLIER = BoostNpcStats.getDouble("GuardClanHelpRange", 1.0); + DEFENDER_HP_MULTIPLIER = BoostNpcStats.getDouble("DefenderHP", 1.0); + DEFENDER_MP_MULTIPLIER = BoostNpcStats.getDouble("DefenderMP", 1.0); + DEFENDER_PATK_MULTIPLIER = BoostNpcStats.getDouble("DefenderPAtk", 1.0); + DEFENDER_MATK_MULTIPLIER = BoostNpcStats.getDouble("DefenderMAtk", 1.0); + DEFENDER_PDEF_MULTIPLIER = BoostNpcStats.getDouble("DefenderPDef", 1.0); + DEFENDER_MDEF_MULTIPLIER = BoostNpcStats.getDouble("DefenderMDef", 1.0); + DEFENDER_AGRRO_RANGE_MULTIPLIER = BoostNpcStats.getDouble("DefenderAggroRange", 1.0); + DEFENDER_CLAN_HELP_RANGE_MULTIPLIER = BoostNpcStats.getDouble("DefenderClanHelpRange", 1.0); + // Load ChampionMonster config file (if exists) final PropertiesParser ChampionMonster = new PropertiesParser(CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2CharTemplate.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2CharTemplate.java index e745997783..b8b35080aa 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2CharTemplate.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2CharTemplate.java @@ -40,15 +40,15 @@ public class L2CharTemplate extends ListenersContainer private int _baseINT; private int _baseWIT; private int _baseMEN; - private float _baseHpMax; + protected float _baseHpMax; private float _baseCpMax; - private float _baseMpMax; + protected float _baseMpMax; private float _baseHpReg; private float _baseMpReg; - private int _basePAtk; - private int _baseMAtk; - private int _basePDef; - private int _baseMDef; + protected int _basePAtk; + protected int _baseMAtk; + protected int _basePDef; + protected int _baseMDef; private int _basePAtkSpd; private int _baseMAtkSpd; private int _baseAttackRange; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index f9f34163b0..fa623bcb3a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -179,6 +179,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _collisionRadiusGrown = set.getDouble("collisionRadiusGrown", 0); _collisionHeightGrown = set.getDouble("collisionHeightGrown", 0); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + _baseHpMax *= Config.MONSTER_HP_MULTIPLIER; + _baseMpMax *= Config.MONSTER_MP_MULTIPLIER; + _basePAtk *= Config.MONSTER_PATK_MULTIPLIER; + _baseMAtk *= Config.MONSTER_MATK_MULTIPLIER; + _basePDef *= Config.MONSTER_PDEF_MULTIPLIER; + _baseMDef *= Config.MONSTER_MDEF_MULTIPLIER; + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + _baseHpMax *= Config.RAIDBOSS_HP_MULTIPLIER; + _baseMpMax *= Config.RAIDBOSS_MP_MULTIPLIER; + _basePAtk *= Config.RAIDBOSS_PATK_MULTIPLIER; + _baseMAtk *= Config.RAIDBOSS_MATK_MULTIPLIER; + _basePDef *= Config.RAIDBOSS_PDEF_MULTIPLIER; + _baseMDef *= Config.RAIDBOSS_MDEF_MULTIPLIER; + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + _baseHpMax *= Config.GUARD_HP_MULTIPLIER; + _baseMpMax *= Config.GUARD_MP_MULTIPLIER; + _basePAtk *= Config.GUARD_PATK_MULTIPLIER; + _baseMAtk *= Config.GUARD_MATK_MULTIPLIER; + _basePDef *= Config.GUARD_PDEF_MULTIPLIER; + _baseMDef *= Config.GUARD_MDEF_MULTIPLIER; + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + _baseHpMax *= Config.DEFENDER_HP_MULTIPLIER; + _baseMpMax *= Config.DEFENDER_MP_MULTIPLIER; + _basePAtk *= Config.DEFENDER_PATK_MULTIPLIER; + _baseMAtk *= Config.DEFENDER_MATK_MULTIPLIER; + _basePDef *= Config.DEFENDER_PDEF_MULTIPLIER; + _baseMDef *= Config.DEFENDER_MDEF_MULTIPLIER; + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override