All pastes #21333 Raw Edit

Anonymous

public text v1 · immutable
#21333 ·published 2005-08-28 00:26 UTC
rendered paste body
Index: 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) ,