diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_1.0_Ertheia/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_1.0_Ertheia/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_1.0_Ertheia/java/com/l2jmobius/Config.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/Config.java index 076ee7776e..7fe489f5d3 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/Config.java @@ -117,6 +117,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_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.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_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini"; @@ -997,6 +998,39 @@ public final class Config public static boolean BANKING_SYSTEM_ENABLED; public static int BANKING_SYSTEM_GOLDBARS; public static int BANKING_SYSTEM_ADENA; + 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; @@ -2337,6 +2371,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_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index 60c5381e13..9c7ad6e5d2 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -189,6 +189,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _mpRewardAffectType = set.getEnum("mpRewardAffectType", MpRewardAffectType.class, MpRewardAffectType.SOLO); _extendDrop = set.getList("extend_drop", Integer.class); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.MONSTER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.MONSTER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.MONSTER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.MONSTER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.MONSTER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.MONSTER_MDEF_MULTIPLIER); + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.RAIDBOSS_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.RAIDBOSS_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.RAIDBOSS_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.RAIDBOSS_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.RAIDBOSS_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.RAIDBOSS_MDEF_MULTIPLIER); + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.GUARD_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.GUARD_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.GUARD_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.GUARD_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.GUARD_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.GUARD_MDEF_MULTIPLIER); + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.DEFENDER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.DEFENDER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.DEFENDER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.DEFENDER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.DEFENDER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.DEFENDER_MDEF_MULTIPLIER); + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override diff --git a/L2J_Mobius_2.5_Underground/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_2.5_Underground/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_2.5_Underground/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_2.5_Underground/java/com/l2jmobius/Config.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/Config.java index 2745eff147..7512274b5d 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/Config.java @@ -117,6 +117,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_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.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_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini"; @@ -998,6 +999,39 @@ public final class Config public static boolean BANKING_SYSTEM_ENABLED; public static int BANKING_SYSTEM_GOLDBARS; public static int BANKING_SYSTEM_ADENA; + 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; @@ -2339,6 +2373,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_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index 60c5381e13..9c7ad6e5d2 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -189,6 +189,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _mpRewardAffectType = set.getEnum("mpRewardAffectType", MpRewardAffectType.class, MpRewardAffectType.SOLO); _extendDrop = set.getList("extend_drop", Integer.class); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.MONSTER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.MONSTER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.MONSTER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.MONSTER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.MONSTER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.MONSTER_MDEF_MULTIPLIER); + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.RAIDBOSS_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.RAIDBOSS_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.RAIDBOSS_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.RAIDBOSS_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.RAIDBOSS_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.RAIDBOSS_MDEF_MULTIPLIER); + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.GUARD_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.GUARD_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.GUARD_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.GUARD_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.GUARD_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.GUARD_MDEF_MULTIPLIER); + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.DEFENDER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.DEFENDER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.DEFENDER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.DEFENDER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.DEFENDER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.DEFENDER_MDEF_MULTIPLIER); + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override diff --git a/L2J_Mobius_3.0_Helios/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_3.0_Helios/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_3.0_Helios/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_3.0_Helios/java/com/l2jmobius/Config.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/Config.java index e822225315..a2ec16e3c1 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/Config.java @@ -117,6 +117,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_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.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_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini"; @@ -1006,6 +1007,39 @@ public final class Config public static boolean BANKING_SYSTEM_ENABLED; public static int BANKING_SYSTEM_GOLDBARS; public static int BANKING_SYSTEM_ADENA; + 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; @@ -2356,6 +2390,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_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index 60c5381e13..9c7ad6e5d2 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -189,6 +189,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _mpRewardAffectType = set.getEnum("mpRewardAffectType", MpRewardAffectType.class, MpRewardAffectType.SOLO); _extendDrop = set.getList("extend_drop", Integer.class); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.MONSTER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.MONSTER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.MONSTER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.MONSTER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.MONSTER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.MONSTER_MDEF_MULTIPLIER); + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.RAIDBOSS_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.RAIDBOSS_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.RAIDBOSS_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.RAIDBOSS_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.RAIDBOSS_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.RAIDBOSS_MDEF_MULTIPLIER); + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.GUARD_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.GUARD_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.GUARD_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.GUARD_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.GUARD_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.GUARD_MDEF_MULTIPLIER); + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.DEFENDER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.DEFENDER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.DEFENDER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.DEFENDER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.DEFENDER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.DEFENDER_MDEF_MULTIPLIER); + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_4.0_GrandCrusade/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/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_4.0_GrandCrusade/java/com/l2jmobius/Config.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java index d0f7b85fcf..8e75224800 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/Config.java @@ -117,6 +117,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_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.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_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini"; @@ -1005,6 +1006,39 @@ public final class Config public static boolean BANKING_SYSTEM_ENABLED; public static int BANKING_SYSTEM_GOLDBARS; public static int BANKING_SYSTEM_ADENA; + 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; @@ -2354,6 +2388,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_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index 60c5381e13..9c7ad6e5d2 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -189,6 +189,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _mpRewardAffectType = set.getEnum("mpRewardAffectType", MpRewardAffectType.class, MpRewardAffectType.SOLO); _extendDrop = set.getList("extend_drop", Integer.class); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.MONSTER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.MONSTER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.MONSTER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.MONSTER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.MONSTER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.MONSTER_MDEF_MULTIPLIER); + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.RAIDBOSS_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.RAIDBOSS_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.RAIDBOSS_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.RAIDBOSS_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.RAIDBOSS_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.RAIDBOSS_MDEF_MULTIPLIER); + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.GUARD_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.GUARD_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.GUARD_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.GUARD_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.GUARD_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.GUARD_MDEF_MULTIPLIER); + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.DEFENDER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.DEFENDER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.DEFENDER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.DEFENDER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.DEFENDER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.DEFENDER_MDEF_MULTIPLIER); + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Custom/NpcStatMultipliers.ini b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Custom/NpcStatMultipliers.ini new file mode 100644 index 0000000000..223cba7a3d --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/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_Classic_2.0_Saviors/java/com/l2jmobius/Config.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/Config.java index 5896c5d8dc..9913e1c082 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/Config.java @@ -117,6 +117,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_MULTILANGUAL_SUPPORT_CONFIG_FILE = "./config/Custom/MultilingualSupport.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_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini"; @@ -939,6 +940,39 @@ public final class Config public static boolean BANKING_SYSTEM_ENABLED; public static int BANKING_SYSTEM_GOLDBARS; public static int BANKING_SYSTEM_ADENA; + 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; @@ -2232,6 +2266,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_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java index c0a9bd49c7..39164ca189 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/templates/L2NpcTemplate.java @@ -189,6 +189,62 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable _mpRewardAffectType = set.getEnum("mpRewardAffectType", MpRewardAffectType.class, MpRewardAffectType.SOLO); _extendDrop = set.getList("extend_drop", Integer.class); + + if (Config.ENABLE_NPC_STAT_MULTIPIERS) // Custom NPC Stat Multipliers + { + switch (_type) + { + case "L2Monster": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.MONSTER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.MONSTER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.MONSTER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.MONSTER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.MONSTER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.MONSTER_MDEF_MULTIPLIER); + _aggroRange *= Config.MONSTER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.MONSTER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2RaidBoss": + case "L2GrandBoss": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.RAIDBOSS_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.RAIDBOSS_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.RAIDBOSS_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.RAIDBOSS_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.RAIDBOSS_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.RAIDBOSS_MDEF_MULTIPLIER); + _aggroRange *= Config.RAIDBOSS_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.RAIDBOSS_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Guard": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.GUARD_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.GUARD_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.GUARD_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.GUARD_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.GUARD_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.GUARD_MDEF_MULTIPLIER); + _aggroRange *= Config.GUARD_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.GUARD_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + case "L2Defender": + { + super._baseValues.put(Stats.MAX_HP, super.getBaseHpMax() * Config.DEFENDER_HP_MULTIPLIER); + super._baseValues.put(Stats.MAX_MP, super.getBaseMpMax() * Config.DEFENDER_MP_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_ATTACK, super.getBasePAtk() * Config.DEFENDER_PATK_MULTIPLIER); + super._baseValues.put(Stats.MAGIC_ATTACK, super.getBaseMAtk() * Config.DEFENDER_MATK_MULTIPLIER); + super._baseValues.put(Stats.PHYSICAL_DEFENCE, super.getBasePDef() * Config.DEFENDER_PDEF_MULTIPLIER); + super._baseValues.put(Stats.MAGICAL_DEFENCE, super.getBaseMDef() * Config.DEFENDER_MDEF_MULTIPLIER); + _aggroRange *= Config.DEFENDER_AGRRO_RANGE_MULTIPLIER; + _clanHelpRange *= Config.DEFENDER_CLAN_HELP_RANGE_MULTIPLIER; + break; + } + } + } } @Override