Index: java/net/sf/l2j/gameserver/model/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/L2PcInstance.java (revision 1339) +++ java/net/sf/l2j/gameserver/model/L2PcInstance.java (working copy) @@ -52,6 +52,7 @@ import net.sf.l2j.gameserver.SevenSignsFestival; import net.sf.l2j.gameserver.SkillTable; import net.sf.l2j.gameserver.SkillTreeTable; +import net.sf.l2j.gameserver.TaskPriority; import net.sf.l2j.gameserver.Universe; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.ai.L2CharacterAI; @@ -98,6 +99,7 @@ import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.serverpackets.TargetSelected; import net.sf.l2j.gameserver.serverpackets.UserInfo; +import net.sf.l2j.gameserver.skills.Formulas; import net.sf.l2j.gameserver.skills.Stats; import net.sf.l2j.gameserver.templates.L2CharTemplate; import net.sf.l2j.gameserver.templates.L2Henna; @@ -128,8 +130,14 @@ public static final int STORE_PRIVATE_SELL = 1; public static final int STORE_PRIVATE_BUY = 3; public static final int STORE_PRIVATE_MANUFACTURE = 5; + + private static final String STR = "STR"; + private static final String DEX = "DEX"; + private static final String MEN = "STR"; + private static final String WIT = "STR"; + private static final String CON = "STR"; + private static final String INT = "STR"; - /** The table containing all minimum level needed for each Expertise (None, D, C, B, A, S)*/ private static final int[] EXPERTISE_LEVELS = { @@ -141,9 +149,8 @@ SkillTreeTable.getExpertiseLevel(5), //S }; + protected static Logger _log = Logger.getLogger(L2PcInstance.class.getName()); - private static Logger _log = Logger.getLogger(L2PcInstance.class.getName()); - public class AIAccessor extends L2Character.AIAccessor { protected AIAccessor() {} @@ -389,6 +396,9 @@ private boolean _hero = false; private int _team = 0; + /** Temp Values for stats **/ + private int str, con, men, wit, dex, inte; + /** * Create a new L2PcInstance and add it in the characters table of the database.

* @@ -5847,4 +5857,107 @@ { _nameColor = (red & 0xFF) + ((green & 0xFF) << 8) + ((blue & 0xFF) << 16); } + + class InvalidStatValue implements Runnable + { + String stat; + int statValue; + + public InvalidStatValue(String stat, int statValue) + { + this.stat = stat; + this.statValue = statValue; + } + + public void run() + { + String message = "Player " + getName() + " has a " + stat + " value of " + stat; + _log.warning(message); + GmListTable.getInstance().broadcastMessageToGMs(message); + } + } + + /** + * Return the STR of the L2Character (base+modifier).

+ */ + public int getSTR() + { + str = super.getSTR(); + if (str >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(STR, str), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return str; + } + + /** + * Return the COM of the L2Character (base+modifier).

+ */ + public int getCON() + { + con = super.getCON(); + if (con >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(CON, con), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return con; + } + + /** + * Return the DEX of the L2Character (base+modifier).

+ */ + public int getDEX() + { + dex = super.getDEX(); + if (inte >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(DEX, dex), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return dex; + } + + /** + * Return the INT of the L2Character (base+modifier).

+ */ + public int getINT() + { + inte = super.getINT(); + if (inte >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(INT, inte), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return inte; + } + + /** + * Return the WIT of the L2Character (base+modifier).

+ */ + public int getWIT() + { + wit = super.getWIT(); + if (wit >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(WIT, wit), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return wit; + } + + /** + * Return the MEN of the L2Character (base+modifier).

+ */ + public int getMEN() + { + men = super.getMEN(); + if (men >= Formulas.MAX_STAT_VALUE) + { + ClientScheduler.getInstance().scheduleAtFixedRate(new InvalidStatValue(MEN, men), TaskPriority.PR_LOW, 500, 0); + return Formulas.MAX_STAT_VALUE - 1; + } + return men; + } }