Config to ignore NPC stat formulas.
This commit is contained in:
20
trunk/dist/game/config/NPC.ini
vendored
20
trunk/dist/game/config/NPC.ini
vendored
@@ -73,6 +73,7 @@ MinNPCLevelForMagicPenalty = 78
|
|||||||
# Default: unknown
|
# Default: unknown
|
||||||
SkillChancePenaltyForLvLDifferences = 2.5, 3.0, 3.25, 3.5
|
SkillChancePenaltyForLvLDifferences = 2.5, 3.0, 3.25, 3.5
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Monsters
|
# Monsters
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -93,6 +94,7 @@ SpoiledCorpseExtendTime = 10
|
|||||||
# Default: 2000
|
# Default: 2000
|
||||||
CorpseConsumeSkillAllowedTimeBeforeDecay = 2000
|
CorpseConsumeSkillAllowedTimeBeforeDecay = 2000
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Guards
|
# Guards
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -125,6 +127,7 @@ MaximumSlotsForPet = 12
|
|||||||
PetHpRegenMultiplier = 100
|
PetHpRegenMultiplier = 100
|
||||||
PetMpRegenMultiplier = 100
|
PetMpRegenMultiplier = 100
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Raid Bosses
|
# Raid Bosses
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -178,6 +181,11 @@ RaidChaosTime = 10
|
|||||||
GrandChaosTime = 10
|
GrandChaosTime = 10
|
||||||
MinionChaosTime = 10
|
MinionChaosTime = 10
|
||||||
|
|
||||||
|
# It removes STR,CON... bonuses.
|
||||||
|
# With this npcs will use the stats given directly from the xml.
|
||||||
|
IgnoreNpcStatFormulas = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Drops
|
# Drops
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -193,25 +201,25 @@ UseDeepBlueDropRulesRaid = True
|
|||||||
# The min and max level difference used for level gap calculation
|
# The min and max level difference used for level gap calculation
|
||||||
# this is only for how many levels higher the player is than the monster
|
# this is only for how many levels higher the player is than the monster
|
||||||
# Default: 8
|
# Default: 8
|
||||||
DropAdenaMinLevelDifference=8
|
DropAdenaMinLevelDifference = 8
|
||||||
# Default: 15
|
# Default: 15
|
||||||
DropAdenaMaxLevelDifference=15
|
DropAdenaMaxLevelDifference = 15
|
||||||
|
|
||||||
# This is the minimum level gap chance meaning for 10 that the monster will have 10% chance
|
# This is the minimum level gap chance meaning for 10 that the monster will have 10% chance
|
||||||
# to allow dropping the item if level difference is bigger than DropAdenaMaxLevelDifference
|
# to allow dropping the item if level difference is bigger than DropAdenaMaxLevelDifference
|
||||||
# Note: This value is scalling from 100 to the specified value for DropAdenaMinLevelDifference to DropAdenaMaxLevelDifference limits
|
# Note: This value is scalling from 100 to the specified value for DropAdenaMinLevelDifference to DropAdenaMaxLevelDifference limits
|
||||||
# Default: 10
|
# Default: 10
|
||||||
DropAdenaMinLevelGapChance=10
|
DropAdenaMinLevelGapChance = 10
|
||||||
|
|
||||||
# The min and max level difference used for level gap calculation
|
# The min and max level difference used for level gap calculation
|
||||||
# this is only for how many levels higher the player is than the monster
|
# this is only for how many levels higher the player is than the monster
|
||||||
# Default: 5
|
# Default: 5
|
||||||
DropItemMinLevelDifference=5
|
DropItemMinLevelDifference = 5
|
||||||
# Default: 10
|
# Default: 10
|
||||||
DropItemMaxLevelDifference=10
|
DropItemMaxLevelDifference = 10
|
||||||
|
|
||||||
# This is the minimum level gap chance meaning for 10 that the monster will have 10% chance
|
# This is the minimum level gap chance meaning for 10 that the monster will have 10% chance
|
||||||
# to allow dropping the item if level difference is bigger than DropAdenaMaxLevelDifference
|
# to allow dropping the item if level difference is bigger than DropAdenaMaxLevelDifference
|
||||||
# Note: This value is scalling from 100 to the specified value for DropAdenaMinLevelDifference to DropAdenaMaxLevelDifference limits
|
# Note: This value is scalling from 100 to the specified value for DropAdenaMinLevelDifference to DropAdenaMaxLevelDifference limits
|
||||||
# Default: 10
|
# Default: 10
|
||||||
DropItemMinLevelGapChance=10
|
DropItemMinLevelGapChance = 10
|
||||||
|
@@ -111,6 +111,7 @@ public final class Config
|
|||||||
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
|
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
|
||||||
public static final String CH_SIEGE_FILE = "./config/ConquerableHallSiege.ini";
|
public static final String CH_SIEGE_FILE = "./config/ConquerableHallSiege.ini";
|
||||||
public static final String GEODATA_FILE = "./config/GeoData.ini";
|
public static final String GEODATA_FILE = "./config/GeoData.ini";
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// L2J Variable Definitions
|
// L2J Variable Definitions
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
@@ -897,6 +898,7 @@ public final class Config
|
|||||||
public static int DROP_ITEM_MIN_LEVEL_DIFFERENCE;
|
public static int DROP_ITEM_MIN_LEVEL_DIFFERENCE;
|
||||||
public static int DROP_ITEM_MAX_LEVEL_DIFFERENCE;
|
public static int DROP_ITEM_MAX_LEVEL_DIFFERENCE;
|
||||||
public static double DROP_ITEM_MIN_LEVEL_GAP_CHANCE;
|
public static double DROP_ITEM_MIN_LEVEL_GAP_CHANCE;
|
||||||
|
public static boolean IGNORE_NPC_STAT_FORMULAS;
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// PvP Settings
|
// PvP Settings
|
||||||
@@ -2089,6 +2091,8 @@ public final class Config
|
|||||||
DROP_ITEM_MAX_LEVEL_DIFFERENCE = NPC.getInt("DropItemMaxLevelDifference", 10);
|
DROP_ITEM_MAX_LEVEL_DIFFERENCE = NPC.getInt("DropItemMaxLevelDifference", 10);
|
||||||
DROP_ITEM_MIN_LEVEL_GAP_CHANCE = NPC.getDouble("DropItemMinLevelGapChance", 10);
|
DROP_ITEM_MIN_LEVEL_GAP_CHANCE = NPC.getDouble("DropItemMinLevelGapChance", 10);
|
||||||
|
|
||||||
|
IGNORE_NPC_STAT_FORMULAS = NPC.getBoolean("IgnoreNpcStatFormulas", true);
|
||||||
|
|
||||||
// Load Rates L2Properties file (if exists)
|
// Load Rates L2Properties file (if exists)
|
||||||
final PropertiesParser RatesSettings = new PropertiesParser(RATES_CONFIG_FILE);
|
final PropertiesParser RatesSettings = new PropertiesParser(RATES_CONFIG_FILE);
|
||||||
|
|
||||||
|
@@ -116,29 +116,41 @@ public final class Formulas
|
|||||||
{
|
{
|
||||||
Calculator[] std = new Calculator[Stats.NUM_STATS];
|
Calculator[] std = new Calculator[Stats.NUM_STATS];
|
||||||
|
|
||||||
std[Stats.MAX_HP.ordinal()] = new Calculator();
|
if (!Config.IGNORE_NPC_STAT_FORMULAS)
|
||||||
std[Stats.MAX_HP.ordinal()].addFunc(FuncMaxHpMul.getInstance());
|
{
|
||||||
|
std[Stats.MAX_HP.ordinal()] = new Calculator();
|
||||||
std[Stats.MAX_MP.ordinal()] = new Calculator();
|
std[Stats.MAX_HP.ordinal()].addFunc(FuncMaxHpMul.getInstance());
|
||||||
std[Stats.MAX_MP.ordinal()].addFunc(FuncMaxMpMul.getInstance());
|
|
||||||
|
std[Stats.MAX_MP.ordinal()] = new Calculator();
|
||||||
std[Stats.POWER_ATTACK.ordinal()] = new Calculator();
|
std[Stats.MAX_MP.ordinal()].addFunc(FuncMaxMpMul.getInstance());
|
||||||
std[Stats.POWER_ATTACK.ordinal()].addFunc(FuncPAtkMod.getInstance());
|
|
||||||
|
std[Stats.POWER_ATTACK.ordinal()] = new Calculator();
|
||||||
std[Stats.MAGIC_ATTACK.ordinal()] = new Calculator();
|
std[Stats.POWER_ATTACK.ordinal()].addFunc(FuncPAtkMod.getInstance());
|
||||||
std[Stats.MAGIC_ATTACK.ordinal()].addFunc(FuncMAtkMod.getInstance());
|
|
||||||
|
std[Stats.MAGIC_ATTACK.ordinal()] = new Calculator();
|
||||||
std[Stats.POWER_DEFENCE.ordinal()] = new Calculator();
|
std[Stats.MAGIC_ATTACK.ordinal()].addFunc(FuncMAtkMod.getInstance());
|
||||||
std[Stats.POWER_DEFENCE.ordinal()].addFunc(FuncPDefMod.getInstance());
|
|
||||||
|
std[Stats.POWER_DEFENCE.ordinal()] = new Calculator();
|
||||||
std[Stats.MAGIC_DEFENCE.ordinal()] = new Calculator();
|
std[Stats.POWER_DEFENCE.ordinal()].addFunc(FuncPDefMod.getInstance());
|
||||||
std[Stats.MAGIC_DEFENCE.ordinal()].addFunc(FuncMDefMod.getInstance());
|
|
||||||
|
std[Stats.MAGIC_DEFENCE.ordinal()] = new Calculator();
|
||||||
std[Stats.CRITICAL_RATE.ordinal()] = new Calculator();
|
std[Stats.MAGIC_DEFENCE.ordinal()].addFunc(FuncMDefMod.getInstance());
|
||||||
std[Stats.CRITICAL_RATE.ordinal()].addFunc(FuncAtkCritical.getInstance());
|
|
||||||
|
std[Stats.CRITICAL_RATE.ordinal()] = new Calculator();
|
||||||
std[Stats.MCRITICAL_RATE.ordinal()] = new Calculator();
|
std[Stats.CRITICAL_RATE.ordinal()].addFunc(FuncAtkCritical.getInstance());
|
||||||
std[Stats.MCRITICAL_RATE.ordinal()].addFunc(FuncMAtkCritical.getInstance());
|
|
||||||
|
std[Stats.MCRITICAL_RATE.ordinal()] = new Calculator();
|
||||||
|
std[Stats.MCRITICAL_RATE.ordinal()].addFunc(FuncMAtkCritical.getInstance());
|
||||||
|
|
||||||
|
std[Stats.POWER_ATTACK_SPEED.ordinal()] = new Calculator();
|
||||||
|
std[Stats.POWER_ATTACK_SPEED.ordinal()].addFunc(FuncPAtkSpeed.getInstance());
|
||||||
|
|
||||||
|
std[Stats.MAGIC_ATTACK_SPEED.ordinal()] = new Calculator();
|
||||||
|
std[Stats.MAGIC_ATTACK_SPEED.ordinal()].addFunc(FuncMAtkSpeed.getInstance());
|
||||||
|
|
||||||
|
std[Stats.MOVE_SPEED.ordinal()] = new Calculator();
|
||||||
|
std[Stats.MOVE_SPEED.ordinal()].addFunc(FuncMoveSpeed.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
std[Stats.ACCURACY_COMBAT.ordinal()] = new Calculator();
|
std[Stats.ACCURACY_COMBAT.ordinal()] = new Calculator();
|
||||||
std[Stats.ACCURACY_COMBAT.ordinal()].addFunc(FuncAtkAccuracy.getInstance());
|
std[Stats.ACCURACY_COMBAT.ordinal()].addFunc(FuncAtkAccuracy.getInstance());
|
||||||
@@ -146,15 +158,6 @@ public final class Formulas
|
|||||||
std[Stats.EVASION_RATE.ordinal()] = new Calculator();
|
std[Stats.EVASION_RATE.ordinal()] = new Calculator();
|
||||||
std[Stats.EVASION_RATE.ordinal()].addFunc(FuncAtkEvasion.getInstance());
|
std[Stats.EVASION_RATE.ordinal()].addFunc(FuncAtkEvasion.getInstance());
|
||||||
|
|
||||||
std[Stats.POWER_ATTACK_SPEED.ordinal()] = new Calculator();
|
|
||||||
std[Stats.POWER_ATTACK_SPEED.ordinal()].addFunc(FuncPAtkSpeed.getInstance());
|
|
||||||
|
|
||||||
std[Stats.MAGIC_ATTACK_SPEED.ordinal()] = new Calculator();
|
|
||||||
std[Stats.MAGIC_ATTACK_SPEED.ordinal()].addFunc(FuncMAtkSpeed.getInstance());
|
|
||||||
|
|
||||||
std[Stats.MOVE_SPEED.ordinal()] = new Calculator();
|
|
||||||
std[Stats.MOVE_SPEED.ordinal()].addFunc(FuncMoveSpeed.getInstance());
|
|
||||||
|
|
||||||
std[Stats.ACCURACY_MAGIC.ordinal()] = new Calculator();
|
std[Stats.ACCURACY_MAGIC.ordinal()] = new Calculator();
|
||||||
std[Stats.ACCURACY_MAGIC.ordinal()].addFunc(FuncMatkAccuracy.getInstance());
|
std[Stats.ACCURACY_MAGIC.ordinal()].addFunc(FuncMatkAccuracy.getInstance());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user