Configurable NPC stat multipliers.

This commit is contained in:
MobiusDev 2018-04-11 13:28:53 +00:00
parent 994f80890c
commit cf835b71f1
4 changed files with 179 additions and 6 deletions

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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