rendered paste bodyIndex: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/config/server.properties
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/config/server.properties (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/config/server.properties (working copy)
@@ -18,10 +18,10 @@
GameserverPort=7777
# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
-ExternalHostname=82.28.82.28
+ExternalHostname=68.228.131.231
# This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname
-InternalHostname=192.168.1.100
+InternalHostname=192.168.1.101
# Bind ip of the loginserver, use * to bind on all available IPs
@@ -222,6 +222,7 @@
#% regeneration of normal regeneration speed
HpRegenMultiplier=100
MpRegenMultiplier=100
+CpRegenMultiplier=100
# ==================================================================
# -- KARMA VARS --
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/Config.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/Config.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/Config.java (working copy)
@@ -278,6 +278,7 @@
public static final double HP_REGEN_MULTIPLIER;
public static final double MP_REGEN_MULTIPLIER;
+ public static final double CP_REGEN_MULTIPLIER;
public static final int STARTING_ADENA;
@@ -481,6 +482,7 @@
/* if different from 100 (ie 100%) heal rate is modified acordingly */
HP_REGEN_MULTIPLIER = (double)Integer.parseInt(serverSettings.getProperty("HpRegenMultiplier", "100"));
MP_REGEN_MULTIPLIER = (double)Integer.parseInt(serverSettings.getProperty("MpRegenMultiplier", "100"));
+ CP_REGEN_MULTIPLIER = (double)Integer.parseInt(serverSettings.getProperty("CpRegenMultiplier", "100"));
STARTING_ADENA = Integer.parseInt(serverSettings.getProperty("StartingAdena", "100"));
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/LevelUpData.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/LevelUpData.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/LevelUpData.java (working copy)
@@ -37,7 +37,7 @@
*/
public class LevelUpData
{
- private static final String SELECT_ALL = "SELECT classid, defaulthpbase, defaulthpadd, defaulthpmod, defaultmpbase, defaultmpadd, defaultmpmod, class_lvl FROM lvlupgain";
+ private static final String SELECT_ALL = "SELECT classid, defaulthpbase, defaulthpadd, defaulthpmod, defaultcpbase, defaultcpadd, defaultcpmod, defaultmpbase, defaultmpadd, defaultmpmod, class_lvl FROM lvlupgain";
private static final String CLASS_LVL = "class_lvl";
private static final String MP_MOD = "defaultmpmod";
private static final String MP_ADD = "defaultmpadd";
@@ -45,6 +45,9 @@
private static final String HP_MOD = "defaulthpmod";
private static final String HP_ADD = "defaulthpadd";
private static final String HP_BASE = "defaulthpbase";
+ private static final String CP_MOD = "defaultcpmod";
+ private static final String CP_ADD = "defaultcpadd";
+ private static final String CP_BASE = "defaultcpbase";
private static final String CLASS_ID = "classid";
private static Logger _log = Logger.getLogger(LevelUpData.class.getName());
@@ -80,7 +83,10 @@
lvlDat.set_classLvl(rset.getInt(CLASS_LVL));
lvlDat.set_classHpBase(rset.getFloat(HP_BASE));
lvlDat.set_classHpAdd(rset.getFloat(HP_ADD));
- lvlDat.set_classHpModifier(rset.getFloat(HP_MOD));
+ lvlDat.set_classHpModifier(rset.getFloat(HP_MOD));
+ lvlDat.set_classCpBase(rset.getFloat(CP_BASE));
+ lvlDat.set_classCpAdd(rset.getFloat(CP_ADD));
+ lvlDat.set_classCpModifier(rset.getFloat(CP_MOD));
lvlDat.set_classMpBase(rset.getFloat(MP_BASE));
lvlDat.set_classMpAdd(rset.getFloat(MP_ADD));
lvlDat.set_classMpModifier(rset.getFloat(MP_MOD));
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/clientpackets/CharacterCreate.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/clientpackets/CharacterCreate.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/clientpackets/CharacterCreate.java (working copy)
@@ -118,6 +118,7 @@
//newChar.setHairColor(_hairColor);
//newChar.setFace(_face);
newChar.setCurrentHp(template.baseHpMax);
+ newChar.setCurrentCp(template.baseCpMax);
newChar.setCurrentMp(template.baseMpMax);
newChar.setMaxLoad(template.baseLoad);
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/DoorTable.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/DoorTable.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/DoorTable.java (working copy)
@@ -113,7 +113,8 @@
npcDat.set("sex", "male");
npcDat.set("type", "");
npcDat.set("baseAtkRange", 0);
- npcDat.set("baseMpMax",0 );
+ npcDat.set("baseMpMax", 0);
+ npcDat.set("baseCpMax", 0);
npcDat.set("revardExp", 0);
npcDat.set("revardSp", 0);
npcDat.set("basePAtk", 0);
@@ -129,6 +130,7 @@
npcDat.set("name", name);
npcDat.set("baseHpMax", hp);
npcDat.set("baseHpReg", 3.e-3f);
+ npcDat.set("baseCpReg", 0);
npcDat.set("baseMpReg", 3.e-3f);
npcDat.set("basePDef", pdef);
npcDat.set("baseMDef", mdef);
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2PcInstance.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2PcInstance.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2PcInstance.java (working copy)
@@ -2864,10 +2864,12 @@
su.addAttribute(StatusUpdate.LEVEL, _level);
su.addAttribute(StatusUpdate.MAX_HP, getMaxHp());
su.addAttribute(StatusUpdate.MAX_MP, getMaxMp());
+ su.addAttribute(StatusUpdate.MAX_CP, getMaxCp());
sendPacket(su);
// Set the current HP and MP of the L2Character, Launch/Stop a HP/MP/CP Regeneration Task and send StatusUpdate packet to all other L2PcInstance to inform (exclusive broadcast)
setCurrentHpMp(getMaxHp(),getMaxMp());
+ setCurrentCp(getMaxCp());
// Recalculate the party level
if (isInParty()) getParty().recalculatePartyLevel();
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2LvlupData.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2LvlupData.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2LvlupData.java (working copy)
@@ -30,7 +30,10 @@
private int _classLvl;
private float _classHpAdd;
private float _classHpBase;
- private float _classHpModifier;
+ private float _classHpModifier;
+ private float _classCpAdd;
+ private float _classCpBase;
+ private float _classCpModifier;
private float _classMpAdd;
private float _classMpBase;
private float _classMpModifier;
@@ -71,6 +74,42 @@
public void set_classHpModifier(float hpModifier) {
_classHpModifier = hpModifier;
}
+ /**
+ * @return Returns the _classCpAdd.
+ */
+ public float get_classCpAdd() {
+ return _classCpAdd;
+ }
+ /**
+ * @param hpAdd The _classCpAdd to set.
+ */
+ public void set_classCpAdd(float cpAdd) {
+ _classCpAdd = cpAdd;
+ }
+ /**
+ * @return Returns the _classCpBase.
+ */
+ public float get_classCpBase() {
+ return _classCpBase;
+ }
+ /**
+ * @param hpBase The _classCpBase to set.
+ */
+ public void set_classCpBase(float cpBase) {
+ _classCpBase = cpBase;
+ }
+ /**
+ * @return Returns the _classCpModifier.
+ */
+ public float get_classCpModifier() {
+ return _classCpModifier;
+ }
+ /**
+ * @param cpModifier The _classCpModifier to set.
+ */
+ public void set_classCpModifier(float cpModifier) {
+ _classCpModifier = cpModifier;
+ }
/**
* @return Returns the _classid.
*/
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2Character.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2Character.java (working copy)
@@ -2069,7 +2069,8 @@
*/
public final int getMaxCp()
{
- return getMaxHp() / 2;
+ double val = calcStat(Stats.MAX_CP, _template.baseCpMax, null, null);
+ return (int)val;
}
/**
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java (working copy)
@@ -524,6 +524,42 @@
env.value *= CONbonus[p.getCON()];
}
}
+ static class FuncMaxCpAdd extends Func
+ {
+ static final FuncMaxCpAdd _fmca_instance = new FuncMaxCpAdd();
+ static Func getInstance() {
+ return _fmca_instance;
+ }
+ private FuncMaxCpAdd()
+ {
+ super(Stats.MAX_CP, 0x10, null);
+ }
+ public void calc(Env env)
+ {
+ L2PcTemplate t = (L2PcTemplate)env._player.getTemplate();
+ int lvl = env._player.getLevel() - t.classBaseLevel;
+ double cpmod = t.lvlCpMod * lvl;
+ double cpmax = (t.lvlCpAdd + cpmod) * lvl;
+ double cpmin = (t.lvlCpAdd * lvl) + cpmod;
+ env.value += (cpmax + cpmin) / 2;
+ }
+ }
+ static class FuncMaxCpMul extends Func
+ {
+ static final FuncMaxCpMul _fmcm_instance = new FuncMaxCpMul();
+ static Func getInstance() {
+ return _fmcm_instance;
+ }
+ private FuncMaxCpMul()
+ {
+ super(Stats.MAX_CP, 0x20, null);
+ }
+ public void calc(Env env)
+ {
+ L2PcInstance p = (L2PcInstance)env._player;
+ env.value *= CONbonus[p.getCON()];
+ }
+ }
static class FuncMaxMpAdd extends Func
{
static final FuncMaxMpAdd _fmma_instance = new FuncMaxMpAdd();
@@ -630,6 +666,8 @@
{
cha.addStatFunc(FuncMaxHpAdd.getInstance());
cha.addStatFunc(FuncMaxHpMul.getInstance());
+ cha.addStatFunc(FuncMaxCpAdd.getInstance());
+ cha.addStatFunc(FuncMaxCpMul.getInstance());
cha.addStatFunc(FuncMaxMpAdd.getInstance());
cha.addStatFunc(FuncMaxMpMul.getInstance());
cha.addStatFunc(FuncMultRegenResting.getInstance(Stats.REGENERATE_HP_RATE));
@@ -657,6 +695,7 @@
else if (cha instanceof L2Summon)
{
cha.addStatFunc(FuncMultRegenResting.getInstance(Stats.REGENERATE_HP_RATE));
+ cha.addStatFunc(FuncMultRegenResting.getInstance(Stats.REGENERATE_CP_RATE));
cha.addStatFunc(FuncMultRegenResting.getInstance(Stats.REGENERATE_MP_RATE));
cha.addStatFunc(FuncAtkCritical.getInstance());
cha.addStatFunc(FuncAtkAccuracy.getInstance());
@@ -688,8 +727,8 @@
*/
public final double calcCpRegen(L2Character cha)
{
- double init = cha.getMaxHp()*cha.getTemplate().baseHpReg;
- return cha.calcStat(Stats.REGENERATE_HP_RATE, init, null, null);
+ double init = cha.getMaxCp()*cha.getTemplate().baseCpReg * Config.CP_REGEN_MULTIPLIER / 100;
+ return cha.calcStat(Stats.REGENERATE_CP_RATE, init, null, null);
}
/** Calculated damage caused by ATTACK of attacker on target,
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Stats.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Stats.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Stats.java (working copy)
@@ -33,7 +33,9 @@
// HP & MP
MAX_HP,
MAX_MP,
+ MAX_CP,
REGENERATE_HP_RATE,
+ REGENERATE_CP_RATE,
REGENERATE_MP_RATE,
// Atk & Def
POWER_DEFENCE,
@@ -133,8 +135,10 @@
{
name = name.intern();
if (name == "maxHp" ) return MAX_HP;
+ if (name == "maxCp" ) return MAX_CP;
if (name == "maxMp" ) return MAX_MP;
if (name == "regHp" ) return REGENERATE_HP_RATE;
+ if (name == "regCp" ) return REGENERATE_CP_RATE;
if (name == "regMp" ) return REGENERATE_MP_RATE;
if (name == "pDef" ) return POWER_DEFENCE;
if (name == "mDef" ) return MAGIC_DEFENCE;
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2CharTemplate.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2CharTemplate.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2CharTemplate.java (working copy)
@@ -32,7 +32,8 @@
public final int baseINT;
public final int baseWIT;
public final int baseMEN;
- public final float baseHpMax;
+ public final float baseHpMax;
+ public final float baseCpMax;
public final float baseMpMax;
/** HP Regen base */
@@ -40,6 +41,9 @@
/** MP Regen base */
public final float baseMpReg;
+
+ /** CP Regen base */
+ public final float baseCpReg;
public final int basePAtk;
public final int baseMAtk;
@@ -93,9 +97,11 @@
baseINT = set.getInteger("baseINT");
baseWIT = set.getInteger("baseWIT");
baseMEN = set.getInteger("baseMEN");
- baseHpMax = set.getFloat ("baseHpMax");
+ baseHpMax = set.getFloat ("baseHpMax");
+ baseCpMax = set.getFloat("baseCpMax");
baseMpMax = set.getFloat ("baseMpMax");
baseHpReg = set.getFloat ("baseHpReg");
+ baseCpReg = set.getFloat("baseCpReg");
baseMpReg = set.getFloat ("baseMpReg");
basePAtk = set.getInteger("basePAtk");
baseMAtk = set.getInteger("baseMAtk");
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2PcTemplate.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2PcTemplate.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/templates/L2PcTemplate.java (working copy)
@@ -47,7 +47,9 @@
public final int classBaseLevel;
public final float lvlHpAdd;
- public final float lvlHpMod;
+ public final float lvlHpMod;
+ public final float lvlCpAdd;
+ public final float lvlCpMod;
public final float lvlMpAdd;
public final float lvlMpMod;
@@ -71,6 +73,8 @@
classBaseLevel = set.getInteger("classBaseLevel");
lvlHpAdd = set.getFloat("lvlHpAdd");
lvlHpMod = set.getFloat("lvlHpMod");
+ lvlCpAdd = set.getFloat("lvlCpAdd");
+ lvlCpMod = set.getFloat("lvlCpMod");
lvlMpAdd = set.getFloat("lvlMpAdd");
lvlMpMod = set.getFloat("lvlMpMod");
}
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/CharTemplateTable.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/CharTemplateTable.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/CharTemplateTable.java (working copy)
@@ -82,10 +82,14 @@
set.set("baseHpMax", rset.getFloat("lvlupgain.defaultHpBase"));
set.set("lvlHpAdd", rset.getFloat("lvlupgain.defaultHpAdd"));
set.set("lvlHpMod", rset.getFloat("lvlupgain.defaultHpMod"));
- set.set("baseMpMax", rset.getFloat("lvlupgain.defaultMpBase"));
+ set.set("baseMpMax", rset.getFloat("lvlupgain.defaultMpBase"));
+ set.set("baseCpMax", rset.getFloat("lvlupgain.defaultCpBase"));
+ set.set("lvlCpAdd", rset.getFloat("lvlupgain.defaultCpAdd"));
+ set.set("lvlCpMod", rset.getFloat("lvlupgain.defaultCpMod"));
set.set("lvlMpAdd", rset.getFloat("lvlupgain.defaultMpAdd"));
set.set("lvlMpMod", rset.getFloat("lvlupgain.defaultMpMod"));
- set.set("baseHpReg", 0.01);
+ set.set("baseHpReg", 0.01);
+ set.set("baseCpReg", 0.01);
set.set("baseMpReg", 0.01);
set.set("basePAtk", rset.getInt("char_templates.p_atk"));
set.set("basePDef", /*classId.isMage()? 77 : 129*/ rset.getInt("char_templates.p_def"));
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/NpcTable.java
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/NpcTable.java (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/java/net/sf/l2j/gameserver/NpcTable.java (working copy)
@@ -222,6 +222,7 @@
npcDat.set("baseRunSpd", NpcData.getInt("runspd"));
npcDat.set("baseHpReg", 0.01);
+ npcDat.set("baseCpReg", 0);
npcDat.set("baseMpReg", 0.01);
// constants, until we have stats in DB
@@ -233,6 +234,7 @@
npcDat.set("baseMEN", NpcData.getInt("men"));
npcDat.set("baseHpMax", NpcData.getInt("hp"));
+ npcDat.set("baseCpMax", 0);
npcDat.set("baseMpMax", NpcData.getInt("mp"));
npcDat.set("basePAtk", NpcData.getInt("patk"));
npcDat.set("basePDef", NpcData.getInt("pdef"));
Index: C:/Documents and Settings/Chris/workspace/L2_Gameserver/sql/l2jdb_create.sql
===================================================================
--- C:/Documents and Settings/Chris/workspace/L2_Gameserver/sql/l2jdb_create.sql (revision 863)
+++ C:/Documents and Settings/Chris/workspace/L2_Gameserver/sql/l2jdb_create.sql (working copy)
@@ -319,6 +319,9 @@
defaulthpbase decimal(4,1) ,
defaulthpadd decimal(3,2) ,
defaulthpmod decimal(3,2) ,
+ defaultcpbase decimal(4,1) ,
+ defaultcpadd decimal(3,2) ,
+ defaultcpmod decimal(3,2) ,
defaultmpbase decimal(4,1) ,
defaultmpadd decimal(3,2) ,
defaultmpmod decimal(3,2) ,