Implemented de-level minimum level config.
This commit is contained in:
4
trunk/dist/game/config/Character.ini
vendored
4
trunk/dist/game/config/Character.ini
vendored
@@ -14,6 +14,10 @@
|
|||||||
# Default: True
|
# Default: True
|
||||||
Delevel = True
|
Delevel = True
|
||||||
|
|
||||||
|
# Players will be affected by de-level after this level.
|
||||||
|
# Default: 85
|
||||||
|
DelevelMinimum = 85
|
||||||
|
|
||||||
# This option enable check for all player skills for skill level.
|
# This option enable check for all player skills for skill level.
|
||||||
# If player level is lower than skill learn level - 9, skill level is decreased to next possible level.
|
# If player level is lower than skill learn level - 9, skill level is decreased to next possible level.
|
||||||
# If there is no possible level, skill is removed from player.
|
# If there is no possible level, skill is removed from player.
|
||||||
|
@@ -77,17 +77,11 @@ public class AdminLevel implements IAdminCommandHandler
|
|||||||
byte lvl = Byte.parseByte(val);
|
byte lvl = Byte.parseByte(val);
|
||||||
if ((lvl >= 1) && (lvl <= maxLevel))
|
if ((lvl >= 1) && (lvl <= maxLevel))
|
||||||
{
|
{
|
||||||
long pXp = targetPlayer.getExp();
|
targetPlayer.setExp(ExperienceData.getInstance().getExpForLevel(lvl));
|
||||||
long tXp = ExperienceData.getInstance().getExpForLevel(lvl);
|
targetPlayer.getStat().setLevel(lvl);
|
||||||
|
targetPlayer.setCurrentHpMp(targetPlayer.getMaxHp(), targetPlayer.getMaxMp());
|
||||||
if (pXp > tXp)
|
targetPlayer.setCurrentCp(targetPlayer.getMaxCp());
|
||||||
{
|
targetPlayer.broadcastUserInfo();
|
||||||
targetPlayer.removeExpAndSp(pXp - tXp, 0);
|
|
||||||
}
|
|
||||||
else if (pXp < tXp)
|
|
||||||
{
|
|
||||||
targetPlayer.addExpAndSp(tXp - pXp, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -116,7 +116,8 @@ public final class Config
|
|||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// L2J Variable Definitions
|
// L2J Variable Definitions
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
public static boolean ALT_GAME_DELEVEL;
|
public static boolean PLAYER_DELEVEL;
|
||||||
|
public static int DELEVEL_MINIMUM;
|
||||||
public static boolean DECREASE_SKILL_LEVEL;
|
public static boolean DECREASE_SKILL_LEVEL;
|
||||||
public static double ALT_WEIGHT_LIMIT;
|
public static double ALT_WEIGHT_LIMIT;
|
||||||
public static int RUN_SPD_BOOST;
|
public static int RUN_SPD_BOOST;
|
||||||
@@ -1396,7 +1397,8 @@ public final class Config
|
|||||||
// Load Character L2Properties file (if exists)
|
// Load Character L2Properties file (if exists)
|
||||||
final PropertiesParser character = new PropertiesParser(CHARACTER_CONFIG_FILE);
|
final PropertiesParser character = new PropertiesParser(CHARACTER_CONFIG_FILE);
|
||||||
|
|
||||||
ALT_GAME_DELEVEL = character.getBoolean("Delevel", true);
|
PLAYER_DELEVEL = character.getBoolean("Delevel", true);
|
||||||
|
DELEVEL_MINIMUM = character.getInt("DelevelMinimum", 85);
|
||||||
DECREASE_SKILL_LEVEL = character.getBoolean("DecreaseSkillOnDelevel", true);
|
DECREASE_SKILL_LEVEL = character.getBoolean("DecreaseSkillOnDelevel", true);
|
||||||
ALT_WEIGHT_LIMIT = character.getDouble("AltWeightLimit", 1);
|
ALT_WEIGHT_LIMIT = character.getDouble("AltWeightLimit", 1);
|
||||||
RUN_SPD_BOOST = character.getInt("RunSpeedBoost", 0);
|
RUN_SPD_BOOST = character.getInt("RunSpeedBoost", 0);
|
||||||
@@ -3472,7 +3474,10 @@ public final class Config
|
|||||||
ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(pValue);
|
ALT_PERFECT_SHLD_BLOCK = Integer.parseInt(pValue);
|
||||||
break;
|
break;
|
||||||
case "delevel":
|
case "delevel":
|
||||||
ALT_GAME_DELEVEL = Boolean.parseBoolean(pValue);
|
PLAYER_DELEVEL = Boolean.parseBoolean(pValue);
|
||||||
|
break;
|
||||||
|
case "DelevelMinimum":
|
||||||
|
DELEVEL_MINIMUM = Integer.parseInt(pValue);
|
||||||
break;
|
break;
|
||||||
case "magicfailures":
|
case "magicfailures":
|
||||||
ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(pValue);
|
ALT_GAME_MAGICFAILURES = Boolean.parseBoolean(pValue);
|
||||||
|
@@ -5839,7 +5839,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
|
|
||||||
setExpBeforeDeath(getExp());
|
setExpBeforeDeath(getExp());
|
||||||
|
|
||||||
getStat().addExp(-lostExp);
|
getStat().removeExp(lostExp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPartyWaiting()
|
public boolean isPartyWaiting()
|
||||||
|
@@ -76,7 +76,7 @@ public class PcStat extends PlayableStat
|
|||||||
@Override
|
@Override
|
||||||
public boolean addExp(long value)
|
public boolean addExp(long value)
|
||||||
{
|
{
|
||||||
L2PcInstance activeChar = getActiveChar();
|
final L2PcInstance activeChar = getActiveChar();
|
||||||
|
|
||||||
// Allowed to gain exp?
|
// Allowed to gain exp?
|
||||||
if (!getActiveChar().getAccessLevel().canGainExp())
|
if (!getActiveChar().getAccessLevel().canGainExp())
|
||||||
@@ -92,7 +92,7 @@ public class PcStat extends PlayableStat
|
|||||||
// Set new karma
|
// Set new karma
|
||||||
if (!activeChar.isCursedWeaponEquipped() && (activeChar.getReputation() < 0) && (activeChar.isGM() || !activeChar.isInsideZone(ZoneId.PVP)))
|
if (!activeChar.isCursedWeaponEquipped() && (activeChar.getReputation() < 0) && (activeChar.isGM() || !activeChar.isInsideZone(ZoneId.PVP)))
|
||||||
{
|
{
|
||||||
int karmaLost = Formulas.calculateKarmaLost(activeChar, value);
|
final int karmaLost = Formulas.calculateKarmaLost(activeChar, value);
|
||||||
if (karmaLost > 0)
|
if (karmaLost > 0)
|
||||||
{
|
{
|
||||||
activeChar.setReputation(activeChar.getReputation() + karmaLost);
|
activeChar.setReputation(activeChar.getReputation() + karmaLost);
|
||||||
@@ -219,7 +219,7 @@ public class PcStat extends PlayableStat
|
|||||||
|
|
||||||
public boolean removeExpAndSp(long addToExp, long addToSp, boolean sendMessage)
|
public boolean removeExpAndSp(long addToExp, long addToSp, boolean sendMessage)
|
||||||
{
|
{
|
||||||
int level = getLevel();
|
final int level = getLevel();
|
||||||
if (!super.removeExpAndSp(addToExp, addToSp))
|
if (!super.removeExpAndSp(addToExp, addToSp))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@@ -103,6 +103,11 @@ public class PlayableStat extends CharStat
|
|||||||
|
|
||||||
public boolean removeExp(long value)
|
public boolean removeExp(long value)
|
||||||
{
|
{
|
||||||
|
if (((getExp() - value) < getExpForLevel(getLevel())) && (!Config.PLAYER_DELEVEL || (Config.PLAYER_DELEVEL && (getLevel() <= Config.DELEVEL_MINIMUM))))
|
||||||
|
{
|
||||||
|
value = getExp() - getExpForLevel(getLevel());
|
||||||
|
}
|
||||||
|
|
||||||
if ((getExp() - value) < 0)
|
if ((getExp() - value) < 0)
|
||||||
{
|
{
|
||||||
value = getExp() - 1;
|
value = getExp() - 1;
|
||||||
|
Reference in New Issue
Block a user